From 9cd42b0c774fc98e9a353ed8d2196684c15b63d9 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Wed, 4 Oct 2023 08:48:42 +0800 Subject: [PATCH 01/77] =?UTF-8?q?Switch=20version=20to=20v3.0.0.=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20CMakeLists.txt=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20CPPPPKG=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20include/cppp/reiconv.?= =?UTF-8?q?hpp.in=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/iconv?= =?UTF-8?q?.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 +- CPPPPKG | 2 +- ChangeLog | 5 +++++ include/cppp/reiconv.hpp.in | 4 ++-- lib/iconv.cpp | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 79d3deed..610955e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ # If not, see . cmake_minimum_required(VERSION 3.12) -project(cppp-reiconv VERSION 2.1.0) +project(cppp-reiconv VERSION 3.0.0) # Define options option(ENABLE_EXTRA "Enable extra encodings and features." OFF) diff --git a/CPPPPKG b/CPPPPKG index 2e64cca9..31c76908 100644 --- a/CPPPPKG +++ b/CPPPPKG @@ -1,6 +1,6 @@ { "name" : "cppp-reiconv", - "version" : "2.1.0", + "version" : "3.0.0", "list_file_path": "FILELIST", "description": "C++ Plus character set conversion library", "authors": [ diff --git a/ChangeLog b/ChangeLog index e32ba067..05528440 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2023-10-04 ChenPi11 + + v2.1.0 released. + Switch version to v3.0.0. + 2023-10-03 ChenPi11 Update C++ standard of the project. diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index caf4e176..a0ad1f39 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -2,8 +2,8 @@ * @file cppp/reiconv.hpp * @author ChenPi11 * @brief C++ Plus cppp-reiconv package. - * @version 2.1.0 - * @date 2023-7-28 + * @version 3.0.0 + * @date 2023-10-04 * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. */ /* Copyright (C) 1999-2023 Free Software Foundation, Inc. diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 98c3183e..e673271f 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -478,7 +478,7 @@ void iconvlist(int (*do_one)(unsigned int namescount, const char *const *names, } /* version number: (major<<8) + minor */ -int reiconv_version = (2 << 8) + 1; +int reiconv_version = (3 << 8) + 0; constexpr size_t tmpbufsize = 4096; From 2fc4d801f62b71e7e1ba8904ebfabea89d7a13d5 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Wed, 4 Oct 2023 10:36:17 +0800 Subject: [PATCH 02/77] =?UTF-8?q?Remove=20function=20'iconv',=20'encode',?= =?UTF-8?q?=20'iconvlist'.=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20?= =?UTF-8?q?ChangeLog=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20includ?= =?UTF-8?q?e/cppp/reiconv.hpp.in=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20lang/zh=5FCN.langmap=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20?= =?UTF-8?q?=20=20=20=20lib/iconv.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + include/cppp/reiconv.hpp.in | 57 ---------------- lang/zh_CN.langmap | 62 ----------------- lib/iconv.cpp | 133 ++---------------------------------- 4 files changed, 8 insertions(+), 245 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05528440..e436c9de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ v2.1.0 released. Switch version to v3.0.0. + Remove function 'iconv', 'encode', 'iconvlist'. 2023-10-03 ChenPi11 diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index a0ad1f39..13b98d48 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -33,13 +33,6 @@ #pragma execution_character_set("utf-8") #endif -#include -#include -#include -#include -#include -#include - extern "C++" { namespace cppp @@ -79,22 +72,6 @@ extern "C++" */ extern @DLL_VARIABLE@ iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict = true); -#undef iconv - /** - * @brief Converts, using conversion descriptor 'cd', at most '*inbytesleft' bytes starting at '*inbuf', writing at - * most '*outbytesleft' bytes starting at '*outbuf'. - * @attention Decrements '*inbytesleft' and increments '*inbuf' by the same amount. - * @attention Decrements '*outbytesleft' and increments '*outbuf' by the same amount. - * @param cd Conversion descriptor. - * @param inbuf Input buffer. - * @param inbytesleft Input bytes left. - * @param outbuf Output buffer. - * @param outbytesleft Output bytes left. - * @return Number of converted characters (excluding terminators, -1 means error). - */ - extern @DLL_VARIABLE@ size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, - size_t *outbytesleft); - #undef iconv_close /** * @brief Frees resources allocated for conversion descriptor 'cd'. @@ -207,14 +184,6 @@ extern "C++" */ constexpr int ICONV_SET_TO_SURFACE = 10; /* const unsigned int *argument */ - /** - * @brief Listing of locale independent encodings. - * @param do_one One encoding fallback function. - * @param data Data. - */ - extern @DLL_VARIABLE@ void iconvlist(int (*do_one)(unsigned int namescount, const char *const *names, void *data), - void *data); - /** * @brief Converts an entire string from one encoding to another, using iconv. Easier to use than iconv() itself. * @note This function does not treat zero characters specially. @@ -286,32 +255,6 @@ extern "C++" extern @DLL_VARIABLE@ int iconv_string(int tocode_cp, int fromcode_cp, const char* start, const char* end, char** resultp, size_t* lengthp, bool strict=true); - /** - * @brief Encode source string to another encoding. - * @param from From encoding. - * @param to Target encoding. - * @param data Input string data. - * @param ignore Ignore invalid characters. - * @throw int: when conversation error, throw the 'errno', you can catch the errno for more infomation. - */ - inline std::vector encode(const std::string& from, const std::string& to, const std::vector& data, - bool ignore = false) - { - char *result = NULL; - size_t length = 0; - std::string ignstr = ignore ? "//IGNORE" : ""; - if (iconv_string((to + ignstr).c_str(), from.c_str(), data.data(), data.data() + data.size(), &result, - &length) < 0) - { - if (!ignore) - { - /* When conversation error, throw the errno, you can catch the errno for more infomation. */ - throw(int)(errno); - } - } - return std::vector(result, result + length); - } - } // namespace reiconv } // namespace base } // namespace cppp diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index 8b54e747..4f9ac51a 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -103,34 +103,6 @@ */ ''' -''' - /** - * @brief Converts, using conversion descriptor 'cd', at most '*inbytesleft' bytes starting at '*inbuf', writing at - * most '*outbytesleft' bytes starting at '*outbuf'. - * @attention Decrements '*inbytesleft' and increments '*inbuf' by the same amount. - * @attention Decrements '*outbytesleft' and increments '*outbuf' by the same amount. - * @param cd Conversion descriptor. - * @param inbuf Input buffer. - * @param inbytesleft Input bytes left. - * @param outbuf Output buffer. - * @param outbytesleft Output bytes left. - * @return Number of converted characters (excluding terminators, -1 means error). - */ -''' - /** - * @brief 使用转换描述符 “cd”,将最多 “*inbytesleft” 字节从 “*inbuf” 开始转换,并将最多 “*outbytesleft” 字节写入 - * “*outbuf” 。 - * @attention 将 “*inbytesleft” 减少相同的数量,并将 “*inbuf” 增加相同的数量。 - * @attention 将 “*outbytesleft” 减少相同的数量,并将 “*outbuf” 增加相同的数量。 - * @param cd 转换描述符。 - * @param inbuf 输入缓冲区。 - * @param inbytesleft 剩余输入字节。 - * @param outbuf 输出缓冲区。 - * @param outbytesleft 剩余输出字节。 - * @return 转换的字符数量(不包括终止符,-1 表示错误)。 - */ -''' - ''' /** * @brief Frees resources allocated for conversion descriptor 'cd'. @@ -256,20 +228,6 @@ */ ''' -''' - /** - * @brief Listing of locale independent encodings. - * @param do_one One encoding fallback function. - * @param data Data. - */ -''' - /** - * @brief 列出与区域设置无关的编码方式。 - * @param do_one 一个编码回退函数。 - * @param data 数据。 - */ -''' - ''' /** * @brief Converts an entire string from one encoding to another, using iconv. Easier to use than iconv() itself. @@ -400,23 +358,3 @@ * */ ''' - -''' - /** - * @brief Encode source string to another encoding. - * @param from From encoding. - * @param to Target encoding. - * @param data Input string data. - * @param ignore Ignore invalid characters. - * @throw int: when conversation error, throw the 'errno', you can catch the errno for more infomation. - */ -''' - /** - * @brief 将源字符串编码为另一种编码方式。 - * @param from 源编码。 - * @param to 目标编码。 - * @param data 输入字符串数据。 - * @param ignore 忽略无效字符。 - * @throw int:当转换错误时,抛出 “errno” ,您可以捕获 errno 以获取更多信息。 - */ -''' diff --git a/lib/iconv.cpp b/lib/iconv.cpp index e673271f..2808af45 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -133,7 +133,7 @@ static struct encoding const all_encodings[] = { }; #undef DEFALIAS -int lookup_by_codepage(int codepage) +static inline int lookup_by_codepage(int codepage) { for(size_t i = 0; i < sizeof(all_encodings) / sizeof(all_encodings[0]); i++) { @@ -172,7 +172,7 @@ int lookup_by_codepage(int codepage) /* * System dependent alias lookup function. * Defines - * const struct alias * aliases2_lookup (const char *str); + * inline static const struct alias* aliases2_lookup (const char *str); */ #if defined(USE_AIX) || defined(USE_OSF1) || defined(USE_DOS) || defined(USE_ZOS) || defined(USE_EXTRA) /* || ... */ struct stringpool2_t @@ -192,15 +192,7 @@ static const struct alias sysdep_aliases[] = { #include "aliases2.h" #undef S }; -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif - static const struct alias * - aliases2_lookup(const char *str) +inline static const struct alias* aliases2_lookup(const char* str) { const struct alias *ptr; unsigned int count; @@ -214,30 +206,9 @@ inline #define stringpool2 NULL #endif -#if 0 - /* Like !strcasecmp, except that the both strings can be assumed to be ASCII - and the first string can be assumed to be in uppercase. */ - static int strequal (const char* str1, const char* str2) - { - unsigned char c1; - unsigned char c2; - for (;;) { - c1 = * (unsigned char *) str1++; - c2 = * (unsigned char *) str2++; - if (c1 == 0) - break; - if (c2 >= 'a' && c2 <= 'z') - c2 -= 'a'-'A'; - if (c1 != c2) - break; - } - return (c1 == c2); - } -#endif - -iconv_t iconv_open(const char *tocode, const char *fromcode) +iconv_t iconv_open(const char* tocode, const char* fromcode) { - struct conv_struct *cd; + struct conv_struct* cd; unsigned int from_index; unsigned int from_surface; unsigned int to_index; @@ -246,7 +217,7 @@ iconv_t iconv_open(const char *tocode, const char *fromcode) #include "iconv_open1.h" - cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); + cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); if (cd == NULL) { errno = ENOMEM; @@ -294,7 +265,7 @@ iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) return (iconv_t)cd; } -size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +static inline size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { conv_t cd = (conv_t)icd; if (inbuf == NULL || *inbuf == NULL) @@ -387,96 +358,6 @@ int iconvctl(iconv_t icd, int request, void *argument) } } -/* An alias after its name has been converted from 'int' to 'const char*'. */ -struct nalias -{ - const char *name; - unsigned int encoding_index; -}; - -static int compare_by_index(const void *arg1, const void *arg2) -{ - const struct nalias *alias1 = (const struct nalias *)arg1; - const struct nalias *alias2 = (const struct nalias *)arg2; - return (int)alias1->encoding_index - (int)alias2->encoding_index; -} - -static int compare_by_name(const void *arg1, const void *arg2) -{ - const char *name1 = *(const char *const *)arg1; - const char *name2 = *(const char *const *)arg2; - /* Compare alphabetically, but put "CS" names at the end. */ - int sign = strcmp(name1, name2); - if (sign != 0) - { - sign = ((name1[0] == 'C' && name1[1] == 'S') - (name2[0] == 'C' && name2[1] == 'S')) * 4 + (sign >= 0 ? 1 : -1); - } - return sign; -} - -void iconvlist(int (*do_one)(unsigned int namescount, const char *const *names, void *data), void *data) -{ -#define aliascount1 sizeof(aliases) / sizeof(aliases[0]) -#ifndef aliases2_lookup -#define aliascount2 sizeof(sysdep_aliases) / sizeof(sysdep_aliases[0]) -#else -#define aliascount2 0 -#endif -#define aliascount (aliascount1 + aliascount2) - struct nalias aliasbuf[aliascount]; - const char *namesbuf[aliascount]; - size_t num_aliases; - { - /* Put all existing aliases into a buffer. */ - size_t i; - size_t j; - j = 0; - for (i = 0; i < aliascount1; i++) - { - const struct alias *p = &aliases[i]; - if (p->name >= 0) - { - aliasbuf[j].name = stringpool + p->name; - aliasbuf[j].encoding_index = p->encoding_index; - j++; - } - } -#ifndef aliases2_lookup - for (i = 0; i < aliascount2; i++) - { - aliasbuf[j].name = stringpool2 + sysdep_aliases[i].name; - aliasbuf[j].encoding_index = sysdep_aliases[i].encoding_index; - j++; - } -#endif - num_aliases = j; - } - /* Sort by encoding_index. */ - if (num_aliases > 1) - qsort(aliasbuf, num_aliases, sizeof(struct nalias), compare_by_index); - { - /* Process all aliases with the same encoding_index together. */ - size_t j; - j = 0; - while (j < num_aliases) - { - unsigned int ei = aliasbuf[j].encoding_index; - size_t i = 0; - do - namesbuf[i++] = aliasbuf[j++].name; - while (j < num_aliases && aliasbuf[j].encoding_index == ei); - if (i > 1) - qsort(namesbuf, i, sizeof(const char *), compare_by_name); - /* Call the callback. */ - if (do_one(i, namesbuf, data)) - break; - } - } -#undef aliascount -#undef aliascount2 -#undef aliascount1 -} - /* version number: (major<<8) + minor */ int reiconv_version = (3 << 8) + 0; From ca3c50b399cbf5dbc847dba4b266cc77c724f6e5 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Wed, 4 Oct 2023 12:18:13 +0800 Subject: [PATCH 03/77] =?UTF-8?q?Remove=20iconv=20surface,=20cppp-reiconv?= =?UTF-8?q?=20will=20not=20support=20`//ZOS=5FUNIX`.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20include/cppp/reiconv.hpp.in=20?= =?UTF-8?q?=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lang/zh=5FCN.langm?= =?UTF-8?q?ap=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/converter?= =?UTF-8?q?s.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic03?= =?UTF-8?q?7.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic10?= =?UTF-8?q?25.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1?= =?UTF-8?q?026.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic?= =?UTF-8?q?1047.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdi?= =?UTF-8?q?c1097.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcd?= =?UTF-8?q?ic1112.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebc?= =?UTF-8?q?dic1122.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/eb?= =?UTF-8?q?cdic1123.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/e?= =?UTF-8?q?bcdic1130.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/?= =?UTF-8?q?ebcdic1132.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic1137.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic1140.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20l?= =?UTF-8?q?ib/ebcdic1141.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20?= =?UTF-8?q?lib/ebcdic1142.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20?= =?UTF-8?q?=20lib/ebcdic1143.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20lib/ebcdic1144.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20?= =?UTF-8?q?=20=20=20lib/ebcdic1145.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20?= =?UTF-8?q?=20=20=20=20lib/ebcdic1146.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A?= =?UTF-8?q?=20=20=20=20=20lib/ebcdic1147.h=20=09=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=20=20=20=20=20lib/ebcdic1148.h=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1149.h=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1153.h=20?= =?UTF-8?q?=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1154.h?= =?UTF-8?q?=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1155.?= =?UTF-8?q?h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1156?= =?UTF-8?q?.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic115?= =?UTF-8?q?7.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic11?= =?UTF-8?q?58.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic1?= =?UTF-8?q?160.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdic?= =?UTF-8?q?1164.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcdi?= =?UTF-8?q?c1165.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebcd?= =?UTF-8?q?ic1166.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ebc?= =?UTF-8?q?dic12712.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/e?= =?UTF-8?q?bcdic16804.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic273.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic277.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic278.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic280.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic282.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic284.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic285.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic297.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic423.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic424.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic425.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/ebcdic4971.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic500.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic838.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic870.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic871.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic875.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic880.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic905.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/ebcdic924.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/iconv.cpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/?= =?UTF-8?q?iconv=5Fopen1.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20?= =?UTF-8?q?lib/iconv=5Fopen2.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + include/cppp/reiconv.hpp.in | 41 ++++++++----------------------------- lang/zh_CN.langmap | 23 --------------------- lib/converters.h | 29 -------------------------- lib/ebcdic037.h | 4 ---- lib/ebcdic1025.h | 4 ---- lib/ebcdic1026.h | 4 ---- lib/ebcdic1047.h | 4 ---- lib/ebcdic1097.h | 4 ---- lib/ebcdic1112.h | 4 ---- lib/ebcdic1122.h | 4 ---- lib/ebcdic1123.h | 4 ---- lib/ebcdic1130.h | 4 ---- lib/ebcdic1132.h | 4 ---- lib/ebcdic1137.h | 4 ---- lib/ebcdic1140.h | 4 ---- lib/ebcdic1141.h | 4 ---- lib/ebcdic1142.h | 4 ---- lib/ebcdic1143.h | 4 ---- lib/ebcdic1144.h | 4 ---- lib/ebcdic1145.h | 4 ---- lib/ebcdic1146.h | 4 ---- lib/ebcdic1147.h | 4 ---- lib/ebcdic1148.h | 4 ---- lib/ebcdic1149.h | 4 ---- lib/ebcdic1153.h | 4 ---- lib/ebcdic1154.h | 4 ---- lib/ebcdic1155.h | 4 ---- lib/ebcdic1156.h | 4 ---- lib/ebcdic1157.h | 4 ---- lib/ebcdic1158.h | 4 ---- lib/ebcdic1160.h | 4 ---- lib/ebcdic1164.h | 4 ---- lib/ebcdic1165.h | 4 ---- lib/ebcdic1166.h | 4 ---- lib/ebcdic12712.h | 4 ---- lib/ebcdic16804.h | 4 ---- lib/ebcdic273.h | 4 ---- lib/ebcdic277.h | 4 ---- lib/ebcdic278.h | 4 ---- lib/ebcdic280.h | 4 ---- lib/ebcdic282.h | 4 ---- lib/ebcdic284.h | 4 ---- lib/ebcdic285.h | 4 ---- lib/ebcdic297.h | 4 ---- lib/ebcdic423.h | 4 ---- lib/ebcdic424.h | 4 ---- lib/ebcdic425.h | 4 ---- lib/ebcdic4971.h | 4 ---- lib/ebcdic500.h | 4 ---- lib/ebcdic838.h | 4 ---- lib/ebcdic870.h | 4 ---- lib/ebcdic871.h | 4 ---- lib/ebcdic875.h | 4 ---- lib/ebcdic880.h | 4 ---- lib/ebcdic905.h | 4 ---- lib/ebcdic924.h | 4 ---- lib/iconv.cpp | 41 +------------------------------------ lib/iconv_open1.h | 15 -------------- lib/iconv_open2.h | 5 ----- 60 files changed, 10 insertions(+), 357 deletions(-) diff --git a/ChangeLog b/ChangeLog index e436c9de..e5867dfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ v2.1.0 released. Switch version to v3.0.0. Remove function 'iconv', 'encode', 'iconvlist'. + Remove iconv surface, cppp-reiconv will not support '//ZOS_UNIX'. 2023-10-03 ChenPi11 diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 13b98d48..7fd3ca02 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -28,6 +28,8 @@ #ifndef _CPPP_REICONV_HPP #define _CPPP_REICONV_HPP +#include + #if _MSC_VER >= 1600 /* Use UTF-8 to decode this file. */ #pragma execution_character_set("utf-8") @@ -51,7 +53,7 @@ extern "C++" * @typedef void* * @brief Identifier for conversion method from one codeset to another. */ - typedef void *iconv_t; + typedef void* iconv_t; #undef iconv_open /** @@ -60,7 +62,7 @@ extern "C++" * @param fromcode From encoding. * @return Allocated iconv conversation buffer's pointer. */ - extern @DLL_VARIABLE@ iconv_t iconv_open(const char *tocode, const char *fromcode); + extern @DLL_VARIABLE@ iconv_t iconv_open(const char* tocode, const char* fromcode); /** * @brief Allocates descriptor for code conversion from codepage 'tocode_cp' to codepage 'fromcode_cp'. @@ -70,7 +72,7 @@ extern "C++" * @note Some encoding may don't have codepage. * @return Allocated iconv conversation buffer's pointer. */ - extern @DLL_VARIABLE@ iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict = true); + extern @DLL_VARIABLE@ iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict=true); #undef iconv_close /** @@ -87,13 +89,13 @@ extern "C++" * @param argument Attribute argument. * @return Operation status (>=0 means success, <0 means error). */ - extern @DLL_VARIABLE@ int iconvctl(iconv_t cd, int request, void *argument); + extern @DLL_VARIABLE@ int iconvctl(iconv_t cd, int request, void* argument); /** * @typedef void (*) (unsigned int, void*) * @brief Hook performed after every successful conversion of a Unicode character. */ - typedef void (*iconv_unicode_char_hook)(unsigned int uc, void *data); + typedef void (*iconv_unicode_char_hook)(unsigned int uc, void* data); /** * @brief Set of hooks. @@ -101,7 +103,7 @@ extern "C++" struct iconv_hooks { iconv_unicode_char_hook uc_hook; - void *data; + void* data; }; /** @@ -136,17 +138,6 @@ extern "C++" void *data; }; - /** - * @brief Surfaces. The concept of surfaces is described in the 'recode' manual. - */ - constexpr int ICONV_SURFACE_NONE = 0; - /** - * @brief In EBCDIC encodings, 0x15 (which encodes the "newline function", see the - * Unicode standard, chapter 5) maps to U+000A instead of U+0085. This is - * for interoperability with C programs and Unix environments on z/OS. - */ - constexpr int ICONV_SURFACE_EBCDIC_ZOS_UNIX = 1; - /** * @brief Request for iconvctl. */ @@ -167,22 +158,6 @@ extern "C++" * @brief Request for iconvctl. */ constexpr int ICONV_SET_FALLBACKS = 6; /* const struct iconv_fallbacks *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_GET_FROM_SURFACE = 7; /* unsigned int *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_SET_FROM_SURFACE = 8; /* const unsigned int *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_GET_TO_SURFACE = 9; /* unsigned int *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_SET_TO_SURFACE = 10; /* const unsigned int *argument */ /** * @brief Converts an entire string from one encoding to another, using iconv. Easier to use than iconv() itself. diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index 4f9ac51a..ca52c8cf 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -195,29 +195,6 @@ */ ''' -''' - /** - * @brief Surfaces. The concept of surfaces is described in the 'recode' manual. - */ -''' - /** - * @brief Surfaces. “Surfaces” 是在 “recode” 手册中描述的概念。 - */ -''' - -''' - /** - * @brief In EBCDIC encodings, 0x15 (which encodes the "newline function", see the - * Unicode standard, chapter 5) maps to U+000A instead of U+0085. This is - * for interoperability with C programs and Unix environments on z/OS. - */ -''' - /** - * @brief 在 EBCDIC 编码中,0x15(用于编码“换行符功能”,参见 Unicode 标准第 5 章)将映射为 U+000A 而不是 U+0085 。 - * 这是为了在 z/OS 上与 C 程序和 Unix 环境实现互操作性。 - */ -''' - ''' /** * @brief Request for iconvctl. diff --git a/lib/converters.h b/lib/converters.h index 1fcd6e01..48c716f2 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -98,13 +98,11 @@ struct conv_struct { /* Input (conversion multibyte -> unicode) */ int iindex; struct mbtowc_funcs ifuncs; - unsigned int isurface; state_t istate; /* Output (conversion unicode -> multibyte) */ int oindex; struct wctomb_funcs ofuncs; int oflags; - unsigned int osurface; state_t ostate; /* Operation flags */ int discard_ilseq; @@ -294,33 +292,6 @@ typedef struct { #define DEDUPLICATE_TABLES 1 -/* Swaps the values 0x15 and 0x25. - Both gcc and clang compile this expression to something that involves as few - conditional branching instructions as possible. */ -#define swap_x15_x25_a(x) ((x) == 0x15 ? 0x25 : (x) == 0x25 ? 0x15 : (x)) -#define swap_x15_x25_b(x) ((x) ^ ((x) == 0x15 || (x) == 0x25 ? 0x30 : 0)) -#define swap_x15_x25_c(x) ((x) ^ ((((x) - 0x15) & ~0x10) == 0 ? 0x30 : 0)) -/* Number of conditional branches (with "gcc -O2", as of 2023): - a b c - --------------- - aarch64 1 0 0 - alpha 0 0 0 - arm 1 0 0 - hppa 1 1 1 - i686 1 0 0 - m68k 2 1 1 - mips 2 1 0 - mips64 2 1 0 - powerpc 2 1 1 - powerpc64 2 1 1 - powerpc64le 2 1 1 - riscv64 2 1 1 - s390x 1 1 1 - sh4 2 1 1 - x86_64 1 0 0 -*/ -#define swap_x15_x25 swap_x15_x25_c - #include "ebcdic037.h" #include "ebcdic273.h" #include "ebcdic277.h" diff --git a/lib/ebcdic037.h b/lib/ebcdic037.h index 8826ab3d..e2b6af91 100644 --- a/lib/ebcdic037.h +++ b/lib/ebcdic037.h @@ -76,8 +76,6 @@ static int ebcdic037_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic037_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic037_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic037_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1025.h b/lib/ebcdic1025.h index e3d5df33..adc4d2f2 100644 --- a/lib/ebcdic1025.h +++ b/lib/ebcdic1025.h @@ -76,8 +76,6 @@ static int ebcdic1025_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1025_2uni[c]; return 1; } @@ -136,8 +134,6 @@ ebcdic1025_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x2116) c = 0x58; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1026.h b/lib/ebcdic1026.h index 568a8a74..a0f005b6 100644 --- a/lib/ebcdic1026.h +++ b/lib/ebcdic1026.h @@ -76,8 +76,6 @@ static int ebcdic1026_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1026_2uni[c]; return 1; } @@ -137,8 +135,6 @@ ebcdic1026_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x0118 && wc < 0x0160) c = ebcdic1026_page01[wc-0x0118]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1047.h b/lib/ebcdic1047.h index 46dfacbd..665a8313 100644 --- a/lib/ebcdic1047.h +++ b/lib/ebcdic1047.h @@ -76,8 +76,6 @@ static int ebcdic1047_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1047_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic1047_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic1047_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1097.h b/lib/ebcdic1097.h index 17929a2a..ffa3de5d 100644 --- a/lib/ebcdic1097.h +++ b/lib/ebcdic1097.h @@ -76,8 +76,6 @@ static int ebcdic1097_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1097_2uni[c]; return 1; } @@ -181,8 +179,6 @@ ebcdic1097_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0xfe80 && wc < 0xfef0) c = ebcdic1097_pagefe[wc-0xfe80]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1112.h b/lib/ebcdic1112.h index 23e1bf56..acce716a 100644 --- a/lib/ebcdic1112.h +++ b/lib/ebcdic1112.h @@ -76,8 +76,6 @@ static int ebcdic1112_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1112_2uni[c]; return 1; } @@ -146,8 +144,6 @@ ebcdic1112_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x2018 && wc < 0x2020) c = ebcdic1112_page20[wc-0x2018]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1122.h b/lib/ebcdic1122.h index 803abb8b..22512af9 100644 --- a/lib/ebcdic1122.h +++ b/lib/ebcdic1122.h @@ -76,8 +76,6 @@ static int ebcdic1122_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1122_2uni[c]; return 1; } @@ -132,8 +130,6 @@ ebcdic1122_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x0160 && wc < 0x0180) c = ebcdic1122_page01[wc-0x0160]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1123.h b/lib/ebcdic1123.h index ffc55bb5..7b8f29f4 100644 --- a/lib/ebcdic1123.h +++ b/lib/ebcdic1123.h @@ -76,8 +76,6 @@ static int ebcdic1123_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1123_2uni[c]; return 1; } @@ -143,8 +141,6 @@ ebcdic1123_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x2116) c = 0x58; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1130.h b/lib/ebcdic1130.h index 5844d471..2ec5b23b 100644 --- a/lib/ebcdic1130.h +++ b/lib/ebcdic1130.h @@ -76,8 +76,6 @@ static int ebcdic1130_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1130_2uni[c]; return 1; } @@ -159,8 +157,6 @@ ebcdic1130_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ab) c = 0x78; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1132.h b/lib/ebcdic1132.h index e68988c2..cebe3a30 100644 --- a/lib/ebcdic1132.h +++ b/lib/ebcdic1132.h @@ -76,8 +76,6 @@ static int ebcdic1132_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic1132_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -140,8 +138,6 @@ ebcdic1132_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ad) c = 0x70; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1137.h b/lib/ebcdic1137.h index 54daabb8..f5cb7b47 100644 --- a/lib/ebcdic1137.h +++ b/lib/ebcdic1137.h @@ -76,8 +76,6 @@ static int ebcdic1137_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic1137_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -141,8 +139,6 @@ ebcdic1137_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x2008 && wc < 0x2010) c = ebcdic1137_page20[wc-0x2008]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1140.h b/lib/ebcdic1140.h index 135652eb..3b57c16b 100644 --- a/lib/ebcdic1140.h +++ b/lib/ebcdic1140.h @@ -76,8 +76,6 @@ static int ebcdic1140_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1140_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1140_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1141.h b/lib/ebcdic1141.h index 6048d038..8ab9a2da 100644 --- a/lib/ebcdic1141.h +++ b/lib/ebcdic1141.h @@ -76,8 +76,6 @@ static int ebcdic1141_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1141_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1141_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1142.h b/lib/ebcdic1142.h index 02865b0e..5ef222bd 100644 --- a/lib/ebcdic1142.h +++ b/lib/ebcdic1142.h @@ -76,8 +76,6 @@ static int ebcdic1142_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1142_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1142_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x5a; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1143.h b/lib/ebcdic1143.h index 718407aa..06ea4336 100644 --- a/lib/ebcdic1143.h +++ b/lib/ebcdic1143.h @@ -76,8 +76,6 @@ static int ebcdic1143_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1143_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1143_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x5a; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1144.h b/lib/ebcdic1144.h index da4e1616..6753a306 100644 --- a/lib/ebcdic1144.h +++ b/lib/ebcdic1144.h @@ -76,8 +76,6 @@ static int ebcdic1144_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1144_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1144_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1145.h b/lib/ebcdic1145.h index 7304da12..e9b3533d 100644 --- a/lib/ebcdic1145.h +++ b/lib/ebcdic1145.h @@ -76,8 +76,6 @@ static int ebcdic1145_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1145_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1145_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1146.h b/lib/ebcdic1146.h index 1f9f006f..5197cab6 100644 --- a/lib/ebcdic1146.h +++ b/lib/ebcdic1146.h @@ -76,8 +76,6 @@ static int ebcdic1146_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1146_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1146_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1147.h b/lib/ebcdic1147.h index 158cd4ad..4880c9de 100644 --- a/lib/ebcdic1147.h +++ b/lib/ebcdic1147.h @@ -76,8 +76,6 @@ static int ebcdic1147_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1147_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1147_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1148.h b/lib/ebcdic1148.h index 6a65db3d..28716e08 100644 --- a/lib/ebcdic1148.h +++ b/lib/ebcdic1148.h @@ -76,8 +76,6 @@ static int ebcdic1148_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1148_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1148_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1149.h b/lib/ebcdic1149.h index edd588ba..deffb4eb 100644 --- a/lib/ebcdic1149.h +++ b/lib/ebcdic1149.h @@ -76,8 +76,6 @@ static int ebcdic1149_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1149_2uni[c]; return 1; } @@ -126,8 +124,6 @@ ebcdic1149_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1153.h b/lib/ebcdic1153.h index 818e4918..dbf9e219 100644 --- a/lib/ebcdic1153.h +++ b/lib/ebcdic1153.h @@ -76,8 +76,6 @@ static int ebcdic1153_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1153_2uni[c]; return 1; } @@ -155,8 +153,6 @@ ebcdic1153_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1154.h b/lib/ebcdic1154.h index 70a1d844..8b24c373 100644 --- a/lib/ebcdic1154.h +++ b/lib/ebcdic1154.h @@ -76,8 +76,6 @@ static int ebcdic1154_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1154_2uni[c]; return 1; } @@ -138,8 +136,6 @@ ebcdic1154_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x2116) c = 0x58; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1155.h b/lib/ebcdic1155.h index 272f8fb2..101a1e4c 100644 --- a/lib/ebcdic1155.h +++ b/lib/ebcdic1155.h @@ -76,8 +76,6 @@ static int ebcdic1155_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1155_2uni[c]; return 1; } @@ -143,8 +141,6 @@ ebcdic1155_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1156.h b/lib/ebcdic1156.h index f628683a..53ee6f7d 100644 --- a/lib/ebcdic1156.h +++ b/lib/ebcdic1156.h @@ -76,8 +76,6 @@ static int ebcdic1156_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1156_2uni[c]; return 1; } @@ -152,8 +150,6 @@ ebcdic1156_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1157.h b/lib/ebcdic1157.h index 67858d34..096f7766 100644 --- a/lib/ebcdic1157.h +++ b/lib/ebcdic1157.h @@ -76,8 +76,6 @@ static int ebcdic1157_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1157_2uni[c]; return 1; } @@ -138,8 +136,6 @@ ebcdic1157_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x5a; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1158.h b/lib/ebcdic1158.h index a6364e0f..38a07b03 100644 --- a/lib/ebcdic1158.h +++ b/lib/ebcdic1158.h @@ -76,8 +76,6 @@ static int ebcdic1158_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1158_2uni[c]; return 1; } @@ -149,8 +147,6 @@ ebcdic1158_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x2116) c = 0x58; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1160.h b/lib/ebcdic1160.h index 2245d0c1..239f940f 100644 --- a/lib/ebcdic1160.h +++ b/lib/ebcdic1160.h @@ -76,8 +76,6 @@ static int ebcdic1160_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1160_2uni[c]; return 1; } @@ -140,8 +138,6 @@ ebcdic1160_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0xfe; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1164.h b/lib/ebcdic1164.h index 8ee2bb12..5b9ab7aa 100644 --- a/lib/ebcdic1164.h +++ b/lib/ebcdic1164.h @@ -76,8 +76,6 @@ static int ebcdic1164_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1164_2uni[c]; return 1; } @@ -166,8 +164,6 @@ ebcdic1164_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x20a8 && wc < 0x20b0) c = ebcdic1164_page20[wc-0x20a8]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1165.h b/lib/ebcdic1165.h index a7307c89..19ba26e0 100644 --- a/lib/ebcdic1165.h +++ b/lib/ebcdic1165.h @@ -76,8 +76,6 @@ static int ebcdic1165_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1165_2uni[c]; return 1; } @@ -155,8 +153,6 @@ ebcdic1165_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic1166.h b/lib/ebcdic1166.h index f1a02703..c2b981d7 100644 --- a/lib/ebcdic1166.h +++ b/lib/ebcdic1166.h @@ -76,8 +76,6 @@ static int ebcdic1166_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic1166_2uni[c]; return 1; } @@ -156,8 +154,6 @@ ebcdic1166_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x2116) c = 0x58; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic12712.h b/lib/ebcdic12712.h index 9e3a4821..aaa02639 100644 --- a/lib/ebcdic12712.h +++ b/lib/ebcdic12712.h @@ -76,8 +76,6 @@ static int ebcdic12712_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic12712_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -159,8 +157,6 @@ ebcdic12712_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x20a8 && wc < 0x20b0) c = ebcdic12712_page20_1[wc-0x20a8]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic16804.h b/lib/ebcdic16804.h index 2ace6edb..17aa1dce 100644 --- a/lib/ebcdic16804.h +++ b/lib/ebcdic16804.h @@ -76,8 +76,6 @@ static int ebcdic16804_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic16804_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -173,8 +171,6 @@ ebcdic16804_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0xfe78 && wc < 0xff00) c = ebcdic16804_pagefe[wc-0xfe78]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic273.h b/lib/ebcdic273.h index 7c372bde..d0166b47 100644 --- a/lib/ebcdic273.h +++ b/lib/ebcdic273.h @@ -76,8 +76,6 @@ static int ebcdic273_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic273_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic273_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic273_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic277.h b/lib/ebcdic277.h index efca03aa..dd9e64de 100644 --- a/lib/ebcdic277.h +++ b/lib/ebcdic277.h @@ -76,8 +76,6 @@ static int ebcdic277_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic277_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic277_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic277_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic278.h b/lib/ebcdic278.h index 608b3d84..d63db611 100644 --- a/lib/ebcdic278.h +++ b/lib/ebcdic278.h @@ -76,8 +76,6 @@ static int ebcdic278_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic278_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic278_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic278_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic280.h b/lib/ebcdic280.h index 9e24ce8d..add8c6c0 100644 --- a/lib/ebcdic280.h +++ b/lib/ebcdic280.h @@ -76,8 +76,6 @@ static int ebcdic280_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic280_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic280_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic280_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic282.h b/lib/ebcdic282.h index bb50eb2a..ae0f0024 100644 --- a/lib/ebcdic282.h +++ b/lib/ebcdic282.h @@ -76,8 +76,6 @@ static int ebcdic282_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic282_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic282_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic282_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic284.h b/lib/ebcdic284.h index e730fff4..03efd703 100644 --- a/lib/ebcdic284.h +++ b/lib/ebcdic284.h @@ -76,8 +76,6 @@ static int ebcdic284_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic284_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic284_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic284_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic285.h b/lib/ebcdic285.h index 01ecef62..5b22e166 100644 --- a/lib/ebcdic285.h +++ b/lib/ebcdic285.h @@ -76,8 +76,6 @@ static int ebcdic285_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic285_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic285_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic285_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic297.h b/lib/ebcdic297.h index 34789e5a..54824c7a 100644 --- a/lib/ebcdic297.h +++ b/lib/ebcdic297.h @@ -76,8 +76,6 @@ static int ebcdic297_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic297_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic297_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic297_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic423.h b/lib/ebcdic423.h index 514a418c..54d0a367 100644 --- a/lib/ebcdic423.h +++ b/lib/ebcdic423.h @@ -76,8 +76,6 @@ static int ebcdic423_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic423_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -142,8 +140,6 @@ ebcdic423_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x0380 && wc < 0x03d0) c = ebcdic423_page03[wc-0x0380]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic424.h b/lib/ebcdic424.h index 2c3d366c..e2346cb6 100644 --- a/lib/ebcdic424.h +++ b/lib/ebcdic424.h @@ -76,8 +76,6 @@ static int ebcdic424_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic424_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -145,8 +143,6 @@ ebcdic424_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x2010 && wc < 0x2040) c = ebcdic424_page20[wc-0x2010]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic425.h b/lib/ebcdic425.h index 675c571a..36da6bee 100644 --- a/lib/ebcdic425.h +++ b/lib/ebcdic425.h @@ -76,8 +76,6 @@ static int ebcdic425_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic425_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -159,8 +157,6 @@ ebcdic425_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic4971.h b/lib/ebcdic4971.h index c396ca29..9c9494f2 100644 --- a/lib/ebcdic4971.h +++ b/lib/ebcdic4971.h @@ -76,8 +76,6 @@ static int ebcdic4971_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic4971_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -154,8 +152,6 @@ ebcdic4971_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0xfc; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic500.h b/lib/ebcdic500.h index dd25158c..190b0dca 100644 --- a/lib/ebcdic500.h +++ b/lib/ebcdic500.h @@ -76,8 +76,6 @@ static int ebcdic500_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic500_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic500_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic500_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic838.h b/lib/ebcdic838.h index c74ac5aa..4cecef5a 100644 --- a/lib/ebcdic838.h +++ b/lib/ebcdic838.h @@ -76,8 +76,6 @@ static int ebcdic838_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic838_2uni[c]; return 1; } @@ -130,8 +128,6 @@ ebcdic838_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x0e00 && wc < 0x0e60) c = ebcdic838_page0e[wc-0x0e00]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic870.h b/lib/ebcdic870.h index eaae81cc..59ce2e30 100644 --- a/lib/ebcdic870.h +++ b/lib/ebcdic870.h @@ -76,8 +76,6 @@ static int ebcdic870_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic870_2uni[c]; return 1; } @@ -149,8 +147,6 @@ ebcdic870_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x02c0 && wc < 0x02e0) c = ebcdic870_page02[wc-0x02c0]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic871.h b/lib/ebcdic871.h index 88b54a3c..59cef078 100644 --- a/lib/ebcdic871.h +++ b/lib/ebcdic871.h @@ -76,8 +76,6 @@ static int ebcdic871_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic871_2uni[c]; return 1; } @@ -124,8 +122,6 @@ ebcdic871_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) if (wc < 0x0100) c = ebcdic871_page00[wc]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic875.h b/lib/ebcdic875.h index afb44ab0..37924d71 100644 --- a/lib/ebcdic875.h +++ b/lib/ebcdic875.h @@ -76,8 +76,6 @@ static int ebcdic875_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic875_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -140,8 +138,6 @@ ebcdic875_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x2010 && wc < 0x2020) c = ebcdic875_page20[wc-0x2010]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic880.h b/lib/ebcdic880.h index f545a1ec..a06e0a19 100644 --- a/lib/ebcdic880.h +++ b/lib/ebcdic880.h @@ -76,8 +76,6 @@ static int ebcdic880_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic880_2uni[c]; return 1; } @@ -132,8 +130,6 @@ ebcdic880_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x2116) c = 0x58; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic905.h b/lib/ebcdic905.h index b133776c..7cfe6187 100644 --- a/lib/ebcdic905.h +++ b/lib/ebcdic905.h @@ -76,8 +76,6 @@ static int ebcdic905_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); unsigned short wc = ebcdic905_2uni[c]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; @@ -152,8 +150,6 @@ ebcdic905_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc >= 0x02d8 && wc < 0x02e0) c = ebcdic905_page02[wc-0x02d8]; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/ebcdic924.h b/lib/ebcdic924.h index 373d29e6..88e8385f 100644 --- a/lib/ebcdic924.h +++ b/lib/ebcdic924.h @@ -76,8 +76,6 @@ static int ebcdic924_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c = *s; - if (conv->isurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *pwc = (ucs4_t) ebcdic924_2uni[c]; return 1; } @@ -136,8 +134,6 @@ ebcdic924_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) else if (wc == 0x20ac) c = 0x9f; if (c != 0 || wc == 0) { - if (conv->osurface & ICONV_SURFACE_EBCDIC_ZOS_UNIX) - c = swap_x15_x25 (c); *r = c; return 1; } diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 2808af45..6d862697 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -210,9 +210,7 @@ iconv_t iconv_open(const char* tocode, const char* fromcode) { struct conv_struct* cd; unsigned int from_index; - unsigned int from_surface; unsigned int to_index; - unsigned int to_surface; int discard_ilseq; #include "iconv_open1.h" @@ -236,14 +234,9 @@ iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) { struct conv_struct *cd; unsigned int from_index; - unsigned int from_surface; unsigned int to_index; - unsigned int to_surface; int discard_ilseq = (int)!strict; - from_surface = ICONV_SURFACE_NONE; - to_surface = ICONV_SURFACE_NONE; - to_index = lookup_by_codepage(tocode_cp); from_index = lookup_by_codepage(fromcode_cp); @@ -281,17 +274,13 @@ int iconv_close(iconv_t icd) return 0; } -/* Bit mask of all valid surfaces. */ -#define ALL_SURFACES (ICONV_SURFACE_EBCDIC_ZOS_UNIX) - int iconvctl(iconv_t icd, int request, void *argument) { conv_t cd = (conv_t)icd; switch (request) { case ICONV_TRIVIALP: - *(int *)argument = ((cd->lfuncs.loop_convert == unicode_loop_convert && cd->iindex == cd->oindex && - cd->isurface == cd->osurface) + *(int *)argument = ((cd->lfuncs.loop_convert == unicode_loop_convert && cd->iindex == cd->oindex) ? 1 : 0); return 0; @@ -324,34 +313,6 @@ int iconvctl(iconv_t icd, int request, void *argument) cd->fallbacks.data = NULL; } return 0; - case ICONV_GET_FROM_SURFACE: - *(unsigned int *)argument = cd->isurface; - return 0; - case ICONV_SET_FROM_SURFACE: - if ((*(const unsigned int *)argument & ~ALL_SURFACES) == 0) - { - cd->isurface = *(const unsigned int *)argument; - return 0; - } - else - { - errno = EINVAL; - return -1; - } - case ICONV_GET_TO_SURFACE: - *(unsigned int *)argument = cd->osurface; - return 0; - case ICONV_SET_TO_SURFACE: - if ((*(const unsigned int *)argument & ~ALL_SURFACES) == 0) - { - cd->osurface = *(const unsigned int *)argument; - return 0; - } - else - { - errno = EINVAL; - return -1; - } default: errno = EINVAL; return -1; diff --git a/lib/iconv_open1.h b/lib/iconv_open1.h index 1f4aa4dc..251cb49b 100644 --- a/lib/iconv_open1.h +++ b/lib/iconv_open1.h @@ -21,9 +21,7 @@ Input: const char* tocode, const char* fromcode. Output: unsigned int from_index; - unsigned int from_surface; unsigned int to_index; - unsigned int to_surface; int discard_ilseq; Jumps to 'invalid' in case of errror. */ @@ -33,9 +31,6 @@ char *bp; const struct alias *ap; unsigned int count; - - from_surface = ICONV_SURFACE_NONE; - to_surface = ICONV_SURFACE_NONE; discard_ilseq = 0; /* Before calling HashPool::aliases_lookup, convert the input string to upper case, @@ -71,11 +66,6 @@ { bp = sp - 1; } - else if (sp - buf >= 9 && memcmp(sp - 9, "/ZOS_UNIX", 9) == 0) - { - bp = sp - 9; - to_surface = ICONV_SURFACE_EBCDIC_ZOS_UNIX; - } else break; *bp = '\0'; @@ -119,11 +109,6 @@ { bp = sp - 1; } - else if (sp - buf >= 9 && memcmp(sp - 9, "/ZOS_UNIX", 9) == 0) - { - bp = sp - 9; - from_surface = ICONV_SURFACE_EBCDIC_ZOS_UNIX; - } else break; *bp = '\0'; diff --git a/lib/iconv_open2.h b/lib/iconv_open2.h index 55cf7be2..394fddc5 100644 --- a/lib/iconv_open2.h +++ b/lib/iconv_open2.h @@ -21,9 +21,7 @@ Input: struct conv_struct * cd; unsigned int from_index; - unsigned int from_surface; unsigned int to_index; - unsigned int to_surface; int discard_ilseq; Output: none. Side effects: Fills cd. @@ -37,9 +35,6 @@ cd->oflags = all_encodings[to_index].oflags; /* Initialize the loop functions. */ cd->lfuncs.loop_convert = unicode_loop_convert; cd->lfuncs.loop_reset = unicode_loop_reset; -/* Initialize the surfaces. */ -cd->isurface = from_surface; -cd->osurface = to_surface; /* Initialize the states. */ memset(&cd->istate, '\0', sizeof(state_t)); memset(&cd->ostate, '\0', sizeof(state_t)); From 4740bc06a9885767c4a93b19a93adff22d2a946f Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 8 Oct 2023 23:00:29 +0800 Subject: [PATCH 04/77] Remove iconv_fallbacks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Remove wchar test. 2. Remove iconv_fallbacks. 3. Use '#pragma once' for header. 修改: ChangeLog 修改: FILELIST 修改: include/cppp/reiconv.hpp.in 修改: lib/converters.h 修改: lib/iconv.cpp 修改: lib/iconv_open2.h 修改: lib/loop_unicode.h 删除: tests/test-to-wchar.cpp 修改: tests/tests.cmake 修改: tools/genflags.cpp --- ChangeLog | 6 ++ FILELIST | 1 - include/cppp/reiconv.hpp.in | 41 +-------- lib/converters.h | 1 - lib/iconv.cpp | 12 --- lib/iconv_open2.h | 3 - lib/loop_unicode.h | 173 ------------------------------------ tests/test-to-wchar.cpp | 77 ---------------- tests/tests.cmake | 8 -- tools/genflags.cpp | 3 - 10 files changed, 7 insertions(+), 318 deletions(-) delete mode 100644 tests/test-to-wchar.cpp diff --git a/ChangeLog b/ChangeLog index e5867dfd..e8696c76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2023-10-06 ChenPi11 + + Remove wchar test. + Remove iconv_fallbacks. + Use '#pragma once' for header. + 2023-10-04 ChenPi11 v2.1.0 released. diff --git a/FILELIST b/FILELIST index babb51aa..8d4129cc 100644 --- a/FILELIST +++ b/FILELIST @@ -515,7 +515,6 @@ tests/data/GB18030-2022-BMP.TXT tests/data/IBM-1158.TXT tests/data/BIG5-2003.IRREVERSIBLE.TXT tests/test-shiftseq.cpp -tests/test-to-wchar.cpp tests/throw_error.hpp tests/file_utils.hpp tests/sort.cpp diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 7fd3ca02..f34d4969 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -25,8 +25,7 @@ /* When installed, this file is called "cppp/reiconv.hpp". */ -#ifndef _CPPP_REICONV_HPP -#define _CPPP_REICONV_HPP +#pragma once #include @@ -106,38 +105,6 @@ extern "C++" void* data; }; - /** - * @brief Fallback function. Invoked when a small number of bytes could not be - * converted to a Unicode character. This function should process all - * bytes from inbuf and may produce replacement Unicode characters by calling - * the write_replacement callback repeatedly. - */ - typedef void (*iconv_unicode_mb_to_uc_fallback)(const char *inbuf, size_t inbufsize, - void (*write_replacement)(const unsigned int *buf, size_t buflen, - void *callback_arg), - void *callback_arg, void *data); - - /** - * @brief Fallback function. Invoked when a Unicode character could not be converted - * to the target encoding. This function should process the character and - * may produce replacement bytes (in the target encoding) by calling the - * write_replacement callback repeatedly. - */ - typedef void (*iconv_unicode_uc_to_mb_fallback)(unsigned int code, - void (*write_replacement)(const char *buf, size_t buflen, - void *callback_arg), - void *callback_arg, void *data); - - /** - * @brief Set of fallbacks. - */ - struct iconv_fallbacks - { - iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback; - iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback; - void *data; - }; - /** * @brief Request for iconvctl. */ @@ -154,10 +121,6 @@ extern "C++" * @brief Request for iconvctl. */ constexpr int ICONV_SET_HOOKS = 5; /* const struct iconv_hooks *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_SET_FALLBACKS = 6; /* const struct iconv_fallbacks *argument */ /** * @brief Converts an entire string from one encoding to another, using iconv. Easier to use than iconv() itself. @@ -234,5 +197,3 @@ extern "C++" } // namespace base } // namespace cppp } - -#endif /* _CPPP_REICONV_HPP */ diff --git a/lib/converters.h b/lib/converters.h index 48c716f2..fa405acd 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -106,7 +106,6 @@ struct conv_struct { state_t ostate; /* Operation flags */ int discard_ilseq; - struct iconv_fallbacks fallbacks; struct iconv_hooks hooks; }; diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 6d862697..2327d7f8 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -301,18 +301,6 @@ int iconvctl(iconv_t icd, int request, void *argument) cd->hooks.data = NULL; } return 0; - case ICONV_SET_FALLBACKS: - if (argument != NULL) - { - cd->fallbacks = *(const struct iconv_fallbacks *)argument; - } - else - { - cd->fallbacks.mb_to_uc_fallback = NULL; - cd->fallbacks.uc_to_mb_fallback = NULL; - cd->fallbacks.data = NULL; - } - return 0; default: errno = EINVAL; return -1; diff --git a/lib/iconv_open2.h b/lib/iconv_open2.h index 394fddc5..9a749a29 100644 --- a/lib/iconv_open2.h +++ b/lib/iconv_open2.h @@ -40,9 +40,6 @@ memset(&cd->istate, '\0', sizeof(state_t)); memset(&cd->ostate, '\0', sizeof(state_t)); /* Initialize the operation flags. */ cd->discard_ilseq = discard_ilseq; -cd->fallbacks.mb_to_uc_fallback = NULL; -cd->fallbacks.uc_to_mb_fallback = NULL; -cd->fallbacks.data = NULL; cd->hooks.uc_hook = NULL; cd->hooks.data = NULL; /* Done. */ diff --git a/lib/loop_unicode.h b/lib/loop_unicode.h index fc5ed3fd..e7772eb7 100644 --- a/lib/loop_unicode.h +++ b/lib/loop_unicode.h @@ -19,106 +19,6 @@ /* This file defines the conversion loop via Unicode as a pivot encoding. */ - -struct uc_to_mb_fallback_locals { - unsigned char* l_outbuf; - size_t l_outbytesleft; - int l_errno; -}; - -static void uc_to_mb_write_replacement (const char *buf, size_t buflen, - void* callback_arg) -{ - struct uc_to_mb_fallback_locals * plocals = - (struct uc_to_mb_fallback_locals *) callback_arg; - /* Do nothing if already encountered an error in a previous call. */ - if (plocals->l_errno == 0) { - /* Attempt to copy the passed buffer to the output buffer. */ - if (plocals->l_outbytesleft < buflen) - plocals->l_errno = E2BIG; - else { - memcpy(plocals->l_outbuf, buf, buflen); - plocals->l_outbuf += buflen; - plocals->l_outbytesleft -= buflen; - } - } -} - -struct mb_to_uc_fallback_locals { - conv_t l_cd; - unsigned char* l_outbuf; - size_t l_outbytesleft; - int l_errno; -}; - -static void mb_to_uc_write_replacement (const unsigned int *buf, size_t buflen, - void* callback_arg) -{ - struct mb_to_uc_fallback_locals * plocals = - (struct mb_to_uc_fallback_locals *) callback_arg; - /* Do nothing if already encountered an error in a previous call. */ - if (plocals->l_errno == 0) { - /* Attempt to convert the passed buffer to the target encoding. */ - conv_t cd = plocals->l_cd; - unsigned char* outptr = plocals->l_outbuf; - size_t outleft = plocals->l_outbytesleft; - for (; buflen > 0; buf++, buflen--) { - ucs4_t wc = *buf; - int outcount; - if (outleft == 0) { - plocals->l_errno = E2BIG; - break; - } - outcount = cd->ofuncs.xxx_wctomb(cd,outptr,wc,outleft); - if (outcount != RET_ILUNI) - goto outcount_ok; - /* Handle Unicode tag characters (range U+E0000..U+E007F). */ - if ((wc >> 7) == (0xe0000 >> 7)) - goto outcount_zero; - if (cd->discard_ilseq) { - outcount = 0; - goto outcount_ok; - } - else if (cd->fallbacks.uc_to_mb_fallback != NULL) { - struct uc_to_mb_fallback_locals locals; - locals.l_outbuf = outptr; - locals.l_outbytesleft = outleft; - locals.l_errno = 0; - cd->fallbacks.uc_to_mb_fallback(wc, - uc_to_mb_write_replacement, - &locals, - cd->fallbacks.data); - if (locals.l_errno != 0) { - plocals->l_errno = locals.l_errno; - break; - } - outptr = locals.l_outbuf; - outleft = locals.l_outbytesleft; - outcount = 0; - goto outcount_ok; - } - outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); - if (outcount != RET_ILUNI) - goto outcount_ok; - plocals->l_errno = EILSEQ; - break; - outcount_ok: - if (outcount < 0) { - plocals->l_errno = E2BIG; - break; - } - if (cd->hooks.uc_hook) - (*cd->hooks.uc_hook)(wc, cd->hooks.data); - if (!(outcount <= outleft)) abort(); - outptr += outcount; outleft -= outcount; - outcount_zero: ; - } - plocals->l_outbuf = outptr; - plocals->l_outbytesleft = outleft; - } -} - - static size_t unicode_loop_convert (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) @@ -154,41 +54,6 @@ static size_t unicode_loop_convert (iconv_t icd, } goto outcount_zero; } - else if (cd->fallbacks.mb_to_uc_fallback != NULL) { - unsigned int incount2; - struct mb_to_uc_fallback_locals locals; - switch (cd->iindex) { - case ei_ucs4: case ei_ucs4be: case ei_ucs4le: - case ei_utf32: case ei_utf32be: case ei_utf32le: - case ei_ucs4internal: case ei_ucs4swapped: - incount2 = 4; break; - case ei_ucs2: case ei_ucs2be: case ei_ucs2le: - case ei_utf16: case ei_utf16be: case ei_utf16le: - case ei_ucs2internal: case ei_ucs2swapped: - incount2 = 2; break; - default: - incount2 = 1; break; - } - locals.l_cd = cd; - locals.l_outbuf = outptr; - locals.l_outbytesleft = outleft; - locals.l_errno = 0; - cd->fallbacks.mb_to_uc_fallback((const char*)inptr+incount, incount2, - mb_to_uc_write_replacement, - &locals, - cd->fallbacks.data); - if (locals.l_errno != 0) { - inptr += incount; inleft -= incount; - errno = locals.l_errno; - result = -1; - break; - } - incount += incount2; - outptr = locals.l_outbuf; - outleft = locals.l_outbytesleft; - result += 1; - goto outcount_zero; - } inptr += incount; inleft -= incount; errno = EILSEQ; result = -1; @@ -221,25 +86,6 @@ static size_t unicode_loop_convert (iconv_t icd, outcount = 0; goto outcount_ok; } - else if (cd->fallbacks.uc_to_mb_fallback != NULL) { - struct uc_to_mb_fallback_locals locals; - locals.l_outbuf = outptr; - locals.l_outbytesleft = outleft; - locals.l_errno = 0; - cd->fallbacks.uc_to_mb_fallback(wc, - uc_to_mb_write_replacement, - &locals, - cd->fallbacks.data); - if (locals.l_errno != 0) { - cd->istate = last_istate; - errno = locals.l_errno; - return -1; - } - outptr = locals.l_outbuf; - outleft = locals.l_outbytesleft; - outcount = 0; - goto outcount_ok; - } outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); if (outcount != RET_ILUNI) goto outcount_ok; @@ -298,25 +144,6 @@ static size_t unicode_loop_reset (iconv_t icd, outcount = 0; goto outcount_ok; } - else if (cd->fallbacks.uc_to_mb_fallback != NULL) { - struct uc_to_mb_fallback_locals locals; - locals.l_outbuf = outptr; - locals.l_outbytesleft = outleft; - locals.l_errno = 0; - cd->fallbacks.uc_to_mb_fallback(wc, - uc_to_mb_write_replacement, - &locals, - cd->fallbacks.data); - if (locals.l_errno != 0) { - cd->istate = last_istate; - errno = locals.l_errno; - return -1; - } - outptr = locals.l_outbuf; - outleft = locals.l_outbytesleft; - outcount = 0; - goto outcount_ok; - } outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); if (outcount != RET_ILUNI) goto outcount_ok; diff --git a/tests/test-to-wchar.cpp b/tests/test-to-wchar.cpp deleted file mode 100644 index 16359d1f..00000000 --- a/tests/test-to-wchar.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (C) 2009, 2011 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. - If not, see . */ - -#include -#include -#include -#include -#include - -#include "throw_error.hpp" - -using namespace cppp::base::reiconv; - -/* This test checks that the conversion to wchar_t stops correctly when - the input is incomplete. Based on a bug report from - Tristan Gingold . */ - -namespace test -{ - namespace to_wchar - { - void main () - { - const char* wchar_type; - if(sizeof(wchar_t) == 2) - { - wchar_type = "UTF-16"; - } - else - { - wchar_type = "UTF-32"; - } - iconv_t cd = iconv_open (wchar_type, "UTF-8"); - if (cd == (iconv_t)(-1)) { - /* Skip the test on platforms without wchar_t - (Solaris 2.6, HP-UX 11.00). */ - } else { - char inbuf[2] = { (char)0xc2, (char)0xa0 }; - wchar_t outbuf[10]; - - char *inptr = inbuf; - size_t inbytesleft = 1; - char *outptr = (char *) outbuf; - size_t outbytesleft = sizeof (outbuf); - size_t r = iconv (cd, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - - if (!(r == (size_t)(-1) && errno == EINVAL)) - { - error(std::string(__FILE__) + ":" + std::to_string(__LINE__), - "iconv() did not return EINVAL for incomplete input."); - } - } - } - } -} - -int main () -{ - test::to_wchar::main(); - return 0; -} diff --git a/tests/tests.cmake b/tests/tests.cmake index eecc50f5..6ed2386d 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -18,19 +18,16 @@ if (ENABLE_TEST) add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") add_executable(test-shiftseq "${CMAKE_CURRENT_SOURCE_DIR}/tests/test-shiftseq.cpp") - add_executable(test-to-wchar "${CMAKE_CURRENT_SOURCE_DIR}/tests/test-to-wchar.cpp") add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") target_link_libraries(check-stateful libcppp-reiconv.static) target_link_libraries(check-stateless libcppp-reiconv.static) target_link_libraries(test-shiftseq libcppp-reiconv.static) - target_link_libraries(test-to-wchar libcppp-reiconv.static) set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(test-shiftseq PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(test-to-wchar PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) # Test macro @@ -246,9 +243,4 @@ if (ENABLE_TEST) test("stateless" "ATARIST") test("stateless" "RISCOS-LATIN1") - # Test to wchar - add_test( NAME test-to-wchar - WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" ) - endif() diff --git a/tools/genflags.cpp b/tools/genflags.cpp index 6fa84af6..e486e62a 100644 --- a/tools/genflags.cpp +++ b/tools/genflags.cpp @@ -36,9 +36,6 @@ struct loop_funcs struct iconv_hooks { }; -struct iconv_fallbacks -{ -}; #define ICONV_SURFACE_EBCDIC_ZOS_UNIX 1 #include "converters.h" From e08462b9181377fcd4587173470d7816c0b58583 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 8 Oct 2023 23:16:18 +0800 Subject: [PATCH 05/77] Rename `tests/file_utils.hpp` to `tests/utils.hpp`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改: ChangeLog 修改: FILELIST 修改: tests/check-stateful.cpp 修改: tests/check-stateless.cpp 修改: tests/reiconv-test.hpp 重命名: tests/file_utils.hpp -> tests/utils.hpp --- ChangeLog | 4 ++++ FILELIST | 2 +- tests/check-stateful.cpp | 2 +- tests/check-stateless.cpp | 2 +- tests/reiconv-test.hpp | 2 +- tests/{file_utils.hpp => utils.hpp} | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) rename tests/{file_utils.hpp => utils.hpp} (99%) diff --git a/ChangeLog b/ChangeLog index e8696c76..aa632e22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2023-10-08 ChenPi11 + + Rename 'tests/file_utils.hpp' to 'tests/utils.hpp'. + 2023-10-06 ChenPi11 Remove wchar test. diff --git a/FILELIST b/FILELIST index 8d4129cc..9a0bcaf1 100644 --- a/FILELIST +++ b/FILELIST @@ -516,7 +516,7 @@ tests/data/IBM-1158.TXT tests/data/BIG5-2003.IRREVERSIBLE.TXT tests/test-shiftseq.cpp tests/throw_error.hpp -tests/file_utils.hpp +tests/utils.hpp tests/sort.cpp tests/sort.hpp tools/genaliases.cpp diff --git a/tests/check-stateful.cpp b/tests/check-stateful.cpp index 1d92b784..8665f068 100644 --- a/tests/check-stateful.cpp +++ b/tests/check-stateful.cpp @@ -24,7 +24,7 @@ #include #include -#include "file_utils.hpp" +#include "utils.hpp" #include "reiconv-test.hpp" diff --git a/tests/check-stateless.cpp b/tests/check-stateless.cpp index c3735869..5ee4f4c6 100644 --- a/tests/check-stateless.cpp +++ b/tests/check-stateless.cpp @@ -25,7 +25,7 @@ #include #include -#include "file_utils.hpp" +#include "utils.hpp" #include "table-from.hpp" #include "table-to.hpp" #include "sort.hpp" diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index c49f9d97..26aced53 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -22,7 +22,7 @@ #include -#include "file_utils.hpp" +#include "utils.hpp" #include #include diff --git a/tests/file_utils.hpp b/tests/utils.hpp similarity index 99% rename from tests/file_utils.hpp rename to tests/utils.hpp index 5921e674..060f66c6 100644 --- a/tests/file_utils.hpp +++ b/tests/utils.hpp @@ -18,7 +18,7 @@ */ /* - File operations utils for tests. + Utils for tests. */ #ifndef _FILE_UTILS_HPP From feb4ef03d12ac6b503aebfe44b7f200b77efca15 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 8 Oct 2023 23:19:51 +0800 Subject: [PATCH 06/77] =?UTF-8?q?Use=20`#pragma=20once`=20for=20tests=20he?= =?UTF-8?q?ader.=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog?= =?UTF-8?q?=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/reiconv-t?= =?UTF-8?q?est.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/so?= =?UTF-8?q?rt.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/tab?= =?UTF-8?q?le-from.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20test?= =?UTF-8?q?s/table-to.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20t?= =?UTF-8?q?ests/throw=5Ferror.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20?= =?UTF-8?q?=20=20=20tests/uniq-u.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20?= =?UTF-8?q?=20=20=20=20tests/utils.hpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + tests/reiconv-test.hpp | 5 +---- tests/sort.hpp | 5 +---- tests/table-from.hpp | 5 +---- tests/table-to.hpp | 5 +---- tests/throw_error.hpp | 5 +---- tests/uniq-u.hpp | 7 ++----- tests/utils.hpp | 11 +---------- 8 files changed, 9 insertions(+), 35 deletions(-) diff --git a/ChangeLog b/ChangeLog index aa632e22..21d6a201 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2023-10-08 ChenPi11 Rename 'tests/file_utils.hpp' to 'tests/utils.hpp'. + Use '#pragma once' for tests header. 2023-10-06 ChenPi11 diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 26aced53..1bc32ad3 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -17,8 +17,7 @@ * If not, see . */ -#ifndef _REICONV_TEST_HPP -#define _REICONV_TEST_HPP +#pragma once #include @@ -59,5 +58,3 @@ namespace test } } } - -#endif diff --git a/tests/sort.hpp b/tests/sort.hpp index 062a9860..8367125a 100644 --- a/tests/sort.hpp +++ b/tests/sort.hpp @@ -21,8 +21,7 @@ Sort file lines. */ -#ifndef _SORT_HPP -#define _SORT_HPP +#pragma once #include #include @@ -62,5 +61,3 @@ void sort_file(const std::string& file_name, const std::string& output_file_name output_file << line << std::endl; } } - -#endif diff --git a/tests/table-from.hpp b/tests/table-from.hpp index fba9c9d8..25539a64 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -17,8 +17,7 @@ /* Create a table from CHARSET to Unicode. */ -#ifndef _TABLE_FROM_HPP -#define _TABLE_FROM_HPP +#pragma once #include @@ -245,5 +244,3 @@ namespace test } - -#endif diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 397c2bce..6bfd6cc9 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -17,8 +17,7 @@ /* Create a table from Unicode to CHARSET. */ -#ifndef _TABLE_TO_HPP -#define _TABLE_TO_HPP +#pragma once #include @@ -124,5 +123,3 @@ namespace test } } } - -#endif diff --git a/tests/throw_error.hpp b/tests/throw_error.hpp index c722dbf8..1b30c104 100644 --- a/tests/throw_error.hpp +++ b/tests/throw_error.hpp @@ -21,8 +21,7 @@ Throw error for reiconv-test. */ -#ifndef _THROW_ERROR_HPP -#define _THROW_ERROR_HPP +#pragma once #include #ifdef _MSC_VER @@ -81,5 +80,3 @@ void success(const std::string& op, const std::string& msg) std::cerr << "\033[0m"; } } - -#endif diff --git a/tests/uniq-u.hpp b/tests/uniq-u.hpp index 7dd90a20..13460c8e 100644 --- a/tests/uniq-u.hpp +++ b/tests/uniq-u.hpp @@ -17,9 +17,8 @@ /* Written by Richard Stallman and David MacKenzie. */ /* 2000-03-22 Trimmed down to the case of "uniq -u" by Bruno Haible. */ /* 2023-08-22 Change it to a C++ header for reiconv-test by ChenPi11. */ - -#ifndef _UNIQ_U_HPP -#define _UNIQ_U_HPP +/* 2023-10-08 Use '#pragma once' for header. */ +#pragma once #include #include @@ -267,5 +266,3 @@ void uniq_u(const std::string& in_file, const std::string& out_file) check_file(in_file.c_str(), out_file.c_str()); } - -#endif diff --git a/tests/utils.hpp b/tests/utils.hpp index 060f66c6..3da77db5 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -21,8 +21,7 @@ Utils for tests. */ -#ifndef _FILE_UTILS_HPP -#define _FILE_UTILS_HPP +#pragma once #include #include @@ -39,8 +38,6 @@ #include "throw_error.hpp" - - // Compare 2 files difference but ignore CR. void assert_compare_file(const std::string& path1, const std::string& path2) { @@ -76,16 +73,12 @@ void assert_compare_file(const std::string& path1, const std::string& path2) errno = 0; error("assert_compare_file", "Files are not equal at " + std::to_string(read_seek) + " byte."); } - if(file1_c == EOF && file2_c == EOF) { break; } - } - success("assert_compare_file", "Files are equal."); } - // Get file size. long long get_file_size(const std::string& file_name) { @@ -215,5 +208,3 @@ void mv(const std::string& from, const std::string& to) error(from + " " + to, "Unable to move file."); } } - -#endif From 2896d67124d81b38f32461dcac5bdf6e1f818c16 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 9 Oct 2023 18:38:55 +0800 Subject: [PATCH 07/77] =?UTF-8?q?Optimize=20test=20system.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/check-stateful.cpp=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/check-stateless?= =?UTF-8?q?.cpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/table?= =?UTF-8?q?-from.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/?= =?UTF-8?q?utils.hpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/check-stateful.cpp | 15 --------------- tests/check-stateless.cpp | 16 +--------------- tests/table-from.hpp | 4 ++-- tests/utils.hpp | 15 +++++++++++++++ 4 files changed, 18 insertions(+), 32 deletions(-) diff --git a/tests/check-stateful.cpp b/tests/check-stateful.cpp index 8665f068..52ac43b2 100644 --- a/tests/check-stateful.cpp +++ b/tests/check-stateful.cpp @@ -27,21 +27,6 @@ #include "utils.hpp" #include "reiconv-test.hpp" - -std::string replace(const std::string& src, const std::string& from, const std::string& to) -{ - std::string result = src; - size_t pos = 0; - - while ((pos = result.find(from, pos)) != std::string::npos) - { - result.replace(pos, from.length(), to); - pos += to.length(); - } - - return result; -} - std::string srcdir, charset; // Usage: check-stateful SRCDIR CHARSET diff --git a/tests/check-stateless.cpp b/tests/check-stateless.cpp index 5ee4f4c6..50a82d6b 100644 --- a/tests/check-stateless.cpp +++ b/tests/check-stateless.cpp @@ -31,20 +31,6 @@ #include "sort.hpp" #include "uniq-u.hpp" -std::string replace(const std::string& src, const std::string& from, const std::string& to) -{ - std::string result = src; - size_t pos = 0; - - while ((pos = result.find(from, pos)) != std::string::npos) - { - result.replace(pos, from.length(), to); - pos += to.length(); - } - - return result; -} - std::string srcdir, charset; void check2_pre_process(const std::string& input_file_path, const std::string& output_file_path) @@ -79,7 +65,7 @@ int main(int argc, char* argv[]) { if(argc < 3) { - std::cerr << "Usage: check-stateful SRCDIR CHARSET\n"; + std::cerr << "Usage: check-stateless SRCDIR CHARSET\n"; return 1; } srcdir = argv[1]; diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 25539a64..ac2d9a9b 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -35,7 +35,7 @@ namespace test namespace _table_from { /* If nonzero, ignore conversions outside Unicode plane 0. */ - static int bmp_only; + static bool bmp_only; FILE* save_file; @@ -78,7 +78,7 @@ namespace test } else { - fprintf(stderr, "%s: iconv error.", hexbuf(buf, buflen)); + fprintf(stderr, "%s: Iconv error.", hexbuf(buf, buflen)); error("table-from", "Iconv error."); } } diff --git a/tests/utils.hpp b/tests/utils.hpp index 3da77db5..81bc3cf7 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -208,3 +208,18 @@ void mv(const std::string& from, const std::string& to) error(from + " " + to, "Unable to move file."); } } + +// Replace A to B in string src. +std::string replace(const std::string& src, const std::string& from, const std::string& to) +{ + std::string result = src; + size_t pos = 0; + + while ((pos = result.find(from, pos)) != std::string::npos) + { + result.replace(pos, from.length(), to); + pos += to.length(); + } + + return result; +} \ No newline at end of file From f57f887cbe03289d2d9f9f2f183c79cf1913dce4 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 19 Oct 2023 18:55:49 +0800 Subject: [PATCH 08/77] =?UTF-8?q?Remove=20shiftseq=20test.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20FILELIST=20=09=E5=88=A0?= =?UTF-8?q?=E9=99=A4=EF=BC=9A=20=20=20=20=20tests/test-shiftseq.cpp=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/tests.cmake?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 4 ++ FILELIST | 1 - tests/test-shiftseq.cpp | 139 ---------------------------------------- tests/tests.cmake | 10 +-- 4 files changed, 5 insertions(+), 149 deletions(-) delete mode 100644 tests/test-shiftseq.cpp diff --git a/ChangeLog b/ChangeLog index 21d6a201..6f16fd64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2023-10-19 ChenPi11 + + Remove shiftseq test. + 2023-10-08 ChenPi11 Rename 'tests/file_utils.hpp' to 'tests/utils.hpp'. diff --git a/FILELIST b/FILELIST index 9a0bcaf1..8f046763 100644 --- a/FILELIST +++ b/FILELIST @@ -514,7 +514,6 @@ tests/data/ARMSCII-8.TXT tests/data/GB18030-2022-BMP.TXT tests/data/IBM-1158.TXT tests/data/BIG5-2003.IRREVERSIBLE.TXT -tests/test-shiftseq.cpp tests/throw_error.hpp tests/utils.hpp tests/sort.cpp diff --git a/tests/test-shiftseq.cpp b/tests/test-shiftseq.cpp deleted file mode 100644 index 1330d2fe..00000000 --- a/tests/test-shiftseq.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* Copyright (C) 2008, 2018, 2022 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. - If not, see . */ - -#include -#include -#include -#include -#include - -#include "throw_error.hpp" - -using namespace cppp::base::reiconv; - -/* This test checks that the behaviour of iconv() in the situation of an - invalid multibyte character after a shift sequence is consistent whether - the entire buffer is passed at once, or whether it is passed in two - subsequent calls. Based on a bug report from - Roman Rybalko - at . */ - -namespace test -{ - namespace shiftseq - { - void main1 (void) - { - static const char input[] = "+2D/YQNhB"; - iconv_t cd; - char buf[20]; - - const char * inptr; - size_t inleft; - char * outptr; - size_t outleft; - - cd = iconv_open ("UTF-8", "UTF-7"); - { - size_t r; - - inptr = input; - inleft = 9; - outptr = buf; - outleft = sizeof (buf); - r = iconv (cd, (char **) &inptr, &inleft, &outptr, &outleft); - /* - printf ("r = %d errno = %d inconsumed = %d outproduced = %d\n", - r, errno, inptr - input, outptr - buf); - // glibc: - // r = -1 errno = 84 inconsumed = 4 outproduced = 0 - // cppp-reiconv: - // r = -1 errno = 84 inconsumed = 1 outproduced = 0 - */ - if (!(r == (size_t)(-1) && errno == EILSEQ - && inptr - input == 1 && outptr - buf == 0)) - { - error(std::string(__FILE__) + ":" + std::to_string(__LINE__), "Test 1 failed."); - } - } - } - - void main2 (void) - { - static const char input[20] = "+2D/YQNhB"; - iconv_t cd; - char buf[20]; - - const char * inptr; - size_t inleft; - char * outptr; - size_t outleft; - - cd = iconv_open ("UTF-8", "UTF-7"); - { - size_t r; - - inptr = input; - inleft = 5; - outptr = buf; - outleft = sizeof (buf); - r = iconv (cd, (char **) &inptr, &inleft, &outptr, &outleft); - /* - printf ("r = %d errno = %d inconsumed = %d outproduced = %d\n", - r, errno, inptr - input, outptr - buf); - // glibc: - // r = -1 errno = 84 (EILSEQ) inconsumed = 4 outproduced = 0 - // libiconv: - // r = -1 errno = 22 (EINVAL) inconsumed = 1 outproduced = 0 - */ - if (!(r == (size_t)(-1) && errno == EINVAL - && inptr - input == 1 && outptr - buf == 0)) - { - error(std::string(__FILE__) + ":" + std::to_string(__LINE__), "Test 2 failed."); - } - - inleft = input + 20 - inptr; - r = iconv (cd, (char **) &inptr, &inleft, &outptr, &outleft); - /* - printf ("r = %d errno = %d inconsumed = %d outproduced = %d\n", - r, errno, inptr - input, outptr - buf); - // glibc: - // r = -1 errno = 84 (EILSEQ) inconsumed = 4 outproduced = 0 - // libiconv: - // r = -1 errno = 84 (EILSEQ) inconsumed = 1 outproduced = 0 - */ - if (!(r == (size_t)(-1) && errno == EILSEQ - && inptr - input == 1 && outptr - buf == 0)) - { - error(std::string(__FILE__) + ":" + std::to_string(__LINE__), "Test 2 failed."); - } - } - } - - void main() - { - main1(); - main2(); - } - } -} - -int main() -{ - test::shiftseq::main(); - return 0; -} diff --git a/tests/tests.cmake b/tests/tests.cmake index 6ed2386d..b788a5f1 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -17,17 +17,14 @@ if (ENABLE_TEST) add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") - add_executable(test-shiftseq "${CMAKE_CURRENT_SOURCE_DIR}/tests/test-shiftseq.cpp") add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") target_link_libraries(check-stateful libcppp-reiconv.static) target_link_libraries(check-stateless libcppp-reiconv.static) - target_link_libraries(test-shiftseq libcppp-reiconv.static) - + set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(test-shiftseq PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) # Test macro @@ -195,11 +192,6 @@ if (ENABLE_TEST) test("stateless" "CP949") test("stateless" "JOHAB") test("stateful" "ISO-2022-KR") - - # Shift sequence before invalid multibyte character - add_test( NAME test-shiftseq - WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" ) #if(CMAKE_SYSTEM_NAME STREQUAL "AIX") # AIX specific encodings From 1ba6a512fa28d3d57399bed801a6dc4359f0e45d Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Oct 2023 03:44:45 +0800 Subject: [PATCH 09/77] =?UTF-8?q?Update=20test=20suite.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20CMakeLists.txt=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20FILELIST=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/iconv.cpp=20=09=E6=96=B0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=9A=20=20=20tests/=5Ficonv.hpp=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/reiconv-test.hp?= =?UTF-8?q?p=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/table-fr?= =?UTF-8?q?om.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/tab?= =?UTF-8?q?le-to.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/?= =?UTF-8?q?throw=5Ferror.hpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 + ChangeLog | 4 ++ FILELIST | 1 + lib/iconv.cpp | 109 ++++++++++++++++++++++------------------- tests/_iconv.hpp | 50 +++++++++++++++++++ tests/reiconv-test.hpp | 1 - tests/table-from.hpp | 2 +- tests/table-to.hpp | 2 +- tests/throw_error.hpp | 39 ++++----------- 9 files changed, 126 insertions(+), 84 deletions(-) create mode 100644 tests/_iconv.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 610955e2..eb9565b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,8 @@ elseif(HAVE_VISIBILITY) else() set(DLL_VARIABLE "") endif() +add_compile_definitions("DLL_VARIABLE=${DLL_VARIABLE}") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/libcppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/libcppp-reiconv.rc") diff --git a/ChangeLog b/ChangeLog index 6f16fd64..772729e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2023-10-22 ChenPi11 + + Update test suite. + 2023-10-19 ChenPi11 Remove shiftseq test. diff --git a/FILELIST b/FILELIST index 8f046763..9c47617d 100644 --- a/FILELIST +++ b/FILELIST @@ -515,6 +515,7 @@ tests/data/GB18030-2022-BMP.TXT tests/data/IBM-1158.TXT tests/data/BIG5-2003.IRREVERSIBLE.TXT tests/throw_error.hpp +tests/_iconv.hpp tests/utils.hpp tests/sort.cpp tests/sort.hpp diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 2327d7f8..5248c053 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -24,6 +24,10 @@ #include #include +#ifndef DLL_VARIABLE +#error Macro "DLL_VARIABLE" is not defined, you should define it for export symbols. +#endif + namespace cppp { namespace base @@ -206,72 +210,75 @@ inline static const struct alias* aliases2_lookup(const char* str) #define stringpool2 NULL #endif -iconv_t iconv_open(const char* tocode, const char* fromcode) +extern "C++" { - struct conv_struct* cd; - unsigned int from_index; - unsigned int to_index; - int discard_ilseq; - -#include "iconv_open1.h" - - cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); - if (cd == NULL) + DLL_VARIABLE iconv_t iconv_open(const char* tocode, const char* fromcode) { - errno = ENOMEM; - return (iconv_t)(-1); - } - -#include "iconv_open2.h" + struct conv_struct* cd; + unsigned int from_index; + unsigned int to_index; + int discard_ilseq; - return (iconv_t)cd; -invalid: - errno = EINVAL; - return (iconv_t)(-1); -} + #include "iconv_open1.h" -iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) -{ - struct conv_struct *cd; - unsigned int from_index; - unsigned int to_index; - int discard_ilseq = (int)!strict; + cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); + if (cd == NULL) + { + errno = ENOMEM; + return (iconv_t)(-1); + } - to_index = lookup_by_codepage(tocode_cp); - from_index = lookup_by_codepage(fromcode_cp); + #include "iconv_open2.h" - if(to_index == -1 || from_index == -1 || tocode_cp == -1 || fromcode_cp == -1) - { + return (iconv_t)cd; + invalid: errno = EINVAL; return (iconv_t)(-1); } - cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); - if (cd == NULL) + DLL_VARIABLE iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) { - errno = ENOMEM; - return (iconv_t)(-1); - } + struct conv_struct *cd; + unsigned int from_index; + unsigned int to_index; + int discard_ilseq = (int)!strict; - #include "iconv_open2.h" + to_index = lookup_by_codepage(tocode_cp); + from_index = lookup_by_codepage(fromcode_cp); - return (iconv_t)cd; -} + if(to_index == -1 || from_index == -1 || tocode_cp == -1 || fromcode_cp == -1) + { + errno = EINVAL; + return (iconv_t)(-1); + } -static inline size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) -{ - conv_t cd = (conv_t)icd; - if (inbuf == NULL || *inbuf == NULL) - return cd->lfuncs.loop_reset(icd, outbuf, outbytesleft); - else - return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); -} + cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); + if (cd == NULL) + { + errno = ENOMEM; + return (iconv_t)(-1); + } -int iconv_close(iconv_t icd) -{ - conv_t cd = (conv_t)icd; - free(cd); - return 0; + #include "iconv_open2.h" + + return (iconv_t)cd; + } + + DLL_VARIABLE size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) + { + conv_t cd = (conv_t)icd; + if (inbuf == NULL || *inbuf == NULL) + return cd->lfuncs.loop_reset(icd, outbuf, outbytesleft); + else + return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); + } + + DLL_VARIABLE int iconv_close(iconv_t icd) + { + conv_t cd = (conv_t)icd; + free(cd); + return 0; + } } int iconvctl(iconv_t icd, int request, void *argument) diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp new file mode 100644 index 00000000..8773e4e9 --- /dev/null +++ b/tests/_iconv.hpp @@ -0,0 +1,50 @@ +/** + * @file _iconv.hpp + * @author ChenPi11 + * @brief C++ Plus cppp-reiconv package. + * @version 3.0.0 + * @date 2023-10-22 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + */ +/* Copyright (C) 1999-2023 Free Software Foundation, Inc. + This file is part of the cppp-reiconv library. + + The cppp-reiconv library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + + The cppp-reiconv library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the cppp-reiconv library; see the file COPYING. + If not, see . */ + +#pragma once + +#include + +#if _MSC_VER >= 1600 +#pragma execution_character_set("utf-8") +#endif + +extern "C++" +{ + namespace cppp + { + namespace base + { + namespace reiconv + { + typedef void* iconv_t; + + extern DLL_VARIABLE iconv_t iconv_open(const char* tocode, const char* fromcode); + extern DLL_VARIABLE size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + extern DLL_VARIABLE int iconv_close(iconv_t cd); + } // namespace reiconv + } // namespace base + } // namespace cppp +} diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 1bc32ad3..d827741a 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -47,7 +47,6 @@ namespace test size_t srclen = get_file_size(input_file_path.c_str()); char* s = (char*)malloc(srclen); fread(s, 1, srclen, src); - std::cout << "SRCLEN:" << srclen << "\n"; fclose(src); cppp::base::reiconv::iconv_string(to.c_str(), from.c_str(), s, s+srclen, &res, &len); diff --git a/tests/table-from.hpp b/tests/table-from.hpp index ac2d9a9b..07efc3ea 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include "_iconv.hpp" #include #include diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 6bfd6cc9..962946ae 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -19,7 +19,7 @@ #pragma once -#include +#include "_iconv.hpp" #include #include diff --git a/tests/throw_error.hpp b/tests/throw_error.hpp index 1b30c104..8263eac6 100644 --- a/tests/throw_error.hpp +++ b/tests/throw_error.hpp @@ -18,32 +18,17 @@ */ /* - Throw error for reiconv-test. + Throw error for test. */ #pragma once #include -#ifdef _MSC_VER -#include -#else -#include -#endif -#ifdef _MSC_VER -#define isatty _isatty -#define fileno _fileno -#endif - -const bool stderr_is_tty = isatty(fileno(stderr)); - -void error(const std::string& op, const std::string& msg) +void error_(const std::string& op, const std::string& msg, const std::string& file, size_t line) { int saved_errno = errno; - if(stderr_is_tty) - { - std::cerr << "\033[31m"; - } + std::cerr << "\033[31m"; if(saved_errno) { perror(op.c_str()); @@ -53,10 +38,8 @@ void error(const std::string& op, const std::string& msg) std::cerr << op << ": "; } std::cerr << msg << std::endl; - if(stderr_is_tty) - { - std::cerr << "\033[0m"; - } + std::cerr << file << ":" << line << std::endl; + std::cerr << "\033[0m"; if(saved_errno) { exit(saved_errno); @@ -67,16 +50,12 @@ void error(const std::string& op, const std::string& msg) } } +#define error(op, msg) error_(op, msg, __FILE__, __LINE__) + void success(const std::string& op, const std::string& msg) { - if(stderr_is_tty) - { - std::cerr << "\033[32m"; - } + std::cerr << "\033[32m"; std::cerr << op << ": "; std::cerr << msg << std::endl; - if(stderr_is_tty) - { - std::cerr << "\033[0m"; - } + std::cerr << "\033[0m"; } From 9e4b2fd23ef403c311c2666676b8a98694ec4f89 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Oct 2023 03:58:58 +0800 Subject: [PATCH 10/77] Remove 8 symbols(hide 3 ones) and iconvctl requests. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Remove `iconv_t`, `iconv_open`, `iconv`, `iconv_close`, `iconvctl`, `iconv_unicode_char_hook`, `iconv_hooks`, iconvctl requests, and `int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);`. 2. Hide `iconv_open`, `iconv_close`, `iconv` symbols. You can still call it, see `tests/_iconv.hpp`. 修改: ChangeLog 修改: include/cppp/reiconv.hpp.in 修改: lang/zh_CN.langmap 修改: lib/converters.h 修改: lib/iconv.cpp 修改: lib/iconv_open2.h 修改: lib/loop_unicode.h 修改: tools/genflags.cpp --- ChangeLog | 2 + include/cppp/reiconv.hpp.in | 88 ------------------ lang/zh_CN.langmap | 174 ------------------------------------ lib/converters.h | 1 - lib/iconv.cpp | 36 +------- lib/iconv_open2.h | 2 - lib/loop_unicode.h | 4 - tools/genflags.cpp | 3 - 8 files changed, 5 insertions(+), 305 deletions(-) diff --git a/ChangeLog b/ChangeLog index 772729e0..8ff805d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ 2023-10-22 ChenPi11 Update test suite. + Remove 'iconv_t', 'iconv_open', 'iconv', 'iconv_close', 'iconvctl', 'iconv_unicode_char_hook', 'iconv_hooks', iconvctl requests, and 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);' + Hide 'iconv_open', 'iconv_close', 'iconv' symbols. You can still call it, see 'tests/_iconv.hpp'. 2023-10-19 ChenPi11 diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index f34d4969..4284963e 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -46,94 +46,6 @@ extern "C++" * @brief Version infomation. (major<<8) + minor */ extern @DLL_VARIABLE@ int reiconv_version; - -#undef iconv_t - /** - * @typedef void* - * @brief Identifier for conversion method from one codeset to another. - */ - typedef void* iconv_t; - -#undef iconv_open - /** - * @brief Allocates descriptor for code conversion from encoding 'fromcode' to encoding 'tocode'. - * @param tocode Target encoding. - * @param fromcode From encoding. - * @return Allocated iconv conversation buffer's pointer. - */ - extern @DLL_VARIABLE@ iconv_t iconv_open(const char* tocode, const char* fromcode); - - /** - * @brief Allocates descriptor for code conversion from codepage 'tocode_cp' to codepage 'fromcode_cp'. - * @param tocode_cp Target codepage. - * @param fromcode_cp From codepage. - * @param strict Strict mode, if false, will ignore the invalid characters. - * @note Some encoding may don't have codepage. - * @return Allocated iconv conversation buffer's pointer. - */ - extern @DLL_VARIABLE@ iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict=true); - -#undef iconv_close - /** - * @brief Frees resources allocated for conversion descriptor 'cd'. - * @param cd Conversion descriptor you want to close. - * @return Operation status. (-1 means error, 0 means success). - */ - extern @DLL_VARIABLE@ int iconv_close(iconv_t cd); - - /** - * @brief Control of attributes. - * @param cd Conversion descriptor. - * @param request Attribute request id. - * @param argument Attribute argument. - * @return Operation status (>=0 means success, <0 means error). - */ - extern @DLL_VARIABLE@ int iconvctl(iconv_t cd, int request, void* argument); - - /** - * @typedef void (*) (unsigned int, void*) - * @brief Hook performed after every successful conversion of a Unicode character. - */ - typedef void (*iconv_unicode_char_hook)(unsigned int uc, void* data); - - /** - * @brief Set of hooks. - */ - struct iconv_hooks - { - iconv_unicode_char_hook uc_hook; - void* data; - }; - - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_TRIVIALP = 0; /* int *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_GET_DISCARD_ILSEQ = 3; /* int *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_SET_DISCARD_ILSEQ = 4; /* const int *argument */ - /** - * @brief Request for iconvctl. - */ - constexpr int ICONV_SET_HOOKS = 5; /* const struct iconv_hooks *argument */ - - /** - * @brief Converts an entire string from one encoding to another, using iconv. Easier to use than iconv() itself. - * @note This function does not treat zero characters specially. - * @param cd Conversion descriptor. - * @param start Source string start pointer. - * @param end Source string end pointer. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values are EILSEQ and ENOMEM. - */ - extern @DLL_VARIABLE@ int iconv_string(const iconv_t& cd, const char *start, - const char *end, char **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another, diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index ca52c8cf..1213d14b 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -55,180 +55,6 @@ */ ''' -''' - /** - * @typedef void* - * @brief Identifier for conversion method from one codeset to another. - */ -''' - /** - * @typedef void* - * @brief 从一个字符集到另一个字符集中的转换方法的标识符。 - */ -''' - -''' - /** - * @brief Allocates descriptor for code conversion from encoding 'fromcode' to encoding 'tocode'. - * @param tocode Target encoding. - * @param fromcode From encoding. - * @return Allocated iconv conversation buffer's pointer. - */ -''' - /** - * @brief 为从编码 “fromcode” 到编码 “tocode” 的编码转换分配描述符。 - * @param tocode 目标编码。 - * @param fromcode 原编码。 - * @return 分配的 iconv 描述符。 - */ -''' - -''' - /** - * @brief Allocates descriptor for code conversion from codepage 'tocode_cp' to codepage 'fromcode_cp'. - * @param tocode_cp Target codepage. - * @param fromcode_cp From codepage. - * @param strict Strict mode, if false, will ignore the invalid characters. - * @note Some encoding may don't have codepage. - * @return Allocated iconv conversation buffer's pointer. - */ -''' - /** - * @brief 为从代码页 “fromcode_cp” 到代码页 “tocode_cp” 的编码转换分配描述符。 - * @param tocode_cp Target codepage. - * @param fromcode_cp From codepage. - * @param strict Strict mode, if false, will ignore the invalid characters. - * @note Some encoding may don't have codepage. - * @return Allocated iconv conversation buffer's pointer. - */ -''' - -''' - /** - * @brief Frees resources allocated for conversion descriptor 'cd'. - * @param cd Conversion descriptor you want to close. - * @return Operation status. (-1 means error, 0 means success). - */ -''' - /** - * @brief 释放为转换描述符 “cd” 分配的资源。 - * @param cd 您想要释放的 iconv 转换描述符。 - * @return 操作状态。(-1 表示错误,0 表示成功)。 - */ -''' - -''' - /** - * @brief Control of attributes. - * @param cd Conversion descriptor. - * @param request Attribute request id. - * @param argument Attribute argument. - * @return Operation status (>=0 means success, <0 means error). - */ -''' - /** - * @brief 设置描述符的属性 - * @param cd 转换描述符。 - * @param request 属性请求 ID。 - * @param argument 属性的值。 - * @return 操作状态(>=0 表示成功,<0 表示错误)。 - */ -''' - -''' - /** - * @typedef void (*) (unsigned int, void*) - * @brief Hook performed after every successful conversion of a Unicode character. - */ -''' - /** - * @typedef void (*) (unsigned int, void*) - * @brief 在每次成功转换 Unicode 字符之后执行的钩子函数。 - */ -''' - -''' - /** - * @brief Set of hooks. - */ -''' - /** - * @brief 钩子函数集。 - */ -''' - -''' - /** - * @brief Fallback function. Invoked when a small number of bytes could not be - * converted to a Unicode character. This function should process all - * bytes from inbuf and may produce replacement Unicode characters by calling - * the write_replacement callback repeatedly. - */ -''' - /** -  * @brief 回调函数。当少量字节无法转换为 Unicode 字符时调用。 - * 此函数应处理 “inbuf” 中的所有字节,并通过多次调用 “write_replacement” 回调函数生成替换的 Unicode 字符。 -  */ -''' - -''' - /** - * @brief Fallback function. Invoked when a Unicode character could not be converted - * to the target encoding. This function should process the character and - * may produce replacement bytes (in the target encoding) by calling the - * write_replacement callback repeatedly. - */ -''' - /** - * @brief 回调函数。在无法将 Unicode 字符转换为目标编码时调用。 - * 此函数应处理字符,并可通过重复调用 “write_replacement” 回调来生成替代字节(使用目标编码)。 - */ -''' - -''' - /** - * @brief Set of fallbacks. - */ -''' - /** - * @brief 回调函数集。 - */ -''' - -''' - /** - * @brief Request for iconvctl. - */ -''' - /** - * @brief “iconvctl” 的 “request”. - */ -''' - -''' - /** - * @brief Converts an entire string from one encoding to another, using iconv. Easier to use than iconv() itself. - * @note This function does not treat zero characters specially. - * @param cd Conversion descriptor. - * @param start Source string start pointer. - * @param end Source string end pointer. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values are EILSEQ and ENOMEM. - */ -''' - /** - * @brief 使用 iconv 将整个字符串从一种编码转换为另一种编码。比直接使用 iconv() 函数更简单。 - * @note 该函数不特殊处理 '\0' 字符。 - * @param cd 转换描述符。 - * @param start 源字符串起始指针。 - * @param end 源字符串结束指针。 - * @param resultp 结果内存指针。 - * @param lengthp 指向存储结果长度的变量的指针。 - * @return 如果成功,返回 0 ,否则返回 errno 并设置 errno 。特定的 errno 值包括 EILSEQ 和 ENOMEM 。 - */ -''' - ''' /** * @brief Converts an entire string from one encoding to another, diff --git a/lib/converters.h b/lib/converters.h index fa405acd..acc92ced 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -106,7 +106,6 @@ struct conv_struct { state_t ostate; /* Operation flags */ int discard_ilseq; - struct iconv_hooks hooks; }; /* diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 5248c053..b310c4f8 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -35,6 +35,9 @@ namespace base namespace reiconv { + /* Iconv handle. */ + typedef void* iconv_t; + #if ENABLE_EXTRA /* * Consider all system dependent encodings, for any system, @@ -281,39 +284,6 @@ extern "C++" } } -int iconvctl(iconv_t icd, int request, void *argument) -{ - conv_t cd = (conv_t)icd; - switch (request) - { - case ICONV_TRIVIALP: - *(int *)argument = ((cd->lfuncs.loop_convert == unicode_loop_convert && cd->iindex == cd->oindex) - ? 1 - : 0); - return 0; - case ICONV_GET_DISCARD_ILSEQ: - *(int *)argument = cd->discard_ilseq; - return 0; - case ICONV_SET_DISCARD_ILSEQ: - cd->discard_ilseq = (*(const int *)argument ? 1 : 0); - return 0; - case ICONV_SET_HOOKS: - if (argument != NULL) - { - cd->hooks = *(const struct iconv_hooks *)argument; - } - else - { - cd->hooks.uc_hook = NULL; - cd->hooks.data = NULL; - } - return 0; - default: - errno = EINVAL; - return -1; - } -} - /* version number: (major<<8) + minor */ int reiconv_version = (3 << 8) + 0; diff --git a/lib/iconv_open2.h b/lib/iconv_open2.h index 9a749a29..af04e042 100644 --- a/lib/iconv_open2.h +++ b/lib/iconv_open2.h @@ -40,6 +40,4 @@ memset(&cd->istate, '\0', sizeof(state_t)); memset(&cd->ostate, '\0', sizeof(state_t)); /* Initialize the operation flags. */ cd->discard_ilseq = discard_ilseq; -cd->hooks.uc_hook = NULL; -cd->hooks.data = NULL; /* Done. */ diff --git a/lib/loop_unicode.h b/lib/loop_unicode.h index e7772eb7..76497a6c 100644 --- a/lib/loop_unicode.h +++ b/lib/loop_unicode.h @@ -100,8 +100,6 @@ static size_t unicode_loop_convert (iconv_t icd, result = -1; break; } - if (cd->hooks.uc_hook) - (*cd->hooks.uc_hook)(wc, cd->hooks.data); if (!(outcount <= outleft)) abort(); outptr += outcount; outleft -= outcount; } @@ -156,8 +154,6 @@ static size_t unicode_loop_reset (iconv_t icd, errno = E2BIG; return -1; } - if (cd->hooks.uc_hook) - (*cd->hooks.uc_hook)(wc, cd->hooks.data); if (!(outcount <= outleft)) abort(); outptr += outcount; outleft -= outcount; diff --git a/tools/genflags.cpp b/tools/genflags.cpp index e486e62a..af92c2ec 100644 --- a/tools/genflags.cpp +++ b/tools/genflags.cpp @@ -33,9 +33,6 @@ struct loop_funcs { }; -struct iconv_hooks -{ -}; #define ICONV_SURFACE_EBCDIC_ZOS_UNIX 1 #include "converters.h" From 5dbbf80579ea9b4c5b713d08d9c227e8d11a91b6 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Oct 2023 04:00:55 +0800 Subject: [PATCH 11/77] =?UTF-8?q?Fix=20a=20typo.=20=09=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=20=20=20=20=20ChangeLog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8ff805d5..cd362b1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2023-10-22 ChenPi11 Update test suite. - Remove 'iconv_t', 'iconv_open', 'iconv', 'iconv_close', 'iconvctl', 'iconv_unicode_char_hook', 'iconv_hooks', iconvctl requests, and 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);' + Remove 'iconv_t', 'iconv_open', 'iconv', 'iconv_close', 'iconvctl', 'iconv_unicode_char_hook', 'iconv_hooks', iconvctl requests, and 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);'. Hide 'iconv_open', 'iconv_close', 'iconv' symbols. You can still call it, see 'tests/_iconv.hpp'. 2023-10-19 ChenPi11 From 529eafdb03589e524246b5ca91270b490457747e Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Oct 2023 04:04:40 +0800 Subject: [PATCH 12/77] =?UTF-8?q?Rename=20`iconv=5Fstring`=20to=20`convert?= =?UTF-8?q?`.=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20?= =?UTF-8?q?=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20include/cppp/reico?= =?UTF-8?q?nv.hpp.in=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lang/z?= =?UTF-8?q?h=5FCN.langmap=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20l?= =?UTF-8?q?ib/iconv.cpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tes?= =?UTF-8?q?ts/reiconv-test.hpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + include/cppp/reiconv.hpp.in | 12 ++++++------ lang/zh_CN.langmap | 16 ++++++++-------- lib/iconv.cpp | 24 ++++++++++++------------ tests/reiconv-test.hpp | 2 +- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd362b1f..8f3d6c92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ Update test suite. Remove 'iconv_t', 'iconv_open', 'iconv', 'iconv_close', 'iconvctl', 'iconv_unicode_char_hook', 'iconv_hooks', iconvctl requests, and 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);'. Hide 'iconv_open', 'iconv_close', 'iconv' symbols. You can still call it, see 'tests/_iconv.hpp'. + Rename 'iconv_string' to 'convert'. 2023-10-19 ChenPi11 diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 4284963e..c544fecb 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -74,12 +74,12 @@ extern "C++" * @example * const char* s = ...; * char* result = NULL; - * if (iconv_string("UCS-4-INTERNAL", "GBK", + * if (convert("UCS-4-INTERNAL", "GBK", * s, s+strlen(s)+1, &result, NULL) != 0) - * perror("iconv_string"); + * perror("convert"); * */ - extern @DLL_VARIABLE@ int iconv_string(const char* tocode, const char* fromcode, const char* start, + extern @DLL_VARIABLE@ int convert(const char* tocode, const char* fromcode, const char* start, const char* end, char** resultp, size_t* lengthp); /** @@ -97,12 +97,12 @@ extern "C++" * @example * const char* s = ...; * char* result = NULL; - * if (iconv_string(65001, 936, + * if (convert(65001, 936, * s, s+strlen(s)+1, &result, NULL) != 0) - * perror("iconv_string"); + * perror("convert"); * */ - extern @DLL_VARIABLE@ int iconv_string(int tocode_cp, int fromcode_cp, const char* start, + extern @DLL_VARIABLE@ int convert(int tocode_cp, int fromcode_cp, const char* start, const char* end, char** resultp, size_t* lengthp, bool strict=true); } // namespace reiconv diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index 1213d14b..1bc1b5e9 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -83,9 +83,9 @@ * @example * const char* s = ...; * char* result = NULL; - * if (iconv_string("UCS-4-INTERNAL", "GBK", + * if (convert("UCS-4-INTERNAL", "GBK", * s, s+strlen(s)+1, &result, NULL) != 0) - * perror("iconv_string"); + * perror("convert"); * */ ''' @@ -111,9 +111,9 @@ * @example * const char* s = ...; * char* result = NULL; - * if (iconv_string("UCS-4-INTERNAL", "GBK", + * if (convert("UCS-4-INTERNAL", "GBK", * s, s+strlen(s)+1, &result, NULL) != 0) - * perror("iconv_string"); + * perror("convert"); * */ ''' @@ -134,9 +134,9 @@ * @example * const char* s = ...; * char* result = NULL; - * if (iconv_string(65001, 936, + * if (convert(65001, 936, * s, s+strlen(s)+1, &result, NULL) != 0) - * perror("iconv_string"); + * perror("convert"); * */ ''' @@ -155,9 +155,9 @@ * @example * const char* s = ...; * char* result = NULL; - * if (iconv_string(65001, 936, + * if (convert(65001, 936, * s, s+strlen(s)+1, &result, NULL) != 0) - * perror("iconv_string"); + * perror("convert"); * */ ''' diff --git a/lib/iconv.cpp b/lib/iconv.cpp index b310c4f8..2c8b89f2 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -289,7 +289,7 @@ int reiconv_version = (3 << 8) + 0; constexpr size_t tmpbufsize = 4096; -int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, +int convert(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp) { size_t length; @@ -379,7 +379,7 @@ int iconv_string(const iconv_t& cd, const char *start, const char *end, char **r return 0; } -int iconv_string(const char* tocode, const char* fromcode, const char* start, +int convert(const char* tocode, const char* fromcode, const char* start, const char* end, char** resultp, size_t* lengthp) { iconv_t cd = iconv_open(tocode, fromcode); @@ -398,10 +398,10 @@ int iconv_string(const char* tocode, const char* fromcode, const char* start, int ret; /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */ - ret = iconv_string(tocode, "UTF-8", start, end, resultp, lengthp); + ret = convert(tocode, "UTF-8", start, end, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; - ret = iconv_string(tocode, "ISO-8859-1", start, end, resultp, lengthp); + ret = convert(tocode, "ISO-8859-1", start, end, resultp, lengthp); return ret; } if (!strcmp(fromcode, "autodetect_jp")) @@ -409,7 +409,7 @@ int iconv_string(const char* tocode, const char* fromcode, const char* start, int ret; /* Try 7-bit encoding first. If the input contains bytes >= 0x80, it will fail. */ - ret = iconv_string(tocode, "ISO-2022-JP-2", start, end, resultp, lengthp); + ret = convert(tocode, "ISO-2022-JP-2", start, end, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This @@ -417,11 +417,11 @@ int iconv_string(const char* tocode, const char* fromcode, const char* start, If we tried SHIFT_JIS first, then some short EUC-JP inputs would come out wrong, and people would condemn EUC-JP and Unix, which would not be good. */ - ret = iconv_string(tocode, "EUC-JP", start, end, resultp, lengthp); + ret = convert(tocode, "EUC-JP", start, end, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Finally try SHIFT_JIS. */ - ret = iconv_string(tocode, "SHIFT_JIS", start, end, resultp, lengthp); + ret = convert(tocode, "SHIFT_JIS", start, end, resultp, lengthp); return ret; } if (!strcmp(fromcode, "autodetect_kr")) @@ -429,11 +429,11 @@ int iconv_string(const char* tocode, const char* fromcode, const char* start, int ret; /* Try 7-bit encoding first. If the input contains bytes >= 0x80, it will fail. */ - ret = iconv_string(tocode, "ISO-2022-KR", start, end, resultp, lengthp); + ret = convert(tocode, "ISO-2022-KR", start, end, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Finally try EUC-KR. */ - ret = iconv_string(tocode, "EUC-KR", start, end, resultp, lengthp); + ret = convert(tocode, "EUC-KR", start, end, resultp, lengthp); return ret; } #pragma endregion @@ -442,12 +442,12 @@ int iconv_string(const char* tocode, const char* fromcode, const char* start, return -1; } - int ret = iconv_string(cd, start, end, resultp, lengthp); + int ret = convert(cd, start, end, resultp, lengthp); iconv_close(cd); return ret; } -int iconv_string(int tocode_cp, int fromcode_cp, const char* start, +int convert(int tocode_cp, int fromcode_cp, const char* start, const char* end, char** resultp, size_t* lengthp, bool strict) { iconv_t cd = iconv_open(tocode_cp, fromcode_cp, strict); @@ -456,7 +456,7 @@ int iconv_string(int tocode_cp, int fromcode_cp, const char* start, return errno; } - int ret = iconv_string(cd, start, end, resultp, lengthp); + int ret = convert(cd, start, end, resultp, lengthp); iconv_close(cd); return ret; } diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index d827741a..bb9cf13a 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -48,7 +48,7 @@ namespace test char* s = (char*)malloc(srclen); fread(s, 1, srclen, src); fclose(src); - cppp::base::reiconv::iconv_string(to.c_str(), from.c_str(), s, s+srclen, &res, &len); + cppp::base::reiconv::convert(to.c_str(), from.c_str(), s, s+srclen, &res, &len); FILE* out = fopen(output_file_path.c_str(), "wb"); fwrite(res, 1, len, out); From 6a0cdf74f64d89b4852ddf28bafde40e8210e700 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Oct 2023 09:37:39 +0800 Subject: [PATCH 13/77] =?UTF-8?q?Update=20usage=20of=20`convert`.=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20include/cppp/reiconv.?= =?UTF-8?q?hpp.in=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lang/zh?= =?UTF-8?q?=5FCN.langmap=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/iconv.cpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20test?= =?UTF-8?q?s/reiconv-test.hpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + include/cppp/reiconv.hpp.in | 8 ++++---- lang/zh_CN.langmap | 4 ++-- lib/iconv.cpp | 28 ++++++++++++++-------------- tests/reiconv-test.hpp | 2 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8f3d6c92..bac00d6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ Remove 'iconv_t', 'iconv_open', 'iconv', 'iconv_close', 'iconvctl', 'iconv_unicode_char_hook', 'iconv_hooks', iconvctl requests, and 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);'. Hide 'iconv_open', 'iconv_close', 'iconv' symbols. You can still call it, see 'tests/_iconv.hpp'. Rename 'iconv_string' to 'convert'. + Update usage of 'convert()'. 2023-10-19 ChenPi11 diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index c544fecb..49e1f006 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -75,12 +75,12 @@ extern "C++" * const char* s = ...; * char* result = NULL; * if (convert("UCS-4-INTERNAL", "GBK", - * s, s+strlen(s)+1, &result, NULL) != 0) + * s, strlen(s)+1, &result, NULL) != 0) * perror("convert"); * */ extern @DLL_VARIABLE@ int convert(const char* tocode, const char* fromcode, const char* start, - const char* end, char** resultp, size_t* lengthp); + size_t inlength, char** resultp, size_t* lengthp); /** * @brief Converts an entire string from one encoding to another. @@ -98,12 +98,12 @@ extern "C++" * const char* s = ...; * char* result = NULL; * if (convert(65001, 936, - * s, s+strlen(s)+1, &result, NULL) != 0) + * s, strlen(s)+1, &result, NULL) != 0) * perror("convert"); * */ extern @DLL_VARIABLE@ int convert(int tocode_cp, int fromcode_cp, const char* start, - const char* end, char** resultp, size_t* lengthp, bool strict=true); + size_t inlength, char** resultp, size_t* lengthp, bool strict=true); } // namespace reiconv } // namespace base diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index 1bc1b5e9..8a04416c 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -84,7 +84,7 @@ * const char* s = ...; * char* result = NULL; * if (convert("UCS-4-INTERNAL", "GBK", - * s, s+strlen(s)+1, &result, NULL) != 0) + * s, strlen(s)+1, &result, NULL) != 0) * perror("convert"); * */ @@ -112,7 +112,7 @@ * const char* s = ...; * char* result = NULL; * if (convert("UCS-4-INTERNAL", "GBK", - * s, s+strlen(s)+1, &result, NULL) != 0) + * s, strlen(s)+1, &result, NULL) != 0) * perror("convert"); * */ diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 2c8b89f2..13c3c7e9 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -289,7 +289,7 @@ int reiconv_version = (3 << 8) + 0; constexpr size_t tmpbufsize = 4096; -int convert(const iconv_t& cd, const char *start, const char *end, char **resultp, +int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, size_t *lengthp) { size_t length; @@ -299,7 +299,7 @@ int convert(const iconv_t& cd, const char *start, const char *end, char **result size_t count = 0; char tmpbuf[tmpbufsize]; char* inptr = (char*)start; - size_t insize = end - start; + size_t insize = inlength; while (insize > 0) { char *outptr = tmpbuf; @@ -346,7 +346,7 @@ int convert(const iconv_t& cd, const char *start, const char *end, char **result /* Do the conversion for real. */ { char* inptr = (char*)start; - size_t insize = end - start; + size_t insize = inlength; char* outptr = result; size_t outsize = length; while (insize > 0) @@ -380,7 +380,7 @@ int convert(const iconv_t& cd, const char *start, const char *end, char **result } int convert(const char* tocode, const char* fromcode, const char* start, - const char* end, char** resultp, size_t* lengthp) + size_t inlength, char** resultp, size_t* lengthp) { iconv_t cd = iconv_open(tocode, fromcode); if (cd == (iconv_t)(-1)) @@ -398,10 +398,10 @@ int convert(const char* tocode, const char* fromcode, const char* start, int ret; /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */ - ret = convert(tocode, "UTF-8", start, end, resultp, lengthp); + ret = convert(tocode, "UTF-8", start, inlength, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; - ret = convert(tocode, "ISO-8859-1", start, end, resultp, lengthp); + ret = convert(tocode, "ISO-8859-1", start, inlength, resultp, lengthp); return ret; } if (!strcmp(fromcode, "autodetect_jp")) @@ -409,7 +409,7 @@ int convert(const char* tocode, const char* fromcode, const char* start, int ret; /* Try 7-bit encoding first. If the input contains bytes >= 0x80, it will fail. */ - ret = convert(tocode, "ISO-2022-JP-2", start, end, resultp, lengthp); + ret = convert(tocode, "ISO-2022-JP-2", start, inlength, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This @@ -417,11 +417,11 @@ int convert(const char* tocode, const char* fromcode, const char* start, If we tried SHIFT_JIS first, then some short EUC-JP inputs would come out wrong, and people would condemn EUC-JP and Unix, which would not be good. */ - ret = convert(tocode, "EUC-JP", start, end, resultp, lengthp); + ret = convert(tocode, "EUC-JP", start, inlength, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Finally try SHIFT_JIS. */ - ret = convert(tocode, "SHIFT_JIS", start, end, resultp, lengthp); + ret = convert(tocode, "SHIFT_JIS", start, inlength, resultp, lengthp); return ret; } if (!strcmp(fromcode, "autodetect_kr")) @@ -429,11 +429,11 @@ int convert(const char* tocode, const char* fromcode, const char* start, int ret; /* Try 7-bit encoding first. If the input contains bytes >= 0x80, it will fail. */ - ret = convert(tocode, "ISO-2022-KR", start, end, resultp, lengthp); + ret = convert(tocode, "ISO-2022-KR", start, inlength, resultp, lengthp); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Finally try EUC-KR. */ - ret = convert(tocode, "EUC-KR", start, end, resultp, lengthp); + ret = convert(tocode, "EUC-KR", start, inlength, resultp, lengthp); return ret; } #pragma endregion @@ -442,13 +442,13 @@ int convert(const char* tocode, const char* fromcode, const char* start, return -1; } - int ret = convert(cd, start, end, resultp, lengthp); + int ret = convert(cd, start, inlength, resultp, lengthp); iconv_close(cd); return ret; } int convert(int tocode_cp, int fromcode_cp, const char* start, - const char* end, char** resultp, size_t* lengthp, bool strict) + size_t inlength, char** resultp, size_t* lengthp, bool strict) { iconv_t cd = iconv_open(tocode_cp, fromcode_cp, strict); if (cd == (iconv_t)(-1)) @@ -456,7 +456,7 @@ int convert(int tocode_cp, int fromcode_cp, const char* start, return errno; } - int ret = convert(cd, start, end, resultp, lengthp); + int ret = convert(cd, start, inlength, resultp, lengthp); iconv_close(cd); return ret; } diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index bb9cf13a..5b5bae0e 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -48,7 +48,7 @@ namespace test char* s = (char*)malloc(srclen); fread(s, 1, srclen, src); fclose(src); - cppp::base::reiconv::convert(to.c_str(), from.c_str(), s, s+srclen, &res, &len); + cppp::base::reiconv::convert(to.c_str(), from.c_str(), s, srclen, &res, &len); FILE* out = fopen(output_file_path.c_str(), "wb"); fwrite(res, 1, len, out); From d3a8adf868cc341ba102a7d0a109c0729334447f Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Oct 2023 09:39:38 +0800 Subject: [PATCH 14/77] =?UTF-8?q?Update=20NLS=20langmap.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20lang/zh=5FCN.langmap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/zh_CN.langmap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index 8a04416c..cfa13bda 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -135,7 +135,7 @@ * const char* s = ...; * char* result = NULL; * if (convert(65001, 936, - * s, s+strlen(s)+1, &result, NULL) != 0) + * s, strlen(s)+1, &result, NULL) != 0) * perror("convert"); * */ @@ -156,7 +156,7 @@ * const char* s = ...; * char* result = NULL; * if (convert(65001, 936, - * s, s+strlen(s)+1, &result, NULL) != 0) + * s, strlen(s)+1, &result, NULL) != 0) * perror("convert"); * */ From ae97ab1171e3b143e931787c9dff73fa99c82039 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 28 Oct 2023 10:14:31 +0800 Subject: [PATCH 15/77] =?UTF-8?q?Ignore=20warnings.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20CMakeLists.txt=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20Makefile.devel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 21 +++++++++++++++++++++ Makefile.devel | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eb9565b1..86f17655 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,27 @@ project(cppp-reiconv VERSION 3.0.0) # Define options option(ENABLE_EXTRA "Enable extra encodings and features." OFF) +# Ignore warnings +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options(-Wno-unused-parameter) + add_compile_options(-Wno-missing-field-initializers) + add_compile_options(-Wno-implicit-fallthrough) + add_compile_options(-Wno-unused-function) + add_compile_options(-Wno-sign-compare) + add_compile_options(-Wno-type-limits) +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options(-Wno-unused-parameter) + add_compile_options(-Wno-missing-field-initializers) + add_compile_options(-Wno-implicit-fallthrough) + add_compile_options(-Wno-unused-function) + add_compile_options(-Wno-sign-compare) + add_compile_options(-Wno-type-limits) +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + add_compile_options(/wd4996) + add_compile_options(/wd4267) + add_compile_options(/wd4244) +endif () + # Set C++ standard set(CMAKE_CXX_STANDARD 17) diff --git a/Makefile.devel b/Makefile.devel index ce89822c..b926793b 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -9,8 +9,9 @@ CTEST = ctest MKDIR = mkdir -p RM = rm -f -CXX ?= g++ -Wall +CXX ?= g++ +CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ From ece89bec052cbd274b73d5987c6ee635b2f6886c Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 28 Oct 2023 17:00:56 +0800 Subject: [PATCH 16/77] =?UTF-8?q?Add=20new=20function=20`ascii=5Fmbtou16`,?= =?UTF-8?q?=20`ascii=5Fmbtou32`.=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20ChangeLog=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20?= =?UTF-8?q?FILELIST=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20include?= =?UTF-8?q?/cppp/reiconv.hpp.in=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20lang/zh=5FCN.langmap=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20?= =?UTF-8?q?=20=20=20=20lib/iconv.cpp=20=09=E6=96=B0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=9A=20=20=20tests/check-ascii-converters.cpp=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tests/tests.cmake?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 4 + FILELIST | 1 + include/cppp/reiconv.hpp.in | 105 +++++++--- lang/zh_CN.langmap | 134 +++++++----- lib/iconv.cpp | 341 ++++++++++++++++++------------- tests/check-ascii-converters.cpp | 103 ++++++++++ tests/tests.cmake | 40 ++-- 7 files changed, 491 insertions(+), 237 deletions(-) create mode 100644 tests/check-ascii-converters.cpp diff --git a/ChangeLog b/ChangeLog index bac00d6b..9d08cd77 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2023-10-28 ChenPi11 + + Add new function 'ascii_mbtou16', 'ascii_mbtou32'. + 2023-10-22 ChenPi11 Update test suite. diff --git a/FILELIST b/FILELIST index 9c47617d..fdd46cfc 100644 --- a/FILELIST +++ b/FILELIST @@ -269,6 +269,7 @@ tests/uniq-u.hpp tests/reiconv-test.hpp tests/table-to.hpp tests/check-stateful.cpp +tests/check-ascii-converters.cpp tests/data-generator.cpp tests/data/IBM-284.TXT tests/data/IBM-1112.TXT diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 49e1f006..1ee7eb5b 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -3,7 +3,7 @@ * @author ChenPi11 * @brief C++ Plus cppp-reiconv package. * @version 3.0.0 - * @date 2023-10-04 + * @date 2023-10-28 * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. */ /* Copyright (C) 1999-2023 Free Software Foundation, Inc. @@ -47,39 +47,104 @@ extern "C++" */ extern @DLL_VARIABLE@ int reiconv_version; + /** + * @brief Convert a ascii-only string to UTF-16. + * @param str Source string. + * @param length Source string length. + * @param resultp Result memory pointer. + * @param lengthp Pointer to a variable that stores the length of the result. + * @warning Don't forget to free the result memory! + * @return Return true if successful, otherwise return false. + */ + extern @DLL_VARIABLE@ bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp); + + /** + * @brief Convert a ascii-only string to UTF-32. + * @param str Source string. + * @param length Source string length. + * @param resultp Result memory pointer. + * @param lengthp Pointer to a variable that stores the length of the result. + * @warning Don't forget to free the result memory! + * @return Return true if successful, otherwise return false. + */ + extern @DLL_VARIABLE@ bool ascii_mbtou32(const char* str, size_t length, char32_t** resultp, size_t* lengthp); + + /** + * @brief Converts an entire string from one encoding to another, + * and supports autodetect encodings on input. + * + * @note Converts a memory region given in encoding FROMCODE to a new memory + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. + * except that FROMCODE may be one of the values. + * + * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 + * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS + * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR + * @note If resultp is not NULL, the output string is stored in + * *resultp; malloc/realloc is used to allocate the result. + * + * @note This function does not treat zero characters specially. + * @param tocode Target encoding. + * @param fromcode From encoding. + * @param start Source string. + * @param inlength Source string length. + * @param resultp Result memory pointer. + * @param lengthp Pointer to a variable that stores the length of the result. + * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. + */ + extern @DLL_VARIABLE@ int convert(const char* tocode, const char* fromcode, const char* start, + size_t inlength, char** resultp, size_t* lengthp); + /** * @brief Converts an entire string from one encoding to another, * and supports autodetect encodings on input. * * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. * except that FROMCODE may be one of the values. * * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note The input is in the memory region between start (inclusive) and end - * (exclusive). If resultp is not NULL, the output string is stored in + * @note If resultp is not NULL, the output string is stored in * *resultp; malloc/realloc is used to allocate the result. * * @note This function does not treat zero characters specially. * @param tocode Target encoding. * @param fromcode From encoding. - * @param start Source string start pointer. - * @param end Source string end pointer. + * @param start Source string. + * @param inlength Source string length. * @param resultp Result memory pointer. * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. + */ + extern @DLL_VARIABLE@ int convert(const char16_t* tocode, const char16_t* fromcode, const char* start, + size_t inlength, char** resultp, size_t* lengthp); + + /** + * @brief Converts an entire string from one encoding to another, + * and supports autodetect encodings on input. * - * @example - * const char* s = ...; - * char* result = NULL; - * if (convert("UCS-4-INTERNAL", "GBK", - * s, strlen(s)+1, &result, NULL) != 0) - * perror("convert"); + * @note Converts a memory region given in encoding FROMCODE to a new memory + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. + * except that FROMCODE may be one of the values. + * + * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 + * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS + * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR + * @note If resultp is not NULL, the output string is stored in + * *resultp; malloc/realloc is used to allocate the result. * + * @note This function does not treat zero characters specially. + * @param tocode Target encoding. + * @param fromcode From encoding. + * @param start Source string. + * @param inlength Source string length. + * @param resultp Result memory pointer. + * @param lengthp Pointer to a variable that stores the length of the result. + * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char* tocode, const char* fromcode, const char* start, + extern @DLL_VARIABLE@ int convert(const char32_t* tocode, const char32_t* fromcode, const char* start, size_t inlength, char** resultp, size_t* lengthp); /** @@ -87,24 +152,18 @@ extern "C++" * @note This function does not treat zero characters specially. * @param tocode_cp Target encoding codepage. * @param fromcode_cp From encoding codepage. - * @param start Source string start pointer. - * @param end Source string end pointer. + * @param start Source string. + * @param inlength Source string length. * @param resultp Result memory pointer. * @param lengthp Pointer to a variable that stores the length of the result. * @param strict Strict mode, if false, will ignore the invalid characters. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. - * - * @example - * const char* s = ...; - * char* result = NULL; - * if (convert(65001, 936, - * s, strlen(s)+1, &result, NULL) != 0) - * perror("convert"); - * */ extern @DLL_VARIABLE@ int convert(int tocode_cp, int fromcode_cp, const char* start, size_t inlength, char** resultp, size_t* lengthp, bool strict=true); + + } // namespace reiconv } // namespace base } // namespace cppp diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index cfa13bda..2bc9424f 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -55,67 +55,93 @@ */ ''' +''' + /** + * @brief Convert a ascii-only string to UTF-16. + * @param str Source string. + * @param length Source string length. + * @param resultp Result memory pointer. + * @param lengthp Pointer to a variable that stores the length of the result. + * @warning Don't forget to free the result memory! + * @return Return true if successful, otherwise return false. + */ +''' + /** + * @brief 将仅包含 ASCII 字符的字符串转换为 UTF-16。 + * @param str 源字符串。 + * @param length 源字符串长度。 + * @param resultp 结果内存指针。 + * @param lengthp 指向存储结果长度的变量的指针。 + * @warning 不要忘记释放结果内存! + * @return 如果成功,返回 true ,否则返回 false 。 + */ +''' + +''' + /** + * @brief Convert a ascii-only string to UTF-32. + * @param str Source string. + * @param length Source string length. + * @param resultp Result memory pointer. + * @param lengthp Pointer to a variable that stores the length of the result. + * @warning Don't forget to free the result memory! + * @return Return true if successful, otherwise return false. + */ +''' + /** + * @brief 将仅包含 ASCII 字符的字符串转换为 UTF-32。 + * @param str 源字符串。 + * @param length 源字符串长度。 + * @param resultp 结果内存指针。 + * @param lengthp 指向存储结果长度的变量的指针。 + * @warning 不要忘记释放结果内存! + * @return 如果成功,返回 true ,否则返回 false 。 + */ +''' + ''' /** * @brief Converts an entire string from one encoding to another, * and supports autodetect encodings on input. * * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. * except that FROMCODE may be one of the values. * * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note The input is in the memory region between start (inclusive) and end - * (exclusive). If resultp is not NULL, the output string is stored in + * @note If resultp is not NULL, the output string is stored in * *resultp; malloc/realloc is used to allocate the result. * * @note This function does not treat zero characters specially. * @param tocode Target encoding. * @param fromcode From encoding. - * @param start Source string start pointer. - * @param end Source string end pointer. + * @param start Source string. + * @param inlength Source string length. * @param resultp Result memory pointer. * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. - * - * @example - * const char* s = ...; - * char* result = NULL; - * if (convert("UCS-4-INTERNAL", "GBK", - * s, strlen(s)+1, &result, NULL) != 0) - * perror("convert"); - * */ ''' /** * @brief 将整个字符串从一种编码转换为另一种编码,并支持自动检测输入编码。 + * @note 将以编码FROMCODE给出的内存区域转换为以编码TOCODE给出的新内存区域。FROMCODE和TOCODE的取值与iconv_open(3)相同,不支持'//IGNORE'和'//TRANSLIT', + * 唯一的例外是FROMCODE可以是下列值之一。 + * @note "autodetect_utf8" 支持ISO-8859-1和UTF-8 + * @note "autodetect_jp" 支持EUC-JP, ISO-2022-JP-2和SHIFT_JIS + * @note "autodetect_kr" 支持EUC-KR和ISO-2022-KR + * @note 如果resultp不为NULL,则输出字符串存储在*resultp中;使用malloc/realloc来分配结果。 * - * @note 将以编码 FROMCODE 给出的内存区域转换为以编码 TOCODE 给出的新内存区域。 FROMCODE 和 TOCODE 与 iconv_open(3) 中的参数相同,但 FROMCODE 可能是以下值之一。 - * - * @note "autodetect_utf8" 支持 ISO-8859-1 和 UTF-8 - * @note "autodetect_jp" 支持 EUC-JP 、 ISO-2022-JP-2和 SHIFT_JIS - * @note "autodetect_kr" 支持 EUC-KR 和 ISO-2022-KR - * @note 输入位于 start (包含)和 end (不包含)之间的内存区域。如果 resultp 不为 NULL ,则输出字符串存储在 *resultp 中; malloc/realloc 用于分配结果。 - * - * @note 该函数不特殊处理零字符。 + * @note 此函数不会特殊处理零字符。 * @param tocode 目标编码。 * @param fromcode 源编码。 - * @param start 源字符串起始指针。 - * @param end 源字符串结束指针。 + * @param start 源字符串。 + * @param inlength 源字符串长度。 * @param resultp 结果内存指针。 * @param lengthp 指向存储结果长度的变量的指针。 - * @return 如果成功,返回0;否则返回 errno 并设置 errno 。特定的 errno 值包括 EILSEQ 和 ENOMEM 。 - * - * @example - * const char* s = ...; - * char* result = NULL; - * if (convert("UCS-4-INTERNAL", "GBK", - * s, strlen(s)+1, &result, NULL) != 0) - * perror("convert"); - * - */ + * @return 如果成功,返回0,否则返回errno并设置errno。特定的errno值:EILSEQ和ENOMEM。 + */ ''' ''' @@ -124,20 +150,12 @@ * @note This function does not treat zero characters specially. * @param tocode_cp Target encoding codepage. * @param fromcode_cp From encoding codepage. - * @param start Source string start pointer. - * @param end Source string end pointer. + * @param start Source string. + * @param inlength Source string length. * @param resultp Result memory pointer. * @param lengthp Pointer to a variable that stores the length of the result. * @param strict Strict mode, if false, will ignore the invalid characters. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. - * - * @example - * const char* s = ...; - * char* result = NULL; - * if (convert(65001, 936, - * s, strlen(s)+1, &result, NULL) != 0) - * perror("convert"); - * */ ''' /** @@ -145,19 +163,29 @@ * @note 该函数不特殊处理零字符。 * @param tocode_cp 目标编码页。 * @param fromcode_cp 源编码页。 - * @param start 源字符串起始指针。 - * @param end 源字符串结束指针。 + * @param start 源字符串。 + * @param end 源字符串长度。 * @param resultp 结果内存指针。 * @param lengthp 指向存储结果长度的变量的指针。 * @param strict 严格模式,如果为 false ,将忽略无效字符。 * @return 如果成功,返回 0 ;否则返回 errno 并设置 errno 。特定的 errno 值包括 EILSEQ 和 ENOMEM 。 - * - * @example - * const char* s = ...; - * char* result = NULL; - * if (convert(65001, 936, - * s, strlen(s)+1, &result, NULL) != 0) - * perror("convert"); - * */ ''' + +''' +// namespace reiconv +''' +// 命名空间 reiconv +''' + +''' +// namespace base +''' +// 命名空间 base +''' + +''' +// namespace cppp +''' +// 命名空间 cppp +''' diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 13c3c7e9..5027c32d 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -206,15 +206,17 @@ inline static const struct alias* aliases2_lookup(const char* str) for (ptr = sysdep_aliases, count = sizeof(sysdep_aliases) / sizeof(sysdep_aliases[0]); count > 0; ptr++, count--) if (!strcmp(str, stringpool2 + ptr->name)) return ptr; - return NULL; + return nullptr; } #else -#define aliases2_lookup(str) NULL -#define stringpool2 NULL +#define aliases2_lookup(str) nullptr +#define stringpool2 nullptr #endif extern "C++" { + +#pragma region hidden-api DLL_VARIABLE iconv_t iconv_open(const char* tocode, const char* fromcode) { struct conv_struct* cd; @@ -225,7 +227,7 @@ extern "C++" #include "iconv_open1.h" cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); - if (cd == NULL) + if (cd == nullptr) { errno = ENOMEM; return (iconv_t)(-1); @@ -256,7 +258,7 @@ extern "C++" } cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); - if (cd == NULL) + if (cd == nullptr) { errno = ENOMEM; return (iconv_t)(-1); @@ -270,7 +272,7 @@ extern "C++" DLL_VARIABLE size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { conv_t cd = (conv_t)icd; - if (inbuf == NULL || *inbuf == NULL) + if (inbuf == nullptr || *inbuf == nullptr) return cd->lfuncs.loop_reset(icd, outbuf, outbytesleft); else return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); @@ -282,184 +284,239 @@ extern "C++" free(cd); return 0; } -} -/* version number: (major<<8) + minor */ -int reiconv_version = (3 << 8) + 0; +#pragma endregion + + /* version number: (major<<8) + minor */ + DLL_VARIABLE int reiconv_version = (3 << 8) + 0; -constexpr size_t tmpbufsize = 4096; + constexpr const size_t tmpbufsize = 4096; -int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, - size_t *lengthp) -{ - size_t length; - char* result; - /* Determine the length we need. */ + DLL_VARIABLE int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, + size_t *lengthp) { - size_t count = 0; - char tmpbuf[tmpbufsize]; - char* inptr = (char*)start; - size_t insize = inlength; - while (insize > 0) + size_t length; + char* result; + /* Determine the length we need. */ { - char *outptr = tmpbuf; - size_t outsize = tmpbufsize; - size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (size_t)(-1) && errno != E2BIG) + size_t count = 0; + char tmpbuf[tmpbufsize]; + char* inptr = (char*)start; + size_t insize = inlength; + while (insize > 0) { - return (errno == EINVAL ? EILSEQ : errno); + char *outptr = tmpbuf; + size_t outsize = tmpbufsize; + size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1) && errno != E2BIG) + { + return (errno == EINVAL ? EILSEQ : errno); + } + count += outptr - tmpbuf; } - count += outptr - tmpbuf; - } - { - char *outptr = tmpbuf; - size_t outsize = tmpbufsize; - size_t res = iconv(cd, NULL, NULL, &outptr, &outsize); - if (res == (size_t)(-1)) { - return errno; + char *outptr = tmpbuf; + size_t outsize = tmpbufsize; + size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); + if (res == (size_t)(-1)) + { + return errno; + } + count += outptr - tmpbuf; } - count += outptr - tmpbuf; + length = count; } - length = count; - } - if (lengthp != NULL) - { - *lengthp = length; - } - if (resultp == NULL) - { - /* If resultp is nullptr, we can't save results. */ - return 0; - } - result = (*resultp == NULL ? (char*)malloc(length) : (char*)realloc(*resultp, length)); - *resultp = result; - if (length == 0) - { - return 0; - } - if (result == NULL) - { - return (errno = ENOMEM); - } - iconv(cd, NULL, NULL, NULL, NULL); /* return to the initial state */ - /* Do the conversion for real. */ - { - char* inptr = (char*)start; - size_t insize = inlength; - char* outptr = result; - size_t outsize = length; - while (insize > 0) + if (lengthp != nullptr) + { + *lengthp = length; + } + if (resultp == nullptr) + { + /* If resultp is nullptrptr, we can't save results. */ + return 0; + } + result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp, length)); + *resultp = result; + if (length == 0) + { + return 0; + } + if (result == nullptr) + { + return (errno = ENOMEM); + } + iconv(cd, nullptr, nullptr, nullptr, nullptr); /* return to the initial state */ + /* Do the conversion for real. */ { - size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (size_t)(-1)) + char* inptr = (char*)start; + size_t insize = inlength; + char* outptr = result; + size_t outsize = length; + while (insize > 0) { - if (errno == EINVAL) + size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1)) { - break; + if (errno == EINVAL) + { + break; + } + else + { + return errno; + } } - else + } + { + size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); + if (res == (size_t)(-1)) { return errno; } } + if (outsize != 0) + { + abort(); + } } + return 0; + } + + DLL_VARIABLE int convert(const char* tocode, const char* fromcode, const char* start, + size_t inlength, char** resultp, size_t* lengthp) + { + iconv_t cd = iconv_open(tocode, fromcode); + if (cd == (iconv_t)(-1)) { - size_t res = iconv(cd, NULL, NULL, &outptr, &outsize); - if (res == (size_t)(-1)) + if (errno != EINVAL) + { + return -1; + } + + #pragma region autodetect + /* Unsupported fromcode or tocode. Check whether the caller requested + autodetection. */ + if (!strcmp(fromcode, "autodetect_utf8")) { - return errno; + int ret; + /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would + be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */ + ret = convert(tocode, "UTF-8", start, inlength, resultp, lengthp); + if (!(ret < 0 && errno == EILSEQ)) + return ret; + ret = convert(tocode, "ISO-8859-1", start, inlength, resultp, lengthp); + return ret; + } + if (!strcmp(fromcode, "autodetect_jp")) + { + int ret; + /* Try 7-bit encoding first. If the input contains bytes >= 0x80, + it will fail. */ + ret = convert(tocode, "ISO-2022-JP-2", start, inlength, resultp, lengthp); + if (!(ret < 0 && errno == EILSEQ)) + return ret; + /* Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This + is unavoidable. People will condemn SHIFT_JIS. + If we tried SHIFT_JIS first, then some short EUC-JP inputs would + come out wrong, and people would condemn EUC-JP and Unix, which + would not be good. */ + ret = convert(tocode, "EUC-JP", start, inlength, resultp, lengthp); + if (!(ret < 0 && errno == EILSEQ)) + return ret; + /* Finally try SHIFT_JIS. */ + ret = convert(tocode, "SHIFT_JIS", start, inlength, resultp, lengthp); + return ret; } + if (!strcmp(fromcode, "autodetect_kr")) + { + int ret; + /* Try 7-bit encoding first. If the input contains bytes >= 0x80, + it will fail. */ + ret = convert(tocode, "ISO-2022-KR", start, inlength, resultp, lengthp); + if (!(ret < 0 && errno == EILSEQ)) + return ret; + /* Finally try EUC-KR. */ + ret = convert(tocode, "EUC-KR", start, inlength, resultp, lengthp); + return ret; + } + #pragma endregion + + errno = EINVAL; + return -1; } - if (outsize != 0) + + int ret = convert(cd, start, inlength, resultp, lengthp); + iconv_close(cd); + return ret; + } + + DLL_VARIABLE int convert(int tocode_cp, int fromcode_cp, const char* start, + size_t inlength, char** resultp, size_t* lengthp, bool strict) + { + iconv_t cd = iconv_open(tocode_cp, fromcode_cp, strict); + if (cd == (iconv_t)(-1)) { - abort(); + return errno; } + + int ret = convert(cd, start, inlength, resultp, lengthp); + iconv_close(cd); + return ret; } - return 0; -} -int convert(const char* tocode, const char* fromcode, const char* start, - size_t inlength, char** resultp, size_t* lengthp) -{ - iconv_t cd = iconv_open(tocode, fromcode); - if (cd == (iconv_t)(-1)) + DLL_VARIABLE bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp) { - if (errno != EINVAL) + if (resultp == nullptr || lengthp == nullptr) { - return -1; + errno = EINVAL; + return false; } -#pragma region autodetect - /* Unsupported fromcode or tocode. Check whether the caller requested - autodetection. */ - if (!strcmp(fromcode, "autodetect_utf8")) + char16_t* result = (char16_t*)malloc(length * sizeof(char16_t)); + if (result == nullptr) { - int ret; - /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would - be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */ - ret = convert(tocode, "UTF-8", start, inlength, resultp, lengthp); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - ret = convert(tocode, "ISO-8859-1", start, inlength, resultp, lengthp); - return ret; + errno = ENOMEM; + return false; } - if (!strcmp(fromcode, "autodetect_jp")) + + size_t count = 0; + for (size_t i = 0; i < length; i++) { - int ret; - /* Try 7-bit encoding first. If the input contains bytes >= 0x80, - it will fail. */ - ret = convert(tocode, "ISO-2022-JP-2", start, inlength, resultp, lengthp); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - /* Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This - is unavoidable. People will condemn SHIFT_JIS. - If we tried SHIFT_JIS first, then some short EUC-JP inputs would - come out wrong, and people would condemn EUC-JP and Unix, which - would not be good. */ - ret = convert(tocode, "EUC-JP", start, inlength, resultp, lengthp); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - /* Finally try SHIFT_JIS. */ - ret = convert(tocode, "SHIFT_JIS", start, inlength, resultp, lengthp); - return ret; + result[count++] = (char16_t)str[i]; } - if (!strcmp(fromcode, "autodetect_kr")) + + *resultp = result; + *lengthp = count; + return true; + } + + DLL_VARIABLE bool ascii_mbtou32(const char* str, size_t length, char32_t** resultp, size_t* lengthp) + { + if (resultp == nullptr || lengthp == nullptr) { - int ret; - /* Try 7-bit encoding first. If the input contains bytes >= 0x80, - it will fail. */ - ret = convert(tocode, "ISO-2022-KR", start, inlength, resultp, lengthp); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - /* Finally try EUC-KR. */ - ret = convert(tocode, "EUC-KR", start, inlength, resultp, lengthp); - return ret; + errno = EINVAL; + return false; } -#pragma endregion - errno = EINVAL; - return -1; - } + char32_t* result = (char32_t*)malloc(length * sizeof(char32_t)); + if (result == nullptr) + { + errno = ENOMEM; + return false; + } - int ret = convert(cd, start, inlength, resultp, lengthp); - iconv_close(cd); - return ret; -} + size_t count = 0; + for (size_t i = 0; i < length; i++) + { + result[count++] = (char32_t)str[i]; + } -int convert(int tocode_cp, int fromcode_cp, const char* start, - size_t inlength, char** resultp, size_t* lengthp, bool strict) -{ - iconv_t cd = iconv_open(tocode_cp, fromcode_cp, strict); - if (cd == (iconv_t)(-1)) - { - return errno; + *resultp = result; + *lengthp = count; + return true; } - int ret = convert(cd, start, inlength, resultp, lengthp); - iconv_close(cd); - return ret; -} +} // extern "C++" } // namespace reiconv } // namespace base diff --git a/tests/check-ascii-converters.cpp b/tests/check-ascii-converters.cpp new file mode 100644 index 00000000..d5a51195 --- /dev/null +++ b/tests/check-ascii-converters.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2023 The C++ Plus Project. + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file COPYING. + * If not, see . + */ + +/* + Complete check of function 'ascii_xxtoxx'. +*/ + +#include + +#include "utils.hpp" +#include +using namespace cppp::base::reiconv; + +#define ascii_map(type) { \ + (type)0x00, (type)0x01, (type)0x02, (type)0x03, (type)0x04, (type)0x05, \ + (type)0x06, (type)0x07, (type)0x08, (type)0x09, (type)0x0A, (type)0x0B, \ + (type)0x0C, (type)0x0D, (type)0x0E, (type)0x0F, (type)0x10, (type)0x11, \ + (type)0x12, (type)0x13, (type)0x14, (type)0x15, (type)0x16, (type)0x17, \ + (type)0x18, (type)0x19, (type)0x1A, (type)0x1B, (type)0x1C, (type)0x1D, \ + (type)0x1E, (type)0x1F, (type)0x20, (type)0x21, (type)0x22, (type)0x23, \ + (type)0x24, (type)0x25, (type)0x26, (type)0x27, (type)0x28, (type)0x29, \ + (type)0x2A, (type)0x2B, (type)0x2C, (type)0x2D, (type)0x2E, (type)0x2F, \ + (type)0x30, (type)0x31, (type)0x32, (type)0x33, (type)0x34, (type)0x35, \ + (type)0x36, (type)0x37, (type)0x38, (type)0x39, (type)0x3A, (type)0x3B, \ + (type)0x3C, (type)0x3D, (type)0x3E, (type)0x3F, (type)0x40, (type)0x41, \ + (type)0x42, (type)0x43, (type)0x44, (type)0x45, (type)0x46, (type)0x47, \ + (type)0x48, (type)0x49, (type)0x4A, (type)0x4B, (type)0x4C, (type)0x4D, \ + (type)0x4E, (type)0x4F, (type)0x50, (type)0x51, (type)0x52, (type)0x53, \ + (type)0x54, (type)0x55, (type)0x56, (type)0x57, (type)0x58, (type)0x59, \ + (type)0x5A, (type)0x5B, (type)0x5C, (type)0x5D, (type)0x5E, (type)0x5F, \ + (type)0x60, (type)0x61, (type)0x62, (type)0x63, (type)0x64, (type)0x65, \ + (type)0x66, (type)0x67, (type)0x68, (type)0x69, (type)0x6A, (type)0x6B, \ + (type)0x6C, (type)0x6D, (type)0x6E, (type)0x6F, (type)0x70, (type)0x71, \ + (type)0x72, (type)0x73, (type)0x74, (type)0x75, (type)0x76, (type)0x77, \ + (type)0x78, (type)0x79, (type)0x7A, (type)0x7B, (type)0x7C, (type)0x7D, \ + (type)0x7E, (type)0x7F } + +const char mbstr[] = ascii_map(char); +const char16_t u16str[] = ascii_map(char16_t); +const char32_t u32str[] = ascii_map(char32_t); + +void check_mbtou16() +{ + char16_t* res = nullptr; + size_t len = 0; + bool ret = ascii_mbtou16(mbstr, sizeof(mbstr), &res, &len); + if (!ret) + { + error("ascii_mbtou16", "Failed to convert."); + } + for(size_t i = 0; i < len; ++i) + { + if (res[i] != u16str[i]) + { + error("check_mbtou16", "Result is not correct. (at " + std::to_string(i) + ", " + std::to_string(res[i]) + " != " + std::to_string(u16str[i]) + ")"); + } + } + free(res); + success("check_mbtou16", "Conversion from multi-bytes to UTF-16 success."); +} + +void check_mbtou32() +{ + char32_t* res = nullptr; + size_t len = 0; + bool ret = ascii_mbtou32(mbstr, sizeof(mbstr), &res, &len); + if (!ret) + { + error("ascii_mbtou32", "Failed to convert."); + } + for(size_t i = 0; i < len; ++i) + { + if (res[i] != u32str[i]) + { + error("ascii_mbtou32", "Result is not correct. (at " + std::to_string(i) + ", " + std::to_string(res[i]) + " != " + std::to_string(u32str[i]) + ")"); + } + } + free(res); + success("check_mbtou32", "Conversion from multi-bytes to UTF-32 success."); +} + +int main() +{ + check_mbtou16(); + check_mbtou32(); + return 0; +} diff --git a/tests/tests.cmake b/tests/tests.cmake index b788a5f1..1a113263 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -14,18 +14,22 @@ if (ENABLE_TEST) include_directories("${output_includedir}") # Test executables - add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") - add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") - add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") - add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") - - target_link_libraries(check-stateful libcppp-reiconv.static) - target_link_libraries(check-stateless libcppp-reiconv.static) + add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") + add_executable(check-ascii-converters "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-ascii-converters.cpp") + add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") + add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") + add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") + + target_link_libraries(check-ascii-converters libcppp-reiconv.static) + target_link_libraries(check-stateful libcppp-reiconv.static) + target_link_libraries(check-stateless libcppp-reiconv.static) - set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) + set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) + set_target_properties(check-ascii-converters PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) + set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) + set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) + set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) + # Test macro macro(test state encoding) @@ -41,11 +45,7 @@ if (ENABLE_TEST) WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating UTF-8 test data ... " ) - #{ cat $(CMAKE_CURRENT_SOURCE_DIR)/GB18030-2005-BMP.TXT ; "$" "gengb18030z" ; } | sort > GB18030-2005.TXT -#{ test $(CMAKE_CURRENT_SOURCE_DIR) = . || cp $(CMAKE_CURRENT_SOURCE_DIR)/GB18030-2005.IRREVERSIBLE.TXT GB18030-2005.IRREVERSIBLE.TXT; } -#$(SHELL) $(CMAKE_CURRENT_SOURCE_DIR)/check-stateless . GB18030:2005 -#{ cat $(CMAKE_CURRENT_SOURCE_DIR)/GB18030-2022-BMP.TXT ; "$" "gengb18030z" ; } | sort > GB18030-2022.TXT -#$(SHELL) $(CMAKE_CURRENT_SOURCE_DIR)/check-stateless . GB18030:2022 + file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT") add_custom_command(TARGET data-generator POST_BUILD COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" @@ -74,11 +74,13 @@ if (ENABLE_TEST) COMMENT "Sorting GB18030:2022 test data ... " ) - - - # Start test + # Test ascii converters + add_test( NAME "check-ascii-converters" + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$" ) + # General multi-byte encodings test("stateless" "UTF-8") test("stateful" "UTF-16") From 94576bc2aca07137a2881b7ebe292653bddca583 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 28 Oct 2023 17:07:18 +0800 Subject: [PATCH 17/77] =?UTF-8?q?Use=20`nullptr`=20instead=20of=20`NULL`.?= =?UTF-8?q?=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20include/cppp/reiconv.?= =?UTF-8?q?hpp.in=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lang/zh?= =?UTF-8?q?=5FCN.langmap=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/big5.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/cns?= =?UTF-8?q?11643=5Finv.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/cp932ext.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib?= =?UTF-8?q?/cp950ext.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/?= =?UTF-8?q?encodings.def=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20li?= =?UTF-8?q?b/encodings=5Faix.def=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20lib/encodings=5Fdos.def=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A?= =?UTF-8?q?=20=20=20=20=20lib/encodings=5Fextra.def=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/encodings=5Fosf1.def=20=09?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/encodings=5Fzos.d?= =?UTF-8?q?ef=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/gb12345ex?= =?UTF-8?q?t.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/gb2312.h?= =?UTF-8?q?=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/gbkext=5Fin?= =?UTF-8?q?v.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/hkscs199?= =?UTF-8?q?9.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/hkscs200?= =?UTF-8?q?1.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/hkscs200?= =?UTF-8?q?4.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/hkscs200?= =?UTF-8?q?8.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/iconv=5F?= =?UTF-8?q?open1.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/isoi?= =?UTF-8?q?r165ext.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ji?= =?UTF-8?q?sx0208.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/jis?= =?UTF-8?q?x0212.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/ksc5?= =?UTF-8?q?601.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20lib/loop?= =?UTF-8?q?=5Funicode.h=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20tes?= =?UTF-8?q?ts/reiconv-test.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20tests/table-from.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20?= =?UTF-8?q?=20=20=20=20tests/table-to.hpp=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A?= =?UTF-8?q?=20=20=20=20=20tests/uniq-u.hpp=20=09=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=20=20=20=20=20tests/utils.hpp=20=09=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9A=20=20=20=20=20tools/genaliases.cpp=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20tools/genaliases2.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + include/cppp/reiconv.hpp.in | 6 +- lang/zh_CN.langmap | 4 +- lib/big5.h | 2 +- lib/cns11643_inv.h | 2 +- lib/cp932ext.h | 2 +- lib/cp950ext.h | 2 +- lib/encodings.def | 216 ++++++++++++++++++------------------ lib/encodings_aix.def | 18 +-- lib/encodings_dos.def | 30 ++--- lib/encodings_extra.def | 8 +- lib/encodings_osf1.def | 4 +- lib/encodings_zos.def | 106 +++++++++--------- lib/gb12345ext.h | 2 +- lib/gb2312.h | 2 +- lib/gbkext_inv.h | 2 +- lib/hkscs1999.h | 2 +- lib/hkscs2001.h | 2 +- lib/hkscs2004.h | 2 +- lib/hkscs2008.h | 2 +- lib/iconv_open1.h | 8 +- lib/isoir165ext.h | 2 +- lib/jisx0208.h | 2 +- lib/jisx0212.h | 2 +- lib/ksc5601.h | 2 +- lib/loop_unicode.h | 2 +- tests/reiconv-test.hpp | 2 +- tests/table-from.hpp | 16 +-- tests/table-to.hpp | 6 +- tests/uniq-u.hpp | 6 +- tests/utils.hpp | 2 +- tools/genaliases.cpp | 2 +- tools/genaliases2.cpp | 2 +- 33 files changed, 235 insertions(+), 234 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d08cd77..a4db39f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2023-10-28 ChenPi11 Add new function 'ascii_mbtou16', 'ascii_mbtou32'. + Use 'nullptr' instead of 'NULL'. 2023-10-22 ChenPi11 diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 1ee7eb5b..d0747ffe 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -80,7 +80,7 @@ extern "C++" * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not NULL, the output string is stored in + * @note If resultp is not nullptr, the output string is stored in * *resultp; malloc/realloc is used to allocate the result. * * @note This function does not treat zero characters specially. @@ -106,7 +106,7 @@ extern "C++" * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not NULL, the output string is stored in + * @note If resultp is not nullptr, the output string is stored in * *resultp; malloc/realloc is used to allocate the result. * * @note This function does not treat zero characters specially. @@ -132,7 +132,7 @@ extern "C++" * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not NULL, the output string is stored in + * @note If resultp is not nullptr, the output string is stored in * *resultp; malloc/realloc is used to allocate the result. * * @note This function does not treat zero characters specially. diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap index 2bc9424f..29901d83 100644 --- a/lang/zh_CN.langmap +++ b/lang/zh_CN.langmap @@ -111,7 +111,7 @@ * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not NULL, the output string is stored in + * @note If resultp is not nullptr, the output string is stored in * *resultp; malloc/realloc is used to allocate the result. * * @note This function does not treat zero characters specially. @@ -131,7 +131,7 @@ * @note "autodetect_utf8" 支持ISO-8859-1和UTF-8 * @note "autodetect_jp" 支持EUC-JP, ISO-2022-JP-2和SHIFT_JIS * @note "autodetect_kr" 支持EUC-KR和ISO-2022-KR - * @note 如果resultp不为NULL,则输出字符串存储在*resultp中;使用malloc/realloc来分配结果。 + * @note 如果resultp不为nullptr,则输出字符串存储在*resultp中;使用malloc/realloc来分配结果。 * * @note 此函数不会特殊处理零字符。 * @param tocode 目标编码。 diff --git a/lib/big5.h b/lib/big5.h index b48870ba..708f3145 100644 --- a/lib/big5.h +++ b/lib/big5.h @@ -4119,7 +4119,7 @@ static int big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0100) summary = &big5_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0200 && wc < 0x0460) diff --git a/lib/cns11643_inv.h b/lib/cns11643_inv.h index d13f490f..0b86649a 100644 --- a/lib/cns11643_inv.h +++ b/lib/cns11643_inv.h @@ -15368,7 +15368,7 @@ static int cns11643_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0100) summary = &cns11643_inv_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0200 && wc < 0x03d0) diff --git a/lib/cp932ext.h b/lib/cp932ext.h index d06a1ca5..c98c78e6 100644 --- a/lib/cp932ext.h +++ b/lib/cp932ext.h @@ -656,7 +656,7 @@ static int cp932ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x2100 && wc < 0x22c0) summary = &cp932ext_uni2indx_page21[(wc>>4)-0x210]; else if (wc >= 0x2400 && wc < 0x2480) diff --git a/lib/cp950ext.h b/lib/cp950ext.h index 944b2f95..0f4a3b22 100644 --- a/lib/cp950ext.h +++ b/lib/cp950ext.h @@ -120,7 +120,7 @@ static int cp950ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x2500 && wc < 0x25a0) summary = &cp950ext_uni2indx_page25[(wc>>4)-0x250]; else if (wc >= 0x5800 && wc < 0x58c0) diff --git a/lib/encodings.def b/lib/encodings.def index 30524a40..3f9763e3 100644 --- a/lib/encodings.def +++ b/lib/encodings.def @@ -50,7 +50,7 @@ DEFENCODING(( "US-ASCII", /* IANA */ ), 367, ascii, - { ascii_mbtowc, NULL }, { ascii_wctomb, NULL }) + { ascii_mbtowc, nullptr }, { ascii_wctomb, nullptr }) #ifdef USE_SOLARIS_ALIASES DEFALIAS( "646", /* Solaris */ ascii) @@ -64,7 +64,7 @@ DEFENCODING(( "UTF-8", /* IANA, RFC 2279 */ ), 65001, utf8, - { utf8_mbtowc, NULL }, { utf8_wctomb, NULL }) + { utf8_mbtowc, nullptr }, { utf8_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "UTF8", /* HP-UX */ utf8) @@ -76,7 +76,7 @@ DEFENCODING(( "UCS-2", /* glibc */ ), -1, ucs2, - { ucs2_mbtowc, NULL }, { ucs2_wctomb, NULL }) + { ucs2_mbtowc, nullptr }, { ucs2_wctomb, nullptr }) DEFENCODING(( "UCS-2BE", /* glibc */ "UNICODEBIG", /* glibc */ @@ -86,7 +86,7 @@ DEFENCODING(( "UCS-2BE", /* glibc */ ), -1, ucs2be, - { ucs2be_mbtowc, NULL }, { ucs2be_wctomb, NULL }) + { ucs2be_mbtowc, nullptr }, { ucs2be_wctomb, nullptr }) DEFENCODING(( "UCS-2LE", /* glibc */ "UNICODELITTLE", /* glibc */ @@ -94,7 +94,7 @@ DEFENCODING(( "UCS-2LE", /* glibc */ ), -1, ucs2le, - { ucs2le_mbtowc, NULL }, { ucs2le_wctomb, NULL }) + { ucs2le_mbtowc, nullptr }, { ucs2le_wctomb, nullptr }) DEFENCODING(( "UCS-4", /* glibc */ "ISO-10646-UCS-4", /* IANA */ @@ -102,57 +102,57 @@ DEFENCODING(( "UCS-4", /* glibc */ ), -1, ucs4, - { ucs4_mbtowc, NULL }, { ucs4_wctomb, NULL }) + { ucs4_mbtowc, nullptr }, { ucs4_wctomb, nullptr }) DEFENCODING(( "UCS-4BE", /* glibc */ /*"CP12001", Windows */ ), -1, ucs4be, - { ucs4be_mbtowc, NULL }, { ucs4be_wctomb, NULL }) + { ucs4be_mbtowc, nullptr }, { ucs4be_wctomb, nullptr }) DEFENCODING(( "UCS-4LE", /* glibc */ /*"CP12000", Windows */ ), -1, ucs4le, - { ucs4le_mbtowc, NULL }, { ucs4le_wctomb, NULL }) + { ucs4le_mbtowc, nullptr }, { ucs4le_wctomb, nullptr }) DEFENCODING(( "UTF-16", /* IANA, RFC 2781 */ ), -1, /* MS-Windows Use little endian, so CP1200 means UTF-16LE */ utf16, - { utf16_mbtowc, NULL }, { utf16_wctomb, NULL }) + { utf16_mbtowc, nullptr }, { utf16_wctomb, nullptr }) DEFENCODING(( "UTF-16BE", /* IANA, RFC 2781 */ ), 1201, utf16be, - { utf16be_mbtowc, NULL }, { utf16be_wctomb, NULL }) + { utf16be_mbtowc, nullptr }, { utf16be_wctomb, nullptr }) DEFENCODING(( "UTF-16LE", /* IANA, RFC 2781 */ ), 1200, utf16le, - { utf16le_mbtowc, NULL }, { utf16le_wctomb, NULL }) + { utf16le_mbtowc, nullptr }, { utf16le_wctomb, nullptr }) DEFENCODING(( "UTF-32", /* IANA, Unicode 3.1 */ ), -1, utf32, - { utf32_mbtowc, NULL }, { utf32_wctomb, NULL }) + { utf32_mbtowc, nullptr }, { utf32_wctomb, nullptr }) DEFENCODING(( "UTF-32BE", /* IANA, Unicode 3.1 */ ), 12001, utf32be, - { utf32be_mbtowc, NULL }, { utf32be_wctomb, NULL }) + { utf32be_mbtowc, nullptr }, { utf32be_wctomb, nullptr }) DEFENCODING(( "UTF-32LE", /* IANA, Unicode 3.1 */ ), 12000, utf32le, - { utf32le_mbtowc, NULL }, { utf32le_wctomb, NULL }) + { utf32le_mbtowc, nullptr }, { utf32le_wctomb, nullptr }) DEFENCODING(( "UTF-7", /* IANA, RFC 2152 */ "UNICODE-1-1-UTF-7", /* IANA, RFC 1642 */ @@ -161,43 +161,43 @@ DEFENCODING(( "UTF-7", /* IANA, RFC 2152 */ ), 65000, utf7, - { utf7_mbtowc, NULL }, { utf7_wctomb, utf7_reset }) + { utf7_mbtowc, nullptr }, { utf7_wctomb, utf7_reset }) DEFENCODING(( "UCS-2-INTERNAL", /* libiconv */ ), -1, ucs2internal, - { ucs2internal_mbtowc, NULL }, { ucs2internal_wctomb, NULL }) + { ucs2internal_mbtowc, nullptr }, { ucs2internal_wctomb, nullptr }) DEFENCODING(( "UCS-2-SWAPPED", /* libiconv */ ), -1, ucs2swapped, - { ucs2swapped_mbtowc, NULL }, { ucs2swapped_wctomb, NULL }) + { ucs2swapped_mbtowc, nullptr }, { ucs2swapped_wctomb, nullptr }) DEFENCODING(( "UCS-4-INTERNAL", /* libiconv */ ), -1, ucs4internal, - { ucs4internal_mbtowc, NULL },{ ucs4internal_wctomb, NULL }) + { ucs4internal_mbtowc, nullptr },{ ucs4internal_wctomb, nullptr }) DEFENCODING(( "UCS-4-SWAPPED", /* libiconv */ ), -1, ucs4swapped, - { ucs4swapped_mbtowc, NULL }, { ucs4swapped_wctomb, NULL }) + { ucs4swapped_mbtowc, nullptr }, { ucs4swapped_wctomb, nullptr }) DEFENCODING(( "C99", ), -1, c99, - { c99_mbtowc, NULL }, { c99_wctomb, NULL }) + { c99_mbtowc, nullptr }, { c99_wctomb, nullptr }) DEFENCODING(( "JAVA", ), -1, java, - { java_mbtowc, NULL }, { java_wctomb, NULL }) + { java_mbtowc, nullptr }, { java_wctomb, nullptr }) /* Standard 8-bit encodings */ @@ -216,7 +216,7 @@ DEFENCODING(( "ISO-8859-1", /* IANA */ ), 28591, iso8859_1, - { iso8859_1_mbtowc, NULL }, { iso8859_1_wctomb, NULL }) + { iso8859_1_mbtowc, nullptr }, { iso8859_1_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88591", /* HP-UX */ iso8859_1) @@ -235,7 +235,7 @@ DEFENCODING(( "ISO-8859-2", /* IANA */ ), 28592, iso8859_2, - { iso8859_2_mbtowc, NULL }, { iso8859_2_wctomb, NULL }) + { iso8859_2_mbtowc, nullptr }, { iso8859_2_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88592", /* HP-UX */ iso8859_2) @@ -254,7 +254,7 @@ DEFENCODING(( "ISO-8859-3", /* IANA */ ), 28593, iso8859_3, - { iso8859_3_mbtowc, NULL }, { iso8859_3_wctomb, NULL }) + { iso8859_3_mbtowc, nullptr }, { iso8859_3_wctomb, nullptr }) DEFENCODING(( "ISO-8859-4", /* IANA */ "ISO_8859-4", /* IANA */ @@ -269,7 +269,7 @@ DEFENCODING(( "ISO-8859-4", /* IANA */ ), 28594, iso8859_4, - { iso8859_4_mbtowc, NULL }, { iso8859_4_wctomb, NULL }) + { iso8859_4_mbtowc, nullptr }, { iso8859_4_wctomb, nullptr }) DEFENCODING(( "ISO-8859-5", /* IANA */ "ISO_8859-5", /* IANA */ @@ -283,7 +283,7 @@ DEFENCODING(( "ISO-8859-5", /* IANA */ ), 28595, iso8859_5, - { iso8859_5_mbtowc, NULL }, { iso8859_5_wctomb, NULL }) + { iso8859_5_mbtowc, nullptr }, { iso8859_5_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88595", /* HP-UX */ iso8859_5) @@ -303,7 +303,7 @@ DEFENCODING(( "ISO-8859-6", /* IANA */ ), 28596, iso8859_6, - { iso8859_6_mbtowc, NULL }, { iso8859_6_wctomb, NULL }) + { iso8859_6_mbtowc, nullptr }, { iso8859_6_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88596", /* HP-UX */ iso8859_6) @@ -325,7 +325,7 @@ DEFENCODING(( "ISO-8859-7", /* IANA, RFC 1947 */ ), 28597, iso8859_7, - { iso8859_7_mbtowc, NULL }, { iso8859_7_wctomb, NULL }) + { iso8859_7_mbtowc, nullptr }, { iso8859_7_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88597", /* HP-UX */ iso8859_7) @@ -344,7 +344,7 @@ DEFENCODING(( "ISO-8859-8", /* IANA */ ), 28598, iso8859_8, - { iso8859_8_mbtowc, NULL }, { iso8859_8_wctomb, NULL }) + { iso8859_8_mbtowc, nullptr }, { iso8859_8_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88598", /* HP-UX */ iso8859_8) @@ -363,7 +363,7 @@ DEFENCODING(( "ISO-8859-9", /* IANA */ ), 28599, iso8859_9, - { iso8859_9_mbtowc, NULL }, { iso8859_9_wctomb, NULL }) + { iso8859_9_mbtowc, nullptr }, { iso8859_9_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO88599", /* HP-UX */ iso8859_9) @@ -380,7 +380,7 @@ DEFENCODING(( "ISO-8859-10", /* IANA */ ), -1, iso8859_10, - { iso8859_10_mbtowc, NULL }, { iso8859_10_wctomb, NULL }) + { iso8859_10_mbtowc, nullptr }, { iso8859_10_wctomb, nullptr }) DEFENCODING(( "ISO-8859-11", /* glibc */ "ISO_8859-11", @@ -388,7 +388,7 @@ DEFENCODING(( "ISO-8859-11", /* glibc */ ), -1, iso8859_11, - { iso8859_11_mbtowc, NULL }, { iso8859_11_wctomb, NULL }) + { iso8859_11_mbtowc, nullptr }, { iso8859_11_wctomb, nullptr }) DEFENCODING(( "ISO-8859-13", /* IANA, glibc */ "ISO_8859-13", @@ -400,7 +400,7 @@ DEFENCODING(( "ISO-8859-13", /* IANA, glibc */ ), 28603, iso8859_13, - { iso8859_13_mbtowc, NULL }, { iso8859_13_wctomb, NULL }) + { iso8859_13_mbtowc, nullptr }, { iso8859_13_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-921", /* AIX */ iso8859_13) @@ -417,7 +417,7 @@ DEFENCODING(( "ISO-8859-14", /* IANA, glibc */ ), -1, iso8859_14, - { iso8859_14_mbtowc, NULL }, { iso8859_14_wctomb, NULL }) + { iso8859_14_mbtowc, nullptr }, { iso8859_14_wctomb, nullptr }) DEFENCODING(( "ISO-8859-15", /* IANA, glibc */ "ISO_8859-15", /* IANA */ @@ -429,7 +429,7 @@ DEFENCODING(( "ISO-8859-15", /* IANA, glibc */ ), 28605, iso8859_15, - { iso8859_15_mbtowc, NULL }, { iso8859_15_wctomb, NULL }) + { iso8859_15_mbtowc, nullptr }, { iso8859_15_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES DEFALIAS( "ISO885915", /* HP-UX */ iso8859_15) @@ -445,7 +445,7 @@ DEFENCODING(( "ISO-8859-16", /* IANA */ ), -1, iso8859_16, - { iso8859_16_mbtowc, NULL }, { iso8859_16_wctomb, NULL }) + { iso8859_16_mbtowc, nullptr }, { iso8859_16_wctomb, nullptr }) DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ "csKOI8R", /* IANA */ @@ -453,20 +453,20 @@ DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ ), 20866, koi8_r, - { koi8_r_mbtowc, NULL }, { koi8_r_wctomb, NULL }) + { koi8_r_mbtowc, nullptr }, { koi8_r_wctomb, nullptr }) DEFENCODING(( "KOI8-U", /* IANA, RFC 2319 */ ), -1, koi8_u, - { koi8_u_mbtowc, NULL }, { koi8_u_wctomb, NULL }) + { koi8_u_mbtowc, nullptr }, { koi8_u_wctomb, nullptr }) DEFENCODING(( "KOI8-RU", /*"CP21866", Windows */ ), 21866, koi8_ru, - { koi8_ru_mbtowc, NULL }, { koi8_ru_wctomb, NULL }) + { koi8_ru_mbtowc, nullptr }, { koi8_ru_wctomb, nullptr }) /* Windows 8-bit encodings */ @@ -476,7 +476,7 @@ DEFENCODING(( "CP1250", /* JDK 1.1 */ ), 1250, cp1250, - { cp1250_mbtowc, NULL }, { cp1250_wctomb, NULL }) + { cp1250_mbtowc, nullptr }, { cp1250_wctomb, nullptr }) DEFENCODING(( "CP1251", /* JDK 1.1 */ "WINDOWS-1251", /* IANA */ @@ -484,7 +484,7 @@ DEFENCODING(( "CP1251", /* JDK 1.1 */ ), 1251, cp1251, - { cp1251_mbtowc, NULL }, { cp1251_wctomb, NULL }) + { cp1251_mbtowc, nullptr }, { cp1251_wctomb, nullptr }) #ifdef USE_SOLARIS_ALIASES DEFALIAS( "ANSI-1251", /* Solaris */ cp1251) @@ -496,7 +496,7 @@ DEFENCODING(( "CP1252", /* JDK 1.1 */ ), 1252, cp1252, - { cp1252_mbtowc, NULL }, { cp1252_wctomb, NULL }) + { cp1252_mbtowc, nullptr }, { cp1252_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-1252", /* AIX */ cp1252) @@ -508,7 +508,7 @@ DEFENCODING(( "CP1253", /* JDK 1.1 */ ), 1253, cp1253, - { cp1253_mbtowc, NULL }, { cp1253_wctomb, NULL }) + { cp1253_mbtowc, nullptr }, { cp1253_wctomb, nullptr }) DEFENCODING(( "CP1254", /* JDK 1.1 */ "WINDOWS-1254", /* IANA */ @@ -516,7 +516,7 @@ DEFENCODING(( "CP1254", /* JDK 1.1 */ ), 1254, cp1254, - { cp1254_mbtowc, NULL }, { cp1254_wctomb, NULL }) + { cp1254_mbtowc, nullptr }, { cp1254_wctomb, nullptr }) DEFENCODING(( "CP1255", /* JDK 1.1 */ "WINDOWS-1255", /* IANA */ @@ -524,7 +524,7 @@ DEFENCODING(( "CP1255", /* JDK 1.1 */ ), 1255, cp1255, - { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, NULL }) + { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, nullptr }) DEFENCODING(( "CP1256", /* JDK 1.1 */ "WINDOWS-1256", /* IANA */ @@ -532,7 +532,7 @@ DEFENCODING(( "CP1256", /* JDK 1.1 */ ), 1256, cp1256, - { cp1256_mbtowc, NULL }, { cp1256_wctomb, NULL }) + { cp1256_mbtowc, nullptr }, { cp1256_wctomb, nullptr }) DEFENCODING(( "CP1257", /* JDK 1.1 */ "WINDOWS-1257", /* IANA */ @@ -540,14 +540,14 @@ DEFENCODING(( "CP1257", /* JDK 1.1 */ ), 1257, cp1257, - { cp1257_mbtowc, NULL }, { cp1257_wctomb, NULL }) + { cp1257_mbtowc, nullptr }, { cp1257_wctomb, nullptr }) DEFENCODING(( "CP1258", /* JDK 1.1 */ "WINDOWS-1258", /* IANA */ ), 1258, cp1258, - { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, NULL }) + { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, nullptr }) /* DOS 8-bit encodings */ @@ -558,7 +558,7 @@ DEFENCODING(( "CP850", /* IANA, JDK 1.1 */ ), 850, cp850, - { cp850_mbtowc, NULL }, { cp850_wctomb, NULL }) + { cp850_mbtowc, nullptr }, { cp850_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-850", /* AIX */ cp850) @@ -571,7 +571,7 @@ DEFENCODING(( "CP862", /* IANA, JDK 1.1 */ ), 862, cp862, - { cp862_mbtowc, NULL }, { cp862_wctomb, NULL }) + { cp862_mbtowc, nullptr }, { cp862_wctomb, nullptr }) DEFENCODING(( "CP866", /* IANA, JDK 1.1 */ "IBM866", /* IANA */ @@ -580,13 +580,13 @@ DEFENCODING(( "CP866", /* IANA, JDK 1.1 */ ), 866, cp866, - { cp866_mbtowc, NULL }, { cp866_wctomb, NULL }) + { cp866_mbtowc, nullptr }, { cp866_wctomb, nullptr }) DEFENCODING(( "CP1131", /* FreeBSD, MacOS X */ ), 1131, cp1131, - { cp1131_mbtowc, NULL }, { cp1131_wctomb, NULL }) + { cp1131_mbtowc, nullptr }, { cp1131_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-1131", /* AIX */ cp1131) @@ -604,84 +604,84 @@ DEFENCODING(( "MacRoman", /* JDK 1.1 */ ), 10000, mac_roman, - { mac_roman_mbtowc, NULL }, { mac_roman_wctomb, NULL }) + { mac_roman_mbtowc, nullptr }, { mac_roman_wctomb, nullptr }) DEFENCODING(( "MacCentralEurope", /* JDK 1.1 */ /*"CP10029", Windows */ ), 10029, mac_centraleurope, - { mac_centraleurope_mbtowc, NULL }, { mac_centraleurope_wctomb, NULL }) + { mac_centraleurope_mbtowc, nullptr }, { mac_centraleurope_wctomb, nullptr }) DEFENCODING(( "MacIceland", /* JDK 1.1 */ /*"CP10079", Windows */ ), 10079, mac_iceland, - { mac_iceland_mbtowc, NULL }, { mac_iceland_wctomb, NULL }) + { mac_iceland_mbtowc, nullptr }, { mac_iceland_wctomb, nullptr }) DEFENCODING(( "MacCroatian", /* JDK 1.1 */ /*"CP10082", Windows */ ), 10082, mac_croatian, - { mac_croatian_mbtowc, NULL }, { mac_croatian_wctomb, NULL }) + { mac_croatian_mbtowc, nullptr }, { mac_croatian_wctomb, nullptr }) DEFENCODING(( "MacRomania", /* JDK 1.1 */ /*"CP10010", Windows */ ), 10010, mac_romania, - { mac_romania_mbtowc, NULL }, { mac_romania_wctomb, NULL }) + { mac_romania_mbtowc, nullptr }, { mac_romania_wctomb, nullptr }) DEFENCODING(( "MacCyrillic", /* JDK 1.1 */ /*"CP10007", Windows */ ), 10007, mac_cyrillic, - { mac_cyrillic_mbtowc, NULL }, { mac_cyrillic_wctomb, NULL }) + { mac_cyrillic_mbtowc, nullptr }, { mac_cyrillic_wctomb, nullptr }) DEFENCODING(( "MacUkraine", /* JDK 1.1 */ /*"CP10017", Windows */ ), 10017, mac_ukraine, - { mac_ukraine_mbtowc, NULL }, { mac_ukraine_wctomb, NULL }) + { mac_ukraine_mbtowc, nullptr }, { mac_ukraine_wctomb, nullptr }) DEFENCODING(( "MacGreek", /* JDK 1.1 */ /*"CP10006", Windows */ ), 10006, mac_greek, - { mac_greek_mbtowc, NULL }, { mac_greek_wctomb, NULL }) + { mac_greek_mbtowc, nullptr }, { mac_greek_wctomb, nullptr }) DEFENCODING(( "MacTurkish", /* JDK 1.1 */ /*"CP10081", Windows */ ), 10081, mac_turkish, - { mac_turkish_mbtowc, NULL }, { mac_turkish_wctomb, NULL }) + { mac_turkish_mbtowc, nullptr }, { mac_turkish_wctomb, nullptr }) DEFENCODING(( "MacHebrew", /* JDK 1.1 */ /*"CP10005", Windows */ ), 10005, mac_hebrew, - { mac_hebrew_mbtowc, NULL }, { mac_hebrew_wctomb, NULL }) + { mac_hebrew_mbtowc, nullptr }, { mac_hebrew_wctomb, nullptr }) DEFENCODING(( "MacArabic", /* JDK 1.1 */ /*"CP10004", Windows */ ), 10004, mac_arabic, - { mac_arabic_mbtowc, NULL }, { mac_arabic_wctomb, NULL }) + { mac_arabic_mbtowc, nullptr }, { mac_arabic_wctomb, nullptr }) DEFENCODING(( "MacThai", /* JDK 1.1 */ /*"CP10021", Windows */ ), 10021, mac_thai, - { mac_thai_mbtowc, NULL }, { mac_thai_wctomb, NULL }) + { mac_thai_mbtowc, nullptr }, { mac_thai_wctomb, nullptr }) /* Other platform specific 8-bit encodings */ @@ -692,13 +692,13 @@ DEFENCODING(( "HP-ROMAN8", /* IANA, X11R6.4 */ ), -1, hp_roman8, - { hp_roman8_mbtowc, NULL }, { hp_roman8_wctomb, NULL }) + { hp_roman8_mbtowc, nullptr }, { hp_roman8_wctomb, nullptr }) DEFENCODING(( "NEXTSTEP", ), -1, nextstep, - { nextstep_mbtowc, NULL }, { nextstep_wctomb, NULL }) + { nextstep_mbtowc, nullptr }, { nextstep_wctomb, nullptr }) /* Regional 8-bit encodings used for a single language */ @@ -706,25 +706,25 @@ DEFENCODING(( "ARMSCII-8", ), -1, armscii_8, - { armscii_8_mbtowc, NULL }, { armscii_8_wctomb, NULL }) + { armscii_8_mbtowc, nullptr }, { armscii_8_wctomb, nullptr }) DEFENCODING(( "GEORGIAN-ACADEMY", ), -1, georgian_academy, - { georgian_academy_mbtowc, NULL }, { georgian_academy_wctomb, NULL }) + { georgian_academy_mbtowc, nullptr }, { georgian_academy_wctomb, nullptr }) DEFENCODING(( "GEORGIAN-PS", ), -1, georgian_ps, - { georgian_ps_mbtowc, NULL }, { georgian_ps_wctomb, NULL }) + { georgian_ps_mbtowc, nullptr }, { georgian_ps_wctomb, nullptr }) DEFENCODING(( "KOI8-T", ), -1, koi8_t, - { koi8_t_mbtowc, NULL }, { koi8_t_wctomb, NULL }) + { koi8_t_mbtowc, nullptr }, { koi8_t_wctomb, nullptr }) DEFENCODING(( "PT154", /* IANA, glibc */ "PTCP154", /* IANA */ @@ -734,7 +734,7 @@ DEFENCODING(( "PT154", /* IANA, glibc */ ), 154, pt154, - { pt154_mbtowc, NULL }, { pt154_wctomb, NULL }) + { pt154_mbtowc, nullptr }, { pt154_wctomb, nullptr }) DEFENCODING(( "RK1048", /* IANA, glibc */ "STRK1048-2002", /* IANA */ @@ -743,20 +743,20 @@ DEFENCODING(( "RK1048", /* IANA, glibc */ ), -1, rk1048, - { rk1048_mbtowc, NULL }, { rk1048_wctomb, NULL }) + { rk1048_mbtowc, nullptr }, { rk1048_wctomb, nullptr }) DEFENCODING(( "MULELAO-1", ), -1, mulelao, - { mulelao_mbtowc, NULL }, { mulelao_wctomb, NULL }) + { mulelao_mbtowc, nullptr }, { mulelao_wctomb, nullptr }) DEFENCODING(( "CP1133", "IBM-CP1133", ), 1133, cp1133, - { cp1133_mbtowc, NULL }, { cp1133_wctomb, NULL }) + { cp1133_mbtowc, nullptr }, { cp1133_wctomb, nullptr }) DEFENCODING(( "TIS-620", /* IANA */ "TIS620", /* glibc, HP-UX */ @@ -768,7 +768,7 @@ DEFENCODING(( "TIS-620", /* IANA */ ), -1, tis620, - { tis620_mbtowc, NULL }, { tis620_wctomb, NULL }) + { tis620_mbtowc, nullptr }, { tis620_wctomb, nullptr }) #ifdef USE_OSF1_ALIASES DEFALIAS( "TACTIS", /* OSF/1 */ tis620) @@ -783,7 +783,7 @@ DEFENCODING(( "CP874", /* JDK 1.1 */ ), 874, cp874, - { cp874_mbtowc, NULL }, { cp874_wctomb, NULL }) + { cp874_mbtowc, nullptr }, { cp874_wctomb, nullptr }) DEFENCODING(( "VISCII", /* IANA, RFC 1456 */ "VISCII1.1-1", @@ -791,7 +791,7 @@ DEFENCODING(( "VISCII", /* IANA, RFC 1456 */ ), -1, viscii, - { viscii_mbtowc, NULL }, { viscii_wctomb, NULL }) + { viscii_mbtowc, nullptr }, { viscii_wctomb, nullptr }) DEFENCODING(( "TCVN", "TCVN-5712", @@ -800,7 +800,7 @@ DEFENCODING(( "TCVN", ), -1, tcvn, - { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, NULL }) + { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, nullptr }) /* CJK character sets (not documented) */ @@ -812,7 +812,7 @@ DEFENCODING(( "JIS_C6220-1969-RO", /* IANA */ ), -1, iso646_jp, - { iso646_jp_mbtowc, NULL }, { iso646_jp_wctomb, NULL }) + { iso646_jp_mbtowc, nullptr }, { iso646_jp_wctomb, nullptr }) DEFENCODING(( "JIS_X0201", /* IANA */ "JISX0201-1976", @@ -823,7 +823,7 @@ DEFENCODING(( "JIS_X0201", /* IANA */ ), -1, jisx0201, - { jisx0201_mbtowc, NULL }, { jisx0201_wctomb, NULL }) + { jisx0201_mbtowc, nullptr }, { jisx0201_wctomb, nullptr }) DEFENCODING(( "JIS_X0208", "JIS_X0208-1983", /* IANA */ @@ -839,7 +839,7 @@ DEFENCODING(( "JIS_X0208", ), -1, jisx0208, - { jisx0208_mbtowc, NULL }, { jisx0208_wctomb, NULL }) + { jisx0208_mbtowc, nullptr }, { jisx0208_wctomb, nullptr }) DEFENCODING(( "JIS_X0212", "JIS_X0212.1990-0", @@ -852,7 +852,7 @@ DEFENCODING(( "JIS_X0212", ), -1, jisx0212, - { jisx0212_mbtowc, NULL }, { jisx0212_wctomb, NULL }) + { jisx0212_mbtowc, nullptr }, { jisx0212_wctomb, nullptr }) DEFENCODING(( "GB_1988-80", /* IANA */ "ISO646-CN", /* IANA */ @@ -862,7 +862,7 @@ DEFENCODING(( "GB_1988-80", /* IANA */ ), -1, iso646_cn, - { iso646_cn_mbtowc, NULL }, { iso646_cn_wctomb, NULL }) + { iso646_cn_mbtowc, nullptr }, { iso646_cn_wctomb, nullptr }) DEFENCODING(( "GB_2312-80", /* IANA */ "ISO-IR-58", /* IANA */ @@ -871,14 +871,14 @@ DEFENCODING(( "GB_2312-80", /* IANA */ ), -1, gb2312, - { gb2312_mbtowc, NULL }, { gb2312_wctomb, NULL }) + { gb2312_mbtowc, nullptr }, { gb2312_wctomb, nullptr }) DEFENCODING(( "ISO-IR-165", "CN-GB-ISOIR165", /* RFC 1922 */ ), -1, isoir165, - { isoir165_mbtowc, NULL }, { isoir165_wctomb, NULL }) + { isoir165_mbtowc, nullptr }, { isoir165_wctomb, nullptr }) DEFENCODING(( "KSC_5601", /* IANA */ "KS_C_5601-1987", /* IANA */ @@ -891,7 +891,7 @@ DEFENCODING(( "KSC_5601", /* IANA */ ), -1, ksc5601, - { ksc5601_mbtowc, NULL }, { ksc5601_wctomb, NULL }) + { ksc5601_mbtowc, nullptr }, { ksc5601_wctomb, nullptr }) /* CJK encodings */ @@ -904,7 +904,7 @@ DEFENCODING(( "EUC-JP", /* IANA */ ), 51932, euc_jp, - { euc_jp_mbtowc, NULL }, { euc_jp_wctomb, NULL }) + { euc_jp_mbtowc, nullptr }, { euc_jp_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-EUCJP", /* AIX */ euc_jp) @@ -922,7 +922,7 @@ DEFENCODING(( "SHIFT_JIS", /* IANA */ ), -1, sjis, - { sjis_mbtowc, NULL }, { sjis_wctomb, NULL }) + { sjis_mbtowc, nullptr }, { sjis_wctomb, nullptr }) #ifdef USE_SOLARIS_ALIASES DEFALIAS( "PCK", /* Solaris */ sjis) @@ -932,7 +932,7 @@ DEFENCODING(( "CP932", /* glibc */ ), 932, cp932, - { cp932_mbtowc, NULL }, { cp932_wctomb, NULL }) + { cp932_mbtowc, nullptr }, { cp932_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-932", /* AIX */ cp932) @@ -944,20 +944,20 @@ DEFENCODING(( "ISO-2022-JP", /* IANA, RFC 1468 */ ), -1, iso2022_jp, - { iso2022_jp_mbtowc, NULL }, { iso2022_jp_wctomb, iso2022_jp_reset }) + { iso2022_jp_mbtowc, nullptr }, { iso2022_jp_wctomb, iso2022_jp_reset }) DEFENCODING(( "ISO-2022-JP-1", /* RFC 2237 */ ), -1, iso2022_jp1, - { iso2022_jp1_mbtowc, NULL }, { iso2022_jp1_wctomb, iso2022_jp1_reset }) + { iso2022_jp1_mbtowc, nullptr }, { iso2022_jp1_wctomb, iso2022_jp1_reset }) DEFENCODING(( "ISO-2022-JP-2", /* IANA, RFC 1554 */ "csISO2022JP2", /* IANA */ ), -1, iso2022_jp2, - { iso2022_jp2_mbtowc, NULL }, { iso2022_jp2_wctomb, iso2022_jp2_reset }) + { iso2022_jp2_mbtowc, nullptr }, { iso2022_jp2_wctomb, iso2022_jp2_reset }) DEFENCODING(( "ISO-2022-JP-MS", "CP50221", @@ -965,7 +965,7 @@ DEFENCODING(( "ISO-2022-JP-MS", ), 50221, iso2022_jpms, - { iso2022_jpms_mbtowc, NULL }, { iso2022_jpms_wctomb, iso2022_jpms_reset }) + { iso2022_jpms_mbtowc, nullptr }, { iso2022_jpms_wctomb, iso2022_jpms_reset }) DEFENCODING(( "EUC-CN", /* glibc */ "EUCCN", /* glibc, IRIX */ @@ -978,7 +978,7 @@ DEFENCODING(( "EUC-CN", /* glibc */ ), 51936, euc_cn, - { euc_cn_mbtowc, NULL }, { euc_cn_wctomb, NULL }) + { euc_cn_mbtowc, nullptr }, { euc_cn_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-EUCCN", /* AIX */ euc_cn) @@ -996,7 +996,7 @@ DEFENCODING(( "GBK", /* IANA, JDK 1.1 */ ), -1, /* See CP936 */ ces_gbk, - { ces_gbk_mbtowc, NULL }, { ces_gbk_wctomb, NULL }) + { ces_gbk_mbtowc, nullptr }, { ces_gbk_wctomb, nullptr }) DEFENCODING(( "CP936", /* IANA */ "MS936", /* IANA */ @@ -1004,7 +1004,7 @@ DEFENCODING(( "CP936", /* IANA */ ), 936, cp936, - { cp936_mbtowc, NULL }, { cp936_wctomb, NULL }) + { cp936_mbtowc, nullptr }, { cp936_wctomb, nullptr }) DEFENCODING(( "GB18030", /* IANA, glibc */ /*"CP54936", Windows */ @@ -1012,13 +1012,13 @@ DEFENCODING(( "GB18030", /* IANA, glibc */ ), 54936, gb18030_2005, - { gb18030_2005_mbtowc, NULL },{ gb18030_2005_wctomb, NULL }) + { gb18030_2005_mbtowc, nullptr },{ gb18030_2005_wctomb, nullptr }) DEFENCODING(( "GB18030:2022", ), -1, gb18030_2022, - { gb18030_2022_mbtowc, NULL },{ gb18030_2022_wctomb, NULL }) + { gb18030_2022_mbtowc, nullptr },{ gb18030_2022_wctomb, nullptr }) DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */ "csISO2022CN", @@ -1026,13 +1026,13 @@ DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */ ), -1, iso2022_cn, - { iso2022_cn_mbtowc, NULL }, { iso2022_cn_wctomb, iso2022_cn_reset }) + { iso2022_cn_mbtowc, nullptr }, { iso2022_cn_wctomb, iso2022_cn_reset }) DEFENCODING(( "ISO-2022-CN-EXT", /* IANA, RFC 1922 */ ), -1, iso2022_cn_ext, - { iso2022_cn_ext_mbtowc, NULL }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset }) + { iso2022_cn_ext_mbtowc, nullptr }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset }) DEFENCODING(( "HZ", /* RFC 1843 */ "HZ-GB-2312", /* IANA, RFC 1842 */ @@ -1040,7 +1040,7 @@ DEFENCODING(( "HZ", /* RFC 1843 */ ), 52936, hz, - { hz_mbtowc, NULL }, { hz_wctomb, hz_reset }) + { hz_mbtowc, nullptr }, { hz_wctomb, hz_reset }) DEFENCODING(( "EUC-TW", /* glibc */ "EUCTW", /* glibc, HP-UX, IRIX, OSF/1 */ @@ -1050,7 +1050,7 @@ DEFENCODING(( "EUC-TW", /* glibc */ ), 51950, euc_tw, - { euc_tw_mbtowc, NULL }, { euc_tw_wctomb, NULL }) + { euc_tw_mbtowc, nullptr }, { euc_tw_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-EUCTW", /* AIX */ euc_tw) @@ -1069,13 +1069,13 @@ DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */ ), -1, /* See CP950 */ ces_big5, - { ces_big5_mbtowc, NULL }, { ces_big5_wctomb, NULL }) + { ces_big5_mbtowc, nullptr }, { ces_big5_wctomb, nullptr }) DEFENCODING(( "CP950", /* JDK 1.1 */ ), 950, cp950, - { cp950_mbtowc, NULL }, { cp950_wctomb, NULL }) + { cp950_mbtowc, nullptr }, { cp950_wctomb, nullptr }) DEFENCODING(( "BIG5-HKSCS:1999", ), @@ -1111,7 +1111,7 @@ DEFENCODING(( "EUC-KR", /* IANA, RFC 1557 */ ), 51949, euc_kr, - { euc_kr_mbtowc, NULL }, { euc_kr_wctomb, NULL }) + { euc_kr_mbtowc, nullptr }, { euc_kr_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-EUCKR", /* AIX */ euc_kr) @@ -1130,7 +1130,7 @@ DEFENCODING(( "CP949", /* JDK 1.1 */ ), 949, cp949, - { cp949_mbtowc, NULL }, { cp949_wctomb, NULL }) + { cp949_mbtowc, nullptr }, { cp949_wctomb, nullptr }) #ifdef USE_OSF1_ALIASES DEFALIAS( "KSC5601", /* OSF/1 */ cp949) @@ -1141,7 +1141,7 @@ DEFENCODING(( "JOHAB", /* glibc */ ), 1361, johab, - { johab_mbtowc, NULL }, { johab_wctomb, NULL }) + { johab_mbtowc, nullptr }, { johab_wctomb, nullptr }) #ifdef USE_SOLARIS_ALIASES DEFALIAS( "KO_KR.JOHAP92", /* Solaris */ johab) @@ -1154,5 +1154,5 @@ DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */ ), 50225, iso2022_kr, - { iso2022_kr_mbtowc, NULL }, { iso2022_kr_wctomb, iso2022_kr_reset }) + { iso2022_kr_mbtowc, nullptr }, { iso2022_kr_wctomb, iso2022_kr_reset }) diff --git a/lib/encodings_aix.def b/lib/encodings_aix.def index fda56fa0..95b1fbd2 100644 --- a/lib/encodings_aix.def +++ b/lib/encodings_aix.def @@ -21,7 +21,7 @@ DEFENCODING(( "CP856", ), 856, cp856, - { cp856_mbtowc, NULL }, { cp856_wctomb, NULL }) + { cp856_mbtowc, nullptr }, { cp856_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-856", /* AIX */ cp856) @@ -31,7 +31,7 @@ DEFENCODING(( "CP922", ), 922, cp922, - { cp922_mbtowc, NULL }, { cp922_wctomb, NULL }) + { cp922_mbtowc, nullptr }, { cp922_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-922", /* AIX */ cp922) @@ -41,7 +41,7 @@ DEFENCODING(( "CP943", ), 943, cp943, - { cp943_mbtowc, NULL }, { cp943_wctomb, NULL }) + { cp943_mbtowc, nullptr }, { cp943_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-943", /* AIX */ cp943) @@ -51,7 +51,7 @@ DEFENCODING(( "CP1046", ), 1046, cp1046, - { cp1046_mbtowc, NULL }, { cp1046_wctomb, NULL }) + { cp1046_mbtowc, nullptr }, { cp1046_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-1046", /* AIX */ cp1046) @@ -61,7 +61,7 @@ DEFENCODING(( "CP1124", ), 1124, cp1124, - { cp1124_mbtowc, NULL }, { cp1124_wctomb, NULL }) + { cp1124_mbtowc, nullptr }, { cp1124_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-1124", /* AIX */ cp1124) @@ -71,7 +71,7 @@ DEFENCODING(( "CP1129", ), 1129, cp1129, - { cp1129_mbtowc, NULL }, { cp1129_wctomb, NULL }) + { cp1129_mbtowc, nullptr }, { cp1129_wctomb, nullptr }) #ifdef USE_AIX_ALIASES DEFALIAS( "IBM-1129", /* AIX */ cp1129) @@ -84,7 +84,7 @@ DEFENCODING(( "CP1161", ), 1161, cp1161, - { cp1161_mbtowc, NULL }, { cp1161_wctomb, NULL }) + { cp1161_mbtowc, nullptr }, { cp1161_wctomb, nullptr }) DEFENCODING(( "CP1162", "IBM1162", /* glibc */ @@ -93,7 +93,7 @@ DEFENCODING(( "CP1162", ), 1162, cp1162, - { cp1162_mbtowc, NULL }, { cp1162_wctomb, NULL }) + { cp1162_mbtowc, nullptr }, { cp1162_wctomb, nullptr }) DEFENCODING(( "CP1163", "IBM1163", /* glibc */ @@ -102,4 +102,4 @@ DEFENCODING(( "CP1163", ), 1163, cp1163, - { cp1163_mbtowc, NULL }, { cp1163_wctomb, NULL }) + { cp1163_mbtowc, nullptr }, { cp1163_wctomb, nullptr }) diff --git a/lib/encodings_dos.def b/lib/encodings_dos.def index b9d350df..32c5e974 100644 --- a/lib/encodings_dos.def +++ b/lib/encodings_dos.def @@ -24,14 +24,14 @@ DEFENCODING(( "CP437", /* IANA, JDK 1.1 */ ), 437, cp437, - { cp437_mbtowc, NULL }, { cp437_wctomb, NULL }) + { cp437_mbtowc, nullptr }, { cp437_wctomb, nullptr }) DEFENCODING(( "CP737", /* JDK 1.1 */ "IBM737", /* Windows */ ), 737, cp737, - { cp737_mbtowc, NULL }, { cp737_wctomb, NULL }) + { cp737_mbtowc, nullptr }, { cp737_wctomb, nullptr }) DEFENCODING(( "CP775", /* IANA, JDK 1.1 */ "IBM775", /* IANA */ @@ -39,7 +39,7 @@ DEFENCODING(( "CP775", /* IANA, JDK 1.1 */ ), 775, cp775, - { cp775_mbtowc, NULL }, { cp775_wctomb, NULL }) + { cp775_mbtowc, nullptr }, { cp775_wctomb, nullptr }) DEFENCODING(( "CP852", /* IANA, JDK 1.1 */ "IBM852", /* IANA */ @@ -48,13 +48,13 @@ DEFENCODING(( "CP852", /* IANA, JDK 1.1 */ ), 852, cp852, - { cp852_mbtowc, NULL }, { cp852_wctomb, NULL }) + { cp852_mbtowc, nullptr }, { cp852_wctomb, nullptr }) DEFENCODING(( "CP853", ), 853, cp853, - { cp853_mbtowc, NULL }, { cp853_wctomb, NULL }) + { cp853_mbtowc, nullptr }, { cp853_wctomb, nullptr }) DEFENCODING(( "CP855", /* IANA, JDK 1.1 */ "IBM855", /* IANA */ @@ -63,7 +63,7 @@ DEFENCODING(( "CP855", /* IANA, JDK 1.1 */ ), 855, cp855, - { cp855_mbtowc, NULL }, { cp855_wctomb, NULL }) + { cp855_mbtowc, nullptr }, { cp855_wctomb, nullptr }) DEFENCODING(( "CP857", /* IANA, JDK 1.1 */ "IBM857", /* IANA */ @@ -72,13 +72,13 @@ DEFENCODING(( "CP857", /* IANA, JDK 1.1 */ ), 857, cp857, - { cp857_mbtowc, NULL }, { cp857_wctomb, NULL }) + { cp857_mbtowc, nullptr }, { cp857_wctomb, nullptr }) DEFENCODING(( "CP858", /* JDK 1.1.7 */ ), 858, cp858, - { cp858_mbtowc, NULL }, { cp858_wctomb, NULL }) + { cp858_mbtowc, nullptr }, { cp858_wctomb, nullptr }) DEFENCODING(( "CP860", /* IANA, JDK 1.1 */ "IBM860", /* IANA */ @@ -87,7 +87,7 @@ DEFENCODING(( "CP860", /* IANA, JDK 1.1 */ ), 860, cp860, - { cp860_mbtowc, NULL }, { cp860_wctomb, NULL }) + { cp860_mbtowc, nullptr }, { cp860_wctomb, nullptr }) DEFENCODING(( "CP861", /* IANA, JDK 1.1 */ "IBM861", /* IANA */ @@ -97,7 +97,7 @@ DEFENCODING(( "CP861", /* IANA, JDK 1.1 */ ), 861, cp861, - { cp861_mbtowc, NULL }, { cp861_wctomb, NULL }) + { cp861_mbtowc, nullptr }, { cp861_wctomb, nullptr }) DEFENCODING(( "CP863", /* IANA, JDK 1.1 */ "IBM863", /* IANA */ @@ -106,7 +106,7 @@ DEFENCODING(( "CP863", /* IANA, JDK 1.1 */ ), 863, cp863, - { cp863_mbtowc, NULL }, { cp863_wctomb, NULL }) + { cp863_mbtowc, nullptr }, { cp863_wctomb, nullptr }) DEFENCODING(( "CP864", /* IANA, JDK 1.1 */ "IBM864", /* IANA */ @@ -114,7 +114,7 @@ DEFENCODING(( "CP864", /* IANA, JDK 1.1 */ ), 864, cp864, - { cp864_mbtowc, NULL }, { cp864_wctomb, NULL }) + { cp864_mbtowc, nullptr }, { cp864_wctomb, nullptr }) DEFENCODING(( "CP865", /* IANA, JDK 1.1 */ "IBM865", /* IANA */ @@ -123,7 +123,7 @@ DEFENCODING(( "CP865", /* IANA, JDK 1.1 */ ), 865, cp865, - { cp865_mbtowc, NULL }, { cp865_wctomb, NULL }) + { cp865_mbtowc, nullptr }, { cp865_wctomb, nullptr }) DEFENCODING(( "CP869", /* IANA, JDK 1.1 */ "IBM869", /* IANA */ @@ -133,10 +133,10 @@ DEFENCODING(( "CP869", /* IANA, JDK 1.1 */ ), 869, cp869, - { cp869_mbtowc, NULL }, { cp869_wctomb, NULL }) + { cp869_mbtowc, nullptr }, { cp869_wctomb, nullptr }) DEFENCODING(( "CP1125", /* ICU */ ), 1125, cp1125, - { cp1125_mbtowc, NULL }, { cp1125_wctomb, NULL }) + { cp1125_mbtowc, nullptr }, { cp1125_wctomb, nullptr }) diff --git a/lib/encodings_extra.def b/lib/encodings_extra.def index 11a52043..6b579e24 100644 --- a/lib/encodings_extra.def +++ b/lib/encodings_extra.def @@ -40,24 +40,24 @@ DEFENCODING(( "BIG5-2003", ), -1, big5_2003, - { big5_2003_mbtowc, NULL }, { big5_2003_wctomb, NULL }) + { big5_2003_mbtowc, nullptr }, { big5_2003_wctomb, nullptr }) DEFENCODING(( "TDS565", "ISO-IR-230", ), -1, tds565, - { tds565_mbtowc, NULL }, { tds565_wctomb, NULL }) + { tds565_mbtowc, nullptr }, { tds565_wctomb, nullptr }) DEFENCODING(( "ATARIST", "ATARI", ), -1, atarist, - { atarist_mbtowc, NULL }, { atarist_wctomb, NULL }) + { atarist_mbtowc, nullptr }, { atarist_wctomb, nullptr }) DEFENCODING(( "RISCOS-LATIN1", ), -1, riscos1, - { riscos1_mbtowc, NULL }, { riscos1_wctomb, NULL }) + { riscos1_mbtowc, nullptr }, { riscos1_wctomb, nullptr }) diff --git a/lib/encodings_osf1.def b/lib/encodings_osf1.def index 2ba1c36e..9033354b 100644 --- a/lib/encodings_osf1.def +++ b/lib/encodings_osf1.def @@ -21,7 +21,7 @@ DEFENCODING(( "DEC-KANJI", ), -1, dec_kanji, - { dec_kanji_mbtowc, NULL }, { dec_kanji_wctomb, NULL }) + { dec_kanji_mbtowc, nullptr }, { dec_kanji_wctomb, nullptr }) #ifdef USE_OSF1_ALIASES DEFALIAS( "DECKANJI", /* OSF/1 */ dec_kanji) @@ -31,7 +31,7 @@ DEFENCODING(( "DEC-HANYU", ), -1, dec_hanyu, - { dec_hanyu_mbtowc, NULL }, { dec_hanyu_wctomb, NULL }) + { dec_hanyu_mbtowc, nullptr }, { dec_hanyu_wctomb, nullptr }) #ifdef USE_OSF1_ALIASES DEFALIAS( "DECHANYU", /* OSF/1 */ dec_hanyu) diff --git a/lib/encodings_zos.def b/lib/encodings_zos.def index d7f455c1..5cc0278e 100644 --- a/lib/encodings_zos.def +++ b/lib/encodings_zos.def @@ -28,7 +28,7 @@ DEFENCODING(( "IBM-037", ), 037, ebcdic037, - { ebcdic037_mbtowc, NULL }, { ebcdic037_wctomb, NULL }) + { ebcdic037_mbtowc, nullptr }, { ebcdic037_wctomb, nullptr }) DEFENCODING(( "IBM-273", "IBM273", /* IANA */ @@ -37,7 +37,7 @@ DEFENCODING(( "IBM-273", ), 273, ebcdic273, - { ebcdic273_mbtowc, NULL }, { ebcdic273_wctomb, NULL }) + { ebcdic273_mbtowc, nullptr }, { ebcdic273_wctomb, nullptr }) DEFENCODING(( "IBM-277", "IBM277", /* IANA */ @@ -47,7 +47,7 @@ DEFENCODING(( "IBM-277", ), 277, ebcdic277, - { ebcdic277_mbtowc, NULL }, { ebcdic277_wctomb, NULL }) + { ebcdic277_mbtowc, nullptr }, { ebcdic277_wctomb, nullptr }) DEFENCODING(( "IBM-278", "IBM278", /* IANA */ @@ -58,7 +58,7 @@ DEFENCODING(( "IBM-278", ), 278, ebcdic278, - { ebcdic278_mbtowc, NULL }, { ebcdic278_wctomb, NULL }) + { ebcdic278_mbtowc, nullptr }, { ebcdic278_wctomb, nullptr }) DEFENCODING(( "IBM-280", "IBM280", /* IANA */ @@ -68,14 +68,14 @@ DEFENCODING(( "IBM-280", ), 280, ebcdic280, - { ebcdic280_mbtowc, NULL }, { ebcdic280_wctomb, NULL }) + { ebcdic280_mbtowc, nullptr }, { ebcdic280_wctomb, nullptr }) DEFENCODING(( "IBM-282", "IBM282", ), 282, ebcdic282, - { ebcdic282_mbtowc, NULL }, { ebcdic282_wctomb, NULL }) + { ebcdic282_mbtowc, nullptr }, { ebcdic282_wctomb, nullptr }) DEFENCODING(( "IBM-284", "IBM284", /* IANA */ @@ -85,7 +85,7 @@ DEFENCODING(( "IBM-284", ), 284, ebcdic284, - { ebcdic284_mbtowc, NULL }, { ebcdic284_wctomb, NULL }) + { ebcdic284_mbtowc, nullptr }, { ebcdic284_wctomb, nullptr }) DEFENCODING(( "IBM-285", "IBM285", /* IANA */ @@ -95,7 +95,7 @@ DEFENCODING(( "IBM-285", ), 285, ebcdic285, - { ebcdic285_mbtowc, NULL }, { ebcdic285_wctomb, NULL }) + { ebcdic285_mbtowc, nullptr }, { ebcdic285_wctomb, nullptr }) DEFENCODING(( "IBM-297", "IBM297", /* IANA */ @@ -105,7 +105,7 @@ DEFENCODING(( "IBM-297", ), 297, ebcdic297, - { ebcdic297_mbtowc, NULL }, { ebcdic297_wctomb, NULL }) + { ebcdic297_mbtowc, nullptr }, { ebcdic297_wctomb, nullptr }) DEFENCODING(( "IBM-423", "IBM423", /* IANA */ @@ -115,7 +115,7 @@ DEFENCODING(( "IBM-423", ), 423, ebcdic423, - { ebcdic423_mbtowc, NULL }, { ebcdic423_wctomb, NULL }) + { ebcdic423_mbtowc, nullptr }, { ebcdic423_wctomb, nullptr }) DEFENCODING(( "IBM-424", "IBM424", /* IANA */ @@ -125,14 +125,14 @@ DEFENCODING(( "IBM-424", ), 424, ebcdic424, - { ebcdic424_mbtowc, NULL }, { ebcdic424_wctomb, NULL }) + { ebcdic424_mbtowc, nullptr }, { ebcdic424_wctomb, nullptr }) DEFENCODING(( "IBM-425", "IBM425", ), 425, ebcdic425, - { ebcdic425_mbtowc, NULL }, { ebcdic425_wctomb, NULL }) + { ebcdic425_mbtowc, nullptr }, { ebcdic425_wctomb, nullptr }) DEFENCODING(( "IBM-500", "IBM500", /* IANA */ @@ -143,7 +143,7 @@ DEFENCODING(( "IBM-500", ), 500, ebcdic500, - { ebcdic500_mbtowc, NULL }, { ebcdic500_wctomb, NULL }) + { ebcdic500_mbtowc, nullptr }, { ebcdic500_wctomb, nullptr }) DEFENCODING(( "IBM-838", "IBM838", @@ -152,7 +152,7 @@ DEFENCODING(( "IBM-838", ), 838, ebcdic838, - { ebcdic838_mbtowc, NULL }, { ebcdic838_wctomb, NULL }) + { ebcdic838_mbtowc, nullptr }, { ebcdic838_wctomb, nullptr }) DEFENCODING(( "IBM-870", "IBM870", /* IANA */ @@ -163,7 +163,7 @@ DEFENCODING(( "IBM-870", ), 870, ebcdic870, - { ebcdic870_mbtowc, NULL }, { ebcdic870_wctomb, NULL }) + { ebcdic870_mbtowc, nullptr }, { ebcdic870_wctomb, nullptr }) DEFENCODING(( "IBM-871", "IBM871", /* IANA */ @@ -173,7 +173,7 @@ DEFENCODING(( "IBM-871", ), 871, ebcdic871, - { ebcdic871_mbtowc, NULL }, { ebcdic871_wctomb, NULL }) + { ebcdic871_mbtowc, nullptr }, { ebcdic871_wctomb, nullptr }) DEFENCODING(( "IBM-875", "IBM875", /* glibc */ @@ -182,7 +182,7 @@ DEFENCODING(( "IBM-875", ), 875, ebcdic875, - { ebcdic875_mbtowc, NULL }, { ebcdic875_wctomb, NULL }) + { ebcdic875_mbtowc, nullptr }, { ebcdic875_wctomb, nullptr }) DEFENCODING(( "IBM-880", "IBM880", /* IANA */ @@ -192,7 +192,7 @@ DEFENCODING(( "IBM-880", ), 880, ebcdic880, - { ebcdic880_mbtowc, NULL }, { ebcdic880_wctomb, NULL }) + { ebcdic880_mbtowc, nullptr }, { ebcdic880_wctomb, nullptr }) DEFENCODING(( "IBM-905", "IBM905", /* IANA */ @@ -202,7 +202,7 @@ DEFENCODING(( "IBM-905", ), 905, ebcdic905, - { ebcdic905_mbtowc, NULL }, { ebcdic905_wctomb, NULL }) + { ebcdic905_mbtowc, nullptr }, { ebcdic905_wctomb, nullptr }) DEFENCODING(( "IBM-924", "IBM924", @@ -214,7 +214,7 @@ DEFENCODING(( "IBM-924", ), 924, ebcdic924, - { ebcdic924_mbtowc, NULL }, { ebcdic924_wctomb, NULL }) + { ebcdic924_mbtowc, nullptr }, { ebcdic924_wctomb, nullptr }) DEFENCODING(( "IBM-1025", "IBM1025", /* glibc */ @@ -222,7 +222,7 @@ DEFENCODING(( "IBM-1025", ), 1025, ebcdic1025, - { ebcdic1025_mbtowc, NULL }, { ebcdic1025_wctomb, NULL }) + { ebcdic1025_mbtowc, nullptr }, { ebcdic1025_wctomb, nullptr }) DEFENCODING(( "IBM-1026", "IBM1026", /* IANA */ @@ -231,7 +231,7 @@ DEFENCODING(( "IBM-1026", ), 1026, ebcdic1026, - { ebcdic1026_mbtowc, NULL }, { ebcdic1026_wctomb, NULL }) + { ebcdic1026_mbtowc, nullptr }, { ebcdic1026_wctomb, nullptr }) DEFENCODING(( "IBM-1047", /* IANA */ "IBM1047", /* IANA */ @@ -240,7 +240,7 @@ DEFENCODING(( "IBM-1047", /* IANA */ ), 1047, ebcdic1047, - { ebcdic1047_mbtowc, NULL }, { ebcdic1047_wctomb, NULL }) + { ebcdic1047_mbtowc, nullptr }, { ebcdic1047_wctomb, nullptr }) DEFENCODING(( "IBM-1097", "IBM1097", /* glibc */ @@ -248,7 +248,7 @@ DEFENCODING(( "IBM-1097", ), 1097, ebcdic1097, - { ebcdic1097_mbtowc, NULL }, { ebcdic1097_wctomb, NULL }) + { ebcdic1097_mbtowc, nullptr }, { ebcdic1097_wctomb, nullptr }) DEFENCODING(( "IBM-1112", "IBM1112", /* glibc */ @@ -256,7 +256,7 @@ DEFENCODING(( "IBM-1112", ), 1112, ebcdic1112, - { ebcdic1112_mbtowc, NULL }, { ebcdic1112_wctomb, NULL }) + { ebcdic1112_mbtowc, nullptr }, { ebcdic1112_wctomb, nullptr }) DEFENCODING(( "IBM-1122", "IBM1122", /* glibc */ @@ -264,7 +264,7 @@ DEFENCODING(( "IBM-1122", ), 1122, ebcdic1122, - { ebcdic1122_mbtowc, NULL }, { ebcdic1122_wctomb, NULL }) + { ebcdic1122_mbtowc, nullptr }, { ebcdic1122_wctomb, nullptr }) DEFENCODING(( "IBM-1123", "IBM1123", /* glibc */ @@ -272,7 +272,7 @@ DEFENCODING(( "IBM-1123", ), 1123, ebcdic1123, - { ebcdic1123_mbtowc, NULL }, { ebcdic1123_wctomb, NULL }) + { ebcdic1123_mbtowc, nullptr }, { ebcdic1123_wctomb, nullptr }) DEFENCODING(( "IBM-1130", "IBM1130", /* glibc */ @@ -280,7 +280,7 @@ DEFENCODING(( "IBM-1130", ), 1130, ebcdic1130, - { ebcdic1130_mbtowc, NULL }, { ebcdic1130_wctomb, NULL }) + { ebcdic1130_mbtowc, nullptr }, { ebcdic1130_wctomb, nullptr }) DEFENCODING(( "IBM-1132", "IBM1132", /* glibc */ @@ -288,7 +288,7 @@ DEFENCODING(( "IBM-1132", ), 1132, ebcdic1132, - { ebcdic1132_mbtowc, NULL }, { ebcdic1132_wctomb, NULL }) + { ebcdic1132_mbtowc, nullptr }, { ebcdic1132_wctomb, nullptr }) DEFENCODING(( "IBM-1137", "IBM1137", /* glibc */ @@ -296,7 +296,7 @@ DEFENCODING(( "IBM-1137", ), 1137, ebcdic1137, - { ebcdic1137_mbtowc, NULL }, { ebcdic1137_wctomb, NULL }) + { ebcdic1137_mbtowc, nullptr }, { ebcdic1137_wctomb, nullptr }) DEFENCODING(( "IBM-1140", "IBM1140", @@ -308,7 +308,7 @@ DEFENCODING(( "IBM-1140", ), 1140, ebcdic1140, - { ebcdic1140_mbtowc, NULL }, { ebcdic1140_wctomb, NULL }) + { ebcdic1140_mbtowc, nullptr }, { ebcdic1140_wctomb, nullptr }) DEFENCODING(( "IBM-1141", "IBM1141", @@ -320,7 +320,7 @@ DEFENCODING(( "IBM-1141", ), 1141, ebcdic1141, - { ebcdic1141_mbtowc, NULL }, { ebcdic1141_wctomb, NULL }) + { ebcdic1141_mbtowc, nullptr }, { ebcdic1141_wctomb, nullptr }) DEFENCODING(( "IBM-1142", "IBM1142", @@ -333,7 +333,7 @@ DEFENCODING(( "IBM-1142", ), 1142, ebcdic1142, - { ebcdic1142_mbtowc, NULL }, { ebcdic1142_wctomb, NULL }) + { ebcdic1142_mbtowc, nullptr }, { ebcdic1142_wctomb, nullptr }) DEFENCODING(( "IBM-1143", "IBM1143", @@ -346,7 +346,7 @@ DEFENCODING(( "IBM-1143", ), 1143, ebcdic1143, - { ebcdic1143_mbtowc, NULL }, { ebcdic1143_wctomb, NULL }) + { ebcdic1143_mbtowc, nullptr }, { ebcdic1143_wctomb, nullptr }) DEFENCODING(( "IBM-1144", "IBM1144", @@ -358,7 +358,7 @@ DEFENCODING(( "IBM-1144", ), 1144, ebcdic1144, - { ebcdic1144_mbtowc, NULL }, { ebcdic1144_wctomb, NULL }) + { ebcdic1144_mbtowc, nullptr }, { ebcdic1144_wctomb, nullptr }) DEFENCODING(( "IBM-1145", "IBM1145", @@ -370,7 +370,7 @@ DEFENCODING(( "IBM-1145", ), 1145, ebcdic1145, - { ebcdic1145_mbtowc, NULL }, { ebcdic1145_wctomb, NULL }) + { ebcdic1145_mbtowc, nullptr }, { ebcdic1145_wctomb, nullptr }) DEFENCODING(( "IBM-1146", "IBM1146", @@ -382,7 +382,7 @@ DEFENCODING(( "IBM-1146", ), 1146, ebcdic1146, - { ebcdic1146_mbtowc, NULL }, { ebcdic1146_wctomb, NULL }) + { ebcdic1146_mbtowc, nullptr }, { ebcdic1146_wctomb, nullptr }) DEFENCODING(( "IBM-1147", "IBM1147", @@ -394,7 +394,7 @@ DEFENCODING(( "IBM-1147", ), 1147, ebcdic1147, - { ebcdic1147_mbtowc, NULL }, { ebcdic1147_wctomb, NULL }) + { ebcdic1147_mbtowc, nullptr }, { ebcdic1147_wctomb, nullptr }) DEFENCODING(( "IBM-1148", "IBM1148", @@ -406,7 +406,7 @@ DEFENCODING(( "IBM-1148", ), 1148, ebcdic1148, - { ebcdic1148_mbtowc, NULL }, { ebcdic1148_wctomb, NULL }) + { ebcdic1148_mbtowc, nullptr }, { ebcdic1148_wctomb, nullptr }) DEFENCODING(( "IBM-1149", "IBM1149", @@ -418,7 +418,7 @@ DEFENCODING(( "IBM-1149", ), 1149, ebcdic1149, - { ebcdic1149_mbtowc, NULL }, { ebcdic1149_wctomb, NULL }) + { ebcdic1149_mbtowc, nullptr }, { ebcdic1149_wctomb, nullptr }) DEFENCODING(( "IBM-1153", "IBM1153", /* glibc */ @@ -426,7 +426,7 @@ DEFENCODING(( "IBM-1153", ), 1153, ebcdic1153, - { ebcdic1153_mbtowc, NULL }, { ebcdic1153_wctomb, NULL }) + { ebcdic1153_mbtowc, nullptr }, { ebcdic1153_wctomb, nullptr }) DEFENCODING(( "IBM-1154", "IBM1154", /* glibc */ @@ -434,7 +434,7 @@ DEFENCODING(( "IBM-1154", ), 1154, ebcdic1154, - { ebcdic1154_mbtowc, NULL }, { ebcdic1154_wctomb, NULL }) + { ebcdic1154_mbtowc, nullptr }, { ebcdic1154_wctomb, nullptr }) DEFENCODING(( "IBM-1155", "IBM1155", /* glibc */ @@ -442,7 +442,7 @@ DEFENCODING(( "IBM-1155", ), 1155, ebcdic1155, - { ebcdic1155_mbtowc, NULL }, { ebcdic1155_wctomb, NULL }) + { ebcdic1155_mbtowc, nullptr }, { ebcdic1155_wctomb, nullptr }) DEFENCODING(( "IBM-1156", "IBM1156", /* glibc */ @@ -450,7 +450,7 @@ DEFENCODING(( "IBM-1156", ), 1156, ebcdic1156, - { ebcdic1156_mbtowc, NULL }, { ebcdic1156_wctomb, NULL }) + { ebcdic1156_mbtowc, nullptr }, { ebcdic1156_wctomb, nullptr }) DEFENCODING(( "IBM-1157", "IBM1157", /* glibc */ @@ -458,7 +458,7 @@ DEFENCODING(( "IBM-1157", ), 1157, ebcdic1157, - { ebcdic1157_mbtowc, NULL }, { ebcdic1157_wctomb, NULL }) + { ebcdic1157_mbtowc, nullptr }, { ebcdic1157_wctomb, nullptr }) DEFENCODING(( "IBM-1158", "IBM1158", /* glibc */ @@ -466,7 +466,7 @@ DEFENCODING(( "IBM-1158", ), 1158, ebcdic1158, - { ebcdic1158_mbtowc, NULL }, { ebcdic1158_wctomb, NULL }) + { ebcdic1158_mbtowc, nullptr }, { ebcdic1158_wctomb, nullptr }) DEFENCODING(( "IBM-1160", "IBM1160", /* glibc */ @@ -474,7 +474,7 @@ DEFENCODING(( "IBM-1160", ), 1160, ebcdic1160, - { ebcdic1160_mbtowc, NULL }, { ebcdic1160_wctomb, NULL }) + { ebcdic1160_mbtowc, nullptr }, { ebcdic1160_wctomb, nullptr }) DEFENCODING(( "IBM-1164", "IBM1164", /* glibc */ @@ -482,14 +482,14 @@ DEFENCODING(( "IBM-1164", ), 1164, ebcdic1164, - { ebcdic1164_mbtowc, NULL }, { ebcdic1164_wctomb, NULL }) + { ebcdic1164_mbtowc, nullptr }, { ebcdic1164_wctomb, nullptr }) DEFENCODING(( "IBM-1165", "IBM1165", ), 1165, ebcdic1165, - { ebcdic1165_mbtowc, NULL }, { ebcdic1165_wctomb, NULL }) + { ebcdic1165_mbtowc, nullptr }, { ebcdic1165_wctomb, nullptr }) DEFENCODING(( "IBM-1166", "IBM1166", /* glibc */ @@ -497,7 +497,7 @@ DEFENCODING(( "IBM-1166", ), 1166, ebcdic1166, - { ebcdic1166_mbtowc, NULL }, { ebcdic1166_wctomb, NULL }) + { ebcdic1166_mbtowc, nullptr }, { ebcdic1166_wctomb, nullptr }) DEFENCODING(( "IBM-4971", "IBM4971", /* glibc */ @@ -505,7 +505,7 @@ DEFENCODING(( "IBM-4971", ), 4971, ebcdic4971, - { ebcdic4971_mbtowc, NULL }, { ebcdic4971_wctomb, NULL }) + { ebcdic4971_mbtowc, nullptr }, { ebcdic4971_wctomb, nullptr }) DEFENCODING(( "IBM-12712", "IBM12712", /* glibc */ @@ -513,7 +513,7 @@ DEFENCODING(( "IBM-12712", ), 12712, ebcdic12712, - { ebcdic12712_mbtowc, NULL }, { ebcdic12712_wctomb, NULL }) + { ebcdic12712_mbtowc, nullptr }, { ebcdic12712_wctomb, nullptr }) DEFENCODING(( "IBM-16804", "IBM16804", /* glibc */ @@ -521,4 +521,4 @@ DEFENCODING(( "IBM-16804", ), 16804, ebcdic16804, - { ebcdic16804_mbtowc, NULL }, { ebcdic16804_wctomb, NULL }) + { ebcdic16804_mbtowc, nullptr }, { ebcdic16804_wctomb, nullptr }) diff --git a/lib/gb12345ext.h b/lib/gb12345ext.h index 16fc638a..a9bd4425 100644 --- a/lib/gb12345ext.h +++ b/lib/gb12345ext.h @@ -1761,7 +1761,7 @@ static int gb12345ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0100 && wc < 0x0270) summary = &gb12345ext_uni2indx_page01[(wc>>4)-0x010]; else if (wc >= 0x1e00 && wc < 0x1e40) diff --git a/lib/gb2312.h b/lib/gb2312.h index 280e6648..bdbfeac5 100644 --- a/lib/gb2312.h +++ b/lib/gb2312.h @@ -2534,7 +2534,7 @@ static int gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0460) summary = &gb2312_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2000 && wc < 0x2650) diff --git a/lib/gbkext_inv.h b/lib/gbkext_inv.h index a2ffbf76..a5dc7d43 100644 --- a/lib/gbkext_inv.h +++ b/lib/gbkext_inv.h @@ -2302,7 +2302,7 @@ static int gbkext_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0200 && wc < 0x02e0) summary = &gbkext_inv_uni2indx_page02[(wc>>4)-0x020]; else if (wc >= 0x2000 && wc < 0x22c0) diff --git a/lib/hkscs1999.h b/lib/hkscs1999.h index 80f80278..af3b989e 100644 --- a/lib/hkscs1999.h +++ b/lib/hkscs1999.h @@ -2952,7 +2952,7 @@ static int hkscs1999_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x02d0) summary = &hkscs1999_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0400 && wc < 0x0460) diff --git a/lib/hkscs2001.h b/lib/hkscs2001.h index 840cead1..9409a6bf 100644 --- a/lib/hkscs2001.h +++ b/lib/hkscs2001.h @@ -553,7 +553,7 @@ static int hkscs2001_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc < 0x9f00) { if (wc < 0x6900) { if (wc >= 0x3500 && wc < 0x3560) diff --git a/lib/hkscs2004.h b/lib/hkscs2004.h index 64966ca8..f0557e3f 100644 --- a/lib/hkscs2004.h +++ b/lib/hkscs2004.h @@ -545,7 +545,7 @@ static int hkscs2004_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc < 0x21a00) { if (wc < 0x6e00) { if (wc >= 0x3400 && wc < 0x3450) diff --git a/lib/hkscs2008.h b/lib/hkscs2008.h index 79eb1744..f387cea5 100644 --- a/lib/hkscs2008.h +++ b/lib/hkscs2008.h @@ -366,7 +366,7 @@ static int hkscs2008_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x3400 && wc < 0x34f0) summary = &hkscs2008_uni2indx_page34[(wc>>4)-0x340]; else if (wc >= 0x3800 && wc < 0x3880) diff --git a/lib/iconv_open1.h b/lib/iconv_open1.h index 251cb49b..ba17c448 100644 --- a/lib/iconv_open1.h +++ b/lib/iconv_open1.h @@ -74,10 +74,10 @@ break; } ap = HashPool::aliases_lookup(buf, bp - buf); - if (ap == NULL) + if (ap == nullptr) { ap = aliases2_lookup(buf); - if (ap == NULL) + if (ap == nullptr) goto invalid; } to_index = ap->encoding_index; @@ -117,10 +117,10 @@ break; } ap = HashPool::aliases_lookup(buf, bp - buf); - if (ap == NULL) + if (ap == nullptr) { ap = aliases2_lookup(buf); - if (ap == NULL) + if (ap == nullptr) goto invalid; } from_index = ap->encoding_index; diff --git a/lib/isoir165ext.h b/lib/isoir165ext.h index ef0796ce..868deadd 100644 --- a/lib/isoir165ext.h +++ b/lib/isoir165ext.h @@ -755,7 +755,7 @@ static int isoir165ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0200) summary = &isoir165ext_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0300 && wc < 0x03c0) diff --git a/lib/jisx0208.h b/lib/jisx0208.h index ef45ba68..58b59932 100644 --- a/lib/jisx0208.h +++ b/lib/jisx0208.h @@ -2376,7 +2376,7 @@ static int jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0100) summary = &jisx0208_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0300 && wc < 0x0460) diff --git a/lib/jisx0212.h b/lib/jisx0212.h index 7479004c..9bd938e1 100644 --- a/lib/jisx0212.h +++ b/lib/jisx0212.h @@ -2156,7 +2156,7 @@ static int jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0460) summary = &jisx0212_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2100 && wc < 0x2130) diff --git a/lib/ksc5601.h b/lib/ksc5601.h index de2ab0f9..59ddb158 100644 --- a/lib/ksc5601.h +++ b/lib/ksc5601.h @@ -2983,7 +2983,7 @@ static int ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = NULL; + const Summary16 *summary = nullptr; if (wc >= 0x0000 && wc < 0x0460) summary = &ksc5601_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2000 && wc < 0x2670) diff --git a/lib/loop_unicode.h b/lib/loop_unicode.h index 76497a6c..7650312d 100644 --- a/lib/loop_unicode.h +++ b/lib/loop_unicode.h @@ -118,7 +118,7 @@ static size_t unicode_loop_reset (iconv_t icd, char* * outbuf, size_t *outbytesleft) { conv_t cd = (conv_t) icd; - if (outbuf == NULL || *outbuf == NULL) { + if (outbuf == nullptr || *outbuf == nullptr) { /* Reset the states. */ memset(&cd->istate,'\0',sizeof(state_t)); memset(&cd->ostate,'\0',sizeof(state_t)); diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 5b5bae0e..6634d902 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -40,7 +40,7 @@ namespace test { void main(const std::string& from, const std::string& to, const std::string& input_file_path, const std::string& output_file_path) { - char* res = NULL; + char* res = nullptr; size_t len = 0; FILE* src = fopen(input_file_path.c_str(), "rb"); diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 07efc3ea..2999bc94 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -60,11 +60,11 @@ namespace test char* outbuf = (char*) out; size_t outbytesleft = 3 * sizeof(unsigned int); size_t result; - iconv(cd, NULL, NULL, NULL, NULL); + iconv(cd, nullptr, nullptr, nullptr, nullptr); result = iconv(cd, (char**)&inbuf, &inbytesleft, &outbuf, &outbytesleft); if (result != (size_t)(-1)) { - result = iconv(cd, NULL, NULL, &outbuf, &outbytesleft); + result = iconv(cd, nullptr, nullptr, &outbuf, &outbytesleft); } if (result == (size_t)(-1)) { @@ -110,7 +110,7 @@ namespace test sprintf (p, "0x%04X", out[0]); out += 1; outlen -= 1; if (bmp_only && strlen(p) > 6) - return NULL; + return nullptr; p += strlen(p); } return hexbuf; @@ -123,7 +123,7 @@ namespace test using namespace _table_from; save_file = fopen(save_file_path.c_str(), "w"); - if (save_file == NULL) + if (save_file == nullptr) { error("table-from", "Can't open save file."); } @@ -158,7 +158,7 @@ namespace test else if (result > 0) { const char* unicode = ucs4_decode(out, result); - if (unicode != NULL) + if (unicode != nullptr) { fprintf(save_file, "0x%02X\t%s\n", i0, unicode); } @@ -176,7 +176,7 @@ namespace test else if (result > 0) { const char* unicode = ucs4_decode(out,result); - if (unicode != NULL) + if (unicode != nullptr) { fprintf(save_file, "0x%02X%02X\t%s\n", i0, i1, unicode); } @@ -194,7 +194,7 @@ namespace test else if (result > 0) { const char* unicode = ucs4_decode(out, result); - if (unicode != NULL) + if (unicode != nullptr) { fprintf(save_file, "0x%02X%02X%02X\t%s\n", i0, i1, i2, unicode); } @@ -212,7 +212,7 @@ namespace test else if (result > 0) { const char* unicode = ucs4_decode(out, result); - if (unicode != NULL) + if (unicode != nullptr) { fprintf(save_file, "0x%02X%02X%02X%02X\t%s\n", i0, i1, i2, i3, unicode); } diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 962946ae..2a1dbe9e 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -42,7 +42,7 @@ namespace test using namespace _table_to; save_file = fopen(save_file_path.c_str(), "w"); - if (save_file == NULL) + if (save_file == nullptr) { error("table-to", "Cannot open save file."); } @@ -72,11 +72,11 @@ namespace test size_t outbytesleft = sizeof(buf); size_t result; size_t result2 = 0; - iconv(cd, NULL, NULL, NULL, NULL); + iconv(cd, nullptr, nullptr, nullptr, nullptr); result = iconv(cd, (char**)&inbuf, &inbytesleft, &outbuf, &outbytesleft); if (result != (size_t)(-1)) { - result2 = iconv(cd, NULL, NULL, &outbuf, &outbytesleft); + result2 = iconv(cd, nullptr, nullptr, &outbuf, &outbytesleft); } if (result == (size_t)(-1) || result2 == (size_t)(-1)) { diff --git a/tests/uniq-u.hpp b/tests/uniq-u.hpp index 13460c8e..0e4d64df 100644 --- a/tests/uniq-u.hpp +++ b/tests/uniq-u.hpp @@ -47,7 +47,7 @@ namespace _uniq_u /* Change the size of an allocated block of memory P to N bytes, with error checking. - If P is NULL, run xmalloc. */ + If P is nullptr, run xmalloc. */ void* xrealloc(void* p, size_t n) { @@ -183,14 +183,14 @@ namespace _uniq_u int match_count = 0; istream = fopen(infile, "r"); - if (istream == NULL) + if (istream == nullptr) { fprintf(stderr, "uniq-u: error opening %s\n", infile); error("fopen", "File open error."); } ostream = fopen (outfile, "w"); - if (ostream == NULL) + if (ostream == nullptr) { fprintf(stderr, "uniq-u: error opening %s\n", outfile); error("fopen", "File open error."); diff --git a/tests/utils.hpp b/tests/utils.hpp index 81bc3cf7..bd3dd2fd 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -189,7 +189,7 @@ void cat(const std::string& input_file_path, FILE* dstfile) char buffer[1024]; size_t len = 0; srcfile = fopen(input_file_path.c_str(), "r"); - if (srcfile == NULL) + if (srcfile == nullptr) { error(input_file_path, "Error opening source file"); } diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index 3dea8685..7ce864b8 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -69,7 +69,7 @@ int main(int argc, char* argv[]) aliases_file_name = argv[1]; aliases_file = fopen(aliases_file_name, "w"); - if (aliases_file == NULL) + if (aliases_file == nullptr) { fprintf(stderr, "Could not open '%s' for writing\n", aliases_file_name); return 1; diff --git a/tools/genaliases2.cpp b/tools/genaliases2.cpp index 3ff60891..c9350cdc 100644 --- a/tools/genaliases2.cpp +++ b/tools/genaliases2.cpp @@ -65,7 +65,7 @@ int main(int argc, char* argv[]) aliases_file_name = argv[2]; aliases_file = fopen(aliases_file_name, "w"); - if (aliases_file == NULL) + if (aliases_file == nullptr) { fprintf(stderr, "Could not open '%s' for writing\n", aliases_file_name); return 1; From 8ec55ce338b5c07e0ab75e097797a8cba1ca12d8 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 30 Oct 2023 22:17:58 +0800 Subject: [PATCH 18/77] Update compile options' name. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Update compile options' name. 2. Use extra encodings always except less build. 修改: CMakeLists.txt 修改: ChangeLog 修改: Makefile.devel 修改: tests/tests.cmake --- CMakeLists.txt | 12 ++++++++---- ChangeLog | 5 +++++ Makefile.devel | 2 +- tests/tests.cmake | 6 +++--- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 86f17655..619b402e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,7 @@ cmake_minimum_required(VERSION 3.12) project(cppp-reiconv VERSION 3.0.0) # Define options -option(ENABLE_EXTRA "Enable extra encodings and features." OFF) +option(LESS_BUILD "Disable extra encodings." OFF) # Ignore warnings if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") @@ -96,8 +96,10 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/generated") include_directories("${output_includedir}") # Add definitions -if(ENABLE_EXTRA) - message(STATUS "Extra encodings and features enabled.") + +if(LESS_BUILD) + message(STATUS "Extra encoding disabled.") +else() add_compile_definitions(ENABLE_EXTRA=1) endif() @@ -105,7 +107,9 @@ endif() cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" TRUE TRUE "${CMAKE_BINARY_DIR}/windows/libcppp-reiconv.rc") # Include test suite. -include("tests/tests.cmake") +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests") + include("tests/tests.cmake") +endif() # Install # Static diff --git a/ChangeLog b/ChangeLog index a4db39f5..7c767642 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2023-10-30 ChenPi11 + + Update compile options' name. + Use extra encodings always except less build. + 2023-10-28 ChenPi11 Add new function 'ascii_mbtou16', 'ascii_mbtou32'. diff --git a/Makefile.devel b/Makefile.devel index b926793b..95e54196 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -133,7 +133,7 @@ lib/generated/flags.h : lib/generated/genflags test : all $(RM) -r -f build $(MKDIR) build - cd build && $(CMAKE) .. -DENABLE_EXTRA=ON -DENABLE_TEST=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install + cd build && $(CMAKE) .. -DTEST=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install cd build && $(CMAKE) --build . --config=Release --verbose cd build && $(CTEST) -C Release --verbose $(CMAKE) --install build --verbose diff --git a/tests/tests.cmake b/tests/tests.cmake index 1a113263..7da73470 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -1,13 +1,13 @@ # CMake script for cppp-reiconv/tests -option(ENABLE_TEST "Enable cppp-reiconv test suites build." OFF) +option(TEST "Enable test suites build." OFF) -if (ENABLE_TEST) +if (TEST) # Init CTest enable_testing() include(CTest) - message(STATUS "Test suite for 'cppp-reiconv' enabled.") + message(STATUS "Test suite for '${PROJECT_NAME}' enabled.") # Includes include_directories("${CMAKE_CURRENT_SOURCE_DIR}/tests") From 0d8f8cfcfa4ea8e8a64eb3077f92f82337abb6c9 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 31 Oct 2023 22:30:38 +0800 Subject: [PATCH 19/77] Move OSF/1 encodings to general encodings. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改: ChangeLog 修改: FILELIST 修改: Makefile.devel 修改: lib/aliases2.h 修改: lib/converters.h 修改: lib/encodings.def 删除: lib/encodings_osf1.def 修改: lib/generated/aliases.h 删除: lib/generated/aliases_osf1.h 删除: lib/generated/aliases_osf1_sysosf1.h 修改: lib/generated/aliases_sysaix.h 修改: lib/generated/aliases_syshpux.h 删除: lib/generated/aliases_sysosf1.h 修改: lib/generated/aliases_syssolaris.h 修改: lib/generated/flags.h 修改: lib/iconv.cpp 修改: tools/genaliases2.cpp 修改: tools/genflags.cpp --- ChangeLog | 1 + FILELIST | 4 - Makefile.devel | 79 +- lib/aliases2.h | 7 - lib/converters.h | 8 +- lib/encodings.def | 15 + lib/encodings_osf1.def | 38 - lib/generated/aliases.h | 1361 ++++++++++---------- lib/generated/aliases_osf1.h | 2 - lib/generated/aliases_osf1_sysosf1.h | 4 - lib/generated/aliases_sysaix.h | 1384 ++++++++++---------- lib/generated/aliases_syshpux.h | 1347 ++++++++++---------- lib/generated/aliases_sysosf1.h | 1749 -------------------------- lib/generated/aliases_syssolaris.h | 1289 +++++++++---------- lib/generated/flags.h | 4 +- lib/iconv.cpp | 14 +- tools/genaliases2.cpp | 3 - tools/genflags.cpp | 2 - 18 files changed, 2771 insertions(+), 4540 deletions(-) delete mode 100644 lib/encodings_osf1.def delete mode 100644 lib/generated/aliases_osf1.h delete mode 100644 lib/generated/aliases_osf1_sysosf1.h delete mode 100644 lib/generated/aliases_sysosf1.h diff --git a/ChangeLog b/ChangeLog index 7c767642..f997e6a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ Update compile options' name. Use extra encodings always except less build. + Move OSF/1 encodings to general encodings. 2023-10-28 ChenPi11 diff --git a/FILELIST b/FILELIST index fdd46cfc..96931550 100644 --- a/FILELIST +++ b/FILELIST @@ -120,8 +120,6 @@ lib/hkscs2008.h lib/mac_centraleurope.h lib/cp1129.h lib/generated/flags.h -lib/generated/aliases_sysosf1.h -lib/generated/aliases_osf1_sysosf1.h lib/generated/aliases_aix_sysaix.h lib/generated/aliases.h lib/generated/aliases_syssolaris.h @@ -131,7 +129,6 @@ lib/generated/aliases_sysaix.h lib/generated/aliases_syshpux.h lib/generated/aliases_zos.h lib/generated/aliases_dos.h -lib/generated/aliases_osf1.h lib/ebcdic12712.h lib/uhc_2.h lib/iso8859_1.h @@ -223,7 +220,6 @@ lib/tis620.h lib/iso8859_4.h lib/loops.h lib/utf32be.h -lib/encodings_osf1.def lib/cp943.h lib/ebcdic1148.h lib/ebcdic1147.h diff --git a/Makefile.devel b/Makefile.devel index 95e54196..cebf1093 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -1,13 +1,13 @@ # -*- makefile -*- # This is the developer's makefile. -# It obeys the environment variables CXX, CFLAGS if you have set them. +# It obeys the environment variables CXX, CFLAGS and CXXFLAGS if you have set them. GPERF = gperf CMAKE = cmake CTEST = ctest -MKDIR = mkdir -p -RM = rm -f +MKDIR = mkdir +RM = rm CXX ?= g++ @@ -15,16 +15,15 @@ CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ - lib/generated/aliases.h lib/generated/aliases_sysaix.h lib/generated/aliases_syshpux.h lib/generated/aliases_sysosf1.h lib/generated/aliases_syssolaris.h \ + lib/generated/aliases.h lib/generated/aliases_sysaix.h lib/generated/aliases_syshpux.h lib/generated/aliases_syssolaris.h \ lib/generated/aliases_aix.h lib/generated/aliases_aix_sysaix.h \ - lib/generated/aliases_osf1.h lib/generated/aliases_osf1_sysosf1.h \ lib/generated/aliases_dos.h \ lib/generated/aliases_zos.h \ lib/generated/aliases_extra.h \ lib/generated/flags.h lib/generated : - $(MKDIR) lib/generated + $(MKDIR) -p lib/generated lib/generated/genaliases : tools/genaliases.cpp $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ @@ -56,16 +55,6 @@ lib/generated/aliases_syshpux.h : lib/generated/aliases_syshpux.gperf $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ -lib/generated/genaliases_sysosf1 : tools/genaliases.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_OSF1_ALIASES $< -o $@ - -lib/generated/aliases_sysosf1.gperf : lib/generated/genaliases_sysosf1 - ./lib/generated/genaliases_sysosf1 $@ - -lib/generated/aliases_sysosf1.h : lib/generated/aliases_sysosf1.gperf - $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ - - lib/generated/genaliases_syssolaris : tools/genaliases.cpp $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_SOLARIS_ALIASES $< -o $@ @@ -90,20 +79,6 @@ lib/generated/aliases_aix_sysaix.h : lib/generated/genaliases2_aix_sysaix ./lib/generated/genaliases2_aix_sysaix aix $@ -lib/generated/genaliases2_osf1 : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_OSF1 $< -o $@ - -lib/generated/aliases_osf1.h : lib/generated/genaliases2_osf1 - ./lib/generated/genaliases2_osf1 osf1 $@ - - -lib/generated/genaliases2_osf1_sysosf1 : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_OSF1 -DUSE_OSF1_ALIASES $< -o $@ - -lib/generated/aliases_osf1_sysosf1.h : lib/generated/genaliases2_osf1_sysosf1 - ./lib/generated/genaliases2_osf1_sysosf1 osf1 $@ - - lib/generated/genaliases2_dos : tools/genaliases2.cpp $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_DOS $< -o $@ @@ -132,7 +107,7 @@ lib/generated/flags.h : lib/generated/genflags test : all $(RM) -r -f build - $(MKDIR) build + $(MKDIR) -p build cd build && $(CMAKE) .. -DTEST=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install cd build && $(CMAKE) --build . --config=Release --verbose cd build && $(CTEST) -C Release --verbose @@ -144,25 +119,23 @@ test : all check : test clean : - $(RM) -r build - $(RM) lib/generated/aliases.gperf - $(RM) lib/generated/aliases_sysaix.gperf - $(RM) lib/generated/aliases_syshpux.gperf - $(RM) lib/generated/aliases_sysosf1.gperf - $(RM) lib/generated/aliases_syssolaris.gperf - $(RM) lib/generated/genaliases - $(RM) lib/generated/genaliases2_aix - $(RM) lib/generated/genaliases2_aix_sysaix - $(RM) lib/generated/genaliases2_dos - $(RM) lib/generated/genaliases2_extra - $(RM) lib/generated/genaliases2_osf1 - $(RM) lib/generated/genaliases2_osf1_sysosf1 - $(RM) lib/generated/genaliases2_zos - $(RM) lib/generated/genaliases_sysaix - $(RM) lib/generated/genaliases_syshpux - $(RM) lib/generated/genaliases_sysosf1 - $(RM) lib/generated/genaliases_syssolaris - $(RM) lib/generated/genflags - $(RM) tests/data/GB18030-2005.TXT - $(RM) tests/data/GB18030-2022.TXT - $(RM) tests/data/UTF-8.TXT + $(RM) -r -f build + $(RM) -r -f cppp-reiconv-v* + $(RM) -r -f .cache + $(RM) -f lib/generated/aliases.gperf + $(RM) -f lib/generated/aliases_sysaix.gperf + $(RM) -f lib/generated/aliases_syshpux.gperf + $(RM) -f lib/generated/aliases_syssolaris.gperf + $(RM) -f lib/generated/genaliases + $(RM) -f lib/generated/genaliases2_aix + $(RM) -f lib/generated/genaliases2_aix_sysaix + $(RM) -f lib/generated/genaliases2_dos + $(RM) -f lib/generated/genaliases2_extra + $(RM) -f lib/generated/genaliases2_zos + $(RM) -f lib/generated/genaliases_sysaix + $(RM) -f lib/generated/genaliases_syshpux + $(RM) -f lib/generated/genaliases_syssolaris + $(RM) -f lib/generated/genflags + $(RM) -f tests/data/GB18030-2005.TXT + $(RM) -f tests/data/GB18030-2022.TXT + $(RM) -f tests/data/UTF-8.TXT diff --git a/lib/aliases2.h b/lib/aliases2.h index 02d9b96a..d8d94bad 100644 --- a/lib/aliases2.h +++ b/lib/aliases2.h @@ -24,13 +24,6 @@ # include "aliases_aix.h" # endif #endif -#ifdef USE_OSF1 -# if defined __osf__ -# include "aliases_osf1_sysosf1.h" -# else -# include "aliases_osf1.h" -# endif -#endif #ifdef USE_DOS # include "aliases_dos.h" #endif diff --git a/lib/converters.h b/lib/converters.h index acc92ced..612909ff 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -249,6 +249,9 @@ typedef struct { #include "johab.h" #include "iso2022_kr.h" +#include "dec_kanji.h" +#include "dec_hanyu.h" + /* Encodings used by system dependent locales. */ #ifdef USE_AIX @@ -263,11 +266,6 @@ typedef struct { #include "cp1163.h" #endif -#ifdef USE_OSF1 -#include "dec_kanji.h" -#include "dec_hanyu.h" -#endif - #ifdef USE_DOS #include "cp437.h" #include "cp737.h" diff --git a/lib/encodings.def b/lib/encodings.def index 3f9763e3..6f3fd8e9 100644 --- a/lib/encodings.def +++ b/lib/encodings.def @@ -1156,3 +1156,18 @@ DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */ iso2022_kr, { iso2022_kr_mbtowc, nullptr }, { iso2022_kr_wctomb, iso2022_kr_reset }) +DEFENCODING(( "DEC-KANJI", + ), + -1, + dec_kanji, + { dec_kanji_mbtowc, nullptr }, { dec_kanji_wctomb, nullptr }) +DEFALIAS( "DECKANJI", /* OSF/1 */ + dec_kanji) + +DEFENCODING(( "DEC-HANYU", + ), + -1, + dec_hanyu, + { dec_hanyu_mbtowc, nullptr }, { dec_hanyu_wctomb, nullptr }) +DEFALIAS( "DECHANYU", /* OSF/1 */ + dec_hanyu) diff --git a/lib/encodings_osf1.def b/lib/encodings_osf1.def deleted file mode 100644 index 9033354b..00000000 --- a/lib/encodings_osf1.def +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2001, 2008 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. - If not, see . */ - -/* Encodings used by system dependent locales on OSF/1 a.k.a. Tru64. */ - -DEFENCODING(( "DEC-KANJI", - ), - -1, - dec_kanji, - { dec_kanji_mbtowc, nullptr }, { dec_kanji_wctomb, nullptr }) -#ifdef USE_OSF1_ALIASES -DEFALIAS( "DECKANJI", /* OSF/1 */ - dec_kanji) -#endif - -DEFENCODING(( "DEC-HANYU", - ), - -1, - dec_hanyu, - { dec_hanyu_mbtowc, nullptr }, { dec_hanyu_wctomb, nullptr }) -#ifdef USE_OSF1_ALIASES -DEFALIAS( "DECHANYU", /* OSF/1 */ - dec_hanyu) -#endif diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index f0b0123f..2519ec7f 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 349 +#define TOTAL_KEYWORDS 353 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 #define MIN_HASH_VALUE 7 -#define MAX_HASH_VALUE 875 -/* maximum key range = 869, duplicates = 0 */ +#define MAX_HASH_VALUE 953 +/* maximum key range = 947, duplicates = 0 */ class HashPool { @@ -52,19 +52,19 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 2, 87, 876, 73, 4, - 29, 66, 16, 22, 11, 179, 3, 10, 152, 876, - 876, 876, 876, 876, 876, 10, 221, 9, 35, 96, - 163, 49, 84, 63, 281, 195, 16, 84, 5, 2, - 3, 876, 2, 2, 110, 42, 132, 137, 230, 20, - 3, 876, 876, 876, 876, 3, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876 + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 2, 52, 954, 73, 4, + 29, 66, 16, 22, 11, 179, 3, 10, 185, 954, + 954, 954, 954, 954, 954, 10, 259, 9, 14, 96, + 43, 104, 98, 63, 91, 195, 16, 84, 5, 2, + 189, 954, 2, 2, 110, 42, 186, 149, 244, 64, + 6, 954, 954, 954, 954, 3, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954 }; unsigned int hval = len; @@ -123,27 +123,27 @@ struct stringpool_t char stringpool_str60[sizeof("CP949")]; char stringpool_str63[sizeof("UHC")]; char stringpool_str64[sizeof("862")]; - char stringpool_str66[sizeof("PT154")]; char stringpool_str72[sizeof("CP154")]; char stringpool_str73[sizeof("SJIS")]; char stringpool_str76[sizeof("CP1258")]; char stringpool_str78[sizeof("CP1251")]; - char stringpool_str80[sizeof("PTCP154")]; char stringpool_str83[sizeof("UCS-4")]; char stringpool_str84[sizeof("L3")]; char stringpool_str86[sizeof("CP862")]; - char stringpool_str89[sizeof("HZ")]; char stringpool_str92[sizeof("CP1256")]; char stringpool_str97[sizeof("CP1131")]; + char stringpool_str98[sizeof("UTF-8")]; char stringpool_str100[sizeof("CSUCS4")]; char stringpool_str102[sizeof("CP1254")]; char stringpool_str104[sizeof("CP1361")]; char stringpool_str105[sizeof("MAC")]; + char stringpool_str106[sizeof("HZ")]; char stringpool_str107[sizeof("RK1048")]; char stringpool_str109[sizeof("UCS-2")]; char stringpool_str112[sizeof("CP936")]; char stringpool_str113[sizeof("ROMAN8")]; char stringpool_str114[sizeof("CP1255")]; + char stringpool_str119[sizeof("UTF-16")]; char stringpool_str120[sizeof("ISO8859-8")]; char stringpool_str122[sizeof("ISO8859-1")]; char stringpool_str123[sizeof("ISO-8859-8")]; @@ -177,7 +177,6 @@ struct stringpool_t char stringpool_str153[sizeof("ISO_8859-15:1998")]; char stringpool_str154[sizeof("ISO-8859-14")]; char stringpool_str155[sizeof("ISO_8859-14")]; - char stringpool_str156[sizeof("MS-CYRL")]; char stringpool_str158[sizeof("ISO8859-5")]; char stringpool_str160[sizeof("ISO646-US")]; char stringpool_str161[sizeof("ISO-8859-5")]; @@ -207,21 +206,18 @@ struct stringpool_t char stringpool_str196[sizeof("ISO-IR-144")]; char stringpool_str197[sizeof("L7")]; char stringpool_str199[sizeof("ISO-IR-126")]; - char stringpool_str200[sizeof("GEORGIAN-PS")]; - char stringpool_str201[sizeof("CSPTCP154")]; + char stringpool_str200[sizeof("MS-CYRL")]; char stringpool_str202[sizeof("CP1253")]; char stringpool_str203[sizeof("ISO-IR-165")]; - char stringpool_str204[sizeof("HP-ROMAN8")]; char stringpool_str206[sizeof("LATIN8")]; char stringpool_str208[sizeof("LATIN1")]; char stringpool_str209[sizeof("MACROMAN")]; char stringpool_str211[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str212[sizeof("GB2312")]; char stringpool_str213[sizeof("ASCII")]; char stringpool_str214[sizeof("ECMA-118")]; - char stringpool_str215[sizeof("CSHPROMAN8")]; char stringpool_str216[sizeof("CP1250")]; - char stringpool_str218[sizeof("UTF-8")]; + char stringpool_str217[sizeof("UTF-32")]; + char stringpool_str218[sizeof("HP-ROMAN8")]; char stringpool_str220[sizeof("ISO-IR-138")]; char stringpool_str221[sizeof("CP1133")]; char stringpool_str222[sizeof("LATIN6")]; @@ -233,10 +229,7 @@ struct stringpool_t char stringpool_str229[sizeof("ISO-IR-101")]; char stringpool_str230[sizeof("ISO_8859-10:1992")]; char stringpool_str232[sizeof("LATIN4")]; - char stringpool_str233[sizeof("GB_1988-80")]; char stringpool_str236[sizeof("MS-ANSI")]; - char stringpool_str237[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str239[sizeof("UTF-16")]; char stringpool_str240[sizeof("ECMA-114")]; char stringpool_str241[sizeof("ISO-IR-109")]; char stringpool_str243[sizeof("MULELAO-1")]; @@ -246,216 +239,227 @@ struct stringpool_t char stringpool_str249[sizeof("ISO-8859-3")]; char stringpool_str250[sizeof("ISO_8859-3")]; char stringpool_str251[sizeof("ISO8859-13")]; + char stringpool_str252[sizeof("PT154")]; + char stringpool_str253[sizeof("UNICODE-1-1")]; char stringpool_str254[sizeof("ISO-8859-13")]; char stringpool_str255[sizeof("ISO_8859-13")]; - char stringpool_str256[sizeof("TCVN")]; char stringpool_str257[sizeof("ISO-10646-UCS-4")]; char stringpool_str258[sizeof("LATIN2")]; char stringpool_str259[sizeof("ISO-2022-CN")]; char stringpool_str262[sizeof("US-ASCII")]; + char stringpool_str263[sizeof("CSUNICODE11")]; char stringpool_str264[sizeof("ELOT_928")]; char stringpool_str265[sizeof("ISO8859-10")]; char stringpool_str266[sizeof("CSISO2022CN")]; - char stringpool_str267[sizeof("UCS-4-SWAPPED")]; + char stringpool_str267[sizeof("GB2312")]; char stringpool_str268[sizeof("ISO-8859-10")]; char stringpool_str269[sizeof("ISO_8859-10")]; char stringpool_str270[sizeof("ISO-10646-UCS-2")]; + char stringpool_str271[sizeof("JIS_C6226-1983")]; + char stringpool_str272[sizeof("JIS_C6220-1969-RO")]; char stringpool_str273[sizeof("KOI8-R")]; - char stringpool_str274[sizeof("UNICODE-1-1")]; char stringpool_str277[sizeof("UCS-4LE")]; - char stringpool_str280[sizeof("UCS-2-SWAPPED")]; - char stringpool_str281[sizeof("ISO_8859-8:1988")]; + char stringpool_str280[sizeof("CSISO14JISC6220RO")]; + char stringpool_str281[sizeof("JIS0208")]; + char stringpool_str282[sizeof("JP")]; char stringpool_str283[sizeof("CSKOI8R")]; - char stringpool_str284[sizeof("CSUNICODE11")]; - char stringpool_str286[sizeof("JP")]; + char stringpool_str288[sizeof("GB_1988-80")]; char stringpool_str289[sizeof("MACROMANIA")]; char stringpool_str290[sizeof("UCS-2LE")]; - char stringpool_str294[sizeof("ISO_8859-4:1988")]; - char stringpool_str295[sizeof("ISO_8859-9:1989")]; + char stringpool_str292[sizeof("DECHANYU")]; + char stringpool_str295[sizeof("DEC-HANYU")]; char stringpool_str298[sizeof("ISO-IR-110")]; char stringpool_str299[sizeof("CSISOLATIN1")]; - char stringpool_str300[sizeof("ISO_8859-5:1988")]; + char stringpool_str301[sizeof("JAVA")]; char stringpool_str303[sizeof("KZ-1048")]; char stringpool_str304[sizeof("TIS620")]; char stringpool_str307[sizeof("TIS-620")]; char stringpool_str309[sizeof("EUCKR")]; - char stringpool_str311[sizeof("MACCYRILLIC")]; + char stringpool_str310[sizeof("TCVN")]; char stringpool_str312[sizeof("EUC-KR")]; char stringpool_str313[sizeof("CSISOLATIN6")]; - char stringpool_str314[sizeof("CSKZ1048")]; + char stringpool_str314[sizeof("ISO_8859-8:1988")]; char stringpool_str315[sizeof("CSISOLATINARABIC")]; char stringpool_str316[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str318[sizeof("BIG5")]; + char stringpool_str317[sizeof("CSKZ1048")]; + char stringpool_str318[sizeof("UTF-16LE")]; char stringpool_str319[sizeof("KOREAN")]; char stringpool_str320[sizeof("MACCROATIAN")]; - char stringpool_str321[sizeof("BIG-5")]; char stringpool_str323[sizeof("CSISOLATIN4")]; char stringpool_str324[sizeof("IBM850")]; - char stringpool_str326[sizeof("X0212")]; - char stringpool_str328[sizeof("ARABIC")]; + char stringpool_str327[sizeof("ISO_8859-4:1988")]; + char stringpool_str328[sizeof("ISO_8859-9:1989")]; char stringpool_str329[sizeof("KSC_5601")]; + char stringpool_str330[sizeof("MACICELAND")]; char stringpool_str332[sizeof("LATIN3")]; + char stringpool_str333[sizeof("ISO_8859-5:1988")]; char stringpool_str335[sizeof("CSISOLATIN5")]; - char stringpool_str337[sizeof("UTF-32")]; - char stringpool_str338[sizeof("VISCII")]; - char stringpool_str341[sizeof("GB_2312-80")]; - char stringpool_str343[sizeof("X0208")]; - char stringpool_str344[sizeof("ISO_8859-3:1988")]; - char stringpool_str345[sizeof("X0201")]; + char stringpool_str340[sizeof("X0212")]; + char stringpool_str345[sizeof("CSUNICODE")]; char stringpool_str347[sizeof("ISO-IR-179")]; - char stringpool_str348[sizeof("GB18030")]; char stringpool_str349[sizeof("CSISOLATIN2")]; char stringpool_str350[sizeof("KS_C_5601-1989")]; char stringpool_str351[sizeof("LATIN10")]; char stringpool_str353[sizeof("KOI8-U")]; + char stringpool_str355[sizeof("MACCYRILLIC")]; char stringpool_str356[sizeof("KOI8-RU")]; + char stringpool_str357[sizeof("X0208")]; + char stringpool_str359[sizeof("X0201")]; + char stringpool_str361[sizeof("CSISO159JISX02121990")]; char stringpool_str362[sizeof("CSEUCKR")]; char stringpool_str364[sizeof("ASMO-708")]; - char stringpool_str366[sizeof("CSUNICODE")]; + char stringpool_str366[sizeof("ARABIC")]; char stringpool_str367[sizeof("ISO-IR-100")]; char stringpool_str368[sizeof("ISO-2022-CN-EXT")]; char stringpool_str370[sizeof("UCS-4-INTERNAL")]; - char stringpool_str372[sizeof("MACICELAND")]; char stringpool_str374[sizeof("CHINESE")]; - char stringpool_str377[sizeof("IBM-CP1133")]; + char stringpool_str377[sizeof("ISO_8859-3:1988")]; char stringpool_str378[sizeof("ISO-IR-203")]; char stringpool_str379[sizeof("MS-EE")]; char stringpool_str381[sizeof("TIS620-0")]; char stringpool_str383[sizeof("UCS-2-INTERNAL")]; - char stringpool_str385[sizeof("VISCII1.1-1")]; + char stringpool_str384[sizeof("TIS620.2529-1")]; + char stringpool_str387[sizeof("SHIFT-JIS")]; + char stringpool_str388[sizeof("SHIFT_JIS")]; char stringpool_str389[sizeof("ISO-CELTIC")]; - char stringpool_str390[sizeof("WINDOWS-1258")]; - char stringpool_str391[sizeof("WINDOWS-1251")]; - char stringpool_str392[sizeof("CSBIG5")]; - char stringpool_str395[sizeof("CN-BIG5")]; - char stringpool_str397[sizeof("EUCJP")]; - char stringpool_str398[sizeof("WINDOWS-1256")]; - char stringpool_str400[sizeof("EUC-JP")]; - char stringpool_str401[sizeof("ISO646-JP")]; - char stringpool_str403[sizeof("WINDOWS-1254")]; - char stringpool_str406[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str409[sizeof("WINDOWS-1255")]; - char stringpool_str410[sizeof("ISO_646.IRV:1991")]; - char stringpool_str412[sizeof("CSVISCII")]; - char stringpool_str416[sizeof("WINDOWS-1252")]; - char stringpool_str418[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str419[sizeof("TIS620.2529-1")]; - char stringpool_str421[sizeof("CSIBM866")]; + char stringpool_str391[sizeof("GEORGIAN-ACADEMY")]; + char stringpool_str392[sizeof("VISCII")]; + char stringpool_str393[sizeof("WINDOWS-1258")]; + char stringpool_str394[sizeof("WINDOWS-1251")]; + char stringpool_str396[sizeof("GB_2312-80")]; + char stringpool_str398[sizeof("UTF-32LE")]; + char stringpool_str401[sizeof("WINDOWS-1256")]; + char stringpool_str403[sizeof("GB18030")]; + char stringpool_str404[sizeof("VISCII1.1-1")]; + char stringpool_str406[sizeof("WINDOWS-1254")]; + char stringpool_str411[sizeof("BIG5")]; + char stringpool_str412[sizeof("WINDOWS-1255")]; + char stringpool_str414[sizeof("BIG-5")]; + char stringpool_str415[sizeof("CSHPROMAN8")]; + char stringpool_str419[sizeof("WINDOWS-1252")]; char stringpool_str423[sizeof("CSISOLATIN3")]; - char stringpool_str426[sizeof("MACARABIC")]; char stringpool_str428[sizeof("CP1257")]; - char stringpool_str429[sizeof("WINDOWS-936")]; - char stringpool_str430[sizeof("MACTHAI")]; - char stringpool_str437[sizeof("JAVA")]; - char stringpool_str438[sizeof("UTF-16LE")]; + char stringpool_str429[sizeof("ISO_646.IRV:1991")]; + char stringpool_str432[sizeof("WINDOWS-936")]; + char stringpool_str434[sizeof("UNICODE-1-1-UTF-7")]; char stringpool_str439[sizeof("ISO-2022-KR")]; char stringpool_str441[sizeof("STRK1048-2002")]; - char stringpool_str442[sizeof("GBK")]; - char stringpool_str444[sizeof("CSGB2312")]; + char stringpool_str442[sizeof("CSUNICODE11UTF7")]; + char stringpool_str444[sizeof("MACTHAI")]; char stringpool_str446[sizeof("CSISO2022KR")]; - char stringpool_str448[sizeof("GREEK8")]; char stringpool_str449[sizeof("CP367")]; - char stringpool_str451[sizeof("CN-GB-ISOIR165")]; - char stringpool_str452[sizeof("MACINTOSH")]; - char stringpool_str453[sizeof("WINDOWS-1253")]; - char stringpool_str455[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str458[sizeof("ISO_8859-1:1987")]; - char stringpool_str460[sizeof("WINDOWS-1250")]; - char stringpool_str461[sizeof("JIS_C6226-1983")]; - char stringpool_str462[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str463[sizeof("CSUNICODE11UTF7")]; - char stringpool_str465[sizeof("ISO_8859-6:1987")]; - char stringpool_str470[sizeof("CSISO14JISC6220RO")]; - char stringpool_str471[sizeof("JIS0208")]; + char stringpool_str450[sizeof("UTF-7")]; + char stringpool_str452[sizeof("PTCP154")]; + char stringpool_str456[sizeof("WINDOWS-1253")]; + char stringpool_str458[sizeof("DECKANJI")]; + char stringpool_str459[sizeof("CSIBM866")]; + char stringpool_str461[sizeof("DEC-KANJI")]; + char stringpool_str463[sizeof("WINDOWS-1250")]; + char stringpool_str464[sizeof("MACARABIC")]; + char stringpool_str466[sizeof("CSVISCII")]; char stringpool_str472[sizeof("ISO8859-7")]; - char stringpool_str473[sizeof("CSMACINTOSH")]; char stringpool_str475[sizeof("ISO-8859-7")]; char stringpool_str476[sizeof("ISO_8859-7")]; - char stringpool_str482[sizeof("UCS-4BE")]; - char stringpool_str483[sizeof("ISO_8859-2:1987")]; + char stringpool_str477[sizeof("TIS620.2533-1")]; + char stringpool_str479[sizeof("ANSI_X3.4-1968")]; + char stringpool_str480[sizeof("MACINTOSH")]; + char stringpool_str485[sizeof("CSBIG5")]; + char stringpool_str487[sizeof("ANSI_X3.4-1986")]; + char stringpool_str488[sizeof("CN-BIG5")]; char stringpool_str489[sizeof("KOI8-T")]; - char stringpool_str494[sizeof("EUCTW")]; - char stringpool_str495[sizeof("UCS-2BE")]; - char stringpool_str497[sizeof("EUC-TW")]; - char stringpool_str498[sizeof("MS-HEBR")]; - char stringpool_str500[sizeof("ANSI_X3.4-1968")]; - char stringpool_str501[sizeof("TCVN5712-1")]; + char stringpool_str491[sizeof("ISO_8859-1:1987")]; + char stringpool_str493[sizeof("CSSHIFTJIS")]; + char stringpool_str496[sizeof("GEORGIAN-PS")]; + char stringpool_str497[sizeof("GBK")]; + char stringpool_str498[sizeof("ISO_8859-6:1987")]; + char stringpool_str501[sizeof("CSMACINTOSH")]; + char stringpool_str503[sizeof("GREEK8")]; char stringpool_str504[sizeof("ISO-IR-87")]; - char stringpool_str507[sizeof("CN-GB")]; - char stringpool_str508[sizeof("ANSI_X3.4-1986")]; - char stringpool_str512[sizeof("TIS620.2533-1")]; - char stringpool_str517[sizeof("CSISOLATINHEBREW")]; - char stringpool_str518[sizeof("UTF-32LE")]; + char stringpool_str513[sizeof("JIS_X0212")]; + char stringpool_str516[sizeof("ISO_8859-2:1987")]; + char stringpool_str518[sizeof("EUCTW")]; char stringpool_str519[sizeof("KS_C_5601-1987")]; - char stringpool_str520[sizeof("ISO_8859-7:2003")]; - char stringpool_str521[sizeof("TCVN-5712")]; + char stringpool_str520[sizeof("UCS-4BE")]; + char stringpool_str521[sizeof("EUC-TW")]; + char stringpool_str522[sizeof("MS_KANJI")]; char stringpool_str523[sizeof("ISO-IR-57")]; - char stringpool_str525[sizeof("HZ-GB-2312")]; - char stringpool_str527[sizeof("ISO-2022-JP")]; + char stringpool_str525[sizeof("ISO-2022-JP-MS")]; + char stringpool_str526[sizeof("ISO-2022-JP-1")]; char stringpool_str528[sizeof("ISO-IR-157")]; - char stringpool_str529[sizeof("ISO-2022-JP-MS")]; - char stringpool_str530[sizeof("ISO-2022-JP-1")]; + char stringpool_str530[sizeof("JIS_X0208")]; char stringpool_str531[sizeof("CSKSC56011987")]; - char stringpool_str534[sizeof("CSISO2022JP")]; + char stringpool_str532[sizeof("JIS_X0201")]; + char stringpool_str533[sizeof("UCS-2BE")]; char stringpool_str535[sizeof("ISO-IR-127")]; - char stringpool_str539[sizeof("CSISOLATINGREEK")]; - char stringpool_str545[sizeof("WINDOWS-874")]; - char stringpool_str547[sizeof("CSEUCTW")]; + char stringpool_str537[sizeof("CSGB2312")]; + char stringpool_str543[sizeof("CSISOLATINHEBREW")]; + char stringpool_str544[sizeof("CN-GB-ISOIR165")]; + char stringpool_str546[sizeof("TIS620.2533-0")]; + char stringpool_str548[sizeof("WINDOWS-874")]; char stringpool_str549[sizeof("MACCENTRALEUROPE")]; - char stringpool_str551[sizeof("CSISO159JISX02121990")]; - char stringpool_str554[sizeof("CSISO58GB231280")]; - char stringpool_str555[sizeof("ISO-2022-JP-2")]; - char stringpool_str557[sizeof("MS-ARAB")]; + char stringpool_str550[sizeof("MS-HEBR")]; + char stringpool_str551[sizeof("ISO-2022-JP-2")]; + char stringpool_str553[sizeof("ISO_8859-7:2003")]; + char stringpool_str555[sizeof("TCVN5712-1")]; + char stringpool_str556[sizeof("JISX0201-1976")]; + char stringpool_str557[sizeof("CSISO2022JP2")]; char stringpool_str558[sizeof("LATIN7")]; - char stringpool_str561[sizeof("CSISO2022JP2")]; - char stringpool_str566[sizeof("WINDOWS-1257")]; - char stringpool_str567[sizeof("NEXTSTEP")]; - char stringpool_str570[sizeof("UTF-7")]; - char stringpool_str577[sizeof("CSISO57GB1988")]; - char stringpool_str581[sizeof("TIS620.2533-0")]; + char stringpool_str561[sizeof("UTF-16BE")]; + char stringpool_str563[sizeof("IBM-CP1133")]; + char stringpool_str568[sizeof("JIS_X0212-1990")]; + char stringpool_str569[sizeof("WINDOWS-1257")]; + char stringpool_str571[sizeof("CSEUCTW")]; + char stringpool_str573[sizeof("CSPTCP154")]; + char stringpool_str575[sizeof("TCVN-5712")]; + char stringpool_str579[sizeof("EUCJP")]; + char stringpool_str582[sizeof("EUC-JP")]; + char stringpool_str583[sizeof("ISO646-JP")]; char stringpool_str588[sizeof("IBM367")]; - char stringpool_str592[sizeof("GB18030:2022")]; - char stringpool_str595[sizeof("BIG5HKSCS")]; - char stringpool_str598[sizeof("BIG5-HKSCS")]; + char stringpool_str592[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str594[sizeof("CSISOLATINGREEK")]; + char stringpool_str604[sizeof("JIS_X0208-1983")]; + char stringpool_str611[sizeof("JIS_X0208-1990")]; char stringpool_str612[sizeof("MACUKRAINE")]; - char stringpool_str629[sizeof("GB18030:2005")]; - char stringpool_str633[sizeof("ISO_8859-7:1987")]; - char stringpool_str636[sizeof("GREEK")]; + char stringpool_str616[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str620[sizeof("JIS_X0212.1990-0")]; + char stringpool_str622[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; + char stringpool_str630[sizeof("UCS-4-SWAPPED")]; + char stringpool_str632[sizeof("HZ-GB-2312")]; + char stringpool_str633[sizeof("MS-ARAB")]; + char stringpool_str634[sizeof("UNICODELITTLE")]; char stringpool_str637[sizeof("MS-TURK")]; - char stringpool_str639[sizeof("UNICODEBIG")]; - char stringpool_str643[sizeof("UTF-16BE")]; - char stringpool_str655[sizeof("UNICODELITTLE")]; - char stringpool_str664[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str683[sizeof("HEBREW")]; - char stringpool_str685[sizeof("MACTURKISH")]; - char stringpool_str689[sizeof("JIS_X0212")]; - char stringpool_str697[sizeof("SHIFT-JIS")]; - char stringpool_str698[sizeof("SHIFT_JIS")]; - char stringpool_str706[sizeof("JIS_X0208")]; - char stringpool_str708[sizeof("JIS_X0201")]; - char stringpool_str712[sizeof("MS_KANJI")]; - char stringpool_str720[sizeof("TCVN5712-1:1993")]; - char stringpool_str723[sizeof("UTF-32BE")]; - char stringpool_str727[sizeof("MS-GREEK")]; - char stringpool_str732[sizeof("JISX0201-1976")]; - char stringpool_str734[sizeof("MACGREEK")]; - char stringpool_str740[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str742[sizeof("WINBALTRIM")]; - char stringpool_str744[sizeof("JIS_X0212-1990")]; - char stringpool_str756[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str757[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str763[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str769[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str780[sizeof("JIS_X0208-1983")]; - char stringpool_str787[sizeof("JIS_X0208-1990")]; - char stringpool_str789[sizeof("CSSHIFTJIS")]; - char stringpool_str822[sizeof("JOHAB")]; - char stringpool_str827[sizeof("BIGFIVE")]; - char stringpool_str830[sizeof("BIG-FIVE")]; - char stringpool_str831[sizeof("JIS_X0212.1990-0")]; - char stringpool_str852[sizeof("CSISO87JISX0208")]; - char stringpool_str861[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str875[sizeof("MACHEBREW")]; + char stringpool_str638[sizeof("CN-GB")]; + char stringpool_str639[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str641[sizeof("UTF-32BE")]; + char stringpool_str643[sizeof("UCS-2-SWAPPED")]; + char stringpool_str647[sizeof("CSISO58GB231280")]; + char stringpool_str666[sizeof("ISO_8859-7:1987")]; + char stringpool_str670[sizeof("CSISO57GB1988")]; + char stringpool_str676[sizeof("CSISO87JISX0208")]; + char stringpool_str680[sizeof("GB18030:2022")]; + char stringpool_str691[sizeof("GREEK")]; + char stringpool_str702[sizeof("BIG5HKSCS")]; + char stringpool_str705[sizeof("BIG5-HKSCS")]; + char stringpool_str709[sizeof("ISO-2022-JP")]; + char stringpool_str713[sizeof("MACTURKISH")]; + char stringpool_str716[sizeof("CSISO2022JP")]; + char stringpool_str717[sizeof("GB18030:2005")]; + char stringpool_str722[sizeof("JOHAB")]; + char stringpool_str759[sizeof("HEBREW")]; + char stringpool_str766[sizeof("UNICODEBIG")]; + char stringpool_str782[sizeof("MS-GREEK")]; + char stringpool_str789[sizeof("MACGREEK")]; + char stringpool_str792[sizeof("WINBALTRIM")]; + char stringpool_str807[sizeof("TCVN5712-1:1993")]; + char stringpool_str854[sizeof("BIGFIVE")]; + char stringpool_str857[sizeof("BIG-FIVE")]; + char stringpool_str896[sizeof("BIG5-HKSCS:2008")]; + char stringpool_str897[sizeof("BIG5-HKSCS:2001")]; + char stringpool_str903[sizeof("BIG5-HKSCS:1999")]; + char stringpool_str906[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str909[sizeof("BIG5-HKSCS:2004")]; + char stringpool_str951[sizeof("MACHEBREW")]; + char stringpool_str953[sizeof("NEXTSTEP")]; }; static const struct stringpool_t stringpool_contents = { @@ -475,27 +479,27 @@ static const struct stringpool_t stringpool_contents = "CP949", "UHC", "862", - "PT154", "CP154", "SJIS", "CP1258", "CP1251", - "PTCP154", "UCS-4", "L3", "CP862", - "HZ", "CP1256", "CP1131", + "UTF-8", "CSUCS4", "CP1254", "CP1361", "MAC", + "HZ", "RK1048", "UCS-2", "CP936", "ROMAN8", "CP1255", + "UTF-16", "ISO8859-8", "ISO8859-1", "ISO-8859-8", @@ -529,7 +533,6 @@ static const struct stringpool_t stringpool_contents = "ISO_8859-15:1998", "ISO-8859-14", "ISO_8859-14", - "MS-CYRL", "ISO8859-5", "ISO646-US", "ISO-8859-5", @@ -559,21 +562,18 @@ static const struct stringpool_t stringpool_contents = "ISO-IR-144", "L7", "ISO-IR-126", - "GEORGIAN-PS", - "CSPTCP154", + "MS-CYRL", "CP1253", "ISO-IR-165", - "HP-ROMAN8", "LATIN8", "LATIN1", "MACROMAN", "CYRILLIC-ASIAN", - "GB2312", "ASCII", "ECMA-118", - "CSHPROMAN8", "CP1250", - "UTF-8", + "UTF-32", + "HP-ROMAN8", "ISO-IR-138", "CP1133", "LATIN6", @@ -585,10 +585,7 @@ static const struct stringpool_t stringpool_contents = "ISO-IR-101", "ISO_8859-10:1992", "LATIN4", - "GB_1988-80", "MS-ANSI", - "GEORGIAN-ACADEMY", - "UTF-16", "ECMA-114", "ISO-IR-109", "MULELAO-1", @@ -598,216 +595,227 @@ static const struct stringpool_t stringpool_contents = "ISO-8859-3", "ISO_8859-3", "ISO8859-13", + "PT154", + "UNICODE-1-1", "ISO-8859-13", "ISO_8859-13", - "TCVN", "ISO-10646-UCS-4", "LATIN2", "ISO-2022-CN", "US-ASCII", + "CSUNICODE11", "ELOT_928", "ISO8859-10", "CSISO2022CN", - "UCS-4-SWAPPED", + "GB2312", "ISO-8859-10", "ISO_8859-10", "ISO-10646-UCS-2", + "JIS_C6226-1983", + "JIS_C6220-1969-RO", "KOI8-R", - "UNICODE-1-1", "UCS-4LE", - "UCS-2-SWAPPED", - "ISO_8859-8:1988", - "CSKOI8R", - "CSUNICODE11", + "CSISO14JISC6220RO", + "JIS0208", "JP", + "CSKOI8R", + "GB_1988-80", "MACROMANIA", "UCS-2LE", - "ISO_8859-4:1988", - "ISO_8859-9:1989", + "DECHANYU", + "DEC-HANYU", "ISO-IR-110", "CSISOLATIN1", - "ISO_8859-5:1988", + "JAVA", "KZ-1048", "TIS620", "TIS-620", "EUCKR", - "MACCYRILLIC", + "TCVN", "EUC-KR", "CSISOLATIN6", - "CSKZ1048", + "ISO_8859-8:1988", "CSISOLATINARABIC", "CSISOLATINCYRILLIC", - "BIG5", + "CSKZ1048", + "UTF-16LE", "KOREAN", "MACCROATIAN", - "BIG-5", "CSISOLATIN4", "IBM850", - "X0212", - "ARABIC", + "ISO_8859-4:1988", + "ISO_8859-9:1989", "KSC_5601", + "MACICELAND", "LATIN3", + "ISO_8859-5:1988", "CSISOLATIN5", - "UTF-32", - "VISCII", - "GB_2312-80", - "X0208", - "ISO_8859-3:1988", - "X0201", + "X0212", + "CSUNICODE", "ISO-IR-179", - "GB18030", "CSISOLATIN2", "KS_C_5601-1989", "LATIN10", "KOI8-U", + "MACCYRILLIC", "KOI8-RU", + "X0208", + "X0201", + "CSISO159JISX02121990", "CSEUCKR", "ASMO-708", - "CSUNICODE", + "ARABIC", "ISO-IR-100", "ISO-2022-CN-EXT", "UCS-4-INTERNAL", - "MACICELAND", "CHINESE", - "IBM-CP1133", + "ISO_8859-3:1988", "ISO-IR-203", "MS-EE", "TIS620-0", "UCS-2-INTERNAL", - "VISCII1.1-1", + "TIS620.2529-1", + "SHIFT-JIS", + "SHIFT_JIS", "ISO-CELTIC", + "GEORGIAN-ACADEMY", + "VISCII", "WINDOWS-1258", "WINDOWS-1251", - "CSBIG5", - "CN-BIG5", - "EUCJP", + "GB_2312-80", + "UTF-32LE", "WINDOWS-1256", - "EUC-JP", - "ISO646-JP", + "GB18030", + "VISCII1.1-1", "WINDOWS-1254", - "CSPC850MULTILINGUAL", + "BIG5", "WINDOWS-1255", - "ISO_646.IRV:1991", - "CSVISCII", + "BIG-5", + "CSHPROMAN8", "WINDOWS-1252", - "CSPC862LATINHEBREW", - "TIS620.2529-1", - "CSIBM866", "CSISOLATIN3", - "MACARABIC", "CP1257", + "ISO_646.IRV:1991", "WINDOWS-936", - "MACTHAI", - "JAVA", - "UTF-16LE", + "UNICODE-1-1-UTF-7", "ISO-2022-KR", "STRK1048-2002", - "GBK", - "CSGB2312", + "CSUNICODE11UTF7", + "MACTHAI", "CSISO2022KR", - "GREEK8", "CP367", - "CN-GB-ISOIR165", - "MACINTOSH", + "UTF-7", + "PTCP154", "WINDOWS-1253", - "UNICODE-1-1-UTF-7", - "ISO_8859-1:1987", + "DECKANJI", + "CSIBM866", + "DEC-KANJI", "WINDOWS-1250", - "JIS_C6226-1983", - "JIS_C6220-1969-RO", - "CSUNICODE11UTF7", - "ISO_8859-6:1987", - "CSISO14JISC6220RO", - "JIS0208", + "MACARABIC", + "CSVISCII", "ISO8859-7", - "CSMACINTOSH", "ISO-8859-7", "ISO_8859-7", - "UCS-4BE", - "ISO_8859-2:1987", - "KOI8-T", - "EUCTW", - "UCS-2BE", - "EUC-TW", - "MS-HEBR", + "TIS620.2533-1", "ANSI_X3.4-1968", - "TCVN5712-1", - "ISO-IR-87", - "CN-GB", + "MACINTOSH", + "CSBIG5", "ANSI_X3.4-1986", - "TIS620.2533-1", - "CSISOLATINHEBREW", - "UTF-32LE", + "CN-BIG5", + "KOI8-T", + "ISO_8859-1:1987", + "CSSHIFTJIS", + "GEORGIAN-PS", + "GBK", + "ISO_8859-6:1987", + "CSMACINTOSH", + "GREEK8", + "ISO-IR-87", + "JIS_X0212", + "ISO_8859-2:1987", + "EUCTW", "KS_C_5601-1987", - "ISO_8859-7:2003", - "TCVN-5712", + "UCS-4BE", + "EUC-TW", + "MS_KANJI", "ISO-IR-57", - "HZ-GB-2312", - "ISO-2022-JP", - "ISO-IR-157", "ISO-2022-JP-MS", "ISO-2022-JP-1", + "ISO-IR-157", + "JIS_X0208", "CSKSC56011987", - "CSISO2022JP", + "JIS_X0201", + "UCS-2BE", "ISO-IR-127", - "CSISOLATINGREEK", + "CSGB2312", + "CSISOLATINHEBREW", + "CN-GB-ISOIR165", + "TIS620.2533-0", "WINDOWS-874", - "CSEUCTW", "MACCENTRALEUROPE", - "CSISO159JISX02121990", - "CSISO58GB231280", + "MS-HEBR", "ISO-2022-JP-2", - "MS-ARAB", - "LATIN7", + "ISO_8859-7:2003", + "TCVN5712-1", + "JISX0201-1976", "CSISO2022JP2", + "LATIN7", + "UTF-16BE", + "IBM-CP1133", + "JIS_X0212-1990", "WINDOWS-1257", - "NEXTSTEP", - "UTF-7", - "CSISO57GB1988", - "TIS620.2533-0", + "CSEUCTW", + "CSPTCP154", + "TCVN-5712", + "EUCJP", + "EUC-JP", + "ISO646-JP", "IBM367", + "CSPC850MULTILINGUAL", + "CSISOLATINGREEK", + "JIS_X0208-1983", + "JIS_X0208-1990", + "MACUKRAINE", + "CSPC862LATINHEBREW", + "JIS_X0212.1990-0", + "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", + "UCS-4-SWAPPED", + "HZ-GB-2312", + "MS-ARAB", + "UNICODELITTLE", + "MS-TURK", + "CN-GB", + "CSHALFWIDTHKATAKANA", + "UTF-32BE", + "UCS-2-SWAPPED", + "CSISO58GB231280", + "ISO_8859-7:1987", + "CSISO57GB1988", + "CSISO87JISX0208", "GB18030:2022", + "GREEK", "BIG5HKSCS", "BIG5-HKSCS", - "MACUKRAINE", + "ISO-2022-JP", + "MACTURKISH", + "CSISO2022JP", "GB18030:2005", - "ISO_8859-7:1987", - "GREEK", - "MS-TURK", - "UNICODEBIG", - "UTF-16BE", - "UNICODELITTLE", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", + "JOHAB", "HEBREW", - "MACTURKISH", - "JIS_X0212", - "SHIFT-JIS", - "SHIFT_JIS", - "JIS_X0208", - "JIS_X0201", - "MS_KANJI", - "TCVN5712-1:1993", - "UTF-32BE", + "UNICODEBIG", "MS-GREEK", - "JISX0201-1976", "MACGREEK", - "CSHALFWIDTHKATAKANA", "WINBALTRIM", - "JIS_X0212-1990", + "TCVN5712-1:1993", + "BIGFIVE", + "BIG-FIVE", "BIG5-HKSCS:2008", "BIG5-HKSCS:2001", "BIG5-HKSCS:1999", - "BIG5-HKSCS:2004", - "JIS_X0208-1983", - "JIS_X0208-1990", - "CSSHIFTJIS", - "JOHAB", - "BIGFIVE", - "BIG-FIVE", - "JIS_X0212.1990-0", - "CSISO87JISX0208", "CSEUCPKDFMTJAPANESE", - "MACHEBREW" + "BIG5-HKSCS:2004", + "MACHEBREW", + "NEXTSTEP" }; #define stringpool ((const char *) &stringpool_contents) @@ -856,10 +864,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_cp949}, #line 203 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_cp862}, - {-1}, -#line 234 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_pt154}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 236 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_pt154}, #line 307 "lib/generated/aliases.gperf" @@ -870,10 +875,7 @@ static const struct alias aliases[] = {-1}, #line 174 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_cp1251}, - {-1}, -#line 235 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, ei_pt154}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, #line 33 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, ei_ucs4}, #line 76 "lib/generated/aliases.gperf" @@ -881,16 +883,15 @@ static const struct alias aliases[] = {-1}, #line 201 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, ei_cp862}, - {-1}, {-1}, -#line 334 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, ei_hz}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 189 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_cp1256}, {-1}, {-1}, {-1}, {-1}, #line 209 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str97, ei_cp1131}, - {-1}, {-1}, +#line 23 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str98, ei_utf8}, + {-1}, #line 35 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str100, ei_ucs4}, {-1}, @@ -901,7 +902,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, ei_johab}, #line 212 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_mac_roman}, - {-1}, +#line 334 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_hz}, #line 239 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, ei_rk1048}, {-1}, @@ -914,7 +916,9 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_hp_roman8}, #line 186 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str114, ei_cp1255}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 38 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str119, ei_utf16}, #line 120 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_iso8859_8}, {-1}, @@ -984,9 +988,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_iso8859_14}, #line 147 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_iso8859_14}, -#line 176 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_cp1251}, - {-1}, + {-1}, {-1}, #line 93 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_5}, {-1}, @@ -1054,17 +1056,14 @@ static const struct alias aliases[] = {-1}, #line 107 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_iso8859_7}, -#line 232 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_georgian_ps}, -#line 238 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_pt154}, +#line 176 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_cp1251}, + {-1}, #line 180 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_cp1253}, #line 293 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_isoir165}, -#line 225 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_hp_roman8}, - {-1}, + {-1}, {-1}, #line 150 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, ei_iso8859_14}, {-1}, @@ -1075,19 +1074,18 @@ static const struct alias aliases[] = {-1}, #line 237 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str211, ei_pt154}, -#line 320 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_euc_cn}, + {-1}, #line 13 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_ascii}, #line 108 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_iso8859_7}, -#line 228 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, ei_hp_roman8}, + {-1}, #line 171 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_cp1250}, - {-1}, -#line 23 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str218, ei_utf8}, +#line 41 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_utf32}, +#line 225 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str218, ei_hp_roman8}, {-1}, #line 117 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_iso8859_8}, @@ -1113,16 +1111,10 @@ static const struct alias aliases[] = {-1}, #line 83 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_iso8859_4}, -#line 285 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_iso646_cn}, - {-1}, {-1}, + {-1}, {-1}, {-1}, #line 179 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_cp1252}, -#line 231 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_georgian_academy}, - {-1}, -#line 38 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_utf16}, + {-1}, {-1}, {-1}, #line 98 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_iso8859_6}, #line 74 "lib/generated/aliases.gperf" @@ -1144,13 +1136,15 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_iso8859_3}, #line 145 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_iso8859_13}, - {-1}, {-1}, +#line 234 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str252, ei_pt154}, +#line 29 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_ucs2be}, #line 140 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_iso8859_13}, #line 141 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_iso8859_13}, -#line 258 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_tcvn}, + {-1}, #line 34 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_ucs4}, #line 67 "lib/generated/aliases.gperf" @@ -1160,60 +1154,62 @@ static const struct alias aliases[] = {-1}, {-1}, #line 12 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_ascii}, - {-1}, +#line 30 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ucs2be}, #line 109 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_iso8859_7}, #line 136 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_10}, #line 332 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_iso2022_cn}, -#line 50 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_ucs4swapped}, +#line 320 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_euc_cn}, #line 129 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_iso8859_10}, #line 130 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_iso8859_10}, #line 25 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_ucs2}, - {-1}, {-1}, +#line 277 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_jisx0208}, +#line 262 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_iso646_jp}, #line 167 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_koi8_r}, -#line 29 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_ucs2be}, - {-1}, {-1}, + {-1}, {-1}, {-1}, #line 37 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_ucs4le}, {-1}, {-1}, -#line 48 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_ucs2swapped}, -#line 116 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_iso8859_8}, - {-1}, +#line 266 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso646_jp}, +#line 274 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_jisx0208}, +#line 265 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_iso646_jp}, #line 168 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str283, ei_koi8_r}, -#line 30 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_ucs2be}, - {-1}, -#line 265 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_iso646_jp}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 285 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_iso646_cn}, #line 217 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_mac_romania}, #line 31 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_ucs2le}, - {-1}, {-1}, {-1}, -#line 81 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str294, ei_iso8859_4}, -#line 123 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_iso8859_9}, + {-1}, +#line 364 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_dec_hanyu}, + {-1}, {-1}, +#line 363 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_dec_hanyu}, {-1}, {-1}, #line 82 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str298, ei_iso8859_4}, #line 61 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_iso8859_1}, -#line 89 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_iso8859_5}, - {-1}, {-1}, + {-1}, +#line 52 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_java}, + {-1}, #line 241 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_rk1048}, #line 247 "lib/generated/aliases.gperf" @@ -1224,67 +1220,59 @@ static const struct alias aliases[] = {-1}, #line 353 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_euc_kr}, +#line 258 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_tcvn}, {-1}, -#line 218 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_mac_cyrillic}, #line 352 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_euc_kr}, #line 135 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_iso8859_10}, -#line 242 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_rk1048}, +#line 116 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_iso8859_8}, #line 101 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_iso8859_6}, #line 92 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_iso8859_5}, - {-1}, -#line 339 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_ces_big5}, +#line 242 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_rk1048}, +#line 40 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_utf16le}, #line 300 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ksc5601}, #line 216 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_mac_croatian}, -#line 340 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ces_big5}, - {-1}, + {-1}, {-1}, #line 85 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_iso8859_4}, #line 198 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp850}, - {-1}, -#line 282 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str326, ei_jisx0212}, - {-1}, -#line 100 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_iso8859_6}, + {-1}, {-1}, +#line 81 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_iso8859_4}, +#line 123 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_iso8859_9}, #line 295 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str329, ei_ksc5601}, - {-1}, {-1}, +#line 215 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str330, ei_mac_iceland}, + {-1}, #line 75 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_iso8859_3}, - {-1}, {-1}, +#line 89 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_iso8859_5}, + {-1}, #line 127 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_iso8859_9}, - {-1}, -#line 41 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_utf32}, -#line 255 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_viscii}, - {-1}, {-1}, -#line 290 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_gb2312}, - {-1}, -#line 275 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_jisx0208}, -#line 73 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_iso8859_3}, -#line 269 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_jisx0201}, + {-1}, {-1}, {-1}, {-1}, +#line 282 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, +#line 26 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_ucs2}, {-1}, #line 142 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_iso8859_13}, -#line 328 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_gb18030_2005}, + {-1}, #line 69 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_iso8859_2}, #line 297 "lib/generated/aliases.gperf" @@ -1294,18 +1282,27 @@ static const struct alias aliases[] = {-1}, #line 169 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_koi8_u}, - {-1}, {-1}, + {-1}, +#line 218 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_mac_cyrillic}, #line 170 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_koi8_ru}, - {-1}, {-1}, {-1}, {-1}, {-1}, +#line 275 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_jisx0208}, + {-1}, +#line 269 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_jisx0201}, + {-1}, +#line 284 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_jisx0212}, #line 354 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_euc_kr}, {-1}, #line 99 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_iso8859_6}, {-1}, -#line 26 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_ucs2}, +#line 100 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_iso8859_6}, #line 56 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_iso8859_1}, #line 333 "lib/generated/aliases.gperf" @@ -1313,15 +1310,12 @@ static const struct alias aliases[] = {-1}, #line 49 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_ucs4internal}, - {-1}, -#line 215 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_mac_iceland}, - {-1}, + {-1}, {-1}, {-1}, #line 323 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_euc_cn}, {-1}, {-1}, -#line 245 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_cp1133}, +#line 73 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_iso8859_3}, #line 157 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_iso8859_15}, #line 173 "lib/generated/aliases.gperf" @@ -1332,377 +1326,406 @@ static const struct alias aliases[] = {-1}, #line 47 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_ucs2internal}, - {-1}, -#line 256 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str385, ei_viscii}, - {-1}, {-1}, {-1}, +#line 249 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_tis620}, + {-1}, {-1}, +#line 306 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_sjis}, +#line 305 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_sjis}, #line 152 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_iso8859_14}, + {-1}, +#line 231 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_georgian_academy}, +#line 255 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_viscii}, #line 196 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_cp1258}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_cp1258}, #line 175 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_cp1251}, -#line 344 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ces_big5}, - {-1}, {-1}, -#line 343 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_ces_big5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_cp1251}, {-1}, -#line 302 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_euc_jp}, +#line 290 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_gb2312}, + {-1}, +#line 43 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_utf32le}, + {-1}, {-1}, #line 190 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_cp1256}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_cp1256}, {-1}, -#line 301 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str400, ei_euc_jp}, -#line 263 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_iso646_jp}, +#line 328 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_gb18030_2005}, +#line 256 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_viscii}, {-1}, #line 184 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_cp1254}, - {-1}, {-1}, -#line 200 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_cp850}, - {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_cp1254}, + {-1}, {-1}, {-1}, {-1}, +#line 339 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_ces_big5}, #line 187 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_cp1255}, -#line 15 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str410, ei_ascii}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1255}, {-1}, -#line 257 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_viscii}, +#line 340 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_ces_big5}, +#line 228 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_hp_roman8}, {-1}, {-1}, {-1}, #line 178 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_cp1252}, - {-1}, -#line 204 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_cp862}, -#line 249 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_tis620}, - {-1}, -#line 208 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_cp866}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp1252}, + {-1}, {-1}, {-1}, #line 77 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_iso8859_3}, - {-1}, {-1}, -#line 223 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_mac_arabic}, - {-1}, + {-1}, {-1}, {-1}, {-1}, #line 192 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_cp1257}, +#line 15 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_ascii}, + {-1}, {-1}, #line 327 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_cp936}, -#line 224 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_mac_thai}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_java}, -#line 40 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_utf16le}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_cp936}, + {-1}, +#line 45 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_utf7}, + {-1}, {-1}, {-1}, {-1}, #line 359 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso2022_kr}, {-1}, #line 240 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_rk1048}, -#line 324 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_ces_gbk}, +#line 46 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_utf7}, {-1}, -#line 322 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_euc_cn}, +#line 224 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_mac_thai}, {-1}, #line 360 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str446, ei_iso2022_kr}, - {-1}, -#line 110 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_iso8859_7}, + {-1}, {-1}, #line 19 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ascii}, +#line 44 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_utf7}, {-1}, -#line 294 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_isoir165}, -#line 211 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_mac_roman}, +#line 235 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_pt154}, + {-1}, {-1}, {-1}, #line 181 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_cp1253}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_cp1253}, {-1}, -#line 45 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_utf7}, - {-1}, {-1}, -#line 55 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_iso8859_1}, +#line 362 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_dec_kanji}, +#line 208 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_cp866}, + {-1}, +#line 361 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_dec_kanji}, {-1}, #line 172 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str460, ei_cp1250}, -#line 277 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_jisx0208}, -#line 262 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_iso646_jp}, -#line 46 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_utf7}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp1250}, +#line 223 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_mac_arabic}, {-1}, -#line 96 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str465, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, -#line 266 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str470, ei_iso646_jp}, -#line 274 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_jisx0208}, +#line 257 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_viscii}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 113 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_iso8859_7}, -#line 213 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_mac_roman}, - {-1}, + {-1}, {-1}, #line 103 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_iso8859_7}, #line 104 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 36 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_ucs4be}, -#line 65 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, +#line 251 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_tis620}, + {-1}, +#line 17 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_ascii}, +#line 211 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, +#line 344 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_ces_big5}, + {-1}, +#line 18 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_ascii}, +#line 343 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_ces_big5}, #line 233 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_koi8_t}, - {-1}, {-1}, {-1}, {-1}, -#line 337 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_euc_tw}, -#line 27 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_ucs2be}, {-1}, -#line 336 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_euc_tw}, -#line 188 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_cp1255}, +#line 55 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_iso8859_1}, {-1}, -#line 17 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_ascii}, -#line 260 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_tcvn}, +#line 309 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_sjis}, + {-1}, {-1}, +#line 232 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_georgian_ps}, +#line 324 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_ces_gbk}, +#line 96 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_iso8859_6}, {-1}, {-1}, +#line 213 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_mac_roman}, + {-1}, +#line 110 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_iso8859_7}, #line 276 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 279 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_jisx0212}, {-1}, {-1}, -#line 321 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_euc_cn}, -#line 18 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_ascii}, - {-1}, {-1}, {-1}, -#line 251 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, -#line 119 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str517, ei_iso8859_8}, -#line 43 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_utf32le}, +#line 65 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str516, ei_iso8859_2}, + {-1}, +#line 337 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_euc_tw}, #line 296 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_ksc5601}, -#line 106 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_iso8859_7}, -#line 259 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_tcvn}, - {-1}, +#line 36 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_ucs4be}, +#line 336 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_euc_tw}, +#line 308 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_sjis}, #line 287 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_iso646_cn}, {-1}, -#line 335 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_hz}, +#line 316 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_iso2022_jpms}, +#line 313 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_iso2022_jp1}, {-1}, -#line 311 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_iso2022_jp}, #line 132 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_iso8859_10}, -#line 316 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_iso2022_jpms}, -#line 313 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_iso2022_jp1}, + {-1}, +#line 271 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_jisx0208}, #line 299 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_ksc5601}, - {-1}, {-1}, -#line 312 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_iso2022_jp}, +#line 267 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_jisx0201}, +#line 27 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_ucs2be}, + {-1}, #line 97 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_iso8859_6}, - {-1}, {-1}, {-1}, -#line 112 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str539, ei_iso8859_7}, + {-1}, +#line 322 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_euc_cn}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 254 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_cp874}, +#line 119 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str543, ei_iso8859_8}, +#line 294 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_isoir165}, {-1}, -#line 338 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_euc_tw}, +#line 250 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_tis620}, {-1}, +#line 254 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_cp874}, #line 214 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str549, ei_mac_centraleurope}, - {-1}, -#line 284 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_jisx0212}, - {-1}, {-1}, -#line 292 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_gb2312}, +#line 188 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_cp1255}, #line 314 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_iso2022_jp2}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_iso2022_jp2}, {-1}, -#line 191 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_cp1256}, +#line 106 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_iso8859_7}, + {-1}, +#line 260 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_tcvn}, +#line 268 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_jisx0201}, +#line 315 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_iso2022_jp2}, #line 143 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_iso8859_13}, {-1}, {-1}, -#line 315 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_iso2022_jp2}, +#line 39 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_utf16be}, + {-1}, +#line 245 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_cp1133}, {-1}, {-1}, {-1}, {-1}, +#line 281 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_jisx0212}, #line 193 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_cp1257}, -#line 229 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_nextstep}, - {-1}, {-1}, -#line 44 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 289 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_iso646_cn}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_cp1257}, + {-1}, +#line 338 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_euc_tw}, + {-1}, +#line 238 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str573, ei_pt154}, + {-1}, +#line 259 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_tcvn}, {-1}, {-1}, {-1}, -#line 250 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str581, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 302 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str579, ei_euc_jp}, + {-1}, {-1}, +#line 301 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_euc_jp}, +#line 263 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_iso646_jp}, + {-1}, {-1}, {-1}, {-1}, #line 20 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_ascii}, {-1}, {-1}, {-1}, -#line 330 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_gb18030_2022}, - {-1}, {-1}, -#line 350 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_big5hkscs2008}, - {-1}, {-1}, -#line 349 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_big5hkscs2008}, +#line 200 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_cp850}, + {-1}, +#line 112 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, +#line 272 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str604, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 273 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_jisx0208}, #line 219 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_mac_ukraine}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 329 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_gb18030_2005}, {-1}, {-1}, {-1}, -#line 105 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_iso8859_7}, +#line 204 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str616, ei_cp862}, + {-1}, {-1}, {-1}, +#line 280 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_jisx0212}, + {-1}, +#line 303 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str622, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 50 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_ucs4swapped}, + {-1}, +#line 335 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_hz}, +#line 191 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_cp1256}, +#line 32 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str634, ei_ucs2le}, {-1}, {-1}, -#line 111 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_iso8859_7}, #line 185 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp1254}, +#line 321 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_euc_cn}, +#line 270 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_jisx0201}, {-1}, -#line 28 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_ucs2be}, +#line 42 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_utf32be}, + {-1}, +#line 48 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_ucs2swapped}, {-1}, {-1}, {-1}, -#line 39 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_utf16be}, +#line 292 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_gb2312}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 32 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_ucs2le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 303 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 105 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 289 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 278 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_jisx0208}, + {-1}, {-1}, {-1}, +#line 330 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str680, ei_gb18030_2022}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 111 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_iso8859_8}, {-1}, -#line 221 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_mac_turkish}, +#line 350 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str702, ei_big5hkscs2008}, + {-1}, {-1}, +#line 349 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str705, ei_big5hkscs2008}, {-1}, {-1}, {-1}, -#line 279 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 306 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_sjis}, -#line 305 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str698, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_jisx0208}, - {-1}, -#line 267 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_jisx0201}, +#line 311 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_iso2022_jp}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 261 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_tcvn}, +#line 221 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_mac_turkish}, {-1}, {-1}, -#line 42 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_utf32be}, - {-1}, {-1}, {-1}, -#line 182 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str727, ei_cp1253}, +#line 312 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_iso2022_jp}, +#line 329 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_gb18030_2005}, {-1}, {-1}, {-1}, {-1}, -#line 268 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str732, ei_jisx0201}, - {-1}, +#line 357 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str722, ei_johab}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 118 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_iso8859_8}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 28 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str766, ei_ucs2be}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 182 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_cp1253}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 220 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str734, ei_mac_greek}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 270 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str740, ei_jisx0201}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str789, ei_mac_greek}, + {-1}, {-1}, #line 194 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_cp1257}, - {-1}, -#line 281 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str744, ei_jisx0212}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str792, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 351 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str756, ei_big5hkscs2008}, -#line 347 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 346 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str763, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 348 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_big5hkscs2004}, +#line 261 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_tcvn}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 272 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str780, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 273 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_jisx0208}, - {-1}, -#line 309 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str789, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 357 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str822, ei_johab}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, #line 342 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str827, ei_ces_big5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str854, ei_ces_big5}, {-1}, {-1}, #line 341 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_ces_big5}, -#line 280 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str831, ei_jisx0212}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 278 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 351 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str896, ei_big5hkscs2008}, +#line 347 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_big5hkscs2001}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 346 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str903, ei_big5hkscs1999}, + {-1}, {-1}, #line 304 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str861, ei_euc_jp}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_euc_jp}, + {-1}, {-1}, +#line 348 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_big5hkscs2004}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 222 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str875, ei_mac_hebrew} + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str951, ei_mac_hebrew}, + {-1}, +#line 229 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_nextstep} }; const struct alias * diff --git a/lib/generated/aliases_osf1.h b/lib/generated/aliases_osf1.h deleted file mode 100644 index 9e4f6854..00000000 --- a/lib/generated/aliases_osf1.h +++ /dev/null @@ -1,2 +0,0 @@ - S(osf1_0, "DEC-KANJI", ei_dec_kanji ) - S(osf1_1, "DEC-HANYU", ei_dec_hanyu ) diff --git a/lib/generated/aliases_osf1_sysosf1.h b/lib/generated/aliases_osf1_sysosf1.h deleted file mode 100644 index b1f802d2..00000000 --- a/lib/generated/aliases_osf1_sysosf1.h +++ /dev/null @@ -1,4 +0,0 @@ - S(osf1_0, "DEC-KANJI", ei_dec_kanji ) - S(osf1_1, "DECKANJI", ei_dec_kanji ) - S(osf1_2, "DEC-HANYU", ei_dec_hanyu ) - S(osf1_3, "DECHANYU", ei_dec_hanyu ) diff --git a/lib/generated/aliases_sysaix.h b/lib/generated/aliases_sysaix.h index 6d531c57..ccca8c6c 100644 --- a/lib/generated/aliases_sysaix.h +++ b/lib/generated/aliases_sysaix.h @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases_sysaix.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 358 +#define TOTAL_KEYWORDS 362 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 #define MIN_HASH_VALUE 16 -#define MAX_HASH_VALUE 1046 -/* maximum key range = 1031, duplicates = 0 */ +#define MAX_HASH_VALUE 1090 +/* maximum key range = 1075, duplicates = 0 */ class HashPool { @@ -52,19 +52,19 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 5, 133, 1047, 97, 7, - 33, 130, 15, 17, 5, 205, 23, 25, 326, 1047, - 1047, 1047, 1047, 1047, 1047, 165, 130, 11, 17, 135, - 163, 104, 10, 6, 233, 31, 9, 154, 8, 6, - 124, 1047, 5, 5, 28, 218, 9, 204, 241, 5, - 7, 1047, 1047, 1047, 1047, 6, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047 + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 5, 12, 1091, 97, 7, + 33, 130, 15, 17, 5, 205, 23, 25, 226, 1091, + 1091, 1091, 1091, 1091, 1091, 165, 145, 11, 14, 135, + 109, 136, 118, 6, 88, 31, 9, 154, 8, 6, + 129, 1091, 5, 5, 28, 218, 18, 189, 237, 5, + 6, 1091, 1091, 1091, 1091, 6, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091 }; unsigned int hval = len; @@ -109,7 +109,6 @@ struct stringpool_t { char stringpool_str16[sizeof("L6")]; char stringpool_str18[sizeof("L1")]; - char stringpool_str19[sizeof("HZ")]; char stringpool_str21[sizeof("CN")]; char stringpool_str25[sizeof("SJIS")]; char stringpool_str26[sizeof("L4")]; @@ -118,17 +117,17 @@ struct stringpool_t char stringpool_str34[sizeof("L8")]; char stringpool_str36[sizeof("866")]; char stringpool_str44[sizeof("L2")]; - char stringpool_str49[sizeof("VISCII")]; char stringpool_str51[sizeof("ISO-IR-6")]; char stringpool_str54[sizeof("CP866")]; - char stringpool_str57[sizeof("TCVN")]; + char stringpool_str58[sizeof("VISCII")]; char stringpool_str64[sizeof("C99")]; char stringpool_str65[sizeof("ISO-IR-166")]; + char stringpool_str66[sizeof("TCVN")]; char stringpool_str67[sizeof("LATIN6")]; - char stringpool_str68[sizeof("CSVISCII")]; char stringpool_str70[sizeof("CP154")]; char stringpool_str71[sizeof("LATIN1")]; char stringpool_str76[sizeof("CYRILLIC")]; + char stringpool_str77[sizeof("CSVISCII")]; char stringpool_str78[sizeof("ISO646-CN")]; char stringpool_str79[sizeof("ISO-IR-14")]; char stringpool_str81[sizeof("KOI8-R")]; @@ -142,10 +141,12 @@ struct stringpool_t char stringpool_str94[sizeof("CSKOI8R")]; char stringpool_str95[sizeof("ISO-IR-144")]; char stringpool_str96[sizeof("CP819")]; + char stringpool_str102[sizeof("VISCII1.1-1")]; char stringpool_str103[sizeof("LATIN8")]; char stringpool_str104[sizeof("CP1254")]; char stringpool_str105[sizeof("ISO-IR-58")]; char stringpool_str106[sizeof("CP949")]; + char stringpool_str107[sizeof("ISO_646.IRV:1991")]; char stringpool_str108[sizeof("CP1255")]; char stringpool_str110[sizeof("CP862")]; char stringpool_str111[sizeof("ISO-IR-148")]; @@ -157,6 +158,7 @@ struct stringpool_t char stringpool_str123[sizeof("LATIN2")]; char stringpool_str124[sizeof("ISO8859-6")]; char stringpool_str125[sizeof("ISO-IR-199")]; + char stringpool_str126[sizeof("HZ")]; char stringpool_str127[sizeof("KOI8-T")]; char stringpool_str128[sizeof("ISO8859-1")]; char stringpool_str130[sizeof("ISO-8859-6")]; @@ -189,7 +191,6 @@ struct stringpool_t char stringpool_str164[sizeof("ISO8859-9")]; char stringpool_str166[sizeof("ISO-8859-8")]; char stringpool_str167[sizeof("ISO_8859-8")]; - char stringpool_str169[sizeof("GBK")]; char stringpool_str170[sizeof("ISO-8859-9")]; char stringpool_str171[sizeof("ISO_8859-9")]; char stringpool_str172[sizeof("ISO_8859-14:1998")]; @@ -201,26 +202,27 @@ struct stringpool_t char stringpool_str179[sizeof("MAC")]; char stringpool_str180[sizeof("ISO8859-2")]; char stringpool_str181[sizeof("CP936")]; - char stringpool_str183[sizeof("PT154")]; + char stringpool_str183[sizeof("CSISO14JISC6220RO")]; char stringpool_str184[sizeof("EUC-CN")]; char stringpool_str186[sizeof("ISO-8859-2")]; char stringpool_str187[sizeof("ISO_8859-2")]; + char stringpool_str188[sizeof("PT154")]; char stringpool_str189[sizeof("KSC_5601")]; char stringpool_str192[sizeof("EUCKR")]; char stringpool_str197[sizeof("ISO-IR-109")]; char stringpool_str198[sizeof("EUC-KR")]; char stringpool_str199[sizeof("ASCII")]; + char stringpool_str201[sizeof("GBK")]; char stringpool_str204[sizeof("IBM866")]; char stringpool_str205[sizeof("MS-CYRL")]; char stringpool_str206[sizeof("L10")]; char stringpool_str208[sizeof("KZ-1048")]; char stringpool_str212[sizeof("CP50221")]; - char stringpool_str214[sizeof("VISCII1.1-1")]; char stringpool_str216[sizeof("L7")]; char stringpool_str217[sizeof("CSASCII")]; - char stringpool_str219[sizeof("ISO_646.IRV:1991")]; + char stringpool_str219[sizeof("JP")]; char stringpool_str220[sizeof("850")]; - char stringpool_str222[sizeof("CSKZ1048")]; + char stringpool_str221[sizeof("CSKZ1048")]; char stringpool_str225[sizeof("US")]; char stringpool_str226[sizeof("ISO-IR-138")]; char stringpool_str231[sizeof("KS_C_5601-1989")]; @@ -229,7 +231,6 @@ struct stringpool_t char stringpool_str243[sizeof("UHC")]; char stringpool_str244[sizeof("IBM-921")]; char stringpool_str246[sizeof("IBM819")]; - char stringpool_str247[sizeof("MACINTOSH")]; char stringpool_str249[sizeof("MACCYRILLIC")]; char stringpool_str250[sizeof("CP850")]; char stringpool_str251[sizeof("ISO-IR-110")]; @@ -242,15 +243,15 @@ struct stringpool_t char stringpool_str263[sizeof("UCS-4")]; char stringpool_str264[sizeof("ISO_8859-10:1992")]; char stringpool_str265[sizeof("CSISOLATIN6")]; + char stringpool_str266[sizeof("SHIFT-JIS")]; + char stringpool_str267[sizeof("SHIFT_JIS")]; char stringpool_str268[sizeof("CP1250")]; char stringpool_str269[sizeof("CSISOLATIN1")]; char stringpool_str270[sizeof("ISO-2022-KR")]; char stringpool_str271[sizeof("TIS620")]; - char stringpool_str272[sizeof("BIG5")]; char stringpool_str274[sizeof("CP874")]; char stringpool_str276[sizeof("CSISO2022KR")]; char stringpool_str277[sizeof("TIS-620")]; - char stringpool_str278[sizeof("BIG-5")]; char stringpool_str279[sizeof("ISO646-US")]; char stringpool_str280[sizeof("ISO-2022-CN-EXT")]; char stringpool_str281[sizeof("CSUCS4")]; @@ -258,219 +259,221 @@ struct stringpool_t char stringpool_str285[sizeof("CSISOLATIN4")]; char stringpool_str287[sizeof("ELOT_928")]; char stringpool_str289[sizeof("CSISOLATIN5")]; - char stringpool_str291[sizeof("CSBIG5")]; + char stringpool_str293[sizeof("CSISO159JISX02121990")]; char stringpool_str296[sizeof("IBM-1252")]; - char stringpool_str297[sizeof("CN-BIG5")]; char stringpool_str299[sizeof("UCS-2")]; char stringpool_str305[sizeof("ISO-IR-179")]; - char stringpool_str314[sizeof("CN-GB-ISOIR165")]; + char stringpool_str308[sizeof("TIS620.2529-1")]; + char stringpool_str313[sizeof("JIS_C6220-1969-RO")]; char stringpool_str316[sizeof("ISO8859-10")]; char stringpool_str317[sizeof("LATIN3")]; - char stringpool_str320[sizeof("PTCP154")]; + char stringpool_str319[sizeof("BIG5")]; char stringpool_str321[sizeof("CSISOLATIN2")]; char stringpool_str322[sizeof("ISO-8859-10")]; char stringpool_str323[sizeof("ISO_8859-10")]; char stringpool_str324[sizeof("MS936")]; - char stringpool_str327[sizeof("BIG5HKSCS")]; - char stringpool_str328[sizeof("CSISO14JISC6220RO")]; + char stringpool_str325[sizeof("BIG-5")]; + char stringpool_str330[sizeof("PTCP154")]; char stringpool_str331[sizeof("IBM-1131")]; - char stringpool_str333[sizeof("BIG5-HKSCS")]; char stringpool_str334[sizeof("CP1253")]; - char stringpool_str336[sizeof("TCVN5712-1")]; + char stringpool_str337[sizeof("DECKANJI")]; + char stringpool_str338[sizeof("CSBIG5")]; char stringpool_str341[sizeof("ISO-IR-100")]; - char stringpool_str346[sizeof("GB2312")]; - char stringpool_str347[sizeof("CSIBM866")]; - char stringpool_str352[sizeof("X0212")]; - char stringpool_str354[sizeof("TCVN-5712")]; + char stringpool_str342[sizeof("JIS_C6226-1983")]; + char stringpool_str343[sizeof("DEC-KANJI")]; + char stringpool_str344[sizeof("CN-BIG5")]; + char stringpool_str345[sizeof("TCVN5712-1")]; + char stringpool_str348[sizeof("X0212")]; + char stringpool_str355[sizeof("UTF-16")]; char stringpool_str356[sizeof("MS-ANSI")]; char stringpool_str358[sizeof("KOREAN")]; - char stringpool_str359[sizeof("JP")]; - char stringpool_str361[sizeof("CSPTCP154")]; + char stringpool_str361[sizeof("CN-GB-ISOIR165")]; + char stringpool_str362[sizeof("CSIBM866")]; + char stringpool_str363[sizeof("TCVN-5712")]; char stringpool_str364[sizeof("STRK1048-2002")]; + char stringpool_str371[sizeof("CSPTCP154")]; + char stringpool_str373[sizeof("JIS0208")]; char stringpool_str374[sizeof("ISO8859-3")]; char stringpool_str375[sizeof("TIS620-0")]; + char stringpool_str378[sizeof("GB2312")]; char stringpool_str380[sizeof("ISO-8859-3")]; char stringpool_str381[sizeof("ISO_8859-3")]; char stringpool_str382[sizeof("ISO8859-13")]; + char stringpool_str383[sizeof("UTF-8")]; char stringpool_str384[sizeof("ROMAN8")]; - char stringpool_str385[sizeof("CN-GB")]; - char stringpool_str387[sizeof("MACTHAI")]; + char stringpool_str386[sizeof("X0201")]; char stringpool_str388[sizeof("ISO-8859-13")]; char stringpool_str389[sizeof("ISO_8859-13")]; - char stringpool_str390[sizeof("X0201")]; + char stringpool_str390[sizeof("ISO_8859-4:1988")]; + char stringpool_str391[sizeof("CSSHIFTJIS")]; + char stringpool_str392[sizeof("ISO_8859-5:1988")]; char stringpool_str393[sizeof("IBM-932")]; - char stringpool_str394[sizeof("CSISOLATINGREEK")]; + char stringpool_str397[sizeof("ISO646-JP")]; + char stringpool_str398[sizeof("ISO_8859-8:1988")]; char stringpool_str399[sizeof("ISO-10646-UCS-4")]; char stringpool_str400[sizeof("IBM850")]; + char stringpool_str402[sizeof("ISO_8859-9:1989")]; char stringpool_str406[sizeof("IBM-850")]; char stringpool_str407[sizeof("ARMSCII-8")]; - char stringpool_str408[sizeof("HP-ROMAN8")]; - char stringpool_str409[sizeof("UTF-16")]; char stringpool_str411[sizeof("KS_C_5601-1987")]; char stringpool_str417[sizeof("ISO-10646-UCS-2")]; - char stringpool_str420[sizeof("GB_1988-80")]; + char stringpool_str418[sizeof("X0208")]; char stringpool_str421[sizeof("CP1133")]; - char stringpool_str422[sizeof("X0208")]; char stringpool_str423[sizeof("CSEUCKR")]; - char stringpool_str425[sizeof("CSMACINTOSH")]; - char stringpool_str429[sizeof("TIS620.2529-1")]; + char stringpool_str426[sizeof("CSISOLATINGREEK")]; char stringpool_str430[sizeof("US-ASCII")]; + char stringpool_str432[sizeof("UNICODE-1-1")]; char stringpool_str433[sizeof("ISO-IR-203")]; char stringpool_str434[sizeof("CSKSC56011987")]; - char stringpool_str435[sizeof("UNICODE-1-1")]; char stringpool_str436[sizeof("CSISOLATINARABIC")]; - char stringpool_str437[sizeof("UTF-8")]; - char stringpool_str438[sizeof("CSISO159JISX02121990")]; - char stringpool_str441[sizeof("GREEK")]; + char stringpool_str440[sizeof("JAVA")]; + char stringpool_str441[sizeof("CSUNICODE11")]; char stringpool_str442[sizeof("CHINESE")]; - char stringpool_str444[sizeof("CSUNICODE11")]; - char stringpool_str451[sizeof("MS-HEBR")]; + char stringpool_str447[sizeof("CN-GB")]; + char stringpool_str452[sizeof("GB_1988-80")]; char stringpool_str453[sizeof("UCS-4-INTERNAL")]; - char stringpool_str457[sizeof("GREEK8")]; - char stringpool_str458[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str465[sizeof("SHIFT-JIS")]; - char stringpool_str466[sizeof("SHIFT_JIS")]; + char stringpool_str454[sizeof("ISO-2022-JP-MS")]; + char stringpool_str455[sizeof("ISO-2022-JP-1")]; + char stringpool_str463[sizeof("MACINTOSH")]; char stringpool_str467[sizeof("LATIN7")]; char stringpool_str469[sizeof("ISO-IR-57")]; char stringpool_str471[sizeof("UCS-2-INTERNAL")]; - char stringpool_str474[sizeof("CSISOLATINHEBREW")]; + char stringpool_str472[sizeof("MS_KANJI")]; + char stringpool_str473[sizeof("GREEK")]; char stringpool_str475[sizeof("ISO-IR-87")]; char stringpool_str477[sizeof("ISO-IR-157")]; char stringpool_str479[sizeof("MS-TURK")]; - char stringpool_str482[sizeof("CSSHIFTJIS")]; + char stringpool_str481[sizeof("ISO-2022-JP-2")]; + char stringpool_str482[sizeof("BIG5HKSCS")]; char stringpool_str484[sizeof("CP1257")]; - char stringpool_str487[sizeof("JIS_C6226-1983")]; - char stringpool_str488[sizeof("MACTURKISH")]; - char stringpool_str489[sizeof("CSGB2312")]; - char stringpool_str490[sizeof("ISO_8859-4:1988")]; - char stringpool_str492[sizeof("ISO_8859-5:1988")]; + char stringpool_str486[sizeof("CSISO2022JP2")]; + char stringpool_str488[sizeof("BIG5-HKSCS")]; + char stringpool_str489[sizeof("GREEK8")]; + char stringpool_str490[sizeof("WINDOWS-1256")]; + char stringpool_str492[sizeof("WINDOWS-1251")]; char stringpool_str493[sizeof("ISO-IR-127")]; - char stringpool_str494[sizeof("ARABIC")]; - char stringpool_str498[sizeof("ISO_8859-8:1988")]; - char stringpool_str500[sizeof("HZ-GB-2312")]; - char stringpool_str502[sizeof("ISO_8859-9:1989")]; + char stringpool_str495[sizeof("MACTHAI")]; + char stringpool_str497[sizeof("EUCJP")]; + char stringpool_str500[sizeof("WINDOWS-1254")]; + char stringpool_str502[sizeof("WINDOWS-1255")]; + char stringpool_str503[sizeof("EUC-JP")]; + char stringpool_str505[sizeof("ISO_8859-3:1988")]; char stringpool_str506[sizeof("MULELAO-1")]; char stringpool_str507[sizeof("KOI8-U")]; + char stringpool_str508[sizeof("WINDOWS-1258")]; + char stringpool_str509[sizeof("ARABIC")]; + char stringpool_str510[sizeof("TIS620.2533-1")]; char stringpool_str511[sizeof("ECMA-114")]; char stringpool_str513[sizeof("KOI8-RU")]; char stringpool_str515[sizeof("CSISOLATIN3")]; - char stringpool_str518[sizeof("JIS0208")]; + char stringpool_str516[sizeof("HP-ROMAN8")]; + char stringpool_str518[sizeof("WINDOWS-1252")]; char stringpool_str519[sizeof("MACROMAN")]; - char stringpool_str523[sizeof("WINDOWS-1256")]; char stringpool_str524[sizeof("ISO8859-7")]; - char stringpool_str525[sizeof("WINDOWS-1251")]; char stringpool_str527[sizeof("ECMA-118")]; char stringpool_str529[sizeof("UCS-4LE")]; char stringpool_str530[sizeof("ISO-8859-7")]; char stringpool_str531[sizeof("ISO_8859-7")]; - char stringpool_str532[sizeof("ISO646-JP")]; - char stringpool_str533[sizeof("WINDOWS-1254")]; - char stringpool_str535[sizeof("WINDOWS-1255")]; - char stringpool_str539[sizeof("CSHPROMAN8")]; - char stringpool_str541[sizeof("WINDOWS-1258")]; - char stringpool_str543[sizeof("MACICELAND")]; - char stringpool_str545[sizeof("GB_2312-80")]; + char stringpool_str534[sizeof("UTF-32")]; + char stringpool_str536[sizeof("CSGB2312")]; + char stringpool_str537[sizeof("MACICELAND")]; char stringpool_str547[sizeof("UCS-2LE")]; - char stringpool_str548[sizeof("GEORGIAN-PS")]; - char stringpool_str551[sizeof("WINDOWS-1252")]; - char stringpool_str552[sizeof("CSISO57GB1988")]; - char stringpool_str556[sizeof("CSUNICODE")]; + char stringpool_str548[sizeof("JIS_X0212")]; + char stringpool_str553[sizeof("CSUNICODE")]; + char stringpool_str557[sizeof("EUCTW")]; char stringpool_str561[sizeof("CP367")]; - char stringpool_str562[sizeof("GB18030")]; + char stringpool_str562[sizeof("ISO_8859-6:1987")]; + char stringpool_str563[sizeof("EUC-TW")]; + char stringpool_str564[sizeof("ISO_8859-1:1987")]; char stringpool_str565[sizeof("IBM-EUCCN")]; + char stringpool_str567[sizeof("CSISOLATINHEBREW")]; char stringpool_str569[sizeof("MS-EE")]; - char stringpool_str576[sizeof("JAVA")]; - char stringpool_str577[sizeof("CSISO58GB231280")]; + char stringpool_str574[sizeof("MS-HEBR")]; + char stringpool_str575[sizeof("ISO-2022-JP")]; + char stringpool_str577[sizeof("GB_2312-80")]; char stringpool_str578[sizeof("MACCROATIAN")]; char stringpool_str579[sizeof("IBM-EUCKR")]; - char stringpool_str587[sizeof("EUCTW")]; - char stringpool_str588[sizeof("UTF-32")]; - char stringpool_str593[sizeof("EUC-TW")]; - char stringpool_str594[sizeof("ISO-2022-JP-MS")]; - char stringpool_str595[sizeof("ISO-2022-JP-1")]; - char stringpool_str600[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str605[sizeof("ISO_8859-3:1988")]; - char stringpool_str608[sizeof("MS-GREEK")]; - char stringpool_str612[sizeof("UNICODELITTLE")]; - char stringpool_str614[sizeof("MACGREEK")]; - char stringpool_str615[sizeof("WINDOWS-1250")]; - char stringpool_str617[sizeof("MS_KANJI")]; - char stringpool_str621[sizeof("ISO-2022-JP-2")]; - char stringpool_str625[sizeof("WINDOWS-936")]; - char stringpool_str626[sizeof("CSISO2022JP2")]; - char stringpool_str631[sizeof("TIS620.2533-1")]; - char stringpool_str632[sizeof("EUCJP")]; - char stringpool_str637[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str638[sizeof("EUC-JP")]; - char stringpool_str639[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str646[sizeof("CSUNICODE11UTF7")]; - char stringpool_str648[sizeof("WINDOWS-1253")]; - char stringpool_str650[sizeof("UCS-4BE")]; - char stringpool_str662[sizeof("ISO_8859-6:1987")]; - char stringpool_str664[sizeof("ISO_8859-1:1987")]; - char stringpool_str666[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str667[sizeof("MACARABIC")]; - char stringpool_str668[sizeof("UCS-2BE")]; - char stringpool_str673[sizeof("JOHAB")]; - char stringpool_str674[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str682[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str684[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str685[sizeof("UTF-16LE")]; + char stringpool_str581[sizeof("CSISO2022JP")]; + char stringpool_str582[sizeof("WINDOWS-1250")]; + char stringpool_str586[sizeof("JIS_X0201")]; + char stringpool_str590[sizeof("ISO_8859-2:1987")]; + char stringpool_str592[sizeof("WINDOWS-936")]; + char stringpool_str594[sizeof("GB18030")]; + char stringpool_str599[sizeof("CSISO57GB1988")]; + char stringpool_str600[sizeof("TIS620.2533-0")]; + char stringpool_str607[sizeof("ANSI_X3.4-1986")]; + char stringpool_str609[sizeof("UNICODELITTLE")]; + char stringpool_str615[sizeof("WINDOWS-1253")]; + char stringpool_str617[sizeof("GEORGIAN-PS")]; + char stringpool_str618[sizeof("JIS_X0208")]; + char stringpool_str619[sizeof("JISX0201-1976")]; + char stringpool_str624[sizeof("CSISO58GB231280")]; + char stringpool_str625[sizeof("ANSI_X3.4-1968")]; + char stringpool_str627[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str629[sizeof("JIS_X0212-1990")]; + char stringpool_str630[sizeof("CSISO87JISX0208")]; + char stringpool_str631[sizeof("UTF-16LE")]; + char stringpool_str636[sizeof("UNICODE-1-1-UTF-7")]; + char stringpool_str638[sizeof("JIS_X0212.1990-0")]; + char stringpool_str640[sizeof("MS-GREEK")]; + char stringpool_str641[sizeof("CSMACINTOSH")]; + char stringpool_str643[sizeof("CSUNICODE11UTF7")]; + char stringpool_str646[sizeof("MACGREEK")]; + char stringpool_str652[sizeof("CSHPROMAN8")]; + char stringpool_str655[sizeof("HZ-GB-2312")]; + char stringpool_str664[sizeof("GEORGIAN-ACADEMY")]; + char stringpool_str665[sizeof("UCS-4BE")]; + char stringpool_str666[sizeof("JOHAB")]; + char stringpool_str682[sizeof("MACARABIC")]; + char stringpool_str683[sizeof("UCS-2BE")]; + char stringpool_str685[sizeof("WINDOWS-874")]; char stringpool_str686[sizeof("ASMO-708")]; - char stringpool_str689[sizeof("BIGFIVE")]; - char stringpool_str690[sizeof("ISO_8859-2:1987")]; - char stringpool_str694[sizeof("HEBREW")]; - char stringpool_str695[sizeof("BIG-FIVE")]; - char stringpool_str697[sizeof("JIS_X0212")]; - char stringpool_str701[sizeof("NEXTSTEP")]; - char stringpool_str710[sizeof("ISO-2022-JP")]; + char stringpool_str687[sizeof("ISO_8859-7:2003")]; + char stringpool_str690[sizeof("WINDOWS-1257")]; + char stringpool_str691[sizeof("BIGFIVE")]; + char stringpool_str697[sizeof("BIG-FIVE")]; + char stringpool_str699[sizeof("TCVN5712-1:1993")]; + char stringpool_str704[sizeof("MACTURKISH")]; + char stringpool_str707[sizeof("NEXTSTEP")]; + char stringpool_str709[sizeof("JIS_X0208-1990")]; char stringpool_str711[sizeof("IBM367")]; - char stringpool_str714[sizeof("IBM-CP1133")]; - char stringpool_str716[sizeof("CSISO2022JP")]; - char stringpool_str718[sizeof("WINDOWS-874")]; - char stringpool_str720[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str721[sizeof("TIS620.2533-0")]; - char stringpool_str723[sizeof("WINDOWS-1257")]; - char stringpool_str732[sizeof("ANSI_X3.4-1986")]; - char stringpool_str735[sizeof("JIS_X0201")]; - char stringpool_str747[sizeof("UNICODEBIG")]; - char stringpool_str750[sizeof("ANSI_X3.4-1968")]; - char stringpool_str761[sizeof("MS-ARAB")]; - char stringpool_str767[sizeof("JIS_X0208")]; - char stringpool_str768[sizeof("JISX0201-1976")]; - char stringpool_str778[sizeof("JIS_X0212-1990")]; - char stringpool_str779[sizeof("CSISO87JISX0208")]; - char stringpool_str787[sizeof("ISO_8859-7:2003")]; - char stringpool_str790[sizeof("TCVN5712-1:1993")]; - char stringpool_str801[sizeof("UTF-7")]; - char stringpool_str806[sizeof("UTF-16BE")]; - char stringpool_str807[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str719[sizeof("IBM-CP1133")]; + char stringpool_str721[sizeof("BIG5-HKSCS:2001")]; + char stringpool_str725[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str729[sizeof("BIG5-HKSCS:2004")]; + char stringpool_str737[sizeof("BIG5-HKSCS:2008")]; + char stringpool_str739[sizeof("BIG5-HKSCS:1999")]; + char stringpool_str742[sizeof("JIS_X0208-1983")]; + char stringpool_str747[sizeof("UTF-7")]; + char stringpool_str762[sizeof("ISO_8859-7:1987")]; + char stringpool_str765[sizeof("DECHANYU")]; + char stringpool_str767[sizeof("UTF-16BE")]; + char stringpool_str771[sizeof("DEC-HANYU")]; + char stringpool_str782[sizeof("UTF-32LE")]; + char stringpool_str787[sizeof("HEBREW")]; + char stringpool_str788[sizeof("CSEUCTW")]; + char stringpool_str791[sizeof("MS-ARAB")]; char stringpool_str812[sizeof("MACCENTRALEUROPE")]; - char stringpool_str818[sizeof("CSEUCTW")]; - char stringpool_str836[sizeof("UTF-32LE")]; + char stringpool_str823[sizeof("UNICODEBIG")]; char stringpool_str849[sizeof("MACROMANIA")]; - char stringpool_str858[sizeof("JIS_X0208-1990")]; - char stringpool_str862[sizeof("ISO_8859-7:1987")]; char stringpool_str873[sizeof("WINBALTRIM")]; char stringpool_str878[sizeof("MACUKRAINE")]; - char stringpool_str887[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str891[sizeof("JIS_X0208-1983")]; - char stringpool_str900[sizeof("UCS-4-SWAPPED")]; - char stringpool_str908[sizeof("JIS_X0212.1990-0")]; - char stringpool_str918[sizeof("UCS-2-SWAPPED")]; - char stringpool_str957[sizeof("UTF-32BE")]; - char stringpool_str974[sizeof("IBM-EUCTW")]; - char stringpool_str992[sizeof("GB18030:2022")]; - char stringpool_str997[sizeof("MACHEBREW")]; - char stringpool_str1019[sizeof("IBM-EUCJP")]; - char stringpool_str1040[sizeof("GB18030:2005")]; - char stringpool_str1046[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str881[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; + char stringpool_str884[sizeof("IBM-EUCJP")]; + char stringpool_str892[sizeof("UCS-4-SWAPPED")]; + char stringpool_str910[sizeof("UCS-2-SWAPPED")]; + char stringpool_str918[sizeof("UTF-32BE")]; + char stringpool_str924[sizeof("GB18030:2022")]; + char stringpool_str944[sizeof("IBM-EUCTW")]; + char stringpool_str951[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str972[sizeof("GB18030:2005")]; + char stringpool_str994[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str1090[sizeof("MACHEBREW")]; }; static const struct stringpool_t stringpool_contents = { "L6", "L1", - "HZ", "CN", "SJIS", "L4", @@ -479,17 +482,17 @@ static const struct stringpool_t stringpool_contents = "L8", "866", "L2", - "VISCII", "ISO-IR-6", "CP866", - "TCVN", + "VISCII", "C99", "ISO-IR-166", + "TCVN", "LATIN6", - "CSVISCII", "CP154", "LATIN1", "CYRILLIC", + "CSVISCII", "ISO646-CN", "ISO-IR-14", "KOI8-R", @@ -503,10 +506,12 @@ static const struct stringpool_t stringpool_contents = "CSKOI8R", "ISO-IR-144", "CP819", + "VISCII1.1-1", "LATIN8", "CP1254", "ISO-IR-58", "CP949", + "ISO_646.IRV:1991", "CP1255", "CP862", "ISO-IR-148", @@ -518,6 +523,7 @@ static const struct stringpool_t stringpool_contents = "LATIN2", "ISO8859-6", "ISO-IR-199", + "HZ", "KOI8-T", "ISO8859-1", "ISO-8859-6", @@ -550,7 +556,6 @@ static const struct stringpool_t stringpool_contents = "ISO8859-9", "ISO-8859-8", "ISO_8859-8", - "GBK", "ISO-8859-9", "ISO_8859-9", "ISO_8859-14:1998", @@ -562,24 +567,25 @@ static const struct stringpool_t stringpool_contents = "MAC", "ISO8859-2", "CP936", - "PT154", + "CSISO14JISC6220RO", "EUC-CN", "ISO-8859-2", "ISO_8859-2", + "PT154", "KSC_5601", "EUCKR", "ISO-IR-109", "EUC-KR", "ASCII", + "GBK", "IBM866", "MS-CYRL", "L10", "KZ-1048", "CP50221", - "VISCII1.1-1", "L7", "CSASCII", - "ISO_646.IRV:1991", + "JP", "850", "CSKZ1048", "US", @@ -590,7 +596,6 @@ static const struct stringpool_t stringpool_contents = "UHC", "IBM-921", "IBM819", - "MACINTOSH", "MACCYRILLIC", "CP850", "ISO-IR-110", @@ -603,15 +608,15 @@ static const struct stringpool_t stringpool_contents = "UCS-4", "ISO_8859-10:1992", "CSISOLATIN6", + "SHIFT-JIS", + "SHIFT_JIS", "CP1250", "CSISOLATIN1", "ISO-2022-KR", "TIS620", - "BIG5", "CP874", "CSISO2022KR", "TIS-620", - "BIG-5", "ISO646-US", "ISO-2022-CN-EXT", "CSUCS4", @@ -619,213 +624,216 @@ static const struct stringpool_t stringpool_contents = "CSISOLATIN4", "ELOT_928", "CSISOLATIN5", - "CSBIG5", + "CSISO159JISX02121990", "IBM-1252", - "CN-BIG5", "UCS-2", "ISO-IR-179", - "CN-GB-ISOIR165", + "TIS620.2529-1", + "JIS_C6220-1969-RO", "ISO8859-10", "LATIN3", - "PTCP154", + "BIG5", "CSISOLATIN2", "ISO-8859-10", "ISO_8859-10", "MS936", - "BIG5HKSCS", - "CSISO14JISC6220RO", + "BIG-5", + "PTCP154", "IBM-1131", - "BIG5-HKSCS", "CP1253", - "TCVN5712-1", + "DECKANJI", + "CSBIG5", "ISO-IR-100", - "GB2312", - "CSIBM866", + "JIS_C6226-1983", + "DEC-KANJI", + "CN-BIG5", + "TCVN5712-1", "X0212", - "TCVN-5712", + "UTF-16", "MS-ANSI", "KOREAN", - "JP", - "CSPTCP154", + "CN-GB-ISOIR165", + "CSIBM866", + "TCVN-5712", "STRK1048-2002", + "CSPTCP154", + "JIS0208", "ISO8859-3", "TIS620-0", + "GB2312", "ISO-8859-3", "ISO_8859-3", "ISO8859-13", + "UTF-8", "ROMAN8", - "CN-GB", - "MACTHAI", + "X0201", "ISO-8859-13", "ISO_8859-13", - "X0201", + "ISO_8859-4:1988", + "CSSHIFTJIS", + "ISO_8859-5:1988", "IBM-932", - "CSISOLATINGREEK", + "ISO646-JP", + "ISO_8859-8:1988", "ISO-10646-UCS-4", "IBM850", + "ISO_8859-9:1989", "IBM-850", "ARMSCII-8", - "HP-ROMAN8", - "UTF-16", "KS_C_5601-1987", "ISO-10646-UCS-2", - "GB_1988-80", - "CP1133", "X0208", + "CP1133", "CSEUCKR", - "CSMACINTOSH", - "TIS620.2529-1", + "CSISOLATINGREEK", "US-ASCII", + "UNICODE-1-1", "ISO-IR-203", "CSKSC56011987", - "UNICODE-1-1", "CSISOLATINARABIC", - "UTF-8", - "CSISO159JISX02121990", - "GREEK", - "CHINESE", + "JAVA", "CSUNICODE11", - "MS-HEBR", + "CHINESE", + "CN-GB", + "GB_1988-80", "UCS-4-INTERNAL", - "GREEK8", - "JIS_C6220-1969-RO", - "SHIFT-JIS", - "SHIFT_JIS", + "ISO-2022-JP-MS", + "ISO-2022-JP-1", + "MACINTOSH", "LATIN7", "ISO-IR-57", "UCS-2-INTERNAL", - "CSISOLATINHEBREW", + "MS_KANJI", + "GREEK", "ISO-IR-87", "ISO-IR-157", "MS-TURK", - "CSSHIFTJIS", + "ISO-2022-JP-2", + "BIG5HKSCS", "CP1257", - "JIS_C6226-1983", - "MACTURKISH", - "CSGB2312", - "ISO_8859-4:1988", - "ISO_8859-5:1988", + "CSISO2022JP2", + "BIG5-HKSCS", + "GREEK8", + "WINDOWS-1256", + "WINDOWS-1251", "ISO-IR-127", - "ARABIC", - "ISO_8859-8:1988", - "HZ-GB-2312", - "ISO_8859-9:1989", + "MACTHAI", + "EUCJP", + "WINDOWS-1254", + "WINDOWS-1255", + "EUC-JP", + "ISO_8859-3:1988", "MULELAO-1", "KOI8-U", + "WINDOWS-1258", + "ARABIC", + "TIS620.2533-1", "ECMA-114", "KOI8-RU", "CSISOLATIN3", - "JIS0208", + "HP-ROMAN8", + "WINDOWS-1252", "MACROMAN", - "WINDOWS-1256", "ISO8859-7", - "WINDOWS-1251", "ECMA-118", "UCS-4LE", "ISO-8859-7", "ISO_8859-7", - "ISO646-JP", - "WINDOWS-1254", - "WINDOWS-1255", - "CSHPROMAN8", - "WINDOWS-1258", + "UTF-32", + "CSGB2312", "MACICELAND", - "GB_2312-80", "UCS-2LE", - "GEORGIAN-PS", - "WINDOWS-1252", - "CSISO57GB1988", + "JIS_X0212", "CSUNICODE", + "EUCTW", "CP367", - "GB18030", + "ISO_8859-6:1987", + "EUC-TW", + "ISO_8859-1:1987", "IBM-EUCCN", + "CSISOLATINHEBREW", "MS-EE", - "JAVA", - "CSISO58GB231280", + "MS-HEBR", + "ISO-2022-JP", + "GB_2312-80", "MACCROATIAN", "IBM-EUCKR", - "EUCTW", - "UTF-32", - "EUC-TW", - "ISO-2022-JP-MS", - "ISO-2022-JP-1", - "GEORGIAN-ACADEMY", - "ISO_8859-3:1988", - "MS-GREEK", - "UNICODELITTLE", - "MACGREEK", + "CSISO2022JP", "WINDOWS-1250", - "MS_KANJI", - "ISO-2022-JP-2", + "JIS_X0201", + "ISO_8859-2:1987", "WINDOWS-936", - "CSISO2022JP2", - "TIS620.2533-1", - "EUCJP", + "GB18030", + "CSISO57GB1988", + "TIS620.2533-0", + "ANSI_X3.4-1986", + "UNICODELITTLE", + "WINDOWS-1253", + "GEORGIAN-PS", + "JIS_X0208", + "JISX0201-1976", + "CSISO58GB231280", + "ANSI_X3.4-1968", "CSPC862LATINHEBREW", - "EUC-JP", + "JIS_X0212-1990", + "CSISO87JISX0208", + "UTF-16LE", "UNICODE-1-1-UTF-7", + "JIS_X0212.1990-0", + "MS-GREEK", + "CSMACINTOSH", "CSUNICODE11UTF7", - "WINDOWS-1253", + "MACGREEK", + "CSHPROMAN8", + "HZ-GB-2312", + "GEORGIAN-ACADEMY", "UCS-4BE", - "ISO_8859-6:1987", - "ISO_8859-1:1987", - "BIG5-HKSCS:2001", + "JOHAB", "MACARABIC", "UCS-2BE", - "JOHAB", - "BIG5-HKSCS:2004", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:1999", - "UTF-16LE", + "WINDOWS-874", "ASMO-708", + "ISO_8859-7:2003", + "WINDOWS-1257", "BIGFIVE", - "ISO_8859-2:1987", - "HEBREW", "BIG-FIVE", - "JIS_X0212", + "TCVN5712-1:1993", + "MACTURKISH", "NEXTSTEP", - "ISO-2022-JP", + "JIS_X0208-1990", "IBM367", "IBM-CP1133", - "CSISO2022JP", - "WINDOWS-874", + "BIG5-HKSCS:2001", "CSPC850MULTILINGUAL", - "TIS620.2533-0", - "WINDOWS-1257", - "ANSI_X3.4-1986", - "JIS_X0201", - "UNICODEBIG", - "ANSI_X3.4-1968", - "MS-ARAB", - "JIS_X0208", - "JISX0201-1976", - "JIS_X0212-1990", - "CSISO87JISX0208", - "ISO_8859-7:2003", - "TCVN5712-1:1993", + "BIG5-HKSCS:2004", + "BIG5-HKSCS:2008", + "BIG5-HKSCS:1999", + "JIS_X0208-1983", "UTF-7", + "ISO_8859-7:1987", + "DECHANYU", "UTF-16BE", - "CSHALFWIDTHKATAKANA", - "MACCENTRALEUROPE", - "CSEUCTW", + "DEC-HANYU", "UTF-32LE", + "HEBREW", + "CSEUCTW", + "MS-ARAB", + "MACCENTRALEUROPE", + "UNICODEBIG", "MACROMANIA", - "JIS_X0208-1990", - "ISO_8859-7:1987", "WINBALTRIM", "MACUKRAINE", "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "JIS_X0208-1983", + "IBM-EUCJP", "UCS-4-SWAPPED", - "JIS_X0212.1990-0", "UCS-2-SWAPPED", "UTF-32BE", - "IBM-EUCTW", "GB18030:2022", - "MACHEBREW", - "IBM-EUCJP", + "IBM-EUCTW", + "CSHALFWIDTHKATAKANA", "GB18030:2005", - "CSEUCPKDFMTJAPANESE" + "CSEUCPKDFMTJAPANESE", + "MACHEBREW" }; #define stringpool ((const char *) &stringpool_contents) @@ -838,9 +846,7 @@ static const struct alias aliases[] = {-1}, #line 60 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str18, ei_iso8859_1}, -#line 341 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str19, ei_hz}, - {-1}, + {-1}, {-1}, #line 292 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_iso646_cn}, {-1}, {-1}, {-1}, @@ -863,29 +869,25 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 68 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, -#line 259 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_viscii}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 16 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_ascii}, {-1}, {-1}, #line 208 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_cp866}, - {-1}, {-1}, -#line 262 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 259 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_viscii}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 51 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_c99}, #line 256 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_tis620}, - {-1}, +#line 262 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_tcvn}, #line 133 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_iso8859_10}, -#line 261 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_viscii}, - {-1}, + {-1}, {-1}, #line 240 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_pt154}, #line 59 "lib/generated/aliases_sysaix.gperf" @@ -893,7 +895,8 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, #line 91 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_iso8859_5}, - {-1}, +#line 261 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_viscii}, #line 290 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_iso646_cn}, #line 268 "lib/generated/aliases_sysaix.gperf" @@ -924,7 +927,9 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_iso8859_5}, #line 57 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 260 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_viscii}, #line 151 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_iso8859_14}, #line 185 "lib/generated/aliases_sysaix.gperf" @@ -933,7 +938,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_gb2312}, #line 364 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_cp949}, - {-1}, +#line 15 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, ei_ascii}, #line 188 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_cp1255}, {-1}, @@ -962,7 +968,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_iso8859_6}, #line 150 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso8859_14}, - {-1}, +#line 341 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_hz}, #line 237 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, ei_koi8_t}, #line 62 "lib/generated/aliases_sysaix.gperf" @@ -1036,9 +1043,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_iso8859_8}, #line 115 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_8}, - {-1}, -#line 331 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_ces_gbk}, + {-1}, {-1}, #line 121 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_iso8859_9}, #line 122 "lib/generated/aliases_sysaix.gperf" @@ -1063,8 +1068,8 @@ static const struct alias aliases[] = #line 332 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_cp936}, {-1}, -#line 238 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_pt154}, +#line 270 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_iso646_jp}, #line 324 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_euc_cn}, {-1}, @@ -1072,7 +1077,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str186, ei_iso8859_2}, #line 64 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str187, ei_iso8859_2}, - {-1}, +#line 238 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_pt154}, #line 299 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_ksc5601}, {-1}, {-1}, @@ -1085,7 +1091,10 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_euc_kr}, #line 13 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 331 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ces_gbk}, + {-1}, {-1}, #line 209 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_cp866}, #line 177 "lib/generated/aliases_sysaix.gperf" @@ -1098,23 +1107,19 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, #line 323 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_iso2022_jpms}, - {-1}, -#line 260 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_viscii}, - {-1}, + {-1}, {-1}, {-1}, #line 144 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_iso8859_13}, #line 22 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_ascii}, {-1}, -#line 15 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_ascii}, +#line 269 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_iso646_jp}, #line 201 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_cp850}, - {-1}, #line 246 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str222, ei_rk1048}, - {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_rk1048}, + {-1}, {-1}, {-1}, #line 21 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_ascii}, #line 117 "lib/generated/aliases_sysaix.gperf" @@ -1135,9 +1140,7 @@ static const struct alias aliases[] = {-1}, #line 58 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_iso8859_1}, -#line 215 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_mac_roman}, - {-1}, + {-1}, {-1}, #line 222 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_mac_cyrillic}, #line 199 "lib/generated/aliases_sysaix.gperf" @@ -1166,7 +1169,10 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_iso8859_10}, #line 135 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_10}, - {-1}, {-1}, +#line 311 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_sjis}, +#line 310 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_sjis}, #line 172 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_cp1250}, #line 61 "lib/generated/aliases_sysaix.gperf" @@ -1175,9 +1181,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_iso2022_kr}, #line 251 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_tis620}, -#line 347 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_ces_big5}, - {-1}, + {-1}, {-1}, #line 257 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_cp874}, {-1}, @@ -1185,8 +1189,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_iso2022_kr}, #line 250 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_tis620}, -#line 348 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_ces_big5}, + {-1}, #line 14 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ascii}, #line 340 "lib/generated/aliases_sysaix.gperf" @@ -1204,31 +1207,33 @@ static const struct alias aliases[] = {-1}, #line 127 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_iso8859_9}, - {-1}, -#line 352 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str291, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 288 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_jisx0212}, + {-1}, {-1}, #line 181 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_cp1252}, -#line 351 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str297, ei_ces_big5}, - {-1}, + {-1}, {-1}, #line 24 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_ucs2}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 142 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_iso8859_13}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 298 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_isoir165}, - {-1}, + {-1}, {-1}, +#line 253 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, +#line 266 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_iso646_jp}, + {-1}, {-1}, #line 136 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_iso8859_10}, #line 75 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_iso8859_3}, - {-1}, {-1}, -#line 239 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_pt154}, + {-1}, +#line 347 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ces_big5}, + {-1}, #line 69 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_iso8859_2}, #line 129 "lib/generated/aliases_sysaix.gperf" @@ -1237,155 +1242,162 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_iso8859_10}, #line 333 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp936}, - {-1}, {-1}, -#line 358 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_big5hkscs2008}, -#line 270 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_iso646_jp}, - {-1}, {-1}, +#line 348 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, +#line 239 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str330, ei_pt154}, #line 213 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_cp1131}, - {-1}, -#line 357 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_big5hkscs2008}, + {-1}, {-1}, #line 182 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_cp1253}, - {-1}, -#line 264 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 371 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_dec_kanji}, +#line 352 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_ces_big5}, + {-1}, {-1}, #line 56 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, -#line 326 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_euc_cn}, -#line 211 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_cp866}, - {-1}, {-1}, {-1}, {-1}, +#line 281 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_jisx0208}, +#line 370 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_dec_kanji}, +#line 351 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_ces_big5}, +#line 264 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_tcvn}, + {-1}, {-1}, #line 286 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_jisx0212}, - {-1}, -#line 263 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_tcvn}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 38 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_utf16}, #line 180 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_cp1252}, {-1}, #line 304 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_ksc5601}, -#line 269 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_iso646_jp}, - {-1}, -#line 242 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_pt154}, {-1}, {-1}, +#line 298 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_isoir165}, +#line 211 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_cp866}, +#line 263 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_tcvn}, #line 244 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_rk1048}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 242 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str371, ei_pt154}, + {-1}, +#line 278 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_jisx0208}, #line 78 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_iso8859_3}, #line 252 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 326 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_euc_cn}, + {-1}, #line 71 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str380, ei_iso8859_3}, #line 72 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_iso8859_3}, #line 145 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str382, ei_iso8859_13}, - {-1}, +#line 23 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_utf8}, #line 230 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_hp_roman8}, -#line 327 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str385, ei_euc_cn}, {-1}, -#line 228 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_mac_thai}, +#line 273 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_jisx0201}, + {-1}, #line 140 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_iso8859_13}, #line 141 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_iso8859_13}, -#line 273 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_jisx0201}, - {-1}, {-1}, +#line 81 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_iso8859_4}, +#line 314 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_sjis}, +#line 89 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_iso8859_5}, #line 316 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_cp932}, -#line 112 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 267 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_iso646_jp}, +#line 116 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_iso8859_8}, #line 34 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_ucs4}, #line 200 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str400, ei_cp850}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 123 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_iso8859_9}, + {-1}, {-1}, {-1}, #line 203 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_cp850}, #line 234 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_armscii_8}, -#line 229 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str408, ei_hp_roman8}, -#line 38 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_utf16}, - {-1}, + {-1}, {-1}, {-1}, #line 300 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_ksc5601}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 25 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_ucs2}, +#line 279 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_jisx0208}, {-1}, {-1}, -#line 289 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_iso646_cn}, #line 248 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_cp1133}, -#line 279 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_jisx0208}, + {-1}, #line 362 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_euc_kr}, - {-1}, -#line 217 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_mac_roman}, + {-1}, {-1}, +#line 112 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 253 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_tis620}, #line 12 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_ascii}, - {-1}, {-1}, + {-1}, +#line 29 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_ucs2be}, #line 158 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_iso8859_15}, #line 303 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_ksc5601}, -#line 29 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ucs2be}, + {-1}, #line 101 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str436, ei_iso8859_6}, -#line 23 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_utf8}, -#line 288 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_jisx0212}, - {-1}, {-1}, -#line 111 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 52 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_java}, +#line 30 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_ucs2be}, #line 329 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_euc_cn}, - {-1}, -#line 30 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 190 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_cp1255}, - {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 327 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, +#line 289 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_iso646_cn}, #line 49 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_ucs4internal}, +#line 322 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str454, ei_iso2022_jpms}, +#line 319 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_iso2022_jp1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 215 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_mac_roman}, {-1}, {-1}, {-1}, -#line 110 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_iso8859_7}, -#line 266 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_iso646_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 311 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str465, ei_sjis}, -#line 310 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_sjis}, #line 143 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_iso8859_13}, {-1}, @@ -1394,9 +1406,11 @@ static const struct alias aliases[] = {-1}, #line 47 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_ucs2internal}, - {-1}, {-1}, -#line 119 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str474, ei_iso8859_8}, +#line 313 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_sjis}, +#line 111 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_iso8859_7}, + {-1}, #line 280 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_jisx0208}, {-1}, @@ -1405,43 +1419,56 @@ static const struct alias aliases[] = {-1}, #line 187 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_cp1254}, - {-1}, {-1}, -#line 314 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_sjis}, + {-1}, +#line 320 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_iso2022_jp2}, +#line 358 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_big5hkscs2008}, {-1}, #line 194 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_cp1257}, - {-1}, {-1}, -#line 281 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_jisx0208}, -#line 225 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_mac_turkish}, -#line 328 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_euc_cn}, -#line 81 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_iso8859_4}, {-1}, -#line 89 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_iso8859_5}, +#line 321 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_iso2022_jp2}, + {-1}, +#line 357 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_big5hkscs2008}, +#line 110 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_iso8859_7}, +#line 192 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_cp1256}, + {-1}, +#line 176 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_cp1251}, #line 97 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_iso8859_6}, -#line 100 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_iso8859_6}, - {-1}, {-1}, {-1}, -#line 116 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_iso8859_8}, {-1}, -#line 342 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_hz}, +#line 228 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_mac_thai}, {-1}, -#line 123 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_iso8859_9}, - {-1}, {-1}, {-1}, +#line 306 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_euc_jp}, + {-1}, {-1}, +#line 186 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_cp1254}, + {-1}, +#line 189 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_cp1255}, +#line 305 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_euc_jp}, + {-1}, +#line 73 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_iso8859_3}, #line 247 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_mulelao}, #line 170 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_koi8_u}, - {-1}, {-1}, {-1}, +#line 198 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_cp1258}, +#line 100 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_iso8859_6}, +#line 255 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_tis620}, #line 98 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_iso8859_6}, {-1}, @@ -1450,19 +1477,17 @@ static const struct alias aliases[] = {-1}, #line 77 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_iso8859_3}, - {-1}, {-1}, -#line 278 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_jisx0208}, +#line 229 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str516, ei_hp_roman8}, + {-1}, +#line 179 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_cp1252}, #line 214 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_mac_roman}, - {-1}, {-1}, {-1}, -#line 192 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_cp1256}, + {-1}, {-1}, {-1}, {-1}, #line 113 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str524, ei_iso8859_7}, -#line 176 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_cp1251}, - {-1}, + {-1}, {-1}, #line 108 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_iso8859_7}, {-1}, @@ -1472,301 +1497,294 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_iso8859_7}, #line 104 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_iso8859_7}, -#line 267 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_iso646_jp}, -#line 186 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_cp1254}, - {-1}, -#line 189 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_cp1255}, - {-1}, {-1}, {-1}, -#line 232 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str539, ei_hp_roman8}, - {-1}, -#line 198 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_cp1258}, + {-1}, {-1}, +#line 41 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_utf32}, {-1}, +#line 328 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_euc_cn}, #line 219 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str543, ei_mac_iceland}, - {-1}, -#line 294 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_gb2312}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_mac_iceland}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 31 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_ucs2le}, -#line 236 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_georgian_ps}, - {-1}, {-1}, -#line 179 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_cp1252}, -#line 293 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_iso646_cn}, - {-1}, {-1}, {-1}, -#line 26 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_ucs2}, +#line 283 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_jisx0212}, {-1}, {-1}, {-1}, {-1}, +#line 26 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_ucs2}, + {-1}, {-1}, {-1}, +#line 344 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_euc_tw}, + {-1}, {-1}, {-1}, #line 19 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_ascii}, -#line 335 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_gb18030_2005}, - {-1}, {-1}, +#line 96 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_iso8859_6}, +#line 343 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_euc_tw}, +#line 55 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_iso8859_1}, #line 330 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_euc_cn}, - {-1}, {-1}, {-1}, + {-1}, +#line 119 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_iso8859_8}, + {-1}, #line 174 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_cp1250}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_java}, -#line 296 "lib/generated/aliases_sysaix.gperf" + {-1}, {-1}, {-1}, {-1}, +#line 190 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str574, ei_cp1255}, +#line 317 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_iso2022_jp}, + {-1}, +#line 294 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_gb2312}, #line 220 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str578, ei_mac_croatian}, #line 363 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str579, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 344 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str587, ei_euc_tw}, -#line 41 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_utf32}, - {-1}, {-1}, {-1}, {-1}, -#line 343 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_euc_tw}, -#line 322 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_iso2022_jpms}, -#line 319 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_iso2022_jp1}, - {-1}, {-1}, {-1}, {-1}, -#line 235 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_georgian_academy}, - {-1}, {-1}, {-1}, {-1}, -#line 73 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_iso8859_3}, - {-1}, {-1}, -#line 184 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_cp1253}, - {-1}, {-1}, {-1}, -#line 32 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_ucs2le}, {-1}, -#line 224 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_mac_greek}, +#line 318 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str581, ei_iso2022_jp}, #line 173 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_cp1250}, - {-1}, -#line 313 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_sjis}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_cp1250}, {-1}, {-1}, {-1}, -#line 320 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_iso2022_jp2}, +#line 271 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str586, ei_jisx0201}, {-1}, {-1}, {-1}, +#line 65 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_iso8859_2}, + {-1}, #line 334 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_cp936}, -#line 321 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_iso2022_jp2}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_cp936}, + {-1}, +#line 335 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_gb18030_2005}, {-1}, {-1}, {-1}, {-1}, -#line 255 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_tis620}, -#line 306 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_euc_jp}, +#line 293 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_iso646_cn}, +#line 254 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 18 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_ascii}, + {-1}, +#line 32 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str609, ei_ucs2le}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 183 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_cp1253}, + {-1}, +#line 236 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_georgian_ps}, +#line 275 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_jisx0208}, +#line 272 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str619, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, +#line 296 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_gb2312}, +#line 17 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_ascii}, + {-1}, #line 207 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp862}, -#line 305 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_euc_jp}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_cp862}, + {-1}, +#line 285 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_jisx0212}, +#line 282 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_jisx0208}, +#line 40 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_utf16le}, + {-1}, {-1}, {-1}, {-1}, #line 45 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 46 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_utf7}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_utf7}, {-1}, -#line 183 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str648, ei_cp1253}, +#line 284 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_jisx0212}, + {-1}, +#line 184 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_cp1253}, +#line 217 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_mac_roman}, {-1}, +#line 46 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_utf7}, + {-1}, {-1}, +#line 224 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_mac_greek}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 232 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str652, ei_hp_roman8}, + {-1}, {-1}, +#line 342 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_hz}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 235 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_georgian_academy}, #line 36 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_ucs4be}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str665, ei_ucs4be}, +#line 366 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_johab}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 96 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_iso8859_6}, - {-1}, -#line 55 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_iso8859_1}, - {-1}, -#line 355 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_big5hkscs2001}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 227 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_mac_arabic}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_mac_arabic}, #line 27 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str668, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, -#line 366 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_johab}, -#line 356 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str674, ei_big5hkscs2004}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 359 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_big5hkscs2008}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_ucs2be}, {-1}, -#line 354 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str684, ei_big5hkscs1999}, -#line 40 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_utf16le}, +#line 258 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_cp874}, #line 99 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_iso8859_6}, +#line 106 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_iso8859_7}, {-1}, {-1}, +#line 195 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str690, ei_cp1257}, #line 350 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_ces_big5}, -#line 65 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str690, ei_iso8859_2}, - {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str694, ei_iso8859_8}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 349 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str695, ei_ces_big5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_ces_big5}, {-1}, -#line 283 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_jisx0212}, - {-1}, {-1}, {-1}, +#line 265 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, +#line 225 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_mac_turkish}, + {-1}, {-1}, #line 233 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_nextstep}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 317 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str710, ei_iso2022_jp}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str707, ei_nextstep}, + {-1}, +#line 277 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_jisx0208}, + {-1}, #line 20 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_ascii}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 249 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str714, ei_cp1133}, - {-1}, -#line 318 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_iso2022_jp}, - {-1}, -#line 258 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str718, ei_cp874}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str719, ei_cp1133}, {-1}, +#line 355 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_big5hkscs2001}, + {-1}, {-1}, {-1}, #line 202 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_cp850}, -#line 254 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_tis620}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str725, ei_cp850}, + {-1}, {-1}, {-1}, +#line 356 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str729, ei_big5hkscs2004}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 359 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str737, ei_big5hkscs2008}, {-1}, -#line 195 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 18 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str732, ei_ascii}, +#line 354 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_big5hkscs1999}, {-1}, {-1}, -#line 271 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str735, ei_jisx0201}, +#line 276 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, +#line 44 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_utf7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 105 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str762, ei_iso8859_7}, {-1}, {-1}, -#line 28 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_ucs2be}, - {-1}, {-1}, -#line 17 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_ascii}, +#line 373 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str765, ei_dec_hanyu}, + {-1}, +#line 39 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_utf16be}, + {-1}, {-1}, {-1}, +#line 372 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str771, ei_dec_hanyu}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 43 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_utf32le}, + {-1}, {-1}, {-1}, {-1}, +#line 118 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_iso8859_8}, +#line 345 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str788, ei_euc_tw}, + {-1}, {-1}, #line 193 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str761, ei_cp1256}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 275 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_jisx0208}, -#line 272 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_jisx0201}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str791, ei_cp1256}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 285 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str778, ei_jisx0212}, -#line 282 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str779, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 106 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_iso8859_7}, - {-1}, {-1}, -#line 265 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_tcvn}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 44 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str801, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, -#line 39 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_utf16be}, -#line 274 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, #line 218 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str812, ei_mac_centraleurope}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 345 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str836, ei_utf32le}, + {-1}, +#line 28 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_ucs2be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 221 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_mac_romania}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 277 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str858, ei_jisx0208}, - {-1}, {-1}, {-1}, -#line 105 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str862, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 196 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, #line 223 "lib/generated/aliases_sysaix.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str878, ei_mac_ukraine}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, #line 307 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_euc_jp}, - {-1}, {-1}, {-1}, -#line 276 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 50 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_ucs4swapped}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str881, ei_euc_jp}, + {-1}, {-1}, +#line 309 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 284 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str908, ei_jisx0212}, +#line 50 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str892, ei_ucs4swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 48 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str918, ei_ucs2swapped}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str910, ei_ucs2swapped}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 42 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str918, ei_utf32be}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 337 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str924, ei_gb18030_2022}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 346 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_euc_tw}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 274 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str951, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 42 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str957, ei_utf32be}, +#line 336 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str972, ei_gb18030_2005}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 308 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 346 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 337 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str992, ei_gb18030_2022}, - {-1}, {-1}, {-1}, {-1}, -#line 226 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 309 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 336 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1040, ei_gb18030_2005}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1046, ei_euc_jp} +#line 226 "lib/generated/aliases_sysaix.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_mac_hebrew} }; const struct alias * diff --git a/lib/generated/aliases_syshpux.h b/lib/generated/aliases_syshpux.h index d4eafe5a..27ca8fe2 100644 --- a/lib/generated/aliases_syshpux.h +++ b/lib/generated/aliases_syshpux.h @@ -32,7 +32,7 @@ #line 1 "lib/generated/aliases_syshpux.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 359 +#define TOTAL_KEYWORDS 363 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 #define MIN_HASH_VALUE 23 @@ -56,11 +56,11 @@ HashPool::aliases_hash (const char *str, size_t len) 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 5, 126, 1165, 39, 7, - 37, 146, 20, 18, 5, 90, 29, 33, 300, 1165, - 1165, 1165, 1165, 1165, 1165, 11, 217, 14, 10, 121, - 118, 18, 108, 5, 191, 161, 208, 218, 7, 5, - 153, 1165, 5, 50, 14, 201, 236, 149, 148, 8, + 1165, 1165, 1165, 1165, 1165, 5, 157, 1165, 39, 7, + 37, 146, 20, 18, 5, 90, 29, 33, 142, 1165, + 1165, 1165, 1165, 1165, 1165, 11, 205, 14, 10, 121, + 95, 97, 123, 5, 63, 161, 208, 218, 7, 5, + 176, 1165, 5, 50, 14, 201, 20, 118, 353, 5, 9, 1165, 1165, 1165, 1165, 6, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, @@ -112,6 +112,7 @@ struct stringpool_t char stringpool_str42[sizeof("866")]; char stringpool_str45[sizeof("ASCII")]; char stringpool_str48[sizeof("ISO-IR-6")]; + char stringpool_str52[sizeof("TCVN")]; char stringpool_str62[sizeof("ISO-IR-166")]; char stringpool_str63[sizeof("CP866")]; char stringpool_str82[sizeof("ISO646-CN")]; @@ -123,22 +124,24 @@ struct stringpool_t char stringpool_str94[sizeof("ISO-IR-126")]; char stringpool_str96[sizeof("CP1251")]; char stringpool_str100[sizeof("ISO-IR-101")]; + char stringpool_str105[sizeof("VISCII")]; char stringpool_str106[sizeof("862")]; char stringpool_str107[sizeof("ISO-IR-144")]; + char stringpool_str109[sizeof("JAVA")]; char stringpool_str110[sizeof("850")]; char stringpool_str111[sizeof("CSASCII")]; char stringpool_str115[sizeof("ISO-IR-58")]; char stringpool_str118[sizeof("CP1255")]; - char stringpool_str119[sizeof("HZ")]; char stringpool_str121[sizeof("CP819")]; char stringpool_str122[sizeof("CP1254")]; - char stringpool_str123[sizeof("GEORGIAN-ACADEMY")]; char stringpool_str124[sizeof("ISO-IR-226")]; char stringpool_str125[sizeof("ISO-IR-148")]; + char stringpool_str126[sizeof("CSVISCII")]; char stringpool_str127[sizeof("CP862")]; char stringpool_str131[sizeof("ISO-IR-159")]; char stringpool_str132[sizeof("ISO-IR-110")]; char stringpool_str133[sizeof("ISO-IR-149")]; + char stringpool_str134[sizeof("HZ")]; char stringpool_str135[sizeof("RK1048")]; char stringpool_str137[sizeof("ISO88596")]; char stringpool_str138[sizeof("CP949")]; @@ -167,7 +170,6 @@ struct stringpool_t char stringpool_str164[sizeof("ISO-IR-100")]; char stringpool_str165[sizeof("ISO_8859-16:2001")]; char stringpool_str166[sizeof("CP50221")]; - char stringpool_str167[sizeof("HP15CN")]; char stringpool_str168[sizeof("EUCCN")]; char stringpool_str169[sizeof("ISO8859-5")]; char stringpool_str171[sizeof("ISO885915")]; @@ -180,6 +182,7 @@ struct stringpool_t char stringpool_str179[sizeof("ISO-8859-4")]; char stringpool_str180[sizeof("ISO_8859-4")]; char stringpool_str181[sizeof("ISO8859-14")]; + char stringpool_str182[sizeof("HP15CN")]; char stringpool_str183[sizeof("ISO-8859-15")]; char stringpool_str184[sizeof("ISO_8859-15")]; char stringpool_str185[sizeof("ISO88598")]; @@ -210,7 +213,7 @@ struct stringpool_t char stringpool_str217[sizeof("L1")]; char stringpool_str219[sizeof("ISO8859-10")]; char stringpool_str220[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str223[sizeof("PT154")]; + char stringpool_str222[sizeof("TCVN5712-1")]; char stringpool_str225[sizeof("ISO-8859-10")]; char stringpool_str226[sizeof("ISO_8859-10")]; char stringpool_str228[sizeof("L5")]; @@ -222,9 +225,10 @@ struct stringpool_t char stringpool_str236[sizeof("TIS620-0")]; char stringpool_str237[sizeof("ISO-IR-57")]; char stringpool_str239[sizeof("L8")]; - char stringpool_str243[sizeof("X0201")]; - char stringpool_str244[sizeof("GB_1988-80")]; + char stringpool_str241[sizeof("JP")]; + char stringpool_str244[sizeof("TCVN-5712")]; char stringpool_str245[sizeof("ISO-IR-157")]; + char stringpool_str246[sizeof("PT154")]; char stringpool_str247[sizeof("L2")]; char stringpool_str248[sizeof("ISO-IR-87")]; char stringpool_str249[sizeof("MAC")]; @@ -232,33 +236,34 @@ struct stringpool_t char stringpool_str251[sizeof("ISO-IR-138")]; char stringpool_str253[sizeof("US")]; char stringpool_str254[sizeof("LATIN1")]; + char stringpool_str255[sizeof("CSISO14JISC6220RO")]; + char stringpool_str256[sizeof("ISO_646.IRV:1991")]; char stringpool_str262[sizeof("CP1257")]; char stringpool_str263[sizeof("CSISO2022CN")]; char stringpool_str264[sizeof("ISO-IR-127")]; char stringpool_str265[sizeof("KSC_5601")]; - char stringpool_str268[sizeof("TCVN")]; - char stringpool_str271[sizeof("X0212")]; + char stringpool_str266[sizeof("ARABIC")]; char stringpool_str272[sizeof("CP932")]; char stringpool_str273[sizeof("IBM866")]; - char stringpool_str275[sizeof("BIG5")]; char stringpool_str276[sizeof("LATIN5")]; - char stringpool_str278[sizeof("ARABIC")]; + char stringpool_str278[sizeof("GEORGIAN-ACADEMY")]; char stringpool_str280[sizeof("LATIN4")]; - char stringpool_str281[sizeof("BIG-5")]; char stringpool_str282[sizeof("ELOT_928")]; - char stringpool_str287[sizeof("X0208")]; - char stringpool_str288[sizeof("GB2312")]; + char stringpool_str284[sizeof("DECKANJI")]; + char stringpool_str285[sizeof("JIS_C6220-1969-RO")]; char stringpool_str289[sizeof("L10")]; - char stringpool_str296[sizeof("CSBIG5")]; + char stringpool_str290[sizeof("DEC-KANJI")]; + char stringpool_str293[sizeof("JIS0208")]; + char stringpool_str295[sizeof("VISCII1.1-1")]; char stringpool_str297[sizeof("KZ-1048")]; char stringpool_str298[sizeof("LATIN8")]; char stringpool_str300[sizeof("L7")]; char stringpool_str301[sizeof("UCS-4")]; - char stringpool_str302[sizeof("CN-BIG5")]; char stringpool_str304[sizeof("US-ASCII")]; char stringpool_str305[sizeof("ROMAN8")]; char stringpool_str307[sizeof("ISO88597")]; char stringpool_str308[sizeof("MS-ANSI")]; + char stringpool_str309[sizeof("CSISO159JISX02121990")]; char stringpool_str311[sizeof("EUCKR")]; char stringpool_str312[sizeof("LATIN-9")]; char stringpool_str313[sizeof("ISO8859-7")]; @@ -269,202 +274,201 @@ struct stringpool_t char stringpool_str318[sizeof("KOREAN")]; char stringpool_str319[sizeof("ISO-8859-7")]; char stringpool_str320[sizeof("ISO_8859-7")]; - char stringpool_str321[sizeof("VISCII")]; char stringpool_str322[sizeof("MACCROATIAN")]; - char stringpool_str324[sizeof("GB18030")]; + char stringpool_str323[sizeof("GB_1988-80")]; + char stringpool_str324[sizeof("UTF-16")]; char stringpool_str325[sizeof("CSUCS4")]; char stringpool_str326[sizeof("LATIN10")]; char stringpool_str331[sizeof("IBM819")]; char stringpool_str332[sizeof("ISO-10646-UCS-4")]; + char stringpool_str334[sizeof("ISO_8859-5:1988")]; char stringpool_str335[sizeof("UCS-2")]; + char stringpool_str336[sizeof("ISO_8859-4:1988")]; char stringpool_str337[sizeof("IBM862")]; - char stringpool_str338[sizeof("GEORGIAN-PS")]; char stringpool_str340[sizeof("CSISOLATIN6")]; - char stringpool_str342[sizeof("CSVISCII")]; - char stringpool_str343[sizeof("GBK")]; + char stringpool_str342[sizeof("BIG5")]; char stringpool_str344[sizeof("CSISOLATIN1")]; - char stringpool_str346[sizeof("JP")]; - char stringpool_str347[sizeof("UTF-16")]; + char stringpool_str345[sizeof("ISO_8859-8:1988")]; + char stringpool_str346[sizeof("SHIFT-JIS")]; + char stringpool_str347[sizeof("SHIFT_JIS")]; + char stringpool_str348[sizeof("BIG-5")]; char stringpool_str349[sizeof("ISO-10646-UCS-2")]; char stringpool_str350[sizeof("CP367")]; char stringpool_str352[sizeof("ISO-2022-KR")]; + char stringpool_str353[sizeof("ISO_8859-9:1989")]; char stringpool_str354[sizeof("IBM850")]; char stringpool_str355[sizeof("ISO646-US")]; char stringpool_str356[sizeof("L3")]; + char stringpool_str358[sizeof("UTF8")]; char stringpool_str360[sizeof("CSISOLATINARABIC")]; - char stringpool_str361[sizeof("CN-GB-ISOIR165")]; + char stringpool_str363[sizeof("CSBIG5")]; + char stringpool_str364[sizeof("UTF-8")]; char stringpool_str365[sizeof("CSISOLATINCYRILLIC")]; char stringpool_str366[sizeof("CSISOLATIN5")]; + char stringpool_str367[sizeof("GB2312")]; + char stringpool_str369[sizeof("CN-BIG5")]; char stringpool_str370[sizeof("CSISOLATIN4")]; char stringpool_str372[sizeof("KS_C_5601-1987")]; - char stringpool_str373[sizeof("GB_2312-80")]; char stringpool_str374[sizeof("CP1253")]; char stringpool_str375[sizeof("ARMSCII-8")]; - char stringpool_str381[sizeof("UTF8")]; - char stringpool_str382[sizeof("MACTHAI")]; - char stringpool_str383[sizeof("CSISO14JISC6220RO")]; - char stringpool_str387[sizeof("UTF-8")]; - char stringpool_str392[sizeof("PTCP154")]; + char stringpool_str382[sizeof("ISO_8859-6:1987")]; + char stringpool_str384[sizeof("ISO_8859-1:1987")]; + char stringpool_str389[sizeof("JIS_C6226-1983")]; + char stringpool_str390[sizeof("EUCTW")]; + char stringpool_str392[sizeof("WINDOWS-1256")]; + char stringpool_str394[sizeof("WINDOWS-1251")]; + char stringpool_str396[sizeof("EUC-TW")]; + char stringpool_str397[sizeof("MACTHAI")]; char stringpool_str398[sizeof("UNICODE-1-1")]; + char stringpool_str403[sizeof("GB18030")]; char stringpool_str404[sizeof("CSISOLATIN2")]; + char stringpool_str405[sizeof("WINDOWS-1255")]; char stringpool_str406[sizeof("CSISO2022KR")]; + char stringpool_str407[sizeof("WINDOWS-1254")]; char stringpool_str408[sizeof("ISO-IR-203")]; char stringpool_str409[sizeof("CSUNICODE11")]; char stringpool_str412[sizeof("MS936")]; - char stringpool_str413[sizeof("JIS_C6220-1969-RO")]; + char stringpool_str414[sizeof("ISO_8859-2:1987")]; char stringpool_str415[sizeof("ISO-CELTIC")]; - char stringpool_str416[sizeof("TIS620.2529-1")]; + char stringpool_str416[sizeof("WINDOWS-1258")]; char stringpool_str417[sizeof("ECMA-114")]; char stringpool_str420[sizeof("LATIN7")]; - char stringpool_str421[sizeof("JIS0208")]; - char stringpool_str422[sizeof("CSPTCP154")]; + char stringpool_str422[sizeof("GBK")]; + char stringpool_str424[sizeof("WINDOWS-1252")]; char stringpool_str425[sizeof("ISO8859-3")]; - char stringpool_str426[sizeof("HP-ROMAN8")]; + char stringpool_str426[sizeof("WINDOWS-1250")]; + char stringpool_str428[sizeof("CN-GB-ISOIR165")]; + char stringpool_str429[sizeof("ISO-2022-JP-1")]; char stringpool_str431[sizeof("ISO-8859-3")]; char stringpool_str432[sizeof("ISO_8859-3")]; char stringpool_str433[sizeof("ISO8859-13")]; char stringpool_str434[sizeof("ASMO-708")]; char stringpool_str435[sizeof("ECMA-118")]; - char stringpool_str437[sizeof("CSISO159JISX02121990")]; - char stringpool_str438[sizeof("TCVN5712-1")]; + char stringpool_str438[sizeof("PTCP154")]; char stringpool_str439[sizeof("ISO-8859-13")]; char stringpool_str440[sizeof("ISO_8859-13")]; - char stringpool_str441[sizeof("ISO_646.IRV:1991")]; + char stringpool_str441[sizeof("HP-ROMAN8")]; char stringpool_str442[sizeof("STRK1048-2002")]; char stringpool_str446[sizeof("CHINESE")]; + char stringpool_str447[sizeof("TIS620.2529-1")]; + char stringpool_str448[sizeof("X0201")]; char stringpool_str451[sizeof("CSKSC56011987")]; - char stringpool_str452[sizeof("EUCTW")]; - char stringpool_str453[sizeof("JAVA")]; - char stringpool_str454[sizeof("WINDOWS-1256")]; - char stringpool_str456[sizeof("WINDOWS-1251")]; - char stringpool_str458[sizeof("EUC-TW")]; - char stringpool_str460[sizeof("TCVN-5712")]; - char stringpool_str467[sizeof("WINDOWS-1255")]; - char stringpool_str469[sizeof("WINDOWS-1254")]; + char stringpool_str452[sizeof("GB_2312-80")]; + char stringpool_str459[sizeof("ISO-2022-JP-2")]; + char stringpool_str462[sizeof("ISO_8859-3:1988")]; + char stringpool_str467[sizeof("ISO_8859-7:1987")]; + char stringpool_str468[sizeof("CSPTCP154")]; + char stringpool_str469[sizeof("ISO646-JP")]; char stringpool_str472[sizeof("CP1133")]; - char stringpool_str476[sizeof("CN-GB")]; - char stringpool_str478[sizeof("WINDOWS-1258")]; - char stringpool_str480[sizeof("VISCII1.1-1")]; + char stringpool_str473[sizeof("ISO-2022-JP-MS")]; + char stringpool_str476[sizeof("X0212")]; + char stringpool_str477[sizeof("WINDOWS-1257")]; + char stringpool_str479[sizeof("CSSHIFTJIS")]; char stringpool_str481[sizeof("CYRILLIC")]; - char stringpool_str485[sizeof("GREEK8")]; - char stringpool_str486[sizeof("WINDOWS-1252")]; + char stringpool_str483[sizeof("WINDOWS-874")]; + char stringpool_str484[sizeof("MS_KANJI")]; + char stringpool_str486[sizeof("UTF-7")]; char stringpool_str487[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str488[sizeof("WINDOWS-1250")]; - char stringpool_str492[sizeof("ISO_8859-5:1988")]; + char stringpool_str492[sizeof("X0208")]; char stringpool_str493[sizeof("MACROMAN")]; - char stringpool_str494[sizeof("ISO_8859-4:1988")]; + char stringpool_str494[sizeof("CSIBM866")]; char stringpool_str496[sizeof("CSUNICODE11UTF7")]; - char stringpool_str497[sizeof("SHIFT-JIS")]; - char stringpool_str498[sizeof("SHIFT_JIS")]; - char stringpool_str499[sizeof("CSISO57GB1988")]; - char stringpool_str503[sizeof("ISO_8859-8:1988")]; - char stringpool_str506[sizeof("CSIBM866")]; + char stringpool_str506[sizeof("MACARABIC")]; char stringpool_str507[sizeof("CSUNICODE")]; - char stringpool_str509[sizeof("UTF-7")]; - char stringpool_str511[sizeof("ISO_8859-9:1989")]; - char stringpool_str513[sizeof("CSISOLATINGREEK")]; + char stringpool_str508[sizeof("TCVN5712-1:1993")]; + char stringpool_str512[sizeof("CSISO2022JP2")]; + char stringpool_str513[sizeof("WINDOWS-936")]; char stringpool_str515[sizeof("MACROMANIA")]; - char stringpool_str517[sizeof("JIS_C6226-1983")]; - char stringpool_str518[sizeof("MACARABIC")]; - char stringpool_str521[sizeof("CSGB2312")]; + char stringpool_str519[sizeof("GEORGIAN-PS")]; + char stringpool_str523[sizeof("ISO_8859-7:2003")]; + char stringpool_str527[sizeof("UTF-32")]; char stringpool_str528[sizeof("CSEUCKR")]; + char stringpool_str531[sizeof("CN-GB")]; char stringpool_str532[sizeof("LATIN3")]; - char stringpool_str533[sizeof("JIS_X0201")]; - char stringpool_str534[sizeof("ISO-2022-JP-1")]; - char stringpool_str538[sizeof("MACINTOSH")]; - char stringpool_str539[sizeof("WINDOWS-1257")]; - char stringpool_str540[sizeof("ISO_8859-6:1987")]; - char stringpool_str542[sizeof("ISO_8859-1:1987")]; - char stringpool_str543[sizeof("ANSI_X3.4-1986")]; - char stringpool_str545[sizeof("WINDOWS-874")]; + char stringpool_str533[sizeof("WINDOWS-1253")]; char stringpool_str546[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str550[sizeof("UTF-32")]; - char stringpool_str551[sizeof("ISO646-JP")]; + char stringpool_str555[sizeof("EUCJP")]; char stringpool_str560[sizeof("IBM367")]; - char stringpool_str561[sizeof("JIS_X0212")]; - char stringpool_str564[sizeof("ISO-2022-JP-2")]; - char stringpool_str565[sizeof("CSMACINTOSH")]; - char stringpool_str567[sizeof("ANSI_X3.4-1968")]; - char stringpool_str572[sizeof("ISO_8859-2:1987")]; - char stringpool_str574[sizeof("JISX0201-1976")]; - char stringpool_str575[sizeof("WINDOWS-936")]; - char stringpool_str577[sizeof("JIS_X0208")]; - char stringpool_str578[sizeof("ISO-2022-JP-MS")]; - char stringpool_str580[sizeof("JIS_X0212-1990")]; - char stringpool_str587[sizeof("GREEK")]; - char stringpool_str589[sizeof("CSHPROMAN8")]; + char stringpool_str561[sizeof("EUC-JP")]; + char stringpool_str564[sizeof("GREEK8")]; + char stringpool_str566[sizeof("CSISO57GB1988")]; + char stringpool_str568[sizeof("MACINTOSH")]; + char stringpool_str576[sizeof("CSISOLATINHEBREW")]; + char stringpool_str580[sizeof("DECHANYU")]; + char stringpool_str586[sizeof("DEC-HANYU")]; + char stringpool_str588[sizeof("CSGB2312")]; char stringpool_str591[sizeof("MS-EE")]; - char stringpool_str592[sizeof("CSISOLATINHEBREW")]; - char stringpool_str593[sizeof("CSISO58GB231280")]; - char stringpool_str595[sizeof("WINDOWS-1253")]; - char stringpool_str604[sizeof("JIS_X0208-1990")]; + char stringpool_str592[sizeof("CSISOLATINGREEK")]; + char stringpool_str595[sizeof("CSMACINTOSH")]; + char stringpool_str596[sizeof("ISO-2022-JP")]; + char stringpool_str607[sizeof("CSEUCTW")]; char stringpool_str608[sizeof("KOI8-U")]; - char stringpool_str612[sizeof("MS_KANJI")]; + char stringpool_str610[sizeof("JIS_X0201")]; + char stringpool_str612[sizeof("JOHAB")]; char stringpool_str614[sizeof("KOI8-RU")]; - char stringpool_str615[sizeof("CSSHIFTJIS")]; - char stringpool_str617[sizeof("CSISO2022JP2")]; - char stringpool_str620[sizeof("ISO_8859-3:1988")]; char stringpool_str622[sizeof("CSISOLATIN3")]; - char stringpool_str624[sizeof("UNICODEBIG")]; - char stringpool_str625[sizeof("ISO_8859-7:1987")]; - char stringpool_str627[sizeof("HZ-GB-2312")]; + char stringpool_str627[sizeof("CSHPROMAN8")]; char stringpool_str628[sizeof("MACICELAND")]; - char stringpool_str631[sizeof("CSISO87JISX0208")]; - char stringpool_str637[sizeof("EUCJP")]; - char stringpool_str638[sizeof("TIS620.2533-1")]; - char stringpool_str643[sizeof("EUC-JP")]; + char stringpool_str638[sizeof("JIS_X0212")]; + char stringpool_str644[sizeof("GB18030:2005")]; + char stringpool_str649[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str650[sizeof("CSISO2022JP")]; + char stringpool_str651[sizeof("JISX0201-1976")]; + char stringpool_str654[sizeof("JIS_X0208")]; char stringpool_str655[sizeof("UCS-4-INTERNAL")]; - char stringpool_str657[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str668[sizeof("NEXTSTEP")]; - char stringpool_str669[sizeof("CSEUCTW")]; - char stringpool_str670[sizeof("TIS620.2533-0")]; + char stringpool_str657[sizeof("JIS_X0212-1990")]; + char stringpool_str660[sizeof("CSISO58GB231280")]; + char stringpool_str661[sizeof("GB18030:2022")]; + char stringpool_str666[sizeof("GREEK")]; + char stringpool_str667[sizeof("MS-ARAB")]; + char stringpool_str669[sizeof("TIS620.2533-1")]; + char stringpool_str670[sizeof("MS-CYRL")]; + char stringpool_str671[sizeof("BIGFIVE")]; char stringpool_str672[sizeof("UCS-2-INTERNAL")]; - char stringpool_str673[sizeof("MS-CYRL")]; - char stringpool_str678[sizeof("ISO-2022-JP")]; - char stringpool_str681[sizeof("ISO_8859-7:2003")]; - char stringpool_str686[sizeof("MS-HEBR")]; - char stringpool_str691[sizeof("MS-ARAB")]; - char stringpool_str695[sizeof("BIG5HKSCS")]; - char stringpool_str701[sizeof("BIG5-HKSCS")]; - char stringpool_str703[sizeof("JIS_X0212.1990-0")]; - char stringpool_str711[sizeof("JIS_X0208-1983")]; - char stringpool_str723[sizeof("GB18030:2005")]; - char stringpool_str724[sizeof("MACCYRILLIC")]; + char stringpool_str677[sizeof("BIG-FIVE")]; + char stringpool_str681[sizeof("JIS_X0208-1990")]; + char stringpool_str689[sizeof("MS-HEBR")]; + char stringpool_str696[sizeof("HEBREW")]; + char stringpool_str701[sizeof("TIS620.2533-0")]; + char stringpool_str708[sizeof("CSISO87JISX0208")]; + char stringpool_str709[sizeof("HZ-GB-2312")]; + char stringpool_str721[sizeof("MACCYRILLIC")]; + char stringpool_str730[sizeof("UCS-4BE")]; char stringpool_str731[sizeof("UNICODELITTLE")]; - char stringpool_str732[sizeof("CSISO2022JP")]; char stringpool_str733[sizeof("UCS-4LE")]; - char stringpool_str740[sizeof("GB18030:2022")]; - char stringpool_str742[sizeof("UCS-4BE")]; - char stringpool_str749[sizeof("JOHAB")]; + char stringpool_str747[sizeof("UCS-2BE")]; char stringpool_str750[sizeof("UCS-2LE")]; - char stringpool_str755[sizeof("HEBREW")]; - char stringpool_str759[sizeof("UCS-2BE")]; + char stringpool_str751[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str768[sizeof("UTF-16BE")]; + char stringpool_str770[sizeof("UNICODEBIG")]; + char stringpool_str771[sizeof("UTF-16LE")]; char stringpool_str772[sizeof("MS-TURK")]; - char stringpool_str775[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str777[sizeof("BIG5HKSCS")]; + char stringpool_str779[sizeof("ANSI_X3.4-1986")]; + char stringpool_str783[sizeof("BIG5-HKSCS")]; char stringpool_str784[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str794[sizeof("UTF-16LE")]; + char stringpool_str788[sizeof("JIS_X0208-1983")]; char stringpool_str799[sizeof("MULELAO-1")]; - char stringpool_str803[sizeof("UTF-16BE")]; - char stringpool_str818[sizeof("MS-GREEK")]; - char stringpool_str820[sizeof("UCS-4-SWAPPED")]; - char stringpool_str827[sizeof("MACGREEK")]; - char stringpool_str837[sizeof("UCS-2-SWAPPED")]; - char stringpool_str843[sizeof("BIGFIVE")]; - char stringpool_str849[sizeof("BIG-FIVE")]; - char stringpool_str857[sizeof("IBM-CP1133")]; + char stringpool_str803[sizeof("ANSI_X3.4-1968")]; + char stringpool_str811[sizeof("JIS_X0212.1990-0")]; + char stringpool_str835[sizeof("UCS-4-SWAPPED")]; + char stringpool_str852[sizeof("UCS-2-SWAPPED")]; char stringpool_str870[sizeof("MACCENTRALEUROPE")]; char stringpool_str874[sizeof("MACUKRAINE")]; - char stringpool_str882[sizeof("TCVN5712-1:1993")]; - char stringpool_str894[sizeof("MACTURKISH")]; - char stringpool_str963[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str965[sizeof("UTF-32LE")]; - char stringpool_str974[sizeof("UTF-32BE")]; - char stringpool_str976[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str985[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str989[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str1062[sizeof("WINBALTRIM")]; - char stringpool_str1111[sizeof("MACHEBREW")]; - char stringpool_str1135[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str880[sizeof("IBM-CP1133")]; + char stringpool_str887[sizeof("BIG5-HKSCS:2001")]; + char stringpool_str897[sizeof("MS-GREEK")]; + char stringpool_str900[sizeof("BIG5-HKSCS:2004")]; + char stringpool_str906[sizeof("MACGREEK")]; + char stringpool_str909[sizeof("BIG5-HKSCS:2008")]; + char stringpool_str913[sizeof("BIG5-HKSCS:1999")]; + char stringpool_str919[sizeof("NEXTSTEP")]; + char stringpool_str924[sizeof("MACTURKISH")]; + char stringpool_str939[sizeof("UTF-32BE")]; + char stringpool_str942[sizeof("UTF-32LE")]; + char stringpool_str1019[sizeof("WINBALTRIM")]; + char stringpool_str1052[sizeof("MACHEBREW")]; + char stringpool_str1158[sizeof("CSPC850MULTILINGUAL")]; char stringpool_str1164[sizeof("CSEUCPKDFMTJAPANESE")]; }; static const struct stringpool_t stringpool_contents = @@ -474,6 +478,7 @@ static const struct stringpool_t stringpool_contents = "866", "ASCII", "ISO-IR-6", + "TCVN", "ISO-IR-166", "CP866", "ISO646-CN", @@ -485,22 +490,24 @@ static const struct stringpool_t stringpool_contents = "ISO-IR-126", "CP1251", "ISO-IR-101", + "VISCII", "862", "ISO-IR-144", + "JAVA", "850", "CSASCII", "ISO-IR-58", "CP1255", - "HZ", "CP819", "CP1254", - "GEORGIAN-ACADEMY", "ISO-IR-226", "ISO-IR-148", + "CSVISCII", "CP862", "ISO-IR-159", "ISO-IR-110", "ISO-IR-149", + "HZ", "RK1048", "ISO88596", "CP949", @@ -529,7 +536,6 @@ static const struct stringpool_t stringpool_contents = "ISO-IR-100", "ISO_8859-16:2001", "CP50221", - "HP15CN", "EUCCN", "ISO8859-5", "ISO885915", @@ -542,6 +548,7 @@ static const struct stringpool_t stringpool_contents = "ISO-8859-4", "ISO_8859-4", "ISO8859-14", + "HP15CN", "ISO-8859-15", "ISO_8859-15", "ISO88598", @@ -572,7 +579,7 @@ static const struct stringpool_t stringpool_contents = "L1", "ISO8859-10", "ISO-2022-CN-EXT", - "PT154", + "TCVN5712-1", "ISO-8859-10", "ISO_8859-10", "L5", @@ -584,9 +591,10 @@ static const struct stringpool_t stringpool_contents = "TIS620-0", "ISO-IR-57", "L8", - "X0201", - "GB_1988-80", + "JP", + "TCVN-5712", "ISO-IR-157", + "PT154", "L2", "ISO-IR-87", "MAC", @@ -594,33 +602,34 @@ static const struct stringpool_t stringpool_contents = "ISO-IR-138", "US", "LATIN1", + "CSISO14JISC6220RO", + "ISO_646.IRV:1991", "CP1257", "CSISO2022CN", "ISO-IR-127", "KSC_5601", - "TCVN", - "X0212", + "ARABIC", "CP932", "IBM866", - "BIG5", "LATIN5", - "ARABIC", + "GEORGIAN-ACADEMY", "LATIN4", - "BIG-5", "ELOT_928", - "X0208", - "GB2312", + "DECKANJI", + "JIS_C6220-1969-RO", "L10", - "CSBIG5", + "DEC-KANJI", + "JIS0208", + "VISCII1.1-1", "KZ-1048", "LATIN8", "L7", "UCS-4", - "CN-BIG5", "US-ASCII", "ROMAN8", "ISO88597", "MS-ANSI", + "CSISO159JISX02121990", "EUCKR", "LATIN-9", "ISO8859-7", @@ -631,199 +640,198 @@ static const struct stringpool_t stringpool_contents = "KOREAN", "ISO-8859-7", "ISO_8859-7", - "VISCII", "MACCROATIAN", - "GB18030", + "GB_1988-80", + "UTF-16", "CSUCS4", "LATIN10", "IBM819", "ISO-10646-UCS-4", + "ISO_8859-5:1988", "UCS-2", + "ISO_8859-4:1988", "IBM862", - "GEORGIAN-PS", "CSISOLATIN6", - "CSVISCII", - "GBK", + "BIG5", "CSISOLATIN1", - "JP", - "UTF-16", + "ISO_8859-8:1988", + "SHIFT-JIS", + "SHIFT_JIS", + "BIG-5", "ISO-10646-UCS-2", "CP367", "ISO-2022-KR", + "ISO_8859-9:1989", "IBM850", "ISO646-US", "L3", + "UTF8", "CSISOLATINARABIC", - "CN-GB-ISOIR165", + "CSBIG5", + "UTF-8", "CSISOLATINCYRILLIC", "CSISOLATIN5", + "GB2312", + "CN-BIG5", "CSISOLATIN4", "KS_C_5601-1987", - "GB_2312-80", "CP1253", "ARMSCII-8", - "UTF8", + "ISO_8859-6:1987", + "ISO_8859-1:1987", + "JIS_C6226-1983", + "EUCTW", + "WINDOWS-1256", + "WINDOWS-1251", + "EUC-TW", "MACTHAI", - "CSISO14JISC6220RO", - "UTF-8", - "PTCP154", "UNICODE-1-1", + "GB18030", "CSISOLATIN2", + "WINDOWS-1255", "CSISO2022KR", + "WINDOWS-1254", "ISO-IR-203", "CSUNICODE11", "MS936", - "JIS_C6220-1969-RO", + "ISO_8859-2:1987", "ISO-CELTIC", - "TIS620.2529-1", + "WINDOWS-1258", "ECMA-114", "LATIN7", - "JIS0208", - "CSPTCP154", + "GBK", + "WINDOWS-1252", "ISO8859-3", - "HP-ROMAN8", + "WINDOWS-1250", + "CN-GB-ISOIR165", + "ISO-2022-JP-1", "ISO-8859-3", "ISO_8859-3", "ISO8859-13", "ASMO-708", "ECMA-118", - "CSISO159JISX02121990", - "TCVN5712-1", + "PTCP154", "ISO-8859-13", "ISO_8859-13", - "ISO_646.IRV:1991", + "HP-ROMAN8", "STRK1048-2002", "CHINESE", + "TIS620.2529-1", + "X0201", "CSKSC56011987", - "EUCTW", - "JAVA", - "WINDOWS-1256", - "WINDOWS-1251", - "EUC-TW", - "TCVN-5712", - "WINDOWS-1255", - "WINDOWS-1254", + "GB_2312-80", + "ISO-2022-JP-2", + "ISO_8859-3:1988", + "ISO_8859-7:1987", + "CSPTCP154", + "ISO646-JP", "CP1133", - "CN-GB", - "WINDOWS-1258", - "VISCII1.1-1", + "ISO-2022-JP-MS", + "X0212", + "WINDOWS-1257", + "CSSHIFTJIS", "CYRILLIC", - "GREEK8", - "WINDOWS-1252", + "WINDOWS-874", + "MS_KANJI", + "UTF-7", "UNICODE-1-1-UTF-7", - "WINDOWS-1250", - "ISO_8859-5:1988", + "X0208", "MACROMAN", - "ISO_8859-4:1988", - "CSUNICODE11UTF7", - "SHIFT-JIS", - "SHIFT_JIS", - "CSISO57GB1988", - "ISO_8859-8:1988", "CSIBM866", + "CSUNICODE11UTF7", + "MACARABIC", "CSUNICODE", - "UTF-7", - "ISO_8859-9:1989", - "CSISOLATINGREEK", + "TCVN5712-1:1993", + "CSISO2022JP2", + "WINDOWS-936", "MACROMANIA", - "JIS_C6226-1983", - "MACARABIC", - "CSGB2312", + "GEORGIAN-PS", + "ISO_8859-7:2003", + "UTF-32", "CSEUCKR", + "CN-GB", "LATIN3", - "JIS_X0201", - "ISO-2022-JP-1", - "MACINTOSH", - "WINDOWS-1257", - "ISO_8859-6:1987", - "ISO_8859-1:1987", - "ANSI_X3.4-1986", - "WINDOWS-874", + "WINDOWS-1253", "CYRILLIC-ASIAN", - "UTF-32", - "ISO646-JP", + "EUCJP", "IBM367", - "JIS_X0212", - "ISO-2022-JP-2", - "CSMACINTOSH", - "ANSI_X3.4-1968", - "ISO_8859-2:1987", - "JISX0201-1976", - "WINDOWS-936", - "JIS_X0208", - "ISO-2022-JP-MS", - "JIS_X0212-1990", - "GREEK", - "CSHPROMAN8", - "MS-EE", + "EUC-JP", + "GREEK8", + "CSISO57GB1988", + "MACINTOSH", "CSISOLATINHEBREW", - "CSISO58GB231280", - "WINDOWS-1253", - "JIS_X0208-1990", + "DECHANYU", + "DEC-HANYU", + "CSGB2312", + "MS-EE", + "CSISOLATINGREEK", + "CSMACINTOSH", + "ISO-2022-JP", + "CSEUCTW", "KOI8-U", - "MS_KANJI", + "JIS_X0201", + "JOHAB", "KOI8-RU", - "CSSHIFTJIS", - "CSISO2022JP2", - "ISO_8859-3:1988", "CSISOLATIN3", - "UNICODEBIG", - "ISO_8859-7:1987", - "HZ-GB-2312", + "CSHPROMAN8", "MACICELAND", - "CSISO87JISX0208", - "EUCJP", - "TIS620.2533-1", - "EUC-JP", - "UCS-4-INTERNAL", + "JIS_X0212", + "GB18030:2005", "CSPC862LATINHEBREW", - "NEXTSTEP", - "CSEUCTW", - "TIS620.2533-0", - "UCS-2-INTERNAL", + "CSISO2022JP", + "JISX0201-1976", + "JIS_X0208", + "UCS-4-INTERNAL", + "JIS_X0212-1990", + "CSISO58GB231280", + "GB18030:2022", + "GREEK", + "MS-ARAB", + "TIS620.2533-1", "MS-CYRL", - "ISO-2022-JP", - "ISO_8859-7:2003", + "BIGFIVE", + "UCS-2-INTERNAL", + "BIG-FIVE", + "JIS_X0208-1990", "MS-HEBR", - "MS-ARAB", - "BIG5HKSCS", - "BIG5-HKSCS", - "JIS_X0212.1990-0", - "JIS_X0208-1983", - "GB18030:2005", + "HEBREW", + "TIS620.2533-0", + "CSISO87JISX0208", + "HZ-GB-2312", "MACCYRILLIC", + "UCS-4BE", "UNICODELITTLE", - "CSISO2022JP", "UCS-4LE", - "GB18030:2022", - "UCS-4BE", - "JOHAB", - "UCS-2LE", - "HEBREW", "UCS-2BE", - "MS-TURK", + "UCS-2LE", "CSHALFWIDTHKATAKANA", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", + "UTF-16BE", + "UNICODEBIG", "UTF-16LE", + "MS-TURK", + "BIG5HKSCS", + "ANSI_X3.4-1986", + "BIG5-HKSCS", + "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", + "JIS_X0208-1983", "MULELAO-1", - "UTF-16BE", - "MS-GREEK", + "ANSI_X3.4-1968", + "JIS_X0212.1990-0", "UCS-4-SWAPPED", - "MACGREEK", "UCS-2-SWAPPED", - "BIGFIVE", - "BIG-FIVE", - "IBM-CP1133", "MACCENTRALEUROPE", "MACUKRAINE", - "TCVN5712-1:1993", - "MACTURKISH", + "IBM-CP1133", "BIG5-HKSCS:2001", - "UTF-32LE", - "UTF-32BE", + "MS-GREEK", "BIG5-HKSCS:2004", + "MACGREEK", "BIG5-HKSCS:2008", "BIG5-HKSCS:1999", + "NEXTSTEP", + "MACTURKISH", + "UTF-32BE", + "UTF-32LE", "WINBALTRIM", "MACHEBREW", "CSPC850MULTILINGUAL", @@ -851,8 +859,10 @@ static const struct alias aliases[] = {-1}, {-1}, #line 16 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_ascii}, + {-1}, {-1}, {-1}, +#line 267 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_tcvn}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, #line 261 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str62, ei_tis620}, #line 214 "lib/generated/aliases_syshpux.gperf" @@ -883,12 +893,16 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, #line 68 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str100, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 264 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_viscii}, #line 212 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_cp862}, #line 93 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, ei_iso8859_5}, - {-1}, {-1}, + {-1}, +#line 53 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str109, ei_java}, #line 208 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str110, ei_cp850}, #line 22 "lib/generated/aliases_syshpux.gperf" @@ -899,20 +913,18 @@ static const struct alias aliases[] = {-1}, {-1}, #line 195 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_cp1255}, -#line 344 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str119, ei_hz}, - {-1}, + {-1}, {-1}, #line 58 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str121, ei_iso8859_1}, #line 192 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, ei_cp1254}, -#line 240 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str123, ei_georgian_academy}, + {-1}, #line 172 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_iso8859_16}, #line 131 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso8859_9}, - {-1}, +#line 266 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_viscii}, #line 210 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, ei_cp862}, {-1}, {-1}, {-1}, @@ -922,7 +934,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_iso8859_4}, #line 307 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_ksc5601}, - {-1}, +#line 344 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str134, ei_hz}, #line 248 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str135, ei_rk1048}, {-1}, @@ -983,8 +996,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_iso8859_16}, #line 326 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_iso2022_jpms}, -#line 333 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_euc_cn}, + {-1}, #line 328 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_euc_cn}, #line 96 "lib/generated/aliases_syshpux.gperf" @@ -1011,7 +1023,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_iso8859_4}, #line 161 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_iso8859_14}, - {-1}, +#line 333 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str182, ei_euc_cn}, #line 162 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_iso8859_15}, #line 163 "lib/generated/aliases_syshpux.gperf" @@ -1078,10 +1091,10 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_iso8859_10}, #line 343 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_iso2022_cn_ext}, - {-1}, {-1}, -#line 243 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str223, ei_pt154}, {-1}, +#line 269 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str222, ei_tcvn}, + {-1}, {-1}, #line 137 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_iso8859_10}, #line 138 "lib/generated/aliases_syshpux.gperf" @@ -1108,14 +1121,16 @@ static const struct alias aliases[] = {-1}, #line 159 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_iso8859_14}, - {-1}, {-1}, {-1}, -#line 278 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_jisx0201}, -#line 294 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_iso646_cn}, + {-1}, +#line 274 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_iso646_jp}, + {-1}, {-1}, +#line 268 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_tcvn}, #line 140 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_iso8859_10}, - {-1}, +#line 243 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_pt154}, #line 70 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_iso8859_2}, #line 285 "lib/generated/aliases_syshpux.gperf" @@ -1131,7 +1146,11 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_ascii}, #line 60 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 275 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_iso646_jp}, +#line 15 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 201 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_cp1257}, #line 342 "lib/generated/aliases_syshpux.gperf" @@ -1140,41 +1159,42 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_iso8859_6}, #line 304 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_ksc5601}, - {-1}, {-1}, -#line 267 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_tcvn}, - {-1}, {-1}, -#line 291 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_jisx0212}, +#line 104 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 319 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_cp932}, #line 215 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_cp866}, - {-1}, -#line 349 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str275, ei_ces_big5}, + {-1}, {-1}, #line 132 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_iso8859_9}, {-1}, -#line 104 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_iso8859_6}, +#line 240 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_georgian_academy}, {-1}, #line 86 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso8859_4}, -#line 350 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_ces_big5}, + {-1}, #line 114 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, -#line 284 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_jisx0208}, -#line 329 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_euc_cn}, + {-1}, +#line 372 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_dec_kanji}, +#line 271 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_iso646_jp}, + {-1}, {-1}, {-1}, #line 174 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_iso8859_16}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 354 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_ces_big5}, +#line 371 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_dec_kanji}, + {-1}, {-1}, +#line 283 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_jisx0208}, + {-1}, +#line 265 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_viscii}, + {-1}, #line 250 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str297, ei_rk1048}, #line 158 "lib/generated/aliases_syshpux.gperf" @@ -1184,9 +1204,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_iso8859_13}, #line 34 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_ucs4}, -#line 353 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ces_big5}, - {-1}, + {-1}, {-1}, #line 12 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_ascii}, #line 235 "lib/generated/aliases_syshpux.gperf" @@ -1196,7 +1214,9 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_iso8859_7}, #line 188 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_cp1252}, - {-1}, {-1}, +#line 293 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_jisx0212}, + {-1}, #line 363 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_euc_kr}, #line 166 "lib/generated/aliases_syshpux.gperf" @@ -1217,13 +1237,13 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_iso8859_7}, #line 109 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_iso8859_7}, -#line 264 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_viscii}, + {-1}, #line 225 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_mac_croatian}, - {-1}, -#line 338 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_gb18030_2005}, +#line 294 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_iso646_cn}, +#line 39 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_utf16}, #line 36 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ucs4}, #line 173 "lib/generated/aliases_syshpux.gperf" @@ -1233,30 +1253,32 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_iso8859_1}, #line 35 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_ucs4}, - {-1}, {-1}, + {-1}, +#line 92 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_iso8859_5}, #line 25 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_ucs2}, - {-1}, +#line 84 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_iso8859_4}, #line 211 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_cp862}, -#line 241 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_georgian_ps}, - {-1}, + {-1}, {-1}, #line 143 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_iso8859_10}, {-1}, -#line 266 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_viscii}, -#line 334 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_ces_gbk}, +#line 349 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_ces_big5}, + {-1}, #line 62 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_iso8859_1}, - {-1}, -#line 274 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_iso646_jp}, -#line 39 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_utf16}, - {-1}, +#line 122 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_iso8859_8}, +#line 315 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_sjis}, +#line 314 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_sjis}, +#line 350 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_ces_big5}, #line 26 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_ucs2}, #line 19 "lib/generated/aliases_syshpux.gperf" @@ -1264,58 +1286,79 @@ static const struct alias aliases[] = {-1}, #line 369 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_iso2022_kr}, - {-1}, +#line 130 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_iso8859_9}, #line 207 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_cp850}, #line 14 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ascii}, #line 79 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_iso8859_3}, - {-1}, {-1}, {-1}, + {-1}, +#line 24 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_utf8}, + {-1}, #line 105 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_iso8859_6}, -#line 303 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_isoir165}, - {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 354 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_ces_big5}, +#line 23 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_utf8}, #line 95 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_iso8859_5}, #line 134 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_iso8859_9}, - {-1}, {-1}, {-1}, +#line 329 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_euc_cn}, + {-1}, +#line 353 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str369, ei_ces_big5}, #line 88 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_iso8859_4}, {-1}, #line 305 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_ksc5601}, -#line 299 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_gb2312}, + {-1}, #line 189 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_cp1253}, #line 239 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_armscii_8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 24 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_utf8}, -#line 233 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str382, ei_mac_thai}, -#line 275 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_iso646_jp}, - {-1}, {-1}, {-1}, -#line 23 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_utf8}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 100 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str382, ei_iso8859_6}, + {-1}, +#line 56 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, -#line 244 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_pt154}, - {-1}, {-1}, {-1}, {-1}, {-1}, +#line 286 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_jisx0208}, +#line 347 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_euc_tw}, + {-1}, +#line 199 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_cp1256}, + {-1}, +#line 184 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_cp1251}, + {-1}, +#line 346 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_euc_tw}, +#line 233 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_mac_thai}, #line 30 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 338 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_gb18030_2005}, #line 71 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_iso8859_2}, - {-1}, +#line 196 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_cp1255}, #line 370 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_iso2022_kr}, - {-1}, +#line 193 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_cp1254}, #line 165 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str408, ei_iso8859_15}, #line 31 "lib/generated/aliases_syshpux.gperf" @@ -1323,28 +1366,34 @@ static const struct alias aliases[] = {-1}, {-1}, #line 336 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp936}, -#line 271 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_iso646_jp}, {-1}, +#line 67 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_iso8859_2}, #line 160 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_iso8859_14}, -#line 258 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_tis620}, +#line 205 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_cp1258}, #line 102 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_iso8859_6}, {-1}, {-1}, #line 151 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_iso8859_13}, -#line 283 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_jisx0208}, -#line 247 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_pt154}, - {-1}, {-1}, + {-1}, +#line 334 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_ces_gbk}, + {-1}, +#line 187 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_cp1252}, #line 81 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_iso8859_3}, -#line 234 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, +#line 181 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_cp1250}, + {-1}, +#line 303 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_isoir165}, +#line 322 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_iso2022_jp1}, + {-1}, #line 74 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_iso8859_3}, #line 75 "lib/generated/aliases_syshpux.gperf" @@ -1355,415 +1404,375 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_iso8859_6}, #line 113 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_iso8859_7}, - {-1}, -#line 293 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_jisx0212}, -#line 269 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_tcvn}, + {-1}, {-1}, +#line 244 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_pt154}, #line 148 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso8859_13}, #line 149 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_iso8859_13}, -#line 15 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_ascii}, +#line 234 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_hp_roman8}, #line 249 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_rk1048}, {-1}, {-1}, {-1}, #line 332 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str446, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, +#line 258 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_tis620}, +#line 278 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_jisx0201}, + {-1}, {-1}, #line 308 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_ksc5601}, -#line 347 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_euc_tw}, -#line 53 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_java}, -#line 199 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str454, ei_cp1256}, - {-1}, -#line 184 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_cp1251}, - {-1}, -#line 346 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_euc_tw}, - {-1}, -#line 268 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str460, ei_tcvn}, +#line 299 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_gb2312}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 196 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_cp1255}, - {-1}, -#line 193 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_cp1254}, +#line 323 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_iso2022_jp2}, + {-1}, {-1}, +#line 76 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_iso8859_3}, + {-1}, {-1}, {-1}, {-1}, +#line 110 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_iso8859_7}, +#line 247 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_pt154}, +#line 272 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_iso646_jp}, {-1}, {-1}, #line 253 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_cp1133}, - {-1}, {-1}, {-1}, -#line 330 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_euc_cn}, +#line 325 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_iso2022_jpms}, + {-1}, {-1}, +#line 291 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_jisx0212}, +#line 202 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_cp1257}, {-1}, -#line 205 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_cp1258}, +#line 318 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_sjis}, {-1}, -#line 265 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_viscii}, #line 94 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_iso8859_5}, - {-1}, {-1}, {-1}, -#line 115 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_iso8859_7}, -#line 187 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_cp1252}, + {-1}, +#line 263 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_cp874}, +#line 317 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_sjis}, + {-1}, +#line 45 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_utf7}, #line 46 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_utf7}, -#line 181 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_cp1250}, - {-1}, {-1}, {-1}, -#line 92 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_iso8859_5}, + {-1}, {-1}, {-1}, {-1}, +#line 284 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_jisx0208}, #line 219 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_mac_roman}, -#line 84 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_iso8859_4}, +#line 217 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_cp866}, {-1}, #line 47 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_utf7}, -#line 315 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_sjis}, -#line 314 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_sjis}, -#line 298 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str499, ei_iso646_cn}, - {-1}, {-1}, {-1}, -#line 122 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_iso8859_8}, - {-1}, {-1}, -#line 217 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_cp866}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 232 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_mac_arabic}, #line 27 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_ucs2}, - {-1}, -#line 45 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_utf7}, - {-1}, -#line 130 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_iso8859_9}, - {-1}, -#line 117 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_iso8859_7}, +#line 270 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_tcvn}, + {-1}, {-1}, {-1}, +#line 324 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_iso2022_jp2}, +#line 337 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_cp936}, {-1}, #line 226 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_mac_romania}, - {-1}, -#line 286 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str517, ei_jisx0208}, -#line 232 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_mac_arabic}, - {-1}, {-1}, -#line 331 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 241 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_georgian_ps}, + {-1}, {-1}, {-1}, +#line 111 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 42 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_utf32}, #line 364 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_euc_kr}, - {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 330 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_euc_cn}, #line 78 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_iso8859_3}, -#line 276 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_jisx0201}, -#line 322 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_iso2022_jp1}, +#line 190 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_cp1253}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 220 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_mac_roman}, -#line 202 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str539, ei_cp1257}, -#line 100 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str540, ei_iso8859_6}, - {-1}, -#line 56 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_iso8859_1}, -#line 18 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str543, ei_ascii}, - {-1}, -#line 263 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_cp874}, #line 246 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_pt154}, - {-1}, {-1}, {-1}, -#line 42 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_utf32}, -#line 272 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_iso646_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 311 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, #line 20 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str560, ei_ascii}, -#line 288 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_jisx0212}, +#line 310 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_euc_jp}, {-1}, {-1}, -#line 323 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_iso2022_jp2}, -#line 222 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_mac_roman}, - {-1}, -#line 17 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, -#line 67 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str572, ei_iso8859_2}, - {-1}, -#line 277 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str574, ei_jisx0201}, -#line 337 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_cp936}, - {-1}, -#line 280 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_jisx0208}, -#line 325 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str578, ei_iso2022_jpms}, +#line 115 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_iso8859_7}, {-1}, -#line 290 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 116 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str587, ei_iso8859_7}, +#line 298 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_iso646_cn}, {-1}, -#line 237 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str589, ei_hp_roman8}, +#line 220 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 125 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso8859_8}, + {-1}, {-1}, {-1}, +#line 374 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_dec_hanyu}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 373 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str586, ei_dec_hanyu}, {-1}, +#line 331 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_euc_cn}, + {-1}, {-1}, #line 182 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_cp1250}, -#line 125 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_iso8859_8}, -#line 301 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_gb2312}, +#line 117 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_iso8859_7}, + {-1}, {-1}, +#line 222 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_mac_roman}, +#line 320 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str596, ei_iso2022_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 190 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_cp1253}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 282 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str604, ei_jisx0208}, - {-1}, {-1}, {-1}, +#line 348 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_euc_tw}, #line 178 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_koi8_u}, - {-1}, {-1}, {-1}, -#line 317 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_sjis}, {-1}, -#line 179 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_koi8_ru}, -#line 318 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_sjis}, +#line 276 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_jisx0201}, {-1}, -#line 324 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_iso2022_jp2}, - {-1}, {-1}, -#line 76 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_iso8859_3}, +#line 367 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_johab}, {-1}, +#line 179 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_koi8_ru}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 80 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str622, ei_iso8859_3}, - {-1}, -#line 29 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_ucs2be}, -#line 110 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_iso8859_7}, - {-1}, -#line 345 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_hz}, + {-1}, {-1}, {-1}, {-1}, +#line 237 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_hp_roman8}, #line 224 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str628, ei_mac_iceland}, - {-1}, {-1}, -#line 287 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 288 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_jisx0212}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 311 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_euc_jp}, -#line 260 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_tis620}, +#line 339 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_gb18030_2005}, {-1}, {-1}, {-1}, {-1}, -#line 310 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 213 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str649, ei_cp862}, +#line 321 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_iso2022_jp}, +#line 277 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str651, ei_jisx0201}, {-1}, {-1}, +#line 280 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str654, ei_jisx0208}, #line 50 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_ucs4internal}, {-1}, -#line 213 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_cp862}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 238 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str668, ei_nextstep}, -#line 348 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_euc_tw}, -#line 259 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_tis620}, +#line 290 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_jisx0212}, + {-1}, {-1}, +#line 301 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str660, ei_gb2312}, +#line 340 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_gb18030_2022}, + {-1}, {-1}, {-1}, {-1}, +#line 116 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_iso8859_7}, +#line 200 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_cp1256}, {-1}, +#line 260 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_tis620}, +#line 185 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_cp1251}, +#line 352 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_ces_big5}, #line 48 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str672, ei_ucs2internal}, -#line 185 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_cp1251}, {-1}, {-1}, {-1}, {-1}, -#line 320 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str678, ei_iso2022_jp}, - {-1}, {-1}, -#line 111 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, -#line 197 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_cp1255}, - {-1}, {-1}, {-1}, {-1}, -#line 200 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_cp1256}, +#line 351 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_ces_big5}, {-1}, {-1}, {-1}, -#line 360 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str695, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 359 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_big5hkscs2008}, - {-1}, -#line 289 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str703, ei_jisx0212}, +#line 282 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 281 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_jisx0208}, +#line 197 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_cp1255}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 124 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_iso8859_8}, + {-1}, {-1}, {-1}, {-1}, +#line 259 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 287 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_jisx0208}, +#line 345 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_hz}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 339 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_gb18030_2005}, #line 227 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str724, ei_mac_cyrillic}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_mac_cyrillic}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 37 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str730, ei_ucs4be}, #line 33 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str731, ei_ucs2le}, -#line 321 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str732, ei_iso2022_jp}, + {-1}, #line 38 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str733, ei_ucs4le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 340 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str740, ei_gb18030_2022}, - {-1}, -#line 37 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_ucs4be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 367 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_johab}, -#line 32 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_ucs2le}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 124 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str755, ei_iso8859_8}, - {-1}, {-1}, {-1}, #line 28 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_ucs2be}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_ucs2be}, + {-1}, {-1}, +#line 32 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_ucs2le}, +#line 279 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 40 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_utf16be}, + {-1}, +#line 29 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str770, ei_ucs2be}, +#line 41 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str771, ei_utf16le}, #line 194 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str772, ei_cp1254}, - {-1}, {-1}, -#line 279 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str775, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 360 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str777, ei_big5hkscs2008}, + {-1}, +#line 18 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str779, ei_ascii}, + {-1}, {-1}, {-1}, +#line 359 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_big5hkscs2008}, #line 312 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str784, ei_euc_jp}, + {-1}, {-1}, {-1}, +#line 281 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str788, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 41 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_utf16le}, - {-1}, {-1}, {-1}, {-1}, + {-1}, #line 252 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_mulelao}, {-1}, {-1}, {-1}, -#line 40 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_utf16be}, +#line 17 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 289 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str811, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 191 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_cp1253}, - {-1}, #line 51 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 229 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str827, ei_mac_greek}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str835, ei_ucs4swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str837, ei_ucs2swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 352 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 351 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_ces_big5}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 254 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_cp1133}, +#line 49 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_ucs2swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 223 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str870, ei_mac_centraleurope}, {-1}, {-1}, {-1}, #line 228 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str874, ei_mac_ukraine}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 270 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 254 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str880, ei_cp1133}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 357 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_big5hkscs2001}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 191 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_cp1253}, + {-1}, {-1}, +#line 358 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_big5hkscs2004}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 229 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_mac_greek}, {-1}, {-1}, +#line 361 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_big5hkscs2008}, + {-1}, {-1}, {-1}, +#line 356 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str913, ei_big5hkscs1999}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 238 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str919, ei_nextstep}, + {-1}, {-1}, {-1}, {-1}, #line 230 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_mac_turkish}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str924, ei_mac_turkish}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 43 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str939, ei_utf32be}, + {-1}, {-1}, +#line 44 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str942, ei_utf32le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 357 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_big5hkscs2001}, - {-1}, -#line 44 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str965, ei_utf32le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_utf32be}, - {-1}, -#line 358 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str976, ei_big5hkscs2004}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 361 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, -#line 356 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str989, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 203 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 231 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1052, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 203 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1062, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 231 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1111, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 209 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1135, ei_cp850}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 209 "lib/generated/aliases_syshpux.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1158, ei_cp850}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 313 "lib/generated/aliases_syshpux.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1164, ei_euc_jp} }; diff --git a/lib/generated/aliases_sysosf1.h b/lib/generated/aliases_sysosf1.h deleted file mode 100644 index 6167addc..00000000 --- a/lib/generated/aliases_sysosf1.h +++ /dev/null @@ -1,1749 +0,0 @@ -/* C++ code produced by gperf version 3.1 */ -/* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases_sysosf1.gperf */ -/* Computed positions: -k'1,3-11,$' */ - -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -/* The character set is not based on ISO-646. */ -#error "gperf generated tables don't work with this execution character set. Please report a bug to ." -#endif - -#line 1 "lib/generated/aliases_sysosf1.gperf" -struct alias { int name; unsigned int encoding_index; }; - -#define TOTAL_KEYWORDS 354 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 5 -#define MAX_HASH_VALUE 999 -/* maximum key range = 995, duplicates = 0 */ - -class HashPool -{ -private: - static inline unsigned int aliases_hash (const char *str, size_t len); -public: - static const struct alias *aliases_lookup (const char *str, size_t len); -}; - -inline unsigned int -HashPool::aliases_hash (const char *str, size_t len) -{ - static const unsigned short asso_values[] = - { - 1000,1000,1000,1000,1000,1000,1000,1000,1000,1000, - 1000,1000,1000,1000,1000,1000,1000,1000,1000,1000, - 1000,1000,1000,1000,1000,1000,1000,1000,1000,1000, - 1000,1000,1000,1000,1000,1000,1000,1000,1000,1000, - 1000,1000,1000,1000,1000, 0, 37,1000, 44, 2, - 16, 28, 9, 13, 5, 190, 20, 0, 242,1000, - 1000,1000,1000,1000,1000, 13, 212, 2, 19, 66, - 10, 134, 52, 88, 187, 190, 6, 142, 3, 0, - 99,1000, 0, 11, 118, 241, 170, 160, 367, 54, - 21,1000,1000,1000,1000, 1,1000,1000,1000,1000, - 1000,1000,1000,1000,1000,1000,1000,1000,1000,1000, - 1000,1000,1000,1000,1000,1000,1000,1000,1000,1000, - 1000,1000,1000,1000,1000,1000,1000,1000 - }; - unsigned int hval = len; - - switch (hval) - { - default: - hval += asso_values[static_cast(str[10])]; - /*FALLTHROUGH*/ - case 10: - hval += asso_values[static_cast(str[9])]; - /*FALLTHROUGH*/ - case 9: - hval += asso_values[static_cast(str[8])]; - /*FALLTHROUGH*/ - case 8: - hval += asso_values[static_cast(str[7])]; - /*FALLTHROUGH*/ - case 7: - hval += asso_values[static_cast(str[6])]; - /*FALLTHROUGH*/ - case 6: - hval += asso_values[static_cast(str[5])]; - /*FALLTHROUGH*/ - case 5: - hval += asso_values[static_cast(str[4])]; - /*FALLTHROUGH*/ - case 4: - hval += asso_values[static_cast(str[3])]; - /*FALLTHROUGH*/ - case 3: - hval += asso_values[static_cast(str[2])]; - /*FALLTHROUGH*/ - case 2: - case 1: - hval += asso_values[static_cast(str[0])]; - break; - } - return hval + asso_values[static_cast(str[len - 1])]; -} - -struct stringpool_t - { - char stringpool_str5[sizeof("C99")]; - char stringpool_str7[sizeof("CN")]; - char stringpool_str10[sizeof("L1")]; - char stringpool_str13[sizeof("L6")]; - char stringpool_str16[sizeof("CP949")]; - char stringpool_str17[sizeof("L4")]; - char stringpool_str21[sizeof("L5")]; - char stringpool_str22[sizeof("R8")]; - char stringpool_str24[sizeof("L2")]; - char stringpool_str28[sizeof("L8")]; - char stringpool_str29[sizeof("CP819")]; - char stringpool_str33[sizeof("866")]; - char stringpool_str36[sizeof("L3")]; - char stringpool_str40[sizeof("CP154")]; - char stringpool_str42[sizeof("CP866")]; - char stringpool_str43[sizeof("CP1251")]; - char stringpool_str44[sizeof("CP1131")]; - char stringpool_str45[sizeof("CP936")]; - char stringpool_str47[sizeof("CP1361")]; - char stringpool_str49[sizeof("CP1256")]; - char stringpool_str55[sizeof("862")]; - char stringpool_str57[sizeof("CP1254")]; - char stringpool_str64[sizeof("CP862")]; - char stringpool_str65[sizeof("CP1255")]; - char stringpool_str67[sizeof("CP932")]; - char stringpool_str71[sizeof("CP1252")]; - char stringpool_str75[sizeof("HZ")]; - char stringpool_str79[sizeof("CP1258")]; - char stringpool_str81[sizeof("EUCCN")]; - char stringpool_str82[sizeof("EUC-CN")]; - char stringpool_str95[sizeof("CP1253")]; - char stringpool_str96[sizeof("CP1133")]; - char stringpool_str97[sizeof("L10")]; - char stringpool_str101[sizeof("RK1048")]; - char stringpool_str102[sizeof("CP50221")]; - char stringpool_str108[sizeof("CP950")]; - char stringpool_str111[sizeof("850")]; - char stringpool_str124[sizeof("ISO646-CN")]; - char stringpool_str125[sizeof("SJIS")]; - char stringpool_str127[sizeof("CP1250")]; - char stringpool_str128[sizeof("CP850")]; - char stringpool_str137[sizeof("PT154")]; - char stringpool_str149[sizeof("MAC")]; - char stringpool_str150[sizeof("ISO8859-9")]; - char stringpool_str151[sizeof("ISO-8859-9")]; - char stringpool_str152[sizeof("ISO_8859-9")]; - char stringpool_str154[sizeof("ISO8859-1")]; - char stringpool_str155[sizeof("ISO-8859-1")]; - char stringpool_str156[sizeof("ISO_8859-1")]; - char stringpool_str157[sizeof("ISO8859-11")]; - char stringpool_str158[sizeof("ISO-8859-11")]; - char stringpool_str159[sizeof("ISO_8859-11")]; - char stringpool_str160[sizeof("ISO8859-6")]; - char stringpool_str161[sizeof("ISO-8859-6")]; - char stringpool_str162[sizeof("ISO_8859-6")]; - char stringpool_str163[sizeof("ISO8859-16")]; - char stringpool_str164[sizeof("ISO-8859-16")]; - char stringpool_str165[sizeof("ISO_8859-16")]; - char stringpool_str167[sizeof("ISO_8859-16:2001")]; - char stringpool_str168[sizeof("ISO8859-4")]; - char stringpool_str169[sizeof("ISO-8859-4")]; - char stringpool_str170[sizeof("ISO_8859-4")]; - char stringpool_str171[sizeof("ISO8859-14")]; - char stringpool_str172[sizeof("ISO-8859-14")]; - char stringpool_str173[sizeof("ISO_8859-14")]; - char stringpool_str176[sizeof("ISO8859-5")]; - char stringpool_str177[sizeof("ISO-8859-5")]; - char stringpool_str178[sizeof("ISO_8859-5")]; - char stringpool_str179[sizeof("ISO8859-15")]; - char stringpool_str180[sizeof("ISO-8859-15")]; - char stringpool_str181[sizeof("ISO_8859-15")]; - char stringpool_str182[sizeof("ISO8859-2")]; - char stringpool_str183[sizeof("ISO-8859-2")]; - char stringpool_str184[sizeof("ISO_8859-2")]; - char stringpool_str185[sizeof("MS936")]; - char stringpool_str188[sizeof("ISO-IR-199")]; - char stringpool_str189[sizeof("ISO_8859-14:1998")]; - char stringpool_str190[sizeof("ISO8859-8")]; - char stringpool_str191[sizeof("ISO-8859-8")]; - char stringpool_str192[sizeof("ISO_8859-8")]; - char stringpool_str193[sizeof("ISO_8859-15:1998")]; - char stringpool_str194[sizeof("ISO-IR-6")]; - char stringpool_str197[sizeof("ISO-IR-149")]; - char stringpool_str198[sizeof("L7")]; - char stringpool_str199[sizeof("ISO-2022-CN")]; - char stringpool_str201[sizeof("ISO-IR-159")]; - char stringpool_str202[sizeof("CYRILLIC")]; - char stringpool_str203[sizeof("ISO-IR-166")]; - char stringpool_str204[sizeof("ROMAN8")]; - char stringpool_str205[sizeof("ISO-IR-14")]; - char stringpool_str206[sizeof("ISO8859-3")]; - char stringpool_str207[sizeof("ISO-8859-3")]; - char stringpool_str208[sizeof("ISO_8859-3")]; - char stringpool_str209[sizeof("ISO8859-13")]; - char stringpool_str210[sizeof("ISO-8859-13")]; - char stringpool_str211[sizeof("ISO_8859-13")]; - char stringpool_str212[sizeof("CSISO2022CN")]; - char stringpool_str214[sizeof("ISO-IR-126")]; - char stringpool_str215[sizeof("ISO-IR-144")]; - char stringpool_str217[sizeof("MS-CYRL")]; - char stringpool_str218[sizeof("GB2312")]; - char stringpool_str219[sizeof("ISO-IR-165")]; - char stringpool_str220[sizeof("ISO_8859-10:1992")]; - char stringpool_str222[sizeof("LATIN-9")]; - char stringpool_str225[sizeof("LATIN1")]; - char stringpool_str228[sizeof("ISO-IR-226")]; - char stringpool_str231[sizeof("LATIN6")]; - char stringpool_str232[sizeof("ISO-IR-109")]; - char stringpool_str233[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str235[sizeof("CP874")]; - char stringpool_str236[sizeof("ISO-IR-101")]; - char stringpool_str237[sizeof("ISO-IR-148")]; - char stringpool_str238[sizeof("ISO-IR-58")]; - char stringpool_str239[sizeof("LATIN4")]; - char stringpool_str240[sizeof("PTCP154")]; - char stringpool_str241[sizeof("ISO8859-10")]; - char stringpool_str242[sizeof("ISO-8859-10")]; - char stringpool_str243[sizeof("ISO_8859-10")]; - char stringpool_str244[sizeof("TIS620")]; - char stringpool_str245[sizeof("TIS-620")]; - char stringpool_str246[sizeof("MULELAO-1")]; - char stringpool_str247[sizeof("LATIN5")]; - char stringpool_str248[sizeof("UHC")]; - char stringpool_str249[sizeof("ELOT_928")]; - char stringpool_str251[sizeof("ECMA-114")]; - char stringpool_str253[sizeof("LATIN2")]; - char stringpool_str254[sizeof("US")]; - char stringpool_str256[sizeof("ISO-IR-138")]; - char stringpool_str258[sizeof("IBM819")]; - char stringpool_str259[sizeof("HP-ROMAN8")]; - char stringpool_str261[sizeof("LATIN8")]; - char stringpool_str263[sizeof("EUCKR")]; - char stringpool_str264[sizeof("EUC-KR")]; - char stringpool_str265[sizeof("KSC5601")]; - char stringpool_str267[sizeof("KSC_5601")]; - char stringpool_str269[sizeof("UTF-16")]; - char stringpool_str271[sizeof("IBM866")]; - char stringpool_str273[sizeof("ECMA-118")]; - char stringpool_str274[sizeof("KS_C_5601-1989")]; - char stringpool_str275[sizeof("UCS-4")]; - char stringpool_str277[sizeof("LATIN3")]; - char stringpool_str278[sizeof("ISO-IR-110")]; - char stringpool_str280[sizeof("CSUCS4")]; - char stringpool_str281[sizeof("KOREAN")]; - char stringpool_str284[sizeof("ASCII")]; - char stringpool_str287[sizeof("JIS_C6226-1983")]; - char stringpool_str288[sizeof("JP")]; - char stringpool_str289[sizeof("UCS-2")]; - char stringpool_str290[sizeof("TIS620-0")]; - char stringpool_str291[sizeof("TIS620.2529-1")]; - char stringpool_str292[sizeof("KZ-1048")]; - char stringpool_str293[sizeof("IBM862")]; - char stringpool_str294[sizeof("DECHANZI")]; - char stringpool_str295[sizeof("GB_1988-80")]; - char stringpool_str296[sizeof("UTF-8")]; - char stringpool_str298[sizeof("TCVN")]; - char stringpool_str299[sizeof("CSASCII")]; - char stringpool_str301[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str302[sizeof("ISO-IR-203")]; - char stringpool_str304[sizeof("KOI8-R")]; - char stringpool_str305[sizeof("DECKOREAN")]; - char stringpool_str307[sizeof("CSKOI8R")]; - char stringpool_str309[sizeof("CHINESE")]; - char stringpool_str312[sizeof("LATIN10")]; - char stringpool_str313[sizeof("MACROMAN")]; - char stringpool_str315[sizeof("GB_2312-80")]; - char stringpool_str316[sizeof("CSKZ1048")]; - char stringpool_str317[sizeof("UTF-32")]; - char stringpool_str318[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str320[sizeof("ISO-IR-100")]; - char stringpool_str323[sizeof("GB18030")]; - char stringpool_str331[sizeof("TIS620.2533-1")]; - char stringpool_str336[sizeof("ARABIC")]; - char stringpool_str344[sizeof("CSISOLATIN1")]; - char stringpool_str345[sizeof("MS-EE")]; - char stringpool_str349[sizeof("JIS0208")]; - char stringpool_str350[sizeof("CSISOLATIN6")]; - char stringpool_str351[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str352[sizeof("MS-ANSI")]; - char stringpool_str354[sizeof("TACTIS")]; - char stringpool_str357[sizeof("IBM850")]; - char stringpool_str358[sizeof("CSISOLATIN4")]; - char stringpool_str360[sizeof("CSISOLATINARABIC")]; - char stringpool_str361[sizeof("CSHPROMAN8")]; - char stringpool_str362[sizeof("CSPTCP154")]; - char stringpool_str365[sizeof("STRK1048-2002")]; - char stringpool_str366[sizeof("CSISOLATIN5")]; - char stringpool_str370[sizeof("MACICELAND")]; - char stringpool_str372[sizeof("CSISOLATIN2")]; - char stringpool_str373[sizeof("TIS620.2533-0")]; - char stringpool_str376[sizeof("BIG5")]; - char stringpool_str377[sizeof("BIG-5")]; - char stringpool_str378[sizeof("ISO-IR-179")]; - char stringpool_str379[sizeof("ISO646-US")]; - char stringpool_str381[sizeof("ISO-2022-KR")]; - char stringpool_str382[sizeof("ISO-CELTIC")]; - char stringpool_str387[sizeof("JAVA")]; - char stringpool_str393[sizeof("ARMSCII-8")]; - char stringpool_str394[sizeof("CSISO2022KR")]; - char stringpool_str395[sizeof("MACCROATIAN")]; - char stringpool_str396[sizeof("CSISOLATIN3")]; - char stringpool_str398[sizeof("WINDOWS-1251")]; - char stringpool_str399[sizeof("ISO_8859-9:1989")]; - char stringpool_str401[sizeof("WINDOWS-1256")]; - char stringpool_str402[sizeof("WINDOWS-936")]; - char stringpool_str403[sizeof("MACCYRILLIC")]; - char stringpool_str404[sizeof("UTF-16LE")]; - char stringpool_str405[sizeof("WINDOWS-1254")]; - char stringpool_str406[sizeof("UCS-4LE")]; - char stringpool_str409[sizeof("WINDOWS-1255")]; - char stringpool_str412[sizeof("WINDOWS-1252")]; - char stringpool_str413[sizeof("UCS-2LE")]; - char stringpool_str415[sizeof("VISCII1.1-1")]; - char stringpool_str416[sizeof("WINDOWS-1258")]; - char stringpool_str417[sizeof("CSISO14JISC6220RO")]; - char stringpool_str418[sizeof("ISO-10646-UCS-4")]; - char stringpool_str419[sizeof("CP1257")]; - char stringpool_str420[sizeof("CP367")]; - char stringpool_str421[sizeof("ISO_646.IRV:1991")]; - char stringpool_str422[sizeof("X0212")]; - char stringpool_str424[sizeof("WINDOWS-1253")]; - char stringpool_str425[sizeof("ISO-10646-UCS-2")]; - char stringpool_str426[sizeof("MACROMANIA")]; - char stringpool_str428[sizeof("ISO_8859-4:1988")]; - char stringpool_str429[sizeof("IBM-CP1133")]; - char stringpool_str432[sizeof("ISO_8859-5:1988")]; - char stringpool_str433[sizeof("UNICODE-1-1")]; - char stringpool_str434[sizeof("CSGB2312")]; - char stringpool_str436[sizeof("X0201")]; - char stringpool_str437[sizeof("ASMO-708")]; - char stringpool_str438[sizeof("CSUNICODE11")]; - char stringpool_str439[sizeof("ISO_8859-8:1988")]; - char stringpool_str440[sizeof("WINDOWS-1250")]; - char stringpool_str441[sizeof("UTF-32LE")]; - char stringpool_str447[sizeof("ISO_8859-3:1988")]; - char stringpool_str453[sizeof("VISCII")]; - char stringpool_str457[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str458[sizeof("EUCJP")]; - char stringpool_str459[sizeof("EUC-JP")]; - char stringpool_str464[sizeof("KS_C_5601-1987")]; - char stringpool_str466[sizeof("CSISO159JISX02121990")]; - char stringpool_str468[sizeof("CSBIG5")]; - char stringpool_str469[sizeof("CN-BIG5")]; - char stringpool_str472[sizeof("X0208")]; - char stringpool_str474[sizeof("CSKSC56011987")]; - char stringpool_str477[sizeof("MACINTOSH")]; - char stringpool_str479[sizeof("MS-HEBR")]; - char stringpool_str481[sizeof("ISO-2022-JP-1")]; - char stringpool_str483[sizeof("MACARABIC")]; - char stringpool_str486[sizeof("HZ-GB-2312")]; - char stringpool_str487[sizeof("CSIBM866")]; - char stringpool_str491[sizeof("ISO-2022-JP-MS")]; - char stringpool_str494[sizeof("CSMACINTOSH")]; - char stringpool_str495[sizeof("ISO-2022-JP-2")]; - char stringpool_str496[sizeof("CSUNICODE")]; - char stringpool_str500[sizeof("MACCENTRALEUROPE")]; - char stringpool_str501[sizeof("ISO646-JP")]; - char stringpool_str502[sizeof("GREEK8")]; - char stringpool_str504[sizeof("GEORGIAN-PS")]; - char stringpool_str507[sizeof("CSISO2022JP2")]; - char stringpool_str508[sizeof("CSEUCKR")]; - char stringpool_str510[sizeof("MACTHAI")]; - char stringpool_str511[sizeof("EUCTW")]; - char stringpool_str512[sizeof("EUC-TW")]; - char stringpool_str517[sizeof("GBK")]; - char stringpool_str526[sizeof("TCVN5712-1")]; - char stringpool_str530[sizeof("ISO8859-7")]; - char stringpool_str531[sizeof("ISO-8859-7")]; - char stringpool_str532[sizeof("ISO_8859-7")]; - char stringpool_str533[sizeof("SHIFT-JIS")]; - char stringpool_str534[sizeof("SHIFT_JIS")]; - char stringpool_str537[sizeof("TCVN-5712")]; - char stringpool_str539[sizeof("US-ASCII")]; - char stringpool_str540[sizeof("KOI8-T")]; - char stringpool_str545[sizeof("CSVISCII")]; - char stringpool_str547[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str552[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str556[sizeof("UCS-4-INTERNAL")]; - char stringpool_str557[sizeof("CSISOLATINHEBREW")]; - char stringpool_str562[sizeof("CN-GB-ISOIR165")]; - char stringpool_str563[sizeof("UCS-2-INTERNAL")]; - char stringpool_str565[sizeof("CN-GB")]; - char stringpool_str575[sizeof("ANSI_X3.4-1986")]; - char stringpool_str576[sizeof("ISO-2022-JP")]; - char stringpool_str578[sizeof("ISO-IR-57")]; - char stringpool_str581[sizeof("ISO-IR-157")]; - char stringpool_str583[sizeof("CSISO58GB231280")]; - char stringpool_str584[sizeof("ISO-IR-127")]; - char stringpool_str585[sizeof("ISO-IR-87")]; - char stringpool_str586[sizeof("WINDOWS-1257")]; - char stringpool_str588[sizeof("CSSHIFTJIS")]; - char stringpool_str589[sizeof("CSISO2022JP")]; - char stringpool_str590[sizeof("ANSI_X3.4-1968")]; - char stringpool_str591[sizeof("ISO_8859-1:1987")]; - char stringpool_str592[sizeof("WINDOWS-874")]; - char stringpool_str594[sizeof("ISO_8859-6:1987")]; - char stringpool_str599[sizeof("MS-ARAB")]; - char stringpool_str601[sizeof("LATIN7")]; - char stringpool_str605[sizeof("ISO_8859-2:1987")]; - char stringpool_str610[sizeof("UTF-16BE")]; - char stringpool_str612[sizeof("UCS-4BE")]; - char stringpool_str617[sizeof("ISO_8859-7:2003")]; - char stringpool_str618[sizeof("GB18030:2022")]; - char stringpool_str619[sizeof("UCS-2BE")]; - char stringpool_str627[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str630[sizeof("CSUNICODE11UTF7")]; - char stringpool_str636[sizeof("UTF-7")]; - char stringpool_str643[sizeof("GB18030:2005")]; - char stringpool_str645[sizeof("BIG5HKSCS")]; - char stringpool_str646[sizeof("BIG5-HKSCS")]; - char stringpool_str647[sizeof("UTF-32BE")]; - char stringpool_str649[sizeof("IBM367")]; - char stringpool_str651[sizeof("GREEK")]; - char stringpool_str656[sizeof("HEBREW")]; - char stringpool_str657[sizeof("SDECKANJI")]; - char stringpool_str668[sizeof("CSISOLATINGREEK")]; - char stringpool_str669[sizeof("JIS_X0212")]; - char stringpool_str675[sizeof("UCS-4-SWAPPED")]; - char stringpool_str681[sizeof("JOHAB")]; - char stringpool_str682[sizeof("UCS-2-SWAPPED")]; - char stringpool_str683[sizeof("JIS_X0201")]; - char stringpool_str685[sizeof("CSISO57GB1988")]; - char stringpool_str691[sizeof("JISX0201-1976")]; - char stringpool_str704[sizeof("JIS_X0212-1990")]; - char stringpool_str712[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str713[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str719[sizeof("JIS_X0208")]; - char stringpool_str720[sizeof("MS_KANJI")]; - char stringpool_str734[sizeof("JIS_X0208-1983")]; - char stringpool_str743[sizeof("JIS_X0212.1990-0")]; - char stringpool_str750[sizeof("JIS_X0208-1990")]; - char stringpool_str753[sizeof("BIGFIVE")]; - char stringpool_str754[sizeof("BIG-FIVE")]; - char stringpool_str756[sizeof("CSEUCTW")]; - char stringpool_str779[sizeof("ISO_8859-7:1987")]; - char stringpool_str786[sizeof("KOI8-U")]; - char stringpool_str787[sizeof("KOI8-RU")]; - char stringpool_str796[sizeof("MS-GREEK")]; - char stringpool_str798[sizeof("MACGREEK")]; - char stringpool_str799[sizeof("TCVN5712-1:1993")]; - char stringpool_str821[sizeof("MACUKRAINE")]; - char stringpool_str825[sizeof("UNICODELITTLE")]; - char stringpool_str869[sizeof("MACHEBREW")]; - char stringpool_str882[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str884[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str888[sizeof("MS-TURK")]; - char stringpool_str889[sizeof("NEXTSTEP")]; - char stringpool_str891[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str894[sizeof("WINBALTRIM")]; - char stringpool_str902[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str906[sizeof("MACTURKISH")]; - char stringpool_str974[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str994[sizeof("UNICODEBIG")]; - char stringpool_str999[sizeof("CSISO87JISX0208")]; - }; -static const struct stringpool_t stringpool_contents = - { - "C99", - "CN", - "L1", - "L6", - "CP949", - "L4", - "L5", - "R8", - "L2", - "L8", - "CP819", - "866", - "L3", - "CP154", - "CP866", - "CP1251", - "CP1131", - "CP936", - "CP1361", - "CP1256", - "862", - "CP1254", - "CP862", - "CP1255", - "CP932", - "CP1252", - "HZ", - "CP1258", - "EUCCN", - "EUC-CN", - "CP1253", - "CP1133", - "L10", - "RK1048", - "CP50221", - "CP950", - "850", - "ISO646-CN", - "SJIS", - "CP1250", - "CP850", - "PT154", - "MAC", - "ISO8859-9", - "ISO-8859-9", - "ISO_8859-9", - "ISO8859-1", - "ISO-8859-1", - "ISO_8859-1", - "ISO8859-11", - "ISO-8859-11", - "ISO_8859-11", - "ISO8859-6", - "ISO-8859-6", - "ISO_8859-6", - "ISO8859-16", - "ISO-8859-16", - "ISO_8859-16", - "ISO_8859-16:2001", - "ISO8859-4", - "ISO-8859-4", - "ISO_8859-4", - "ISO8859-14", - "ISO-8859-14", - "ISO_8859-14", - "ISO8859-5", - "ISO-8859-5", - "ISO_8859-5", - "ISO8859-15", - "ISO-8859-15", - "ISO_8859-15", - "ISO8859-2", - "ISO-8859-2", - "ISO_8859-2", - "MS936", - "ISO-IR-199", - "ISO_8859-14:1998", - "ISO8859-8", - "ISO-8859-8", - "ISO_8859-8", - "ISO_8859-15:1998", - "ISO-IR-6", - "ISO-IR-149", - "L7", - "ISO-2022-CN", - "ISO-IR-159", - "CYRILLIC", - "ISO-IR-166", - "ROMAN8", - "ISO-IR-14", - "ISO8859-3", - "ISO-8859-3", - "ISO_8859-3", - "ISO8859-13", - "ISO-8859-13", - "ISO_8859-13", - "CSISO2022CN", - "ISO-IR-126", - "ISO-IR-144", - "MS-CYRL", - "GB2312", - "ISO-IR-165", - "ISO_8859-10:1992", - "LATIN-9", - "LATIN1", - "ISO-IR-226", - "LATIN6", - "ISO-IR-109", - "CYRILLIC-ASIAN", - "CP874", - "ISO-IR-101", - "ISO-IR-148", - "ISO-IR-58", - "LATIN4", - "PTCP154", - "ISO8859-10", - "ISO-8859-10", - "ISO_8859-10", - "TIS620", - "TIS-620", - "MULELAO-1", - "LATIN5", - "UHC", - "ELOT_928", - "ECMA-114", - "LATIN2", - "US", - "ISO-IR-138", - "IBM819", - "HP-ROMAN8", - "LATIN8", - "EUCKR", - "EUC-KR", - "KSC5601", - "KSC_5601", - "UTF-16", - "IBM866", - "ECMA-118", - "KS_C_5601-1989", - "UCS-4", - "LATIN3", - "ISO-IR-110", - "CSUCS4", - "KOREAN", - "ASCII", - "JIS_C6226-1983", - "JP", - "UCS-2", - "TIS620-0", - "TIS620.2529-1", - "KZ-1048", - "IBM862", - "DECHANZI", - "GB_1988-80", - "UTF-8", - "TCVN", - "CSASCII", - "JIS_C6220-1969-RO", - "ISO-IR-203", - "KOI8-R", - "DECKOREAN", - "CSKOI8R", - "CHINESE", - "LATIN10", - "MACROMAN", - "GB_2312-80", - "CSKZ1048", - "UTF-32", - "ISO-2022-CN-EXT", - "ISO-IR-100", - "GB18030", - "TIS620.2533-1", - "ARABIC", - "CSISOLATIN1", - "MS-EE", - "JIS0208", - "CSISOLATIN6", - "CSISOLATINCYRILLIC", - "MS-ANSI", - "TACTIS", - "IBM850", - "CSISOLATIN4", - "CSISOLATINARABIC", - "CSHPROMAN8", - "CSPTCP154", - "STRK1048-2002", - "CSISOLATIN5", - "MACICELAND", - "CSISOLATIN2", - "TIS620.2533-0", - "BIG5", - "BIG-5", - "ISO-IR-179", - "ISO646-US", - "ISO-2022-KR", - "ISO-CELTIC", - "JAVA", - "ARMSCII-8", - "CSISO2022KR", - "MACCROATIAN", - "CSISOLATIN3", - "WINDOWS-1251", - "ISO_8859-9:1989", - "WINDOWS-1256", - "WINDOWS-936", - "MACCYRILLIC", - "UTF-16LE", - "WINDOWS-1254", - "UCS-4LE", - "WINDOWS-1255", - "WINDOWS-1252", - "UCS-2LE", - "VISCII1.1-1", - "WINDOWS-1258", - "CSISO14JISC6220RO", - "ISO-10646-UCS-4", - "CP1257", - "CP367", - "ISO_646.IRV:1991", - "X0212", - "WINDOWS-1253", - "ISO-10646-UCS-2", - "MACROMANIA", - "ISO_8859-4:1988", - "IBM-CP1133", - "ISO_8859-5:1988", - "UNICODE-1-1", - "CSGB2312", - "X0201", - "ASMO-708", - "CSUNICODE11", - "ISO_8859-8:1988", - "WINDOWS-1250", - "UTF-32LE", - "ISO_8859-3:1988", - "VISCII", - "GEORGIAN-ACADEMY", - "EUCJP", - "EUC-JP", - "KS_C_5601-1987", - "CSISO159JISX02121990", - "CSBIG5", - "CN-BIG5", - "X0208", - "CSKSC56011987", - "MACINTOSH", - "MS-HEBR", - "ISO-2022-JP-1", - "MACARABIC", - "HZ-GB-2312", - "CSIBM866", - "ISO-2022-JP-MS", - "CSMACINTOSH", - "ISO-2022-JP-2", - "CSUNICODE", - "MACCENTRALEUROPE", - "ISO646-JP", - "GREEK8", - "GEORGIAN-PS", - "CSISO2022JP2", - "CSEUCKR", - "MACTHAI", - "EUCTW", - "EUC-TW", - "GBK", - "TCVN5712-1", - "ISO8859-7", - "ISO-8859-7", - "ISO_8859-7", - "SHIFT-JIS", - "SHIFT_JIS", - "TCVN-5712", - "US-ASCII", - "KOI8-T", - "CSVISCII", - "CSPC862LATINHEBREW", - "CSHALFWIDTHKATAKANA", - "UCS-4-INTERNAL", - "CSISOLATINHEBREW", - "CN-GB-ISOIR165", - "UCS-2-INTERNAL", - "CN-GB", - "ANSI_X3.4-1986", - "ISO-2022-JP", - "ISO-IR-57", - "ISO-IR-157", - "CSISO58GB231280", - "ISO-IR-127", - "ISO-IR-87", - "WINDOWS-1257", - "CSSHIFTJIS", - "CSISO2022JP", - "ANSI_X3.4-1968", - "ISO_8859-1:1987", - "WINDOWS-874", - "ISO_8859-6:1987", - "MS-ARAB", - "LATIN7", - "ISO_8859-2:1987", - "UTF-16BE", - "UCS-4BE", - "ISO_8859-7:2003", - "GB18030:2022", - "UCS-2BE", - "UNICODE-1-1-UTF-7", - "CSUNICODE11UTF7", - "UTF-7", - "GB18030:2005", - "BIG5HKSCS", - "BIG5-HKSCS", - "UTF-32BE", - "IBM367", - "GREEK", - "HEBREW", - "SDECKANJI", - "CSISOLATINGREEK", - "JIS_X0212", - "UCS-4-SWAPPED", - "JOHAB", - "UCS-2-SWAPPED", - "JIS_X0201", - "CSISO57GB1988", - "JISX0201-1976", - "JIS_X0212-1990", - "CSPC850MULTILINGUAL", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "JIS_X0208", - "MS_KANJI", - "JIS_X0208-1983", - "JIS_X0212.1990-0", - "JIS_X0208-1990", - "BIGFIVE", - "BIG-FIVE", - "CSEUCTW", - "ISO_8859-7:1987", - "KOI8-U", - "KOI8-RU", - "MS-GREEK", - "MACGREEK", - "TCVN5712-1:1993", - "MACUKRAINE", - "UNICODELITTLE", - "MACHEBREW", - "BIG5-HKSCS:1999", - "BIG5-HKSCS:2001", - "MS-TURK", - "NEXTSTEP", - "BIG5-HKSCS:2004", - "WINBALTRIM", - "BIG5-HKSCS:2008", - "MACTURKISH", - "CSEUCPKDFMTJAPANESE", - "UNICODEBIG", - "CSISO87JISX0208" - }; -#define stringpool ((const char *) &stringpool_contents) - -static const struct alias aliases[] = - { - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 51 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str5, ei_c99}, - {-1}, -#line 289 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str7, ei_iso646_cn}, - {-1}, {-1}, -#line 60 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str10, ei_iso8859_1}, - {-1}, {-1}, -#line 134 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str13, ei_iso8859_10}, - {-1}, {-1}, -#line 359 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str16, ei_cp949}, -#line 84 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str17, ei_iso8859_4}, - {-1}, {-1}, {-1}, -#line 126 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_iso8859_9}, -#line 227 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_hp_roman8}, - {-1}, -#line 68 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str24, ei_iso8859_2}, - {-1}, {-1}, {-1}, -#line 151 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_iso8859_14}, -#line 57 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str29, ei_iso8859_1}, - {-1}, {-1}, {-1}, -#line 207 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str33, ei_cp866}, - {-1}, {-1}, -#line 76 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_iso8859_3}, - {-1}, {-1}, {-1}, -#line 236 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_pt154}, - {-1}, -#line 205 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str42, ei_cp866}, -#line 174 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str43, ei_cp1251}, -#line 209 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_cp1131}, -#line 328 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_cp936}, - {-1}, -#line 363 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str47, ei_johab}, - {-1}, -#line 189 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_cp1256}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 203 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_cp862}, - {-1}, -#line 183 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_cp1254}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 201 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_cp862}, -#line 186 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_cp1255}, - {-1}, -#line 312 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_cp932}, - {-1}, {-1}, {-1}, -#line 177 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_cp1252}, - {-1}, {-1}, {-1}, -#line 337 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_hz}, - {-1}, {-1}, {-1}, -#line 195 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_cp1258}, - {-1}, -#line 321 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str81, ei_euc_cn}, -#line 320 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str82, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 180 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_cp1253}, -#line 244 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_cp1133}, -#line 165 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str97, ei_iso8859_16}, - {-1}, {-1}, {-1}, -#line 239 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str101, ei_rk1048}, -#line 319 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_iso2022_jpms}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 348 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_cp950}, - {-1}, {-1}, -#line 199 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str111, ei_cp850}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 287 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_iso646_cn}, -#line 309 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_sjis}, - {-1}, -#line 171 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, ei_cp1250}, -#line 197 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str128, ei_cp850}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 234 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, ei_pt154}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 212 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str149, ei_mac_roman}, -#line 128 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_iso8859_9}, -#line 121 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_9}, -#line 122 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_iso8859_9}, - {-1}, -#line 62 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_iso8859_1}, -#line 53 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_iso8859_1}, -#line 54 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_iso8859_1}, -#line 139 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str157, ei_iso8859_11}, -#line 137 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_11}, -#line 138 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_iso8859_11}, -#line 102 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_iso8859_6}, -#line 94 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_iso8859_6}, -#line 95 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_6}, -#line 166 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_16}, -#line 160 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_iso8859_16}, -#line 161 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_iso8859_16}, - {-1}, -#line 162 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_16}, -#line 86 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_iso8859_4}, -#line 79 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_iso8859_4}, -#line 80 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_iso8859_4}, -#line 153 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, ei_iso8859_14}, -#line 146 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_iso8859_14}, -#line 147 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_iso8859_14}, - {-1}, {-1}, -#line 93 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, ei_iso8859_5}, -#line 87 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str177, ei_iso8859_5}, -#line 88 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str178, ei_iso8859_5}, -#line 159 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_iso8859_15}, -#line 154 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_iso8859_15}, -#line 155 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_iso8859_15}, -#line 70 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str182, ei_iso8859_2}, -#line 63 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_iso8859_2}, -#line 64 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_iso8859_2}, -#line 329 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str185, ei_cp936}, - {-1}, {-1}, -#line 149 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso8859_14}, -#line 148 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_iso8859_14}, -#line 120 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_iso8859_8}, -#line 114 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str191, ei_iso8859_8}, -#line 115 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_iso8859_8}, -#line 156 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str193, ei_iso8859_15}, -#line 16 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_ascii}, - {-1}, {-1}, -#line 299 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_ksc5601}, -#line 144 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_iso8859_13}, -#line 334 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_iso2022_cn}, - {-1}, -#line 284 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_jisx0212}, -#line 91 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_iso8859_5}, -#line 252 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_tis620}, -#line 226 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_hp_roman8}, -#line 265 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str205, ei_iso646_jp}, -#line 78 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, ei_iso8859_3}, -#line 71 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_iso8859_3}, -#line 72 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_iso8859_3}, -#line 145 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_iso8859_13}, -#line 140 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_iso8859_13}, -#line 141 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str211, ei_iso8859_13}, -#line 335 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_iso2022_cn}, - {-1}, -#line 107 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_iso8859_7}, -#line 90 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, ei_iso8859_5}, - {-1}, -#line 176 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_cp1251}, -#line 322 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str218, ei_euc_cn}, -#line 294 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_isoir165}, -#line 131 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_iso8859_10}, - {-1}, -#line 158 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str222, ei_iso8859_15}, - {-1}, {-1}, -#line 59 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_iso8859_1}, - {-1}, {-1}, -#line 163 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_iso8859_16}, - {-1}, {-1}, -#line 133 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_iso8859_10}, -#line 74 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_iso8859_3}, -#line 237 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_pt154}, - {-1}, -#line 254 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str235, ei_cp874}, -#line 66 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_iso8859_2}, -#line 124 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_iso8859_9}, -#line 292 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_gb2312}, -#line 83 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_iso8859_4}, -#line 235 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_pt154}, -#line 136 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_iso8859_10}, -#line 129 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, ei_iso8859_10}, -#line 130 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_iso8859_10}, -#line 247 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_tis620}, -#line 246 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_tis620}, -#line 243 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_mulelao}, -#line 125 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_iso8859_9}, -#line 360 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_cp949}, -#line 109 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_iso8859_7}, - {-1}, -#line 98 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_iso8859_6}, - {-1}, -#line 67 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_iso8859_2}, -#line 21 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_ascii}, - {-1}, -#line 117 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_iso8859_8}, - {-1}, -#line 58 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str258, ei_iso8859_1}, -#line 225 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_hp_roman8}, - {-1}, -#line 150 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_iso8859_14}, - {-1}, -#line 356 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_euc_kr}, -#line 355 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_euc_kr}, -#line 361 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_cp949}, - {-1}, -#line 296 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_ksc5601}, - {-1}, -#line 38 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_utf16}, - {-1}, -#line 206 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_cp866}, - {-1}, -#line 108 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_iso8859_7}, -#line 298 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_ksc5601}, -#line 33 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str275, ei_ucs4}, - {-1}, -#line 75 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_iso8859_3}, -#line 82 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_iso8859_4}, - {-1}, -#line 35 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_ucs4}, -#line 301 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_ksc5601}, - {-1}, {-1}, -#line 13 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_ascii}, - {-1}, {-1}, -#line 278 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_jisx0208}, -#line 266 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_iso646_jp}, -#line 24 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_ucs2}, -#line 248 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_tis620}, -#line 249 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str291, ei_tis620}, -#line 241 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_rk1048}, -#line 202 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_cp862}, -#line 326 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str294, ei_euc_cn}, -#line 286 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_iso646_cn}, -#line 23 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_utf8}, - {-1}, -#line 259 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str298, ei_tcvn}, -#line 22 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_ascii}, - {-1}, -#line 263 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_iso646_jp}, -#line 157 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_iso8859_15}, - {-1}, -#line 167 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_koi8_r}, -#line 358 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_euc_kr}, - {-1}, -#line 168 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_koi8_r}, - {-1}, -#line 325 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_euc_cn}, - {-1}, {-1}, -#line 164 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_iso8859_16}, -#line 210 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_mac_roman}, - {-1}, -#line 291 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_gb2312}, -#line 242 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_rk1048}, -#line 41 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_utf32}, -#line 336 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_iso2022_cn_ext}, - {-1}, -#line 56 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_iso8859_1}, - {-1}, {-1}, -#line 331 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_gb18030_2005}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 251 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, -#line 100 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 61 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_iso8859_1}, -#line 173 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_cp1250}, - {-1}, {-1}, {-1}, -#line 275 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_jisx0208}, -#line 135 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_iso8859_10}, -#line 92 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_iso8859_5}, -#line 179 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_cp1252}, - {-1}, -#line 253 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_tis620}, - {-1}, {-1}, -#line 198 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_cp850}, -#line 85 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_iso8859_4}, - {-1}, -#line 101 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_iso8859_6}, -#line 228 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_hp_roman8}, -#line 238 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_pt154}, - {-1}, {-1}, -#line 240 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_rk1048}, -#line 127 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_iso8859_9}, - {-1}, {-1}, {-1}, -#line 215 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_mac_iceland}, - {-1}, -#line 69 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_iso8859_2}, -#line 250 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_tis620}, - {-1}, {-1}, -#line 342 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str376, ei_ces_big5}, -#line 343 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_ces_big5}, -#line 142 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_iso8859_13}, -#line 14 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str379, ei_ascii}, - {-1}, -#line 364 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_iso2022_kr}, -#line 152 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str382, ei_iso8859_14}, - {-1}, {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_java}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 230 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_armscii_8}, -#line 365 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_iso2022_kr}, -#line 216 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_mac_croatian}, -#line 77 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_iso8859_3}, - {-1}, -#line 175 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_cp1251}, -#line 123 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_iso8859_9}, - {-1}, -#line 190 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_cp1256}, -#line 330 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_cp936}, -#line 218 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_mac_cyrillic}, -#line 40 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_utf16le}, -#line 184 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_cp1254}, -#line 37 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_ucs4le}, - {-1}, {-1}, -#line 187 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_cp1255}, - {-1}, {-1}, -#line 178 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1252}, -#line 31 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_ucs2le}, - {-1}, -#line 257 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_viscii}, -#line 196 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_cp1258}, -#line 267 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_iso646_jp}, -#line 34 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_ucs4}, -#line 192 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp1257}, -#line 19 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_ascii}, -#line 15 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ascii}, -#line 283 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_jisx0212}, - {-1}, -#line 181 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_cp1253}, -#line 25 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_ucs2}, -#line 217 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_mac_romania}, - {-1}, -#line 81 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_iso8859_4}, -#line 245 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_cp1133}, - {-1}, {-1}, -#line 89 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_iso8859_5}, -#line 29 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_ucs2be}, -#line 324 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_euc_cn}, - {-1}, -#line 270 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str436, ei_jisx0201}, -#line 99 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_iso8859_6}, -#line 30 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_ucs2be}, -#line 116 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso8859_8}, -#line 172 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_cp1250}, -#line 43 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_utf32le}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 73 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 256 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_viscii}, - {-1}, {-1}, {-1}, -#line 231 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_georgian_academy}, -#line 303 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_euc_jp}, -#line 302 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, -#line 297 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_ksc5601}, - {-1}, -#line 285 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_jisx0212}, - {-1}, -#line 347 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_ces_big5}, -#line 346 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_ces_big5}, - {-1}, {-1}, -#line 276 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_jisx0208}, - {-1}, -#line 300 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str474, ei_ksc5601}, - {-1}, {-1}, -#line 211 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_mac_roman}, - {-1}, -#line 188 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_cp1255}, - {-1}, -#line 315 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_iso2022_jp1}, - {-1}, -#line 223 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_mac_arabic}, - {-1}, {-1}, -#line 338 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_hz}, -#line 208 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_cp866}, - {-1}, {-1}, {-1}, -#line 318 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_iso2022_jpms}, - {-1}, {-1}, -#line 213 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_mac_roman}, -#line 316 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_iso2022_jp2}, -#line 26 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ucs2}, - {-1}, {-1}, {-1}, -#line 214 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_mac_centraleurope}, -#line 264 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_iso646_jp}, -#line 110 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_iso8859_7}, - {-1}, -#line 232 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_georgian_ps}, - {-1}, {-1}, -#line 317 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_iso2022_jp2}, -#line 357 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_euc_kr}, - {-1}, -#line 224 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_mac_thai}, -#line 340 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_euc_tw}, -#line 339 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, -#line 327 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str517, ei_ces_gbk}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 261 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_tcvn}, - {-1}, {-1}, {-1}, -#line 113 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_iso8859_7}, -#line 103 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_iso8859_7}, -#line 104 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_iso8859_7}, -#line 308 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_sjis}, -#line 307 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_sjis}, - {-1}, {-1}, -#line 260 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_tcvn}, - {-1}, -#line 12 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str539, ei_ascii}, -#line 233 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str540, ei_koi8_t}, - {-1}, {-1}, {-1}, {-1}, -#line 258 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_viscii}, - {-1}, -#line 204 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_cp862}, - {-1}, {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_jisx0201}, - {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_ucs4internal}, -#line 119 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, -#line 295 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_isoir165}, -#line 47 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_ucs2internal}, - {-1}, -#line 323 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 18 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_ascii}, -#line 313 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso2022_jp}, - {-1}, -#line 288 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str578, ei_iso646_cn}, - {-1}, {-1}, -#line 132 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str581, ei_iso8859_10}, - {-1}, -#line 293 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_gb2312}, -#line 97 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str584, ei_iso8859_6}, -#line 277 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str585, ei_jisx0208}, -#line 193 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str586, ei_cp1257}, - {-1}, -#line 311 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_sjis}, -#line 314 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str589, ei_iso2022_jp}, -#line 17 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_ascii}, -#line 55 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_iso8859_1}, -#line 255 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_cp874}, - {-1}, -#line 96 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, -#line 191 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_cp1256}, - {-1}, -#line 143 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str601, ei_iso8859_13}, - {-1}, {-1}, {-1}, -#line 65 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, -#line 39 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_utf16be}, - {-1}, -#line 36 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_ucs4be}, - {-1}, {-1}, {-1}, {-1}, -#line 106 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_iso8859_7}, -#line 333 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_gb18030_2022}, -#line 27 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str619, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 45 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_utf7}, - {-1}, {-1}, -#line 46 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 44 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 332 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_gb18030_2005}, - {-1}, -#line 353 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_big5hkscs2008}, -#line 352 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_big5hkscs2008}, -#line 42 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_utf32be}, - {-1}, -#line 20 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str649, ei_ascii}, - {-1}, -#line 111 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str651, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str656, ei_iso8859_8}, -#line 306 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 112 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str668, ei_iso8859_7}, -#line 280 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 50 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str675, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 362 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_johab}, -#line 48 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_ucs2swapped}, -#line 268 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_jisx0201}, - {-1}, -#line 290 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_iso646_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 269 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 282 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 200 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_cp850}, -#line 304 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 272 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str719, ei_jisx0208}, -#line 310 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 273 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str734, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 281 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str743, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 274 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_jisx0208}, - {-1}, {-1}, -#line 345 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str753, ei_ces_big5}, -#line 344 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str754, ei_ces_big5}, - {-1}, -#line 341 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str756, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 105 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str779, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 169 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str786, ei_koi8_u}, -#line 170 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_koi8_ru}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 182 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str796, ei_cp1253}, - {-1}, -#line 220 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str798, ei_mac_greek}, -#line 262 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 219 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str821, ei_mac_ukraine}, - {-1}, {-1}, {-1}, -#line 32 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_ucs2le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 222 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str869, ei_mac_hebrew}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 349 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_big5hkscs1999}, - {-1}, -#line 350 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, -#line 185 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str888, ei_cp1254}, -#line 229 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_nextstep}, - {-1}, -#line 351 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_big5hkscs2004}, - {-1}, {-1}, -#line 194 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 354 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str902, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, -#line 221 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_mac_turkish}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 305 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 28 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, -#line 279 "lib/generated/aliases_sysosf1.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str999, ei_jisx0208} - }; - -const struct alias * -HashPool::aliases_lookup (const char *str, size_t len) -{ - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - unsigned int key = aliases_hash (str, len); - - if (key <= MAX_HASH_VALUE) - { - int o = aliases[key].name; - if (o >= 0) - { - const char *s = o + stringpool; - - if (*str == *s && !strcmp (str + 1, s + 1)) - return &aliases[key]; - } - } - } - return 0; -} diff --git a/lib/generated/aliases_syssolaris.h b/lib/generated/aliases_syssolaris.h index b7ecc950..940bbc8e 100644 --- a/lib/generated/aliases_syssolaris.h +++ b/lib/generated/aliases_syssolaris.h @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases_syssolaris.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 356 +#define TOTAL_KEYWORDS 360 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 #define MIN_HASH_VALUE 6 -#define MAX_HASH_VALUE 919 -/* maximum key range = 914, duplicates = 0 */ +#define MAX_HASH_VALUE 942 +/* maximum key range = 937, duplicates = 0 */ class HashPool { @@ -52,19 +52,19 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 10, 1, 920, 29, 0, - 5, 74, 47, 2, 1, 150, 4, 11, 271, 920, - 920, 920, 920, 920, 920, 60, 172, 1, 3, 71, - 164, 91, 54, 0, 205, 108, 135, 85, 8, 0, - 145, 920, 41, 74, 8, 74, 227, 141, 174, 7, - 2, 920, 920, 920, 920, 70, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920 + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 10, 139, 943, 29, 0, + 5, 74, 47, 2, 1, 150, 4, 11, 193, 943, + 943, 943, 943, 943, 943, 60, 226, 1, 3, 71, + 106, 122, 70, 0, 216, 108, 135, 85, 8, 0, + 55, 943, 41, 74, 8, 74, 205, 160, 174, 66, + 3, 943, 943, 943, 943, 70, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943 }; unsigned int hval = len; @@ -137,7 +137,6 @@ struct stringpool_t char stringpool_str54[sizeof("ISO-8859-16")]; char stringpool_str55[sizeof("ISO-8859-5")]; char stringpool_str56[sizeof("ISO-8859-15")]; - char stringpool_str58[sizeof("HZ")]; char stringpool_str59[sizeof("ISO-8859-8")]; char stringpool_str61[sizeof("ISO-8859-2")]; char stringpool_str62[sizeof("ISO8859-9")]; @@ -148,6 +147,7 @@ struct stringpool_t char stringpool_str72[sizeof("CP1250")]; char stringpool_str73[sizeof("ISO-8859-9")]; char stringpool_str74[sizeof("ISO-IR-166")]; + char stringpool_str75[sizeof("HZ")]; char stringpool_str76[sizeof("ISO-IR-165")]; char stringpool_str77[sizeof("CP950")]; char stringpool_str78[sizeof("ISO-IR-126")]; @@ -207,8 +207,8 @@ struct stringpool_t char stringpool_str151[sizeof("ISO_8859-10:1992")]; char stringpool_str152[sizeof("TIS620")]; char stringpool_str153[sizeof("ISO-IR-138")]; - char stringpool_str154[sizeof("TIS620.2529-1")]; char stringpool_str155[sizeof("IBM850")]; + char stringpool_str156[sizeof("PT154")]; char stringpool_str157[sizeof("LATIN1")]; char stringpool_str158[sizeof("ISO-IR-100")]; char stringpool_str159[sizeof("LATIN6")]; @@ -227,7 +227,6 @@ struct stringpool_t char stringpool_str180[sizeof("UNICODE-1-1")]; char stringpool_str181[sizeof("ELOT_928")]; char stringpool_str184[sizeof("L4")]; - char stringpool_str186[sizeof("GB2312")]; char stringpool_str188[sizeof("ISO8859-3")]; char stringpool_str189[sizeof("ISO8859-13")]; char stringpool_str190[sizeof("LATIN-9")]; @@ -235,10 +234,12 @@ struct stringpool_t char stringpool_str193[sizeof("TIS620-0")]; char stringpool_str194[sizeof("X0212")]; char stringpool_str196[sizeof("L10")]; + char stringpool_str198[sizeof("UTF-16")]; char stringpool_str199[sizeof("ISO-8859-3")]; char stringpool_str200[sizeof("ISO-8859-13")]; char stringpool_str202[sizeof("CSKOI8R")]; - char stringpool_str203[sizeof("CSKZ1048")]; + char stringpool_str203[sizeof("UTF-8")]; + char stringpool_str204[sizeof("CSKZ1048")]; char stringpool_str205[sizeof("ISO_8859-4")]; char stringpool_str206[sizeof("ISO_8859-14")]; char stringpool_str208[sizeof("ROMAN8")]; @@ -247,222 +248,225 @@ struct stringpool_t char stringpool_str211[sizeof("L3")]; char stringpool_str212[sizeof("ISO-IR-144")]; char stringpool_str213[sizeof("X0201")]; - char stringpool_str215[sizeof("MACTHAI")]; + char stringpool_str214[sizeof("PTCP154")]; char stringpool_str216[sizeof("LATIN10")]; + char stringpool_str217[sizeof("GB2312")]; char stringpool_str219[sizeof("KSC_5601")]; char stringpool_str221[sizeof("X0208")]; + char stringpool_str225[sizeof("CSPTCP154")]; char stringpool_str226[sizeof("SJIS")]; char stringpool_str227[sizeof("US-ASCII")]; char stringpool_str229[sizeof("CP1133")]; + char stringpool_str231[sizeof("MACTHAI")]; + char stringpool_str233[sizeof("TCVN")]; char stringpool_str234[sizeof("ISO-10646-UCS-4")]; char stringpool_str237[sizeof("ISO-CELTIC")]; char stringpool_str238[sizeof("CSUNICODE")]; char stringpool_str242[sizeof("ECMA-118")]; char stringpool_str243[sizeof("ISO-IR-179")]; char stringpool_str244[sizeof("MS-ANSI")]; - char stringpool_str246[sizeof("PT154")]; char stringpool_str247[sizeof("ARMSCII-8")]; char stringpool_str250[sizeof("CSUCS4")]; char stringpool_str251[sizeof("LATIN4")]; char stringpool_str253[sizeof("ISO-IR-203")]; char stringpool_str254[sizeof("CP874")]; - char stringpool_str255[sizeof("TCVN")]; - char stringpool_str256[sizeof("UTF-16")]; char stringpool_str257[sizeof("UCS-4")]; char stringpool_str259[sizeof("ISO_8859-3")]; char stringpool_str260[sizeof("ISO_8859-13")]; - char stringpool_str261[sizeof("UTF-8")]; - char stringpool_str262[sizeof("GB_1988-80")]; - char stringpool_str263[sizeof("GB18030")]; char stringpool_str265[sizeof("ISO-2022-KR")]; char stringpool_str267[sizeof("EUCKR")]; - char stringpool_str271[sizeof("BIG5")]; - char stringpool_str273[sizeof("CSIBM866")]; - char stringpool_str274[sizeof("CSBIG5")]; - char stringpool_str275[sizeof("HP-ROMAN8")]; + char stringpool_str273[sizeof("JP")]; + char stringpool_str274[sizeof("PCK")]; char stringpool_str276[sizeof("KOI8-U")]; char stringpool_str278[sizeof("EUC-KR")]; char stringpool_str279[sizeof("CNS11643")]; - char stringpool_str282[sizeof("BIG-5")]; + char stringpool_str280[sizeof("UTF-32")]; char stringpool_str283[sizeof("MACCROATIAN")]; - char stringpool_str285[sizeof("CN-BIG5")]; - char stringpool_str286[sizeof("TIS620.2533-1")]; + char stringpool_str286[sizeof("VISCII")]; char stringpool_str287[sizeof("L7")]; + char stringpool_str289[sizeof("CSVISCII")]; char stringpool_str290[sizeof("ISO646-US")]; - char stringpool_str293[sizeof("MACINTOSH")]; + char stringpool_str291[sizeof("HP-ROMAN8")]; + char stringpool_str292[sizeof("TIS620.2529-1")]; + char stringpool_str293[sizeof("GB_1988-80")]; + char stringpool_str294[sizeof("GB18030")]; char stringpool_str296[sizeof("MACROMAN")]; char stringpool_str297[sizeof("CSISOLATIN1")]; char stringpool_str299[sizeof("CSISOLATIN6")]; - char stringpool_str300[sizeof("ARABIC")]; char stringpool_str301[sizeof("CSISOLATIN5")]; char stringpool_str302[sizeof("KOREAN")]; char stringpool_str303[sizeof("CHINESE")]; char stringpool_str305[sizeof("LATIN3")]; char stringpool_str306[sizeof("CSISOLATINCYRILLIC")]; char stringpool_str307[sizeof("CSISOLATIN2")]; - char stringpool_str308[sizeof("VISCII")]; - char stringpool_str310[sizeof("GBK")]; - char stringpool_str311[sizeof("CSVISCII")]; char stringpool_str313[sizeof("MS-EE")]; char stringpool_str314[sizeof("CP1257")]; - char stringpool_str315[sizeof("TIS620.2533-0")]; + char stringpool_str315[sizeof("ISO_8859-5:1988")]; char stringpool_str316[sizeof("KS_C_5601-1989")]; + char stringpool_str317[sizeof("ISO_8859-8:1988")]; char stringpool_str318[sizeof("KOI8-RU")]; char stringpool_str320[sizeof("CSISO2022KR")]; char stringpool_str322[sizeof("CYRILLIC")]; char stringpool_str323[sizeof("CSUNICODE11UTF7")]; - char stringpool_str324[sizeof("VISCII1.1-1")]; - char stringpool_str327[sizeof("GB_2312-80")]; + char stringpool_str325[sizeof("MACINTOSH")]; + char stringpool_str327[sizeof("CSIBM866")]; char stringpool_str328[sizeof("ECMA-114")]; + char stringpool_str331[sizeof("ISO_8859-9:1989")]; char stringpool_str336[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str338[sizeof("UTF-32")]; + char stringpool_str338[sizeof("CSHPROMAN8")]; char stringpool_str340[sizeof("ISO8859-7")]; + char stringpool_str341[sizeof("GBK")]; char stringpool_str344[sizeof("CSEUCKR")]; + char stringpool_str348[sizeof("ISO-2022-JP-1")]; char stringpool_str350[sizeof("ASMO-708")]; char stringpool_str351[sizeof("ISO-8859-7")]; - char stringpool_str352[sizeof("JP")]; - char stringpool_str355[sizeof("GREEK8")]; - char stringpool_str356[sizeof("CSMACINTOSH")]; - char stringpool_str357[sizeof("JIS0208")]; - char stringpool_str358[sizeof("TIS620.2533")]; - char stringpool_str361[sizeof("CSGB2312")]; + char stringpool_str353[sizeof("ISO-2022-JP-2")]; + char stringpool_str354[sizeof("ARABIC")]; + char stringpool_str356[sizeof("BIG5")]; + char stringpool_str358[sizeof("GB_2312-80")]; + char stringpool_str359[sizeof("CSBIG5")]; + char stringpool_str360[sizeof("ISO_8859-4:1988")]; char stringpool_str363[sizeof("CSISOLATINARABIC")]; - char stringpool_str364[sizeof("PCK")]; + char stringpool_str364[sizeof("DECHANYU")]; char stringpool_str365[sizeof("STRK1048-2002")]; - char stringpool_str367[sizeof("EUCTW")]; + char stringpool_str367[sizeof("BIG-5")]; + char stringpool_str368[sizeof("JIS0208")]; + char stringpool_str370[sizeof("CN-BIG5")]; char stringpool_str372[sizeof("ISO-IR-57")]; char stringpool_str373[sizeof("ISO-IR-157")]; char stringpool_str374[sizeof("ISO-IR-87")]; + char stringpool_str375[sizeof("DEC-HANYU")]; char stringpool_str376[sizeof("ISO-IR-127")]; char stringpool_str377[sizeof("MACICELAND")]; - char stringpool_str378[sizeof("EUC-TW")]; char stringpool_str381[sizeof("CP367")]; + char stringpool_str383[sizeof("IBM-CP1133")]; char stringpool_str384[sizeof("UNICODELITTLE")]; - char stringpool_str385[sizeof("GEORGIAN-ACADEMY")]; + char stringpool_str386[sizeof("GREEK8")]; + char stringpool_str387[sizeof("ISO_8859-3:1988")]; + char stringpool_str388[sizeof("CSMACINTOSH")]; char stringpool_str390[sizeof("CSKSC56011987")]; char stringpool_str391[sizeof("CSISOLATIN4")]; - char stringpool_str393[sizeof("ISO_8859-5:1988")]; - char stringpool_str394[sizeof("PTCP154")]; - char stringpool_str395[sizeof("ISO_8859-8:1988")]; - char stringpool_str396[sizeof("WINDOWS-1251")]; - char stringpool_str397[sizeof("WINDOWS-1256")]; - char stringpool_str398[sizeof("WINDOWS-1255")]; - char stringpool_str400[sizeof("WINDOWS-1258")]; - char stringpool_str401[sizeof("WINDOWS-1252")]; - char stringpool_str404[sizeof("ISO_646.IRV:1991")]; - char stringpool_str405[sizeof("CSPTCP154")]; - char stringpool_str409[sizeof("ISO_8859-9:1989")]; + char stringpool_str394[sizeof("ISO646-JP")]; + char stringpool_str398[sizeof("TCVN5712-1")]; + char stringpool_str401[sizeof("ISO-2022-JP")]; + char stringpool_str402[sizeof("TCVN-5712")]; + char stringpool_str403[sizeof("EUCJP")]; + char stringpool_str404[sizeof("DECKANJI")]; + char stringpool_str405[sizeof("EUCTW")]; + char stringpool_str407[sizeof("CSISO2022JP2")]; char stringpool_str410[sizeof("MACROMANIA")]; char stringpool_str411[sizeof("ISO_8859-7")]; - char stringpool_str412[sizeof("CSHPROMAN8")]; - char stringpool_str415[sizeof("CN-GB-ISOIR165")]; - char stringpool_str416[sizeof("CSISO159JISX02121990")]; - char stringpool_str417[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str418[sizeof("MACCYRILLIC")]; - char stringpool_str419[sizeof("CSISO14JISC6220RO")]; - char stringpool_str420[sizeof("TCVN5712-1")]; - char stringpool_str421[sizeof("MS-CYRL")]; - char stringpool_str424[sizeof("TCVN-5712")]; - char stringpool_str425[sizeof("WINDOWS-1250")]; - char stringpool_str427[sizeof("ISO-2022-JP-1")]; - char stringpool_str430[sizeof("MACARABIC")]; - char stringpool_str432[sizeof("ISO-2022-JP-2")]; - char stringpool_str436[sizeof("HZ-GB-2312")]; - char stringpool_str438[sizeof("ISO_8859-4:1988")]; + char stringpool_str414[sizeof("EUC-JP")]; + char stringpool_str415[sizeof("DEC-KANJI")]; + char stringpool_str416[sizeof("EUC-TW")]; + char stringpool_str423[sizeof("ISO-2022-JP-MS")]; + char stringpool_str424[sizeof("TIS620.2533-1")]; + char stringpool_str427[sizeof("CSISO159JISX02121990")]; + char stringpool_str428[sizeof("JIS_C6220-1969-RO")]; + char stringpool_str430[sizeof("CSISO14JISC6220RO")]; + char stringpool_str434[sizeof("WINDOWS-1251")]; + char stringpool_str435[sizeof("WINDOWS-1256")]; + char stringpool_str436[sizeof("WINDOWS-1255")]; + char stringpool_str438[sizeof("WINDOWS-1258")]; + char stringpool_str439[sizeof("WINDOWS-1252")]; + char stringpool_str440[sizeof("VISCII1.1-1")]; char stringpool_str441[sizeof("MS-TURK")]; - char stringpool_str443[sizeof("WINDOWS-1254")]; - char stringpool_str444[sizeof("CSEUCTW")]; char stringpool_str445[sizeof("CSISOLATIN3")]; + char stringpool_str446[sizeof("CSGB2312")]; char stringpool_str447[sizeof("UCS-2LE")]; + char stringpool_str448[sizeof("CSPC862LATINHEBREW")]; char stringpool_str450[sizeof("UCS-2-INTERNAL")]; - char stringpool_str451[sizeof("CN-GB")]; - char stringpool_str454[sizeof("GREEK")]; + char stringpool_str453[sizeof("TIS620.2533-0")]; char stringpool_str455[sizeof("KS_C_5601-1987")]; + char stringpool_str456[sizeof("CSISO2022JP")]; char stringpool_str457[sizeof("LATIN7")]; - char stringpool_str460[sizeof("JIS_C6226-1983")]; - char stringpool_str465[sizeof("ISO_8859-3:1988")]; + char stringpool_str459[sizeof("ISO_8859-1:1987")]; + char stringpool_str460[sizeof("ISO_8859-6:1987")]; + char stringpool_str461[sizeof("NEXTSTEP")]; + char stringpool_str463[sizeof("WINDOWS-1250")]; + char stringpool_str464[sizeof("ISO_8859-2:1987")]; char stringpool_str466[sizeof("IBM367")]; - char stringpool_str467[sizeof("CSISO58GB231280")]; - char stringpool_str470[sizeof("WINDOWS-1253")]; - char stringpool_str473[sizeof("IBM-CP1133")]; - char stringpool_str475[sizeof("WINDOWS-936")]; + char stringpool_str471[sizeof("JIS_C6226-1983")]; + char stringpool_str476[sizeof("UTF-16LE")]; + char stringpool_str477[sizeof("MACCYRILLIC")]; char stringpool_str479[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str481[sizeof("MS-HEBR")]; - char stringpool_str484[sizeof("UCS-2BE")]; - char stringpool_str486[sizeof("CSISO2022JP2")]; + char stringpool_str480[sizeof("MS-CYRL")]; + char stringpool_str481[sizeof("WINDOWS-1254")]; + char stringpool_str482[sizeof("CSEUCTW")]; + char stringpool_str484[sizeof("MACARABIC")]; + char stringpool_str485[sizeof("GREEK")]; char stringpool_str489[sizeof("UCS-4LE")]; char stringpool_str492[sizeof("UCS-4-INTERNAL")]; - char stringpool_str497[sizeof("CSISOLATINHEBREW")]; - char stringpool_str500[sizeof("CSISOLATINGREEK")]; - char stringpool_str502[sizeof("ISO-2022-JP-MS")]; + char stringpool_str495[sizeof("UTF-7")]; + char stringpool_str496[sizeof("TIS620.2533")]; + char stringpool_str500[sizeof("CN-GB-ISOIR165")]; char stringpool_str503[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; char stringpool_str505[sizeof("MULELAO-1")]; - char stringpool_str509[sizeof("MACTURKISH")]; - char stringpool_str513[sizeof("UNICODEBIG")]; - char stringpool_str518[sizeof("CSISO57GB1988")]; - char stringpool_str519[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str525[sizeof("ANSI_X3.4-1986")]; - char stringpool_str526[sizeof("UCS-4BE")]; - char stringpool_str528[sizeof("ANSI_X3.4-1968")]; + char stringpool_str506[sizeof("GEORGIAN-ACADEMY")]; + char stringpool_str507[sizeof("GB18030:2022")]; + char stringpool_str508[sizeof("WINDOWS-1253")]; + char stringpool_str513[sizeof("WINDOWS-936")]; + char stringpool_str520[sizeof("ISO_646.IRV:1991")]; + char stringpool_str528[sizeof("GB18030:2005")]; char stringpool_str529[sizeof("MACUKRAINE")]; - char stringpool_str534[sizeof("UTF-16LE")]; - char stringpool_str537[sizeof("ISO_8859-1:1987")]; - char stringpool_str538[sizeof("ISO_8859-6:1987")]; - char stringpool_str542[sizeof("ISO_8859-2:1987")]; - char stringpool_str544[sizeof("MS_KANJI")]; - char stringpool_str546[sizeof("WINDOWS-1257")]; - char stringpool_str551[sizeof("JISX0201-1976")]; - char stringpool_str553[sizeof("UTF-7")]; - char stringpool_str554[sizeof("GB18030:2022")]; - char stringpool_str556[sizeof("JAVA")]; - char stringpool_str563[sizeof("ISO646-JP")]; + char stringpool_str531[sizeof("CSISOLATINGREEK")]; + char stringpool_str532[sizeof("CSISOLATINHEBREW")]; + char stringpool_str533[sizeof("ISO_8859-7:2003")]; + char stringpool_str537[sizeof("HZ-GB-2312")]; + char stringpool_str538[sizeof("UCS-2BE")]; + char stringpool_str541[sizeof("MACTURKISH")]; + char stringpool_str545[sizeof("JAVA")]; + char stringpool_str548[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str551[sizeof("MS-HEBR")]; + char stringpool_str552[sizeof("CSISO58GB231280")]; + char stringpool_str554[sizeof("UTF-32LE")]; + char stringpool_str555[sizeof("MS_KANJI")]; + char stringpool_str562[sizeof("JISX0201-1976")]; + char stringpool_str567[sizeof("UTF-16BE")]; char stringpool_str568[sizeof("MACCENTRALEUROPE")]; - char stringpool_str570[sizeof("ISO-2022-JP")]; - char stringpool_str571[sizeof("UTF-16BE")]; - char stringpool_str572[sizeof("EUCJP")]; - char stringpool_str575[sizeof("GB18030:2005")]; - char stringpool_str576[sizeof("JIS_X0212")]; - char stringpool_str583[sizeof("EUC-JP")]; - char stringpool_str584[sizeof("MACGREEK")]; - char stringpool_str593[sizeof("MS-GREEK")]; - char stringpool_str595[sizeof("JIS_X0201")]; - char stringpool_str603[sizeof("JIS_X0208")]; - char stringpool_str605[sizeof("GEORGIAN-PS")]; - char stringpool_str607[sizeof("MS-ARAB")]; - char stringpool_str608[sizeof("JIS_X0212.1990-0")]; - char stringpool_str611[sizeof("ISO_8859-7:2003")]; - char stringpool_str612[sizeof("UTF-32LE")]; - char stringpool_str615[sizeof("JIS_X0212-1990")]; - char stringpool_str618[sizeof("SHIFT-JIS")]; - char stringpool_str625[sizeof("CSISO2022JP")]; - char stringpool_str626[sizeof("HEBREW")]; - char stringpool_str636[sizeof("WINDOWS-874")]; - char stringpool_str638[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str641[sizeof("NEXTSTEP")]; - char stringpool_str643[sizeof("JIS_X0208-1990")]; - char stringpool_str649[sizeof("UTF-32BE")]; - char stringpool_str659[sizeof("BIG5HKSCS")]; - char stringpool_str664[sizeof("CSSHIFTJIS")]; - char stringpool_str668[sizeof("JOHAB")]; - char stringpool_str670[sizeof("BIG5-HKSCS")]; - char stringpool_str678[sizeof("SHIFT_JIS")]; - char stringpool_str687[sizeof("ISO_8859-7:1987")]; - char stringpool_str688[sizeof("JIS_X0208-1983")]; - char stringpool_str699[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str701[sizeof("CSISO87JISX0208")]; - char stringpool_str745[sizeof("WINBALTRIM")]; - char stringpool_str750[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str754[sizeof("UCS-2-SWAPPED")]; - char stringpool_str770[sizeof("TCVN5712-1:1993")]; - char stringpool_str786[sizeof("MACHEBREW")]; - char stringpool_str796[sizeof("UCS-4-SWAPPED")]; - char stringpool_str803[sizeof("BIGFIVE")]; - char stringpool_str810[sizeof("KO_KR.JOHAP92")]; - char stringpool_str814[sizeof("BIG-FIVE")]; - char stringpool_str872[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str876[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str883[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str919[sizeof("BIG5-HKSCS:2004")]; + char stringpool_str571[sizeof("SHIFT-JIS")]; + char stringpool_str577[sizeof("GEORGIAN-PS")]; + char stringpool_str580[sizeof("UCS-4BE")]; + char stringpool_str584[sizeof("WINDOWS-1257")]; + char stringpool_str587[sizeof("JIS_X0212")]; + char stringpool_str590[sizeof("CN-GB")]; + char stringpool_str593[sizeof("UCS-2-SWAPPED")]; + char stringpool_str602[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str603[sizeof("CSISO57GB1988")]; + char stringpool_str606[sizeof("JIS_X0201")]; + char stringpool_str609[sizeof("ISO_8859-7:1987")]; + char stringpool_str614[sizeof("JIS_X0208")]; + char stringpool_str615[sizeof("MACGREEK")]; + char stringpool_str624[sizeof("MS-GREEK")]; + char stringpool_str626[sizeof("JIS_X0212-1990")]; + char stringpool_str629[sizeof("UNICODEBIG")]; + char stringpool_str631[sizeof("SHIFT_JIS")]; + char stringpool_str633[sizeof("CSSHIFTJIS")]; + char stringpool_str635[sizeof("UCS-4-SWAPPED")]; + char stringpool_str645[sizeof("UTF-32BE")]; + char stringpool_str654[sizeof("JIS_X0208-1990")]; + char stringpool_str663[sizeof("ANSI_X3.4-1986")]; + char stringpool_str666[sizeof("ANSI_X3.4-1968")]; + char stringpool_str670[sizeof("TCVN5712-1:1993")]; + char stringpool_str674[sizeof("WINDOWS-874")]; + char stringpool_str692[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str699[sizeof("JIS_X0208-1983")]; + char stringpool_str712[sizeof("CSISO87JISX0208")]; + char stringpool_str715[sizeof("MS-ARAB")]; + char stringpool_str734[sizeof("HEBREW")]; + char stringpool_str757[sizeof("JIS_X0212.1990-0")]; + char stringpool_str760[sizeof("BIG5HKSCS")]; + char stringpool_str771[sizeof("BIG5-HKSCS")]; + char stringpool_str803[sizeof("JOHAB")]; + char stringpool_str808[sizeof("BIGFIVE")]; + char stringpool_str818[sizeof("WINBALTRIM")]; + char stringpool_str819[sizeof("BIG-FIVE")]; + char stringpool_str885[sizeof("KO_KR.JOHAP92")]; + char stringpool_str894[sizeof("MACHEBREW")]; + char stringpool_str895[sizeof("BIG5-HKSCS:2001")]; + char stringpool_str899[sizeof("BIG5-HKSCS:2008")]; + char stringpool_str906[sizeof("BIG5-HKSCS:1999")]; + char stringpool_str942[sizeof("BIG5-HKSCS:2004")]; }; static const struct stringpool_t stringpool_contents = { @@ -496,7 +500,6 @@ static const struct stringpool_t stringpool_contents = "ISO-8859-16", "ISO-8859-5", "ISO-8859-15", - "HZ", "ISO-8859-8", "ISO-8859-2", "ISO8859-9", @@ -507,6 +510,7 @@ static const struct stringpool_t stringpool_contents = "CP1250", "ISO-8859-9", "ISO-IR-166", + "HZ", "ISO-IR-165", "CP950", "ISO-IR-126", @@ -566,8 +570,8 @@ static const struct stringpool_t stringpool_contents = "ISO_8859-10:1992", "TIS620", "ISO-IR-138", - "TIS620.2529-1", "IBM850", + "PT154", "LATIN1", "ISO-IR-100", "LATIN6", @@ -586,7 +590,6 @@ static const struct stringpool_t stringpool_contents = "UNICODE-1-1", "ELOT_928", "L4", - "GB2312", "ISO8859-3", "ISO8859-13", "LATIN-9", @@ -594,9 +597,11 @@ static const struct stringpool_t stringpool_contents = "TIS620-0", "X0212", "L10", + "UTF-16", "ISO-8859-3", "ISO-8859-13", "CSKOI8R", + "UTF-8", "CSKZ1048", "ISO_8859-4", "ISO_8859-14", @@ -606,218 +611,221 @@ static const struct stringpool_t stringpool_contents = "L3", "ISO-IR-144", "X0201", - "MACTHAI", + "PTCP154", "LATIN10", + "GB2312", "KSC_5601", "X0208", + "CSPTCP154", "SJIS", "US-ASCII", "CP1133", + "MACTHAI", + "TCVN", "ISO-10646-UCS-4", "ISO-CELTIC", "CSUNICODE", "ECMA-118", "ISO-IR-179", "MS-ANSI", - "PT154", "ARMSCII-8", "CSUCS4", "LATIN4", "ISO-IR-203", "CP874", - "TCVN", - "UTF-16", "UCS-4", "ISO_8859-3", "ISO_8859-13", - "UTF-8", - "GB_1988-80", - "GB18030", "ISO-2022-KR", "EUCKR", - "BIG5", - "CSIBM866", - "CSBIG5", - "HP-ROMAN8", + "JP", + "PCK", "KOI8-U", "EUC-KR", "CNS11643", - "BIG-5", + "UTF-32", "MACCROATIAN", - "CN-BIG5", - "TIS620.2533-1", + "VISCII", "L7", + "CSVISCII", "ISO646-US", - "MACINTOSH", + "HP-ROMAN8", + "TIS620.2529-1", + "GB_1988-80", + "GB18030", "MACROMAN", "CSISOLATIN1", "CSISOLATIN6", - "ARABIC", "CSISOLATIN5", "KOREAN", "CHINESE", "LATIN3", "CSISOLATINCYRILLIC", "CSISOLATIN2", - "VISCII", - "GBK", - "CSVISCII", "MS-EE", "CP1257", - "TIS620.2533-0", + "ISO_8859-5:1988", "KS_C_5601-1989", + "ISO_8859-8:1988", "KOI8-RU", "CSISO2022KR", "CYRILLIC", "CSUNICODE11UTF7", - "VISCII1.1-1", - "GB_2312-80", + "MACINTOSH", + "CSIBM866", "ECMA-114", + "ISO_8859-9:1989", "UNICODE-1-1-UTF-7", - "UTF-32", + "CSHPROMAN8", "ISO8859-7", + "GBK", "CSEUCKR", + "ISO-2022-JP-1", "ASMO-708", "ISO-8859-7", - "JP", - "GREEK8", - "CSMACINTOSH", - "JIS0208", - "TIS620.2533", - "CSGB2312", + "ISO-2022-JP-2", + "ARABIC", + "BIG5", + "GB_2312-80", + "CSBIG5", + "ISO_8859-4:1988", "CSISOLATINARABIC", - "PCK", + "DECHANYU", "STRK1048-2002", - "EUCTW", + "BIG-5", + "JIS0208", + "CN-BIG5", "ISO-IR-57", "ISO-IR-157", "ISO-IR-87", + "DEC-HANYU", "ISO-IR-127", "MACICELAND", - "EUC-TW", "CP367", + "IBM-CP1133", "UNICODELITTLE", - "GEORGIAN-ACADEMY", + "GREEK8", + "ISO_8859-3:1988", + "CSMACINTOSH", "CSKSC56011987", "CSISOLATIN4", - "ISO_8859-5:1988", - "PTCP154", - "ISO_8859-8:1988", - "WINDOWS-1251", - "WINDOWS-1256", - "WINDOWS-1255", - "WINDOWS-1258", - "WINDOWS-1252", - "ISO_646.IRV:1991", - "CSPTCP154", - "ISO_8859-9:1989", + "ISO646-JP", + "TCVN5712-1", + "ISO-2022-JP", + "TCVN-5712", + "EUCJP", + "DECKANJI", + "EUCTW", + "CSISO2022JP2", "MACROMANIA", "ISO_8859-7", - "CSHPROMAN8", - "CN-GB-ISOIR165", + "EUC-JP", + "DEC-KANJI", + "EUC-TW", + "ISO-2022-JP-MS", + "TIS620.2533-1", "CSISO159JISX02121990", "JIS_C6220-1969-RO", - "MACCYRILLIC", "CSISO14JISC6220RO", - "TCVN5712-1", - "MS-CYRL", - "TCVN-5712", - "WINDOWS-1250", - "ISO-2022-JP-1", - "MACARABIC", - "ISO-2022-JP-2", - "HZ-GB-2312", - "ISO_8859-4:1988", + "WINDOWS-1251", + "WINDOWS-1256", + "WINDOWS-1255", + "WINDOWS-1258", + "WINDOWS-1252", + "VISCII1.1-1", "MS-TURK", - "WINDOWS-1254", - "CSEUCTW", "CSISOLATIN3", + "CSGB2312", "UCS-2LE", + "CSPC862LATINHEBREW", "UCS-2-INTERNAL", - "CN-GB", - "GREEK", + "TIS620.2533-0", "KS_C_5601-1987", + "CSISO2022JP", "LATIN7", - "JIS_C6226-1983", - "ISO_8859-3:1988", + "ISO_8859-1:1987", + "ISO_8859-6:1987", + "NEXTSTEP", + "WINDOWS-1250", + "ISO_8859-2:1987", "IBM367", - "CSISO58GB231280", - "WINDOWS-1253", - "IBM-CP1133", - "WINDOWS-936", + "JIS_C6226-1983", + "UTF-16LE", + "MACCYRILLIC", "CYRILLIC-ASIAN", - "MS-HEBR", - "UCS-2BE", - "CSISO2022JP2", + "MS-CYRL", + "WINDOWS-1254", + "CSEUCTW", + "MACARABIC", + "GREEK", "UCS-4LE", "UCS-4-INTERNAL", - "CSISOLATINHEBREW", - "CSISOLATINGREEK", - "ISO-2022-JP-MS", + "UTF-7", + "TIS620.2533", + "CN-GB-ISOIR165", "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", "MULELAO-1", - "MACTURKISH", - "UNICODEBIG", - "CSISO57GB1988", - "CSPC862LATINHEBREW", - "ANSI_X3.4-1986", - "UCS-4BE", - "ANSI_X3.4-1968", + "GEORGIAN-ACADEMY", + "GB18030:2022", + "WINDOWS-1253", + "WINDOWS-936", + "ISO_646.IRV:1991", + "GB18030:2005", "MACUKRAINE", - "UTF-16LE", - "ISO_8859-1:1987", - "ISO_8859-6:1987", - "ISO_8859-2:1987", + "CSISOLATINGREEK", + "CSISOLATINHEBREW", + "ISO_8859-7:2003", + "HZ-GB-2312", + "UCS-2BE", + "MACTURKISH", + "JAVA", + "CSPC850MULTILINGUAL", + "MS-HEBR", + "CSISO58GB231280", + "UTF-32LE", "MS_KANJI", - "WINDOWS-1257", "JISX0201-1976", - "UTF-7", - "GB18030:2022", - "JAVA", - "ISO646-JP", - "MACCENTRALEUROPE", - "ISO-2022-JP", "UTF-16BE", - "EUCJP", - "GB18030:2005", + "MACCENTRALEUROPE", + "SHIFT-JIS", + "GEORGIAN-PS", + "UCS-4BE", + "WINDOWS-1257", "JIS_X0212", - "EUC-JP", - "MACGREEK", - "MS-GREEK", + "CN-GB", + "UCS-2-SWAPPED", + "CSEUCPKDFMTJAPANESE", + "CSISO57GB1988", "JIS_X0201", + "ISO_8859-7:1987", "JIS_X0208", - "GEORGIAN-PS", - "MS-ARAB", - "JIS_X0212.1990-0", - "ISO_8859-7:2003", - "UTF-32LE", + "MACGREEK", + "MS-GREEK", "JIS_X0212-1990", - "SHIFT-JIS", - "CSISO2022JP", - "HEBREW", - "WINDOWS-874", - "CSPC850MULTILINGUAL", - "NEXTSTEP", - "JIS_X0208-1990", - "UTF-32BE", - "BIG5HKSCS", - "CSSHIFTJIS", - "JOHAB", - "BIG5-HKSCS", + "UNICODEBIG", "SHIFT_JIS", - "ISO_8859-7:1987", - "JIS_X0208-1983", + "CSSHIFTJIS", + "UCS-4-SWAPPED", + "UTF-32BE", + "JIS_X0208-1990", + "ANSI_X3.4-1986", + "ANSI_X3.4-1968", + "TCVN5712-1:1993", + "WINDOWS-874", "CSHALFWIDTHKATAKANA", + "JIS_X0208-1983", "CSISO87JISX0208", - "WINBALTRIM", - "CSEUCPKDFMTJAPANESE", - "UCS-2-SWAPPED", - "TCVN5712-1:1993", - "MACHEBREW", - "UCS-4-SWAPPED", + "MS-ARAB", + "HEBREW", + "JIS_X0212.1990-0", + "BIG5HKSCS", + "BIG5-HKSCS", + "JOHAB", "BIGFIVE", - "KO_KR.JOHAP92", + "WINBALTRIM", "BIG-FIVE", + "KO_KR.JOHAP92", + "MACHEBREW", "BIG5-HKSCS:2001", "BIG5-HKSCS:2008", "BIG5-HKSCS:1999", @@ -899,9 +907,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_iso8859_5}, #line 155 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str56, ei_iso8859_15}, - {-1}, -#line 338 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_hz}, + {-1}, {-1}, #line 115 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_iso8859_8}, {-1}, @@ -925,7 +931,8 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_iso8859_9}, #line 254 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, ei_tis620}, - {-1}, +#line 338 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_hz}, #line 296 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_isoir165}, #line 350 "lib/generated/aliases_syssolaris.gperf" @@ -1058,11 +1065,11 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_tis620}, #line 118 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_iso8859_8}, -#line 251 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_tis620}, + {-1}, #line 200 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_cp850}, - {-1}, +#line 236 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_pt154}, #line 60 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str157, ei_iso8859_1}, #line 57 "lib/generated/aliases_syssolaris.gperf" @@ -1104,10 +1111,7 @@ static const struct alias aliases[] = {-1}, {-1}, #line 85 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_iso8859_4}, - {-1}, -#line 324 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str186, ei_euc_cn}, - {-1}, + {-1}, {-1}, {-1}, #line 79 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso8859_3}, #line 146 "lib/generated/aliases_syssolaris.gperf" @@ -1124,7 +1128,9 @@ static const struct alias aliases[] = {-1}, #line 166 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_iso8859_16}, - {-1}, {-1}, + {-1}, +#line 39 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_utf16}, #line 72 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_iso8859_3}, #line 141 "lib/generated/aliases_syssolaris.gperf" @@ -1132,9 +1138,10 @@ static const struct alias aliases[] = {-1}, #line 169 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_koi8_r}, +#line 24 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_utf8}, #line 244 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_rk1048}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_rk1048}, #line 81 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str205, ei_iso8859_4}, #line 148 "lib/generated/aliases_syssolaris.gperf" @@ -1152,18 +1159,22 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_iso8859_5}, #line 272 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_jisx0201}, +#line 237 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_pt154}, {-1}, -#line 226 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, ei_mac_thai}, #line 165 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_iso8859_16}, - {-1}, {-1}, +#line 324 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_euc_cn}, + {-1}, #line 298 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_ksc5601}, {-1}, #line 278 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 240 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_pt154}, #line 310 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_sjis}, #line 12 "lib/generated/aliases_syssolaris.gperf" @@ -1171,7 +1182,12 @@ static const struct alias aliases[] = {-1}, #line 246 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, ei_cp1133}, - {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 226 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_mac_thai}, + {-1}, +#line 261 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_tcvn}, #line 35 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_ucs4}, {-1}, {-1}, @@ -1186,9 +1202,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_iso8859_13}, #line 181 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_cp1252}, - {-1}, -#line 236 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_pt154}, + {-1}, {-1}, #line 232 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_armscii_8}, {-1}, {-1}, @@ -1201,10 +1215,7 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_iso8859_15}, #line 256 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_cp874}, -#line 261 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_tcvn}, -#line 39 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_utf16}, + {-1}, {-1}, #line 34 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_ucs4}, {-1}, @@ -1212,28 +1223,18 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_iso8859_3}, #line 142 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_iso8859_13}, -#line 24 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_utf8}, -#line 288 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_iso646_cn}, -#line 332 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_gb18030_2005}, - {-1}, + {-1}, {-1}, {-1}, {-1}, #line 366 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso2022_kr}, {-1}, #line 358 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_euc_kr}, - {-1}, {-1}, {-1}, -#line 344 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 268 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_iso646_jp}, +#line 313 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_sjis}, {-1}, -#line 210 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_cp866}, -#line 349 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_ces_big5}, -#line 227 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str275, ei_hp_roman8}, #line 170 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_koi8_u}, {-1}, @@ -1241,25 +1242,30 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_euc_kr}, #line 343 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_euc_tw}, +#line 42 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_utf32}, {-1}, {-1}, -#line 345 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_ces_big5}, #line 218 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str283, ei_mac_croatian}, - {-1}, -#line 348 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ces_big5}, -#line 253 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_tis620}, + {-1}, {-1}, +#line 258 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_viscii}, #line 145 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_iso8859_13}, - {-1}, {-1}, + {-1}, +#line 260 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_viscii}, #line 14 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_ascii}, - {-1}, {-1}, -#line 213 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_mac_roman}, - {-1}, {-1}, +#line 227 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str291, ei_hp_roman8}, +#line 251 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_tis620}, +#line 288 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_iso646_cn}, +#line 332 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str294, ei_gb18030_2005}, + {-1}, #line 212 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_mac_roman}, #line 62 "lib/generated/aliases_syssolaris.gperf" @@ -1267,8 +1273,7 @@ static const struct alias aliases[] = {-1}, #line 136 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_iso8859_10}, -#line 101 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_iso8859_6}, + {-1}, #line 128 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_iso8859_9}, #line 303 "lib/generated/aliases_syssolaris.gperf" @@ -1282,23 +1287,17 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str306, ei_iso8859_5}, #line 70 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_iso8859_2}, -#line 258 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_viscii}, - {-1}, -#line 328 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_ces_gbk}, -#line 260 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_viscii}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 174 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_cp1250}, #line 194 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_cp1257}, -#line 252 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_tis620}, +#line 90 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_iso8859_5}, #line 300 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_ksc5601}, - {-1}, +#line 117 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_iso8859_8}, #line 171 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_koi8_ru}, {-1}, @@ -1309,426 +1308,442 @@ static const struct alias aliases[] = {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_iso8859_5}, #line 47 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_utf7}, -#line 259 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_viscii}, - {-1}, {-1}, -#line 293 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_gb2312}, + {-1}, +#line 213 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_mac_roman}, + {-1}, +#line 210 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_cp866}, #line 99 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 124 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_iso8859_9}, + {-1}, {-1}, {-1}, {-1}, #line 46 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_utf7}, {-1}, -#line 42 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_utf32}, +#line 230 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_hp_roman8}, {-1}, #line 114 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_iso8859_7}, - {-1}, {-1}, {-1}, +#line 328 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_ces_gbk}, + {-1}, {-1}, #line 359 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 317 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_iso2022_jp1}, + {-1}, #line 100 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_iso8859_6}, #line 104 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_iso8859_7}, -#line 268 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_iso646_jp}, - {-1}, {-1}, -#line 111 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_iso8859_7}, -#line 215 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_mac_roman}, -#line 277 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_jisx0208}, -#line 255 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_tis620}, - {-1}, {-1}, -#line 326 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_euc_cn}, {-1}, +#line 318 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_iso2022_jp2}, +#line 101 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_iso8859_6}, + {-1}, +#line 344 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_ces_big5}, + {-1}, +#line 293 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_gb2312}, +#line 349 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_ces_big5}, +#line 82 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_iso8859_4}, + {-1}, {-1}, #line 102 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_iso8859_6}, -#line 313 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_sjis}, +#line 371 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_dec_hanyu}, #line 242 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_rk1048}, {-1}, -#line 341 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, +#line 345 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_ces_big5}, +#line 277 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_jisx0208}, + {-1}, +#line 348 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_ces_big5}, + {-1}, #line 290 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_iso646_cn}, #line 133 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_iso8859_10}, #line 279 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_jisx0208}, - {-1}, +#line 370 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_dec_hanyu}, #line 98 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str376, ei_iso8859_6}, #line 217 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_mac_iceland}, -#line 340 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_euc_tw}, - {-1}, {-1}, + {-1}, {-1}, {-1}, #line 19 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_ascii}, - {-1}, {-1}, + {-1}, +#line 247 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_cp1133}, #line 33 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ucs2le}, -#line 233 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str385, ei_georgian_academy}, - {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 111 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_iso8859_7}, +#line 74 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_iso8859_3}, +#line 215 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_mac_roman}, + {-1}, #line 302 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_ksc5601}, #line 86 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_iso8859_4}, - {-1}, -#line 90 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_iso8859_5}, -#line 237 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_pt154}, -#line 117 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_iso8859_8}, -#line 176 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_cp1251}, -#line 192 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_cp1256}, -#line 189 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_cp1255}, - {-1}, -#line 198 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str400, ei_cp1258}, -#line 180 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_cp1252}, {-1}, {-1}, -#line 15 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_ascii}, -#line 240 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_pt154}, +#line 266 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_iso646_jp}, {-1}, {-1}, {-1}, -#line 124 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_iso8859_9}, +#line 263 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_tcvn}, + {-1}, {-1}, +#line 315 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_iso2022_jp}, +#line 262 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_tcvn}, +#line 305 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_euc_jp}, +#line 369 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_dec_kanji}, +#line 341 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_euc_tw}, + {-1}, +#line 319 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_iso2022_jp2}, + {-1}, {-1}, #line 219 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str410, ei_mac_romania}, #line 105 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_iso8859_7}, -#line 230 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_hp_roman8}, {-1}, {-1}, -#line 297 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_isoir165}, +#line 304 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_euc_jp}, +#line 368 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_dec_kanji}, +#line 340 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_euc_tw}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 320 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_iso2022_jpms}, +#line 253 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_tis620}, + {-1}, {-1}, #line 287 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_jisx0212}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str427, ei_jisx0212}, #line 265 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_iso646_jp}, -#line 220 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_mac_cyrillic}, -#line 269 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_iso646_jp}, -#line 263 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_tcvn}, -#line 177 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_cp1251}, - {-1}, {-1}, -#line 262 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_tcvn}, -#line 173 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_cp1250}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_iso646_jp}, {-1}, -#line 317 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str427, ei_iso2022_jp1}, - {-1}, {-1}, -#line 225 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_mac_arabic}, - {-1}, -#line 318 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_iso2022_jp2}, +#line 269 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_iso646_jp}, {-1}, {-1}, {-1}, -#line 339 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str436, ei_hz}, +#line 176 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_cp1251}, +#line 192 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_cp1256}, +#line 189 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str436, ei_cp1255}, {-1}, -#line 82 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_iso8859_4}, - {-1}, {-1}, +#line 198 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_cp1258}, +#line 180 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_cp1252}, +#line 259 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_viscii}, #line 187 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_cp1254}, - {-1}, -#line 186 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str443, ei_cp1254}, -#line 342 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_euc_tw}, + {-1}, {-1}, {-1}, #line 78 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str445, ei_iso8859_3}, - {-1}, +#line 326 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str446, ei_euc_cn}, #line 32 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_ucs2le}, - {-1}, {-1}, +#line 206 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_cp862}, + {-1}, #line 48 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_ucs2internal}, -#line 325 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_euc_cn}, {-1}, {-1}, -#line 112 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str454, ei_iso8859_7}, +#line 252 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_tis620}, + {-1}, #line 299 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_ksc5601}, - {-1}, +#line 316 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_iso2022_jp}, #line 144 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_iso8859_13}, - {-1}, {-1}, -#line 280 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str460, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, -#line 74 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str465, ei_iso8859_3}, + {-1}, +#line 56 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_iso8859_1}, +#line 97 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str460, ei_iso8859_6}, +#line 231 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_nextstep}, + {-1}, +#line 173 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp1250}, +#line 66 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_iso8859_2}, + {-1}, #line 20 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_ascii}, -#line 295 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_gb2312}, - {-1}, {-1}, -#line 183 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str470, ei_cp1253}, - {-1}, {-1}, -#line 247 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_cp1133}, + {-1}, {-1}, {-1}, {-1}, +#line 280 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, +#line 41 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_utf16le}, +#line 220 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_mac_cyrillic}, {-1}, -#line 331 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_cp936}, - {-1}, {-1}, {-1}, #line 239 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_pt154}, +#line 177 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_cp1251}, +#line 186 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_cp1254}, +#line 342 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_euc_tw}, {-1}, -#line 190 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_cp1255}, - {-1}, {-1}, -#line 28 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_ucs2be}, - {-1}, -#line 319 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_iso2022_jp2}, - {-1}, {-1}, +#line 225 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_mac_arabic}, +#line 112 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_iso8859_7}, + {-1}, {-1}, {-1}, #line 38 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ucs4le}, {-1}, {-1}, #line 50 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_ucs4internal}, - {-1}, {-1}, {-1}, {-1}, -#line 120 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_iso8859_8}, {-1}, {-1}, -#line 113 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_iso8859_7}, - {-1}, -#line 320 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_iso2022_jpms}, +#line 45 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_utf7}, +#line 255 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_tis620}, + {-1}, {-1}, {-1}, +#line 297 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_isoir165}, + {-1}, {-1}, #line 306 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_euc_jp}, {-1}, #line 245 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_mulelao}, - {-1}, {-1}, {-1}, -#line 223 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_mac_turkish}, - {-1}, {-1}, {-1}, -#line 29 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ucs2be}, +#line 233 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_georgian_academy}, +#line 334 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_gb18030_2022}, +#line 183 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_cp1253}, {-1}, {-1}, {-1}, {-1}, -#line 292 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_iso646_cn}, -#line 206 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_cp862}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 18 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_ascii}, -#line 37 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_ucs4be}, - {-1}, -#line 17 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_ascii}, +#line 331 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_cp936}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 15 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 333 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_gb18030_2005}, #line 221 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_mac_ukraine}, - {-1}, {-1}, {-1}, {-1}, -#line 41 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_utf16le}, + {-1}, +#line 113 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_iso8859_7}, +#line 120 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_iso8859_8}, +#line 107 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 339 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_hz}, +#line 28 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_ucs2be}, {-1}, {-1}, -#line 56 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_iso8859_1}, -#line 97 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_iso8859_6}, +#line 223 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_mac_turkish}, {-1}, {-1}, {-1}, -#line 66 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_iso8859_2}, +#line 53 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_java}, + {-1}, {-1}, +#line 202 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_cp850}, + {-1}, {-1}, +#line 190 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_cp1255}, +#line 295 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_gb2312}, {-1}, +#line 44 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_utf32le}, #line 311 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_sjis}, - {-1}, -#line 195 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_jisx0201}, - {-1}, -#line 45 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_utf7}, -#line 334 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_gb18030_2022}, - {-1}, -#line 53 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_java}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 266 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_iso646_jp}, +#line 271 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, +#line 40 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_utf16be}, #line 216 "lib/generated/aliases_syssolaris.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_mac_centraleurope}, - {-1}, -#line 315 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_iso2022_jp}, -#line 40 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_utf16be}, -#line 305 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str572, ei_euc_jp}, {-1}, {-1}, -#line 333 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_gb18030_2005}, +#line 309 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 234 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_georgian_ps}, + {-1}, {-1}, +#line 37 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_ucs4be}, + {-1}, {-1}, {-1}, +#line 195 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str584, ei_cp1257}, + {-1}, {-1}, #line 282 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 304 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_euc_jp}, -#line 222 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str584, ei_mac_greek}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str587, ei_jisx0212}, + {-1}, {-1}, +#line 325 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_euc_cn}, + {-1}, {-1}, +#line 49 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_ucs2swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 184 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_cp1253}, - {-1}, +#line 307 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str602, ei_euc_jp}, +#line 292 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_iso646_cn}, + {-1}, {-1}, #line 270 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str606, ei_jisx0201}, + {-1}, {-1}, +#line 106 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str609, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, #line 274 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_jisx0208}, - {-1}, -#line 234 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_georgian_ps}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_jisx0208}, +#line 222 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_mac_greek}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 184 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_cp1253}, {-1}, -#line 193 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_cp1256}, -#line 283 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_jisx0212}, - {-1}, {-1}, -#line 107 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_iso8859_7}, -#line 44 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_utf32le}, - {-1}, {-1}, #line 284 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_jisx0212}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_jisx0212}, {-1}, {-1}, -#line 309 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 316 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_iso2022_jp}, -#line 119 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 257 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_cp874}, +#line 29 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_ucs2be}, {-1}, -#line 202 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_cp850}, - {-1}, {-1}, -#line 231 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_nextstep}, +#line 308 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_sjis}, {-1}, -#line 276 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str649, ei_utf32be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 355 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, {-1}, #line 312 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_sjis}, - {-1}, {-1}, {-1}, -#line 363 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str668, ei_johab}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_sjis}, {-1}, -#line 354 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str678, ei_sjis}, +#line 51 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str635, ei_ucs4swapped}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 43 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_utf32be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 106 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_iso8859_7}, -#line 275 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str688, ei_jisx0208}, +#line 276 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str654, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 18 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_ascii}, + {-1}, {-1}, +#line 17 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_ascii}, + {-1}, {-1}, {-1}, +#line 264 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_tcvn}, + {-1}, {-1}, {-1}, +#line 257 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str674, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 273 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_jisx0201}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_jisx0201}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 275 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, #line 281 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_jisx0208}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_jisx0208}, + {-1}, {-1}, +#line 193 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str715, ei_cp1256}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 119 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str734, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 196 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, -#line 307 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_euc_jp}, - {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str754, ei_ucs2swapped}, +#line 283 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_jisx0212}, + {-1}, {-1}, +#line 355 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 264 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str770, ei_tcvn}, + {-1}, +#line 354 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str771, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 224 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str786, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 51 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str796, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 363 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_johab}, + {-1}, {-1}, {-1}, {-1}, #line 347 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 365 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str810, ei_johab}, - {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str808, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 196 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_cp1257}, #line 346 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str814, ei_ces_big5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_ces_big5}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 365 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str885, ei_johab}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 224 "lib/generated/aliases_syssolaris.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_mac_hebrew}, #line 352 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str872, ei_big5hkscs2001}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str895, ei_big5hkscs2001}, {-1}, {-1}, {-1}, #line 356 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str876, ei_big5hkscs2008}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str899, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 351 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_big5hkscs1999}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 353 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str919, ei_big5hkscs2004} + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str942, ei_big5hkscs2004} }; const struct alias * diff --git a/lib/generated/flags.h b/lib/generated/flags.h index 55a7996b..158ec9da 100644 --- a/lib/generated/flags.h +++ b/lib/generated/flags.h @@ -124,6 +124,8 @@ #define ei_cp949_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_johab_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_iso2022_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) +#define ei_dec_kanji_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_dec_hanyu_oflags (HAVE_QUOTATION_MARKS) #define ei_cp856_oflags (HAVE_ACCENTS) #define ei_cp922_oflags (HAVE_ACCENTS) #define ei_cp943_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) @@ -155,8 +157,6 @@ #define ei_tds565_oflags (0) #define ei_atarist_oflags (HAVE_ACCENTS) #define ei_riscos1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_dec_kanji_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_dec_hanyu_oflags (HAVE_QUOTATION_MARKS) #define ei_ebcdic037_oflags (HAVE_ACCENTS) #define ei_ebcdic273_oflags (HAVE_ACCENTS) #define ei_ebcdic277_oflags (HAVE_ACCENTS) diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 5027c32d..85a1565e 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -44,7 +44,6 @@ namespace reiconv * and the extra encodings. */ #define USE_AIX -#define USE_OSF1 #define USE_DOS #define USE_ZOS #define USE_EXTRA @@ -56,9 +55,6 @@ namespace reiconv #ifdef _AIX #define USE_AIX #endif -#if defined(__osf__) || defined(VMS) -#define USE_OSF1 -#endif #if defined(__DJGPP__) || (defined(_WIN32) && (defined(_MSC_VER) || defined(__MINGW32__))) #define USE_DOS #endif @@ -101,9 +97,6 @@ enum #ifdef USE_AIX #include "encodings_aix.def" #endif -#ifdef USE_OSF1 -#include "encodings_osf1.def" -#endif #ifdef USE_DOS #include "encodings_dos.def" #endif @@ -124,9 +117,6 @@ static struct encoding const all_encodings[] = { #ifdef USE_AIX #include "encodings_aix.def" #endif -#ifdef USE_OSF1 -#include "encodings_osf1.def" -#endif #ifdef USE_DOS #include "encodings_dos.def" #endif @@ -168,8 +158,6 @@ static inline int lookup_by_codepage(int codepage) #include "aliases_sysaix.h" #elif defined hpux || defined __hpux #include "aliases_syshpux.h" -#elif defined __osf__ -#include "aliases_sysosf1.h" #elif defined __sun #include "aliases_syssolaris.h" #else @@ -181,7 +169,7 @@ static inline int lookup_by_codepage(int codepage) * Defines * inline static const struct alias* aliases2_lookup (const char *str); */ -#if defined(USE_AIX) || defined(USE_OSF1) || defined(USE_DOS) || defined(USE_ZOS) || defined(USE_EXTRA) /* || ... */ +#if defined(USE_AIX) || defined(USE_DOS) || defined(USE_ZOS) || defined(USE_EXTRA) /* || ... */ struct stringpool2_t { #define S(tag, name, encoding_index) char stringpool_##tag[sizeof(name)]; diff --git a/tools/genaliases2.cpp b/tools/genaliases2.cpp index c9350cdc..61d0ce3b 100644 --- a/tools/genaliases2.cpp +++ b/tools/genaliases2.cpp @@ -84,9 +84,6 @@ int main(int argc, char* argv[]) #ifdef USE_AIX #include "encodings_aix.def" #endif -#ifdef USE_OSF1 -#include "encodings_osf1.def" -#endif #ifdef USE_DOS #include "encodings_dos.def" #endif diff --git a/tools/genflags.cpp b/tools/genflags.cpp index af92c2ec..4dd555e1 100644 --- a/tools/genflags.cpp +++ b/tools/genflags.cpp @@ -25,7 +25,6 @@ /* Consider all encodings, including the system dependent ones. */ #define USE_AIX -#define USE_OSF1 #define USE_DOS #define USE_ZOS #define USE_EXTRA @@ -116,7 +115,6 @@ int main() #include "encodings_aix.def" #include "encodings_dos.def" #include "encodings_extra.def" -#include "encodings_osf1.def" #include "encodings_zos.def" #undef DEFALIAS #undef DEFENCODING From 542f32ea76a8737e59ba1b0caba385d15527094d Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 5 Nov 2023 11:53:52 +0800 Subject: [PATCH 20/77] Use `cppp_install_library` for install libraries. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Update test option. 2. More tests in 'Makefile.devel'. 3. Use 'cppp_install_library' for install libraries. 修改: CMakeLists.txt 修改: ChangeLog 修改: Makefile.devel 修改: tests/tests.cmake --- CMakeLists.txt | 28 ++----------- ChangeLog | 6 +++ Makefile.devel | 23 +++++++++- tests/tests.cmake | 105 ++++++++++++++++++++++++++++++---------------- 4 files changed, 101 insertions(+), 61 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 619b402e..acd8ad41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,30 +111,10 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests") include("tests/tests.cmake") endif() -# Install -# Static -# PERMISSIONS 0644 -install(TARGETS libcppp-reiconv.static - DESTINATION "${install_staticdir}" - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - LIBRARY DESTINATION "${install_shareddir}" - ARCHIVE DESTINATION "${install_staticdir}" - RUNTIME DESTINATION "${install_bindir}" - INCLUDES DESTINATION "${install_includedir}" ) - -# Shared -# PERMISSIONS 0755 -install(TARGETS libcppp-reiconv.shared - EXPORT libcppp-reiconv-export - DESTINATION "${install_shareddir}" - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - LIBRARY DESTINATION "${install_shareddir}" - ARCHIVE DESTINATION "${install_staticdir}" - RUNTIME DESTINATION "${install_bindir}" - INCLUDES DESTINATION "${install_includedir}" ) - -# Includes -# install includes +# Install libraries +cppp_install_library(${PROJECT_NAME}) + +# Install includes # PERMISSIONS 0644 install(FILES "${output_includedir}/cppp/reiconv.hpp.inst" DESTINATION "${install_includedir}" diff --git a/ChangeLog b/ChangeLog index f997e6a6..21a6834a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2023-11-05 ChenPi11 + + Update test option. + More tests in 'Makefile.devel'. + Use 'cppp_install_library' for install libraries. + 2023-10-30 ChenPi11 Update compile options' name. diff --git a/Makefile.devel b/Makefile.devel index cebf1093..a8440f8c 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -108,10 +108,31 @@ lib/generated/flags.h : lib/generated/genflags test : all $(RM) -r -f build $(MKDIR) -p build - cd build && $(CMAKE) .. -DTEST=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install + + # Test 1.1: Release build without less build. + cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install-release-full + cd build && $(CMAKE) --build . --config=Release --verbose + cd build && $(CTEST) -C Release --verbose + $(CMAKE) --install build --verbose + + # Test 1.2: Release build with less build. + cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install-release-less cd build && $(CMAKE) --build . --config=Release --verbose cd build && $(CTEST) -C Release --verbose $(CMAKE) --install build --verbose + + # Test 2.1: Debug build without less build. + cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=test_install-debug-full + cd build && $(CMAKE) --build . --config=Debug --verbose + cd build && $(CTEST) -C Debug --verbose + $(CMAKE) --install build --verbose + + # Test 2.2: Debug build with less build. + cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=test_install-debug-less + cd build && $(CMAKE) --build . --config=Debug --verbose + cd build && $(CTEST) -C Debug --verbose + $(CMAKE) --install build --verbose + ./cpppdist.py { diff cppp-reiconv-* . --recursive || echo ; } diff --git a/tests/tests.cmake b/tests/tests.cmake index 7da73470..3a214616 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -1,9 +1,9 @@ # CMake script for cppp-reiconv/tests -option(TEST "Enable test suites build." OFF) +option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." OFF) -if (TEST) +if (BUILD_TEST) # Init CTest enable_testing() include(CTest) @@ -195,46 +195,79 @@ if (TEST) test("stateless" "JOHAB") test("stateful" "ISO-2022-KR") - #if(CMAKE_SYSTEM_NAME STREQUAL "AIX") - # AIX specific encodings - test("stateless" "CP856") - test("stateless" "CP922") - test("stateless" "CP1046") - test("stateless" "CP1124") - test("stateless" "CP1129") - test("stateless" "CP1161") - test("stateless" "CP1162") - test("stateless" "CP1163") - #endif() + if(NOT LESS_BUILD OR CMAKE_SYSTEM_NAME STREQUAL "AIX") + message(STATUS "'${PROJECT_NAME}': Use AIX encodings.") + set(USE_AIX ON) + else() + message(STATUS "'${PROJECT_NAME}': AIX encodings disabled.") + set(USE_AIX OFF) + endif() + + if(NOT LESS_BUILD + OR CMAKE_SYSTEM_NAME STREQUAL "Windows" + OR CMAKE_SYSTEM_NAME STREQUAL "Windows3x" + OR CMAKE_SYSTEM_NAME STREQUAL "DOS") + message(STATUS "'${PROJECT_NAME}': Use DOS encodings.") + set(USE_DOS ON) + else() + message(STATUS "'${PROJECT_NAME}': DOS encodings disabled.") + set(USE_DOS OFF) + endif() + + if(NOT LESS_BUILD) + message(STATUS "'${PROJECT_NAME}': Use extra encodings.") + set(USE_EXTRA ON) + else() + message(STATUS "'${PROJECT_NAME}': Extra encodings disabled.") + set(USE_EXTRA OFF) + endif() + + + if(USE_AIX) + # AIX specific encodings + test("stateless" "CP856") + test("stateless" "CP922") + test("stateless" "CP1046") + test("stateless" "CP1124") + test("stateless" "CP1129") + test("stateless" "CP1161") + test("stateless" "CP1162") + test("stateless" "CP1163") + endif() - # OSF/1 specific encodings + # OSF/1 encodings + # We use OSF/1 encodings for general encodings. test("stateless" "DEC-KANJI") test("stateless" "DEC-HANYU") # DOS specific encodings - test("stateless" "CP437") - test("stateless" "CP737") - test("stateless" "CP775") - test("stateless" "CP852") - test("stateless" "CP853") - test("stateless" "CP855") - test("stateless" "CP857") - test("stateless" "CP858") - test("stateless" "CP860") - test("stateless" "CP861") - test("stateless" "CP863") - test("stateless" "CP864") - test("stateless" "CP865") - test("stateless" "CP869") - test("stateless" "CP1125") + if(USE_DOS) + test("stateless" "CP437") + test("stateless" "CP737") + test("stateless" "CP775") + test("stateless" "CP852") + test("stateless" "CP853") + test("stateless" "CP855") + test("stateless" "CP857") + test("stateless" "CP858") + test("stateless" "CP860") + test("stateless" "CP861") + test("stateless" "CP863") + test("stateless" "CP864") + test("stateless" "CP865") + test("stateless" "CP869") + test("stateless" "CP1125") + endif() # Extra encodings - test("stateless" "EUC-JISX0213") - test("stateless" "SHIFT_JISX0213") - test("stateful" "ISO-2022-JP-3") - test("stateless" "BIG5-2003") - test("stateless" "TDS565") - test("stateless" "ATARIST") - test("stateless" "RISCOS-LATIN1") + if(USE_EXTRA) + test("stateless" "EUC-JISX0213") + test("stateless" "SHIFT_JISX0213") + test("stateful" "ISO-2022-JP-3") + test("stateless" "BIG5-2003") + test("stateless" "TDS565") + test("stateless" "ATARIST") + test("stateless" "RISCOS-LATIN1") + endif() endif() From b23c061a28b1fc433336e103dd64cf256e8a7560 Mon Sep 17 00:00:00 2001 From: xihale Date: Sat, 13 Apr 2024 14:34:57 +0800 Subject: [PATCH 21/77] feat: partially using filesystem apis; fix: read_all buffer memory distribution --- tests/utils.hpp | 41 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/tests/utils.hpp b/tests/utils.hpp index bd3dd2fd..8be00086 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -24,8 +24,10 @@ #pragma once #include +#include #include #include +#include #include #include #include @@ -80,23 +82,9 @@ void assert_compare_file(const std::string& path1, const std::string& path2) } // Get file size. -long long get_file_size(const std::string& file_name) +size_t get_file_size(const std::string& file_path) { - const char* filename = file_name.c_str(); - long long file_size = -1; - -#if defined(_WIN32) || defined(_WIN64) - WIN32_FILE_ATTRIBUTE_DATA fileInfo; - if (GetFileAttributesEx(filename, GetFileExInfoStandard, &fileInfo)) { - file_size = ((long long)fileInfo.nFileSizeHigh << 32) | fileInfo.nFileSizeLow; - } -#else - struct stat st; - if (stat(filename, &st) == 0) { - file_size = st.st_size; - } -#endif - return file_size; + return std::filesystem::file_size(file_path); } @@ -111,31 +99,24 @@ std::vector read_all(const std::string& input_file_path) } size_t size = get_file_size(input_file_path.c_str()); - char* buffer = new char[size]; - input_file.read(buffer, size); + std::vector buffer(size); + input_file.read(buffer.data(), size); input_file.close(); - return std::vector(buffer, buffer + size); + return buffer; } // Check if a file exists. -bool file_exists(const std::string& file_name) +bool file_exists(const std::string& file_path) { - std::ifstream file(file_name); - bool result = file.good(); - file.close(); - return result; + return std::filesystem::exists(file_path); } // Remove file. -bool remove_file(const std::string& file_name) +bool remove_file(const std::string& file_path) { - if (std::remove(file_name.c_str()) == 0) - { - return true; - } - return false; + return std::filesystem::remove(file_path); } From dc197a2fbe57a1fd8322d669cc14ef8f5e00d6e6 Mon Sep 17 00:00:00 2001 From: xihale Date: Sat, 13 Apr 2024 16:38:41 +0800 Subject: [PATCH 22/77] feat: partially using filesystem apis; fix: read_all buffer memory distribution --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 21a6834a..8f36387d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2024-01-13 xihale + + transfer some raw file utils apis to std::filesystem apis + promote the performance of read_all function in test/utils.hpp(reduce the memory copy time) + 2023-11-05 ChenPi11 Update test option. From 4a5fae074a000fe13a57f5c68f8bf97e62a71184 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 6 Nov 2023 23:03:13 +0800 Subject: [PATCH 23/77] =?UTF-8?q?Add=20build=20scripts.=20=09=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=20=20=20=20=20ChangeLog=20=09=E6=96=B0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=9A=20=20=20tools/build.ps1=20=09?= =?UTF-8?q?=E6=96=B0=E6=96=87=E4=BB=B6=EF=BC=9A=20=20=20tools/build.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 4 +++ tools/build.ps1 | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/build.sh | 67 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100755 tools/build.ps1 create mode 100755 tools/build.sh diff --git a/ChangeLog b/ChangeLog index 8f36387d..677297b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,10 @@ transfer some raw file utils apis to std::filesystem apis promote the performance of read_all function in test/utils.hpp(reduce the memory copy time) +2023-11-06 ChenPi11 + + Add build scripts. + 2023-11-05 ChenPi11 Update test option. diff --git a/tools/build.ps1 b/tools/build.ps1 new file mode 100755 index 00000000..4808693c --- /dev/null +++ b/tools/build.ps1 @@ -0,0 +1,73 @@ +#!/usr/bin/env pwsh + +# Copyright (C) 2023 The C++ Plus Project. +# This file is part of the cppp-reiconv library. +# +# The cppp-reiconv library is free software; you can redistribute it +# and/or modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either version 3 +# of the License, or (at your option) any later version. +# +# The cppp-reiconv library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the cppp-reiconv library; see the file COPYING. +# If not, see . + +# This script help to build the library. +# This script requires cmake program and C/C++ compiler in the PATH. +# This script requires to run in the root directory of the library. +# This script support varibale 'CMAKEFLAGS' to pass flags to cmake. + +# Usage: ./tools/build.ps1 + +function colored_output { + param ( + [Parameter(Mandatory=$true)][System.String]$color, + [Parameter(Mandatory=$true)][string]$message + ) + Write-Host $message -ForegroundColor $color +} + +function output_log { + param ( + [Parameter(Mandatory=$true)][string]$color, + [Parameter(Mandatory=$true)][string]$level, + [Parameter(Mandatory=$true)][string]$message + ) + $timestamp = Get-Date -Format "yyyy/MM/dd HH:mm:ss" + colored_output $color "[$level] [$timestamp] $message" +} + +# Check cmake program. +if (-not (Get-Command cmake -ErrorAction SilentlyContinue)) { + output_log Red FATAL "CMake program not found in PATH." + exit 1 +} +# Check if we run this script in the root directory. +if (-not (Test-Path "CMakeLists.txt")) { + output_log Red FATAL "Please run this script in the root directory." + exit 1 +} +# Make package +output_log White INFO "Making package..." +if (Test-Path "build") { + Remove-Item -Recurse -Force "build" +} +mkdir "build" +$nproc=1 +if($env:OS -like "*Windows*") { + $nproc = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors +} +else { + if(Test-Path "/proc/cpuinfo") { + $nproc = (Get-Content "/proc/cpuinfo" | Select-String "processor" | Measure-Object).Count + } +} +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/install $env:CMAKEFLAGS +cmake --build build --config Release --parallel $nproc +cmake --install build --config Release +output_log Green SUCCESS "Package made successfully." diff --git a/tools/build.sh b/tools/build.sh new file mode 100755 index 00000000..5b55c694 --- /dev/null +++ b/tools/build.sh @@ -0,0 +1,67 @@ +#!/usr/bin/sh + +# Copyright (C) 2023 The C++ Plus Project. +# This file is part of the cppp-reiconv library. +# +# The cppp-reiconv library is free software; you can redistribute it +# and/or modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either version 3 +# of the License, or (at your option) any later version. +# +# The cppp-reiconv library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the cppp-reiconv library; see the file COPYING. +# If not, see . + +# This script help to build the library. +# This script requires cmake program and C/C++ compiler in the PATH. +# This script requires to run in the root directory of the library. +# This script support varibale 'CMAKEFLAGS' to pass flags to cmake. + +# Usage: ./tools/build.sh + +colored_output() { + if [ "$1" = "red" ]; then + printf "\033[1;31m$2\033[0m $3\n" + elif [ "$1" = "green" ]; then + printf "\033[1;32m$2\033[0m $3\n" + elif [ "$1" = "yellow" ]; then + printf "\033[1;33m$2\033[0m $3\n" + elif [ "$1" = "blue" ]; then + printf "\033[1;34m$2\033[0m $3\n" + elif [ "$1" = "white" ]; then + printf "\033[1;37m$2\033[0m $3\n" + else + printf "$2 $3\n" + fi +} + +output_log() { + timestamp=$(date +"%Y/%m/%d %H:%M:%S") + colored_output "$1" "[$2] [$timestamp] $3" +} + +# Check cmake program. +if ! command -v cmake > /dev/null 2>&1; then + output_log "red" "FATAL" "CMake program not found in PATH." + exit 1 +fi +# Check if we run this script in the root directory. +if [ ! -f "CMakeLists.txt" ]; then + output_log "red" "FATAL" "Please run this script in the root directory." + exit 1 +fi + +# Make package +output_log "white" "INFO" "Making package..." +rm -rf build +mkdir -p build +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/install $CMAKEFLAGS +cmake --build build --config Release --parallel $(nproc) +cmake --install build --config Release +output_log "green" "SUCCESS" "Package made successfully." +exit 0 From aff4dbfc7958bad6c3be00441093e44b3b2e204f Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 25 Jul 2024 11:13:45 +0800 Subject: [PATCH 24/77] Use Rubisco for project manager. 1. Use Rubisco for project manager. 2. Remove NLS support. 3. Remove dist tools. 4. Remove `ChangeLog`. --- .gitignore | 3 + CMakeLists.txt | 3 - CPPPPKG | 18 - ChangeLog | 6264 --------------------------------- FILELIST | 532 --- Makefile.devel | 5 +- cpppdist.py | 195 - include/cppp/reiconv.hpp.in | 42 +- lang/en_US.langmap | 4 - lang/zh_CN.langmap | 191 - repo.json | 5 + setup.cmd | 42 - setup.sh | 58 - tools/build.ps1 | 73 - tools/build.sh | 67 - tools/genaliases.cpp | 2 + windows/libcppp-reiconv.rc.in | 2 +- 17 files changed, 34 insertions(+), 7472 deletions(-) delete mode 100644 CPPPPKG delete mode 100644 ChangeLog delete mode 100644 FILELIST delete mode 100755 cpppdist.py delete mode 100644 lang/en_US.langmap delete mode 100644 lang/zh_CN.langmap create mode 100644 repo.json delete mode 100644 setup.cmd delete mode 100755 setup.sh delete mode 100755 tools/build.ps1 delete mode 100755 tools/build.sh diff --git a/.gitignore b/.gitignore index db96c706..ab8e322d 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,6 @@ tests/data/GB18030-2022.TXT # Dist directory and temps cppp-reiconv-v* __pycache__ +dist +distpkg + diff --git a/CMakeLists.txt b/CMakeLists.txt index acd8ad41..d2822f88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,8 +59,6 @@ endif() get_filename_component(BUILD_AUX "${BUILD_AUX}" ABSOLUTE) include("${BUILD_AUX}/cmake/cppp.cmake") -cppp_init_nls_util() - # ---------------------------------------------------------------------------------- check_have_visibility() @@ -88,7 +86,6 @@ else() set(DLL_VARIABLE "") endif() configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp.inst") -cppp_nls_autotranslate("${output_includedir}/cppp/reiconv.hpp.inst" "${CMAKE_CURRENT_SOURCE_DIR}/lang") # Add includes include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") diff --git a/CPPPPKG b/CPPPPKG deleted file mode 100644 index 31c76908..00000000 --- a/CPPPPKG +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name" : "cppp-reiconv", - "version" : "3.0.0", - "list_file_path": "FILELIST", - "description": "C++ Plus character set conversion library", - "authors": [ - "The C++ Plus Project", - "Bruno Haible", - "ChenPi11" - ], - "webpage": "https://github.com/cppp-project/cppp-reiconv", - "subpackages": { - "build-aux": { "path": "build-aux", "ignore": true } - }, - "license": [ - "LGPLv3" - ] -} diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 677297b6..00000000 --- a/ChangeLog +++ /dev/null @@ -1,6264 +0,0 @@ -2024-01-13 xihale - - transfer some raw file utils apis to std::filesystem apis - promote the performance of read_all function in test/utils.hpp(reduce the memory copy time) - -2023-11-06 ChenPi11 - - Add build scripts. - -2023-11-05 ChenPi11 - - Update test option. - More tests in 'Makefile.devel'. - Use 'cppp_install_library' for install libraries. - -2023-10-30 ChenPi11 - - Update compile options' name. - Use extra encodings always except less build. - Move OSF/1 encodings to general encodings. - -2023-10-28 ChenPi11 - - Add new function 'ascii_mbtou16', 'ascii_mbtou32'. - Use 'nullptr' instead of 'NULL'. - -2023-10-22 ChenPi11 - - Update test suite. - Remove 'iconv_t', 'iconv_open', 'iconv', 'iconv_close', 'iconvctl', 'iconv_unicode_char_hook', 'iconv_hooks', iconvctl requests, and 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp);'. - Hide 'iconv_open', 'iconv_close', 'iconv' symbols. You can still call it, see 'tests/_iconv.hpp'. - Rename 'iconv_string' to 'convert'. - Update usage of 'convert()'. - -2023-10-19 ChenPi11 - - Remove shiftseq test. - -2023-10-08 ChenPi11 - - Rename 'tests/file_utils.hpp' to 'tests/utils.hpp'. - Use '#pragma once' for tests header. - -2023-10-06 ChenPi11 - - Remove wchar test. - Remove iconv_fallbacks. - Use '#pragma once' for header. - -2023-10-04 ChenPi11 - - v2.1.0 released. - Switch version to v3.0.0. - Remove function 'iconv', 'encode', 'iconvlist'. - Remove iconv surface, cppp-reiconv will not support '//ZOS_UNIX'. - -2023-10-03 ChenPi11 - - Update C++ standard of the project. - Remove unused canonical files and codes. - Move 'lib/gen*.c' to 'tools/gen*.cpp'. - Optimize 'Makefile.devel'. - Move generated files to C++ to avoid 'register' warnings. - Add test and clean target in 'Makefile.devel'. - Update 'FILELIST'. - Update GitHub Action for build and test. - Prepare for release version 2.1.0. - -2023-09-09 ChenPi11 - - Version 2.1.0 compile failed (release failed). - Update doccomments in reiconv.hpp.in. - Add function 'int iconv_string(const iconv_t& cd, const char *start, const char *end, char **resultp, size_t *lengthp)' - Add function 'int iconv_string(int tocode_cp, int fromcode_cp, const char* start, const char* end, char** resultp, size_t* lengthp, bool strict=true)' - Update function 'encode' definion. - Fix some warnings in Clang. - Change the 'autodetect' feature of 'iconv_string' to a non extra feature. - Update language maps. - Fix compile error in MinGW GNU GCC. - -2023-09-02 ChenPi11 - - Optimize 'iconv_open(int, int)'. - Change version to '2.1.0'. - Update NEWS.md. - Remove some authors because they are only contributors. - Prepare for release version 2.1.0. - -2023-08-29 ChenPi11 - - Fix type-conflict warning when in clang. - Fully remove wchar support. - Add function 'extern iconv_t iconv_open (int tocode_cp, int fromcode_cp, bool strict=true)'. - Update language map. - -2023-08-27 ChenPi11 - - Add codepage definitions. - -2023-08-24 ChenPi11 - - Fix subdirectory import bug. - Optimize the way to import build-aux. - -2023-08-23 ChenPi11 - - Add CTest on Windows support. - -2023-07-28 ChenPi11 - - Finish NLS Translate language maps (en_US, zh_CN). - Add Doxygen notes for 'cppp/reiconv.hpp'. - Fix 'reiconv_version' bug (changed it to 2.0). - Remove 'iconv_allocation_t'; - -2023-07-19 ChenPi11 - - Fix encode()'s EILSEQ bug. - -2023-07-17 ChenPi11 - - Add social preview in README.md. - -2023-07-16 ChenPi11 - - Finish GitHub build CI for Windows. - Fix encoding bug in Windows Resource '(C)' character. - Fix shared library runtime and archive install destination problem. - -2023-07-15 ChenPi11 - - Fix macro bug in MSVC resource build. - Add GitHub build CI for Linux and macOS. - -2023-07-12 ChenPi11 - - Change `int` to 'unsigned short' in canonical headers. - Finish GitHub CI test for Linux and macOS. - -2023-07-10 ChenPi11 - - Update build-aux setup scripts. - Fix GitHub test CI's bug. - -2023-07-08 ChenPi11 - - Add GitHub test CI. - -2023-07-07 ChenPi11 - - Perfect the documents. - -2023-07-03 ChenPi11 - - Add 'GB18030' tests. - Add C++ Plus dist utils and change version info. - Remove function 'iconv_open_into'. - -2023-07-02 ChenPi11 - - Add C++ Plus dist utils. - -2023-07-01 ChenPi11 - - Remove src, srclib, gnulib, po, man, tools. - Remove unused things. - Change 'COPYING.LIB' to 'COPYING'. - Redist 'GNU LIBICONV' to 'cppp-reiconv'. - Remove 'CHAR' and 'WCHAR_T' encoding. - Remove libcharset. - Preparing to transition to C++. - Remove autoconf buildsystem support. - Add CMake support. - Move generated file into 'lib/generated'. - Move cppp-reiconv to a C++ library. - Remove translit support. - Remove 'LIBICONV_PLUG'. - -2023-06-29 Bruno Haible - - Update the installation instructions for Windows. - * INSTALL.windows: Add a note about MSYS2. - -2023-05-29 Bruno Haible - - GB18030: Help transitioning away from PUA code points. - * lib/gb18030ext.h (gb18030_2005_ext_wctomb): Remove function. - (gb18030ext_wctomb): Renamed from gb18030_2022_ext_wctomb. - * lib/gb18030uni.h (gb18030_2005_uni_wctomb): Map 6 Ext-B code points to - 4-bytes sequences. - (gb18030_2022_uni_wctomb): Small refactoring. - * lib/gb18030_2005.h (gb18030_2005_pua2charset): Map 6 PUA code points - to 4-bytes sequences instead of 2-bytes sequences. - (gb18030_2005_wctomb): Update accordingly. Invoke gb18030ext_wctomb - instead of gb18030_2005_ext_wctomb. - * lib/gb18030_2022.h (gb18030_2022_wctomb): Invoke gb18030ext_wctomb - instead of gb18030_2022_ext_wctomb. - * tests/GB18030-2005.IRREVERSIBLE.TXT: Update the inverse mappings of 6 - Ext-B code points and 6 PUA code points. - * NEWS: Mention it. - -2023-05-24 Bruno Haible - - man pages: List a fifth condition when iconv(3) may stop. - Based on the patch to the man-pages project - = - - * man/iconv.3: List a fifth condition. - -2023-05-24 Bruno Haible - - man pages: Use man page section title from groff or the distro. - Reported by Mike Fulton in - . - * man/*.[13]: Remove section title "Linux Programmer's Manual". - -2023-05-21 Bruno Haible - - Support creating shared libraries on Hurd/x86_64. - Patch from - . - * m4/libtool.m4 (_LT_ENABLE_LOCK): Treat Hurd/x86_64 like - Linux/x86_64. - -2023-05-21 Bruno Haible - - Fix link error regarding _libiconv_version on MSVC in C++ mode. - Reported at . - * include/iconv.h.in (_libiconv_version): Enclose in an extern "C" - block. - -2023-05-20 Bruno Haible - - Implement GB18030 version 2022. - * lib/encodings.def (GB18030): Add alias GB18030:2005. - (GB18030:2022): New encoding. - * lib/gb18030ext.h (gb18030_2005_ext_2uni_pagefe): Renamed from - gb18030ext_2uni_pagefe. - (gb18030_2022_ext_2uni_pagefe): New array. - (gb18030_2005_ext_mbtowc): Renamed from gb18030ext_mbtowc. - (gb18030_2022_ext_mbtowc): New function. - (gb18030_2005_ext_wctomb): Renamed from gb18030ext_wctomb. - (gb18030_2022_ext_wctomb): New function. - * lib/gb18030uni.h (gb18030_2022_charset2uni_pua1, - gb18030_2022_charset2uni_pua2): New arrays. - (gb18030_2005_uni_mbtowc): Renamed from gb18030uni_mbtowc. - (gb18030_2022_uni_mbtowc): New function. - (gb18030_2022_uni2charset_pua1, gb18030_2022_uni2charset_pua2): New - arrays. - (gb18030_2005_uni_wctomb): Renamed from gb18030uni_wctomb. - (gb18030_2022_uni_wctomb): New function. - * lib/gb18030_2005.h: Renamed from lib/gb18030.h. Update comments. - (gb18030_2005_mbtowc): Renamed from gb18030_mbtowc. - (gb18030_2005_pua2charset): Renamed from gb18030_pua2charset. - (gb18030_2005_wctomb): Renamed from gb18030_wctomb. - * lib/gb18030_2022.h: New file, based on lib/gb18030_2005.h. - * lib/converters.h: Don't include gb18030.h. Include gb18030_2005.h, - gb18030_2022.h. - * lib/Makefile.in (SOURCE_FILES): Remove gb18030.h. Add gb18030_2005.h, - gb18030_2022.h. - * tests/GB18030-2005-BMP.TXT: Renamed from tests/GB18030-BMP.TXT. - * tests/GB18030-2005.IRREVERSIBLE.TXT: Renamed from - tests/GB18030.IRREVERSIBLE.TXT. - * tests/GB18030-2022-BMP.TXT: New file. - * tests/Makefile.in (check): Test GB18030:2005 instead of GB18030. Also - test GB18030:2022. - (clean): Don't remove GB18030.TXT. Instead, remove GB18030-2005.TXT and - GB18030-2022.TXT. - (SOURCE_FILES): Update. Add GB18030-2022-BMP.TXT. - * README: Mention the new encoding. - * man/iconv_open.3: Likewise. - * NEWS: Likewise. - -2023-05-19 Bruno Haible - - Make the compiler used by Makefile.devel customizable. - Reported by Mike Fulton in - . - * Makefile.devel: Require GNU make. - (CC): Use value from the environment, if set and non-empty. - (CFLAGS): Use value from the environment, if set. - * autogen.sh (GMAKE): New variable. - Use it for executing Makefile.devel. - -2023-05-17 Bruno Haible - - On z/OS, allow charset tagging of temporary shell scripts. - Reported by Mike Fulton in - . - * lib/genaliases.c (BINARY_MODE): New macro. - (main): Use it instead of "b". - -2023-05-12 Bruno Haible - - Integrate the last change. - * src/Makefile.in (SOURCE_FILES): Add zos-tag.h. - * tests/Makefile.in (SOURCE_FILES): Add check-tag. - * NEWS: Mention the new functionality. - -2023-05-12 Mike Fulton - - On z/OS, set a charset tag on iconv's output file. - For the concept of charset tags as external metadata on z/OS files, see - . - * src/zos-tag.h: New file. - * src/iconv.c: Include zos-tag.h. - (convert): Add a 'tocode' parameter. On z/OS, turn off auto-conversion - and tag the output file. - (main): Update callers. - * tests/check-ebcdic: On z/OS, make all test files initially untagged. - * tests/check-tag: New file. - * tests/Makefile.in (check): Pass the host_os to check-ebcdic. Invoke - check-tag. - -2023-04-03 Bruno Haible - - Fix genflags compilation error. - * lib/genflags.c (ICONV_SURFACE_EBCDIC_ZOS_UNIX): New macro, copied from - include/iconv.h.in. - - Allow overriding the newline conversion for EBCDIC encodings. - Reported by Mike Fulton in - . - * include/iconv.h.in (ICONV_SURFACE_NONE, - ICONV_SURFACE_EBCDIC_ZOS_UNIX): New macros. - (ICONV_GET_FROM_SURFACE, ICONV_SET_FROM_SURFACE, ICONV_GET_TO_SURFACE, - ICONV_SET_TO_SURFACE): New macros. - * lib/converters.h (struct conv_struct): Add the fields isurface, - osurface. - (swap_x15_x25): New macro. - * lib/iconv.c (iconv_open, iconv_open_into): Add local variables - from_surface, to_surface. - (ALL_SURFACES): New macro. - (iconvctl): Adjust ICONV_TRIVIALP implementation. Implement the - ICONV_{GET,SET}_{FROM,TO}_SURFACE requests. - * lib/iconv_open1.h: Parse a /ZOS_UNIX surface specifier. Set - from_surface, to_surface. - * lib/iconv_open2.h: Copy the values of from_surface, to_surface into - the conversion descriptor. - * lib/ebcdic*.h (*_mbtowc): Test the isurface. If requested, call - swap_x15_x25 right after fetching an input byte. - (*_wctomb): Test the osurface. If requested, call swap_x15_x25 right - before storing an output byte. - * man/iconvctl.3 (REQUEST VALUES): Document the - ICONV_{GET,SET}_{FROM,TO}_SURFACE requests. - * src/iconv.c (main): If ICONV_EBCDIC_ZOS_UNIX is set, set the from/to - surfaces accordingly. - * man/iconv.1 (ENVIRONMENT): New section. - * tests/check-ebcdic: New file. - * tests/Makefile.in (check): Invoke it. - (SOURCE_FILES): Add it. - * NEWS: Mention the new functionality. - -2023-03-31 Bruno Haible - - Add some transliterations for mathematical symbols. - Based on - and the translit_neutral change in - . - Reported by Mike Fulton in - . - * lib/translit.def: Add a couple of transliterations in the range - U+27C0..U+29FF. - * NEWS: Mention it. - -2023-03-31 Bruno Haible - - Upgrade transliterations to Unicode 15.0.0. - * tools/gen-translit-def-part.lisp: Update comments. - * lib/translit.def: Include differences between the generated files - translit-part-4.0.0.def and translit-part-15.0.0.def. - -2023-03-31 Bruno Haible - - Make table of transliterations more maintainable. - * tools/gen-translit-def-part.lisp: New file. - * Makefile.in (SOURCE_FILES): Add it. - -2023-03-31 Bruno Haible - - Fix table of transliterations. - * lib/translit.def: Sort according to Unicode code point. - -2023-02-13 Bruno Haible - - Fix iconv link command for Cygwin. - Inspired by https://www.cygwin.com/git-cygwin-packages/?p=git/cygwin-packages/libiconv.git;a=blob;f=1.16-cross-install.patch;h=7b3c5c0d761497a20abf0e4cc38d74f2755445fb;hb=HEAD . - Rationale: libintl may depends on libiconv. - * src/Makefile.in (install): On the link command line, mention libintl - before libiconv. - -2023-01-29 Bruno Haible - - Fix a clang warning "a function declaration without a prototype...". - * lib/loop_wchar.h (mbrtowc): Don't declare. Drop portability to BeOS. - -2022-07-18 Bruno Haible - - Make autopull.sh more suited for continuous integration. - * autopull.sh: Support option --one-time. - -2022-07-18 Bruno Haible - - Move gnulib-tool invocation back from autopull.sh to autogen.sh. - * autogen.sh: Revert last change. Improve comments. - * autopull.sh: Only call 'gitsub.sh pull'. - * HACKING: Mention autopull.sh. - -2022-07-17 Bruno Haible - - Split autogen.sh into autopull.sh and autogen.sh. - * autopull.sh: New file, based on autogen.sh. - * autogen.sh: Remove code that was moved to autopull.sh. Remove - --skip-gnulib option. - * Makefile.devel (all): Remove srclib/Makefile.gnulib. - * Makefile.in (SOURCE_FILES): Add autogen.sh. - * HACKING: Mention autopull.sh. - -2022-05-22 Bruno Haible - - Add GNU Project notice. - * JOIN-GNU: New file. Inspired by a suggestion from José E. Marchesi - on the gnu-prog-discuss mailing list. - * README: Refer to it. - * Makefile.in (SOURCE_FILES): Add it. - -2022-05-15 Bruno Haible - - Switch to libtool 2.4.7. - * m4/libtool.m4: Update from libtool-2.4.7, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Likewise. - * m4/ltsugar.m4: Likewise. - * m4/ltversion.m4: Likewise. - * m4/lt~obsolete.m4: Likewise. - * build-aux/ltmain.sh: Update from libtool-2.4.7, with modifications: - 2017-07-15 Bruno Haible - Allow building statically linked binaries, through - LDFLAGS="-static". Apply patch from - . - * build-aux/ltmain.sh (func_mode_help, func_mode_link): In the - link mode, accept option '-static-uninstalled-libs' in place of - '-static', and make '-static' an equivalent of '-all-static'. - -2022-04-13 Bruno Haible - - Fix undefined behaviour. - * tests/test-shiftseq.c (main2): Make input array larger. - -2022-02-12 Bruno Haible - - Update translations. - * po/ro.po: Update Romanian translations. - * po/wa.po: Update Walloon translations. - -2022-02-12 Bruno Haible - - Prepare for version 1.17. - * configure.ac: Bump version number to 1.17. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 9:0:7. - * src/iconv.c (print_version): Update copyright year. - * windows/iconv.rc: Likewise. - * windows/libiconv.rc: Likewise. - * README: Update download link. - -2022-02-12 Bruno Haible - - Update source file list (regression 2022-01-23). - * lib/Makefile.in (SOURCE_FILES): Add encodings_zos.def, ebcdic*.h. - (GENERATED_FILES): Add aliases_zos.h, canonical_zos.h. - * tests/Makefile.in (SOURCE_FILES): Add IBM-*.TXT. - -2022-01-23 Bruno Haible - - Update NEWS. - * NEWS: Mention the EBCDIC encodings. - -2022-01-23 Bruno Haible - - Optimize the EBCDIC table sizes. - * lib/converters.h (DEDUPLICATE_TABLES): New macro. - * lib/ebcdic1025.h: Deduplicate tables with ebcdic880.h. - * lib/ebcdic1123.h: Deduplicate tables with ebcdic1025.h. - * lib/ebcdic1132.h: Deduplicate tables with ebcdic838.h. - * lib/ebcdic1153.h: Deduplicate tables with ebcdic870.h. - * lib/ebcdic1154.h: Deduplicate tables with ebcdic880.h. - * lib/ebcdic1155.h: Deduplicate tables with ebcdic1026.h. - * lib/ebcdic1156.h: Deduplicate tables with ebcdic1112.h. - * lib/ebcdic1157.h: Deduplicate tables with ebcdic1122.h. - * lib/ebcdic1158.h: Deduplicate tables with ebcdic1154.h, ebcdic1123.h. - * lib/ebcdic1160.h: Deduplicate tables with ebcdic838.h. - * lib/ebcdic1164.h: Deduplicate tables with ebcdic1130.h. - * lib/ebcdic1165.h: Deduplicate tables with ebcdic870.h. - * lib/ebcdic1166.h: Deduplicate tables with ebcdic1154.h. - * lib/ebcdic4971.h: Deduplicate tables with ebcdic875.h. - * lib/ebcdic12712.h: Deduplicate tables with ebcdic424.h. - -2022-01-23 Bruno Haible - - New EBCDIC encodings. - Reported by Ulrich Schwab and Calvin Buckley via Jack Woehr. - * NOTES: Mention how to enable EBCDIC encodings. - * tests/IBM-*.TXT: New files. - * tools/8bit_tab_to_h.c (main): Emit copyright header with year 2022. - * tools/Makefile: Add rules for generating ebcdic*.h. - * lib/ebcdic*.h: New files, automatically generated by tools/Makefile. - * lib/ebcdic838.h: Tweak reverse mapping manually. - * lib/ebcdic1160.h: Likewise. - * lib/converters.h: Include all ebcdic*.h. - * lib/encodings_zos.def: New file. - * lib/genaliases2.c: Include encodings_zos.def. - * lib/genflags.c: Likewise. - * Makefile.devel (lib/aliases_zos.h lib/canonical_zos.h): New rule. - (lib/flags.h, totally-clean): Update. - * lib/aliases2.h: Include aliases_zos.h. - * lib/iconv.c (USE_ZOS): New macro. - Include encodings_zos.def, canonical_zos.h. - * README, man/iconv_open.3: Document the IBM-* encodings. - * tests/Makefile.in (check-extra-yes): Also test the EBCDIC encodings. - -2022-01-04 Bruno Haible - - Update after gnulib changed. - * gnulib-local/m4/alloca.m4 (gl_FUNC_ALLOCA): Set GL_GENERATE_ALLOCA_H - instead of ALLOCA_H. Drop AC_SUBST and AM_CONDITIONAL invocations. - -2021-09-19 Bruno Haible - - tests: Avoid check-subst failures in QEMU user-mode environments. - * Makefile.devel (GNULIB_MODULES): Add stdbool. - (gnulib-imported-files): Copy also tests/qemu.h. - * tests/is-native.c: New file. - * tests/Makefile.in (is-native, is-native.@OBJEXT@): New targets. - (clean): Remove the 'is-native' program. - (SOURCE_FILES): Add is-native.c. - (IMPORTED_FILES): Add qemu.h. - * tests/check-subst: Invoke 'locale charmap' only in native - environments. - -2021-06-27 Bruno Haible - - README: Update. - Reported at . - * README: Overhaul the paragraph that mentions iconv.m4. - -2021-06-06 Bruno Haible - - gnulib-local: Put real license notice into the source files. - * gnulib-local/lib/alloca.in.h: Use an LGPLv2+ notice. - -2021-02-28 Bruno Haible - - Update DEPENDENCIES. - * DEPENDENCIES: List the normal dependencies of a package with an - Autoconf-generated configure file. - -2021-02-07 Bruno Haible - - Support creating shared libraries on MidnightBSD. - Patch from . - * m4/libtool.m4: Treat MidnightBSD like FreeBSD. - * build-aux/ltmain.sh: Likewise. - -2021-01-31 Bruno Haible - - Update after gnulib changed on 2020-08-26. - * configure.ac: Test $iconv_arg1, not $am_cv_proto_iconv_arg1. - -2021-01-31 Bruno Haible - - Switch to autoconf 2.71. - * autogen.sh: Update comment. - * configure.ac: Use AS_HELP_STRING instead of AC_HELP_STRING. Invoke - AC_C_BIGENDIAN instead of CL_WORDS_LITTLEENDIAN. - * m4/eilseq.m4: Require Autoconf >= 2.61. - (AC_EILSEQ): Improve quoting. Use AC_COMPUTE_INT instead of - _AC_COMPUTE_INT. - * m4/endian.m4: Remove file. - * Makefile.in (SOURCE_FILES): Remove it. - -2020-12-08 Bruno Haible - - Switch to autoconf 2.70. - * Makefile.devel (AUTOCONF, AUTOHEADER): Remove '-2.69' suffix. - * HACKING: Remove sentence about symbolic links. - * autogen.sh: Update comment. - -2020-08-31 Bruno Haible - - Fix some -Wcast-qual warning, reported by clang. - * lib/iconv.c (compare_by_name): Add more 'const'. - (iconv_canonicalize): Cast value to 'unsigned char', not pointer to 'unsigned char *'. - * lib/iconv_open1.h: Likewise. - -2020-08-30 Bruno Haible - - Make sure that build-aux/compile is in the tarball. - * autogen.sh: Fetch also 'build-aux/compile' through gnulib-tool. - * Makefile.devel (srclib/Makefile.in): Don't fetch nor delete - 'build-aux/compile'. - * Makefile.in (AUTOMAKE_IMPORTED_FILES): Remove build-aux/compile. - (IMPORTED_FILES): Add build-aux/compile. - -2020-08-29 Bruno Haible - - Update after gnulib changed. - * configure.ac (AC_PREREQ): Bump minimum Autoconf version to 2.64. - -2020-08-06 Bruno Haible - - Avoid a GCC warning with GCC >= 7. - Reported by Reini Urban - in . - * lib/gentranslit.c (main): Reset i to 0 each time p gets a new value. - Add assertion about i's possible values. - -2020-04-05 Bruno Haible - - Fix an autogen.sh failure (regression from 2016-12-04). - Reported by Petr Ovtchenkov in - . - * autogen.sh: Invoke also the Makefile target srclib/Makefile.in, so as - to get build-aux/install-sh. Finish the "copy files" phase before recursing - through the subpackages tree through Makefile.devel. - * Makefile.devel: Reorder targets. - -2020-04-04 Bruno Haible - - Don't use LGPLv3. - * gnulib-local/modules/mbstate (License): Set to LGPLv2+. - -2020-04-04 Bruno Haible - - Change the license of the library from LGPL 2.0 to LGPL 2.1. - * COPYING.LIB: Upgrade to LGPL 2.1. - -2019-12-23 Bruno Haible - - Do export the symbol 'locale_charset' (needed by GNU bash). - * lib/Makefile.in (DEFS): Define also BUILDING_LIBCHARSET. - -2019-09-01 Bruno Haible - - build: Add support for shallow-cloning of subdirectories. - * gitsub.sh (func_usage): Document allowed git options with 'git pull'. - (func_pull): Accept GIT_OPTIONS argument. - (pull): Parse git options before complaining about too many arguments. - Pass the git options to func_pull. - -2019-07-05 Bruno Haible - - Don't export the symbol 'aliases_lookup' on non-ELF platforms. - * Makefile.devel (lib/aliases.h, lib/aliases_sysaix.h, - lib/aliases_syshpux.h, lib/aliases_sysosf1.h, lib/aliases_syssolaris.h): - Add a 'static' keyword in front of the declaration of aliases_lookup. - -2019-07-02 Bruno Haible - - Update to current gnulib. - * Makefile.devel (GNULIB_MODULES): Add lib-symbol-visibility. - (srclib/Makefile.gnulib): Copy codeset.m4. - * srclib/Makefile.am (AM_CFLAGS): Initialize. - -2019-07-02 Bruno Haible - - Drop unused macro gl_GLIBC21. - * autogen.sh: Don't copy glibc21.m4. - -2019-05-22 Bruno Haible - - Fix comment. - Reported by Paul Hardy . - * lib/jisx0213.h: Fix comment about the underlying standard version. - -2019-05-11 Bruno Haible - - Update bug reporting instructions. - * README: Tell users to report bugs in the bug tracker or by email. - * src/iconv.c (usage): Likewise. - (print_version): Move URL out of translatable string. - -2019-04-26 Bruno Haible - - Update translations. - $ rsync -Lrtvz translationproject.org::tp/latest/libiconv/ po/new - $ cd po/new - $ for f in *.po; do \ - msgmerge --update --lang=${f%.po} --previous $f ../libiconv.pot; \ - done - $ mv *.po ../ - $ cd ..; rm -rf new - -2019-04-26 Bruno Haible - - Update POT file. - $ cd po; make update-po - -2019-04-26 Bruno Haible - - Prepare for version 1.16. - * configure.ac: Bump version number to 1.16. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 8:1:6. - * src/iconv.c (print_version): Update copyright year. - * windows/iconv.rc: Likewise. - * windows/libiconv.rc: Likewise. - * README: Update download link. - -2019-04-26 Bruno Haible - - Tweak exported symbols when --enable-relocatable is used. - * lib/Makefile.in (DEFS): Map 'relocate2' to a different symbol. - -2019-04-01 Bruno Haible - - build: Separate git operations from build operations. - * gitsub.sh: New file, from gnulib. - * .gitmodules: New file. - * autogen.sh: Remove all git operations. Look at GNULIB_SRCDIR - environment variable. Ignore the GNULIB_TOOL environment variable. - * HACKING: Explain when to use gitsub.sh. - -2019-03-07 Bruno Haible - - Avoid signed integer overflow during shifts. - Reported by Jeffrey Walton . - * lib/tcvn.h (tcvn_wctomb): Use unsigned integer type for bit mask - operation. - * lib/viscii.h (viscii_wctomb): Likewise. - -2019-03-04 Bruno Haible - - Add support for --enable-relocatable to libcharset. - * autogen.sh: Copy some more files to libcharset/build-aux/ and - libcharset/m4/. - -2019-03-04 Bruno Haible - - Update --enable-relocatable support after gnulib changed. - * configure.ac: Move the LT_INIT invocation before the gl_RELOCATABLE - invocation. Remove unused argument to gl_RELOCATABLE. - -2019-01-27 Bruno Haible - - Accommodate a shell that is not in /bin/sh. - * Makefile.in (SHELL): Use the value found by configure. - * lib/Makefile.in (SHELL): Likewise. - * man/Makefile.in (SHELL): Likewise. - * src/Makefile.in (SHELL): Likewise. - * tests/Makefile.in (SHELL): Likewise. - (check, check-extra-yes): Use SHELL to run the check-* scripts. - -2019-01-27 Bruno Haible - - Update after gnulib changed. - * Makefile.in (GNULIB_IMPORTED_FILES): Remove build-aux/snippet/*. - -2019-01-27 Bruno Haible - - Update support for building with MSVC. Automake does not install ar-lib. - * autogen.sh: Fetch build-aux/ar-lib here. - * Makefile.devel (srclib/Makefile.in): Don't fetch build-aux/ar-lib - here. - * Makefile.in (AUTOMAKE_IMPORTED_FILES): Remove build-aux/ar-lib. - (IMPORTED_FILES): Add build-aux/ar-lib. - -2019-01-06 Bruno Haible - - Revisit handling of file descriptors closed by the parent process. - * src/iconv.c (main): Add comment. - -2018-10-23 Bruno Haible - - Remove outdated DJGPP build infrastructure. - Approved by Juan Manuel Guerrero . - * djgpp: Remove directory. - * INSTALL.djgpp: Remove file. - * Makefile.in (SOURCE_FILES): Remove them. - -2018-10-23 Bruno Haible - - Update after gnulib changed. - * configure.ac (AC_PREREQ): Bump minimum Autoconf version to 2.63. - -2018-09-22 Bruno Haible - - Avoid some warnings in MSVC build. - * include/export.h: Handle MSVC compiler as well. - -2018-09-22 Bruno Haible - - Update from gnulib. Move mapping tables into the code. - * autogen.sh: Don't create libcharset/m4/relocatable-lib.m4. - * Makefile.in (mostlyclean, clean, distclean, maintainer-clean): Don't - remove lib/charset.alias. - * tests/check-subst: Don't set CHARSETALIASDIR. - -2018-05-04 Bruno Haible - - Drop special instructions for OSF/1. - * INSTALL.generic: Remove the recommendation for OSF/1. - -2018-05-04 Bruno Haible - - Simplify: Remove the ability to install a preloadable library. - * preload/*: Remove directory. - * Makefile.devel: Don't recurse into 'preload'. - * Makefile.in: Likewise. - * configure.ac: Don't declare 'preload' as a subdirectory. - * README, NEWS: Update. - -2018-05-04 Bruno Haible - - Simplify code. Drop support for Borland C++ on Windows. - * lib/iconv.c: Simplify 'defined _WIN32 || defined __WIN32__' to just - 'defined _WIN32'. - * lib/iconv_open1.h: Likewise. - -2018-05-04 Bruno Haible - - * lib/relocatable.c: Update from gnulib. - -2018-05-04 Bruno Haible - - Switch to automake 1.16. - * autogen.sh: Update comment. - * Makefile.devel (AUTOMAKE, ACLOCAL): Switch to version 1.16. - * libcharset/Makefile.devel (ACLOCAL): Likewise. - * preload/Makefile.devel (ACLOCAL): Likewise. - -2018-03-27 Bruno Haible - - Doc tweaks. - * README: Don't recommend to use --prefix=/usr/local, as it produces - problems with GCC (since GCC's treatment of /usr/local/include and - /usr/local/lib is inconsistent by default). Don't recommend to use - the iconv.m4 installed by GNU gettext, because it won't work when - GNU automake and GNU gettext are installed with different --prefix - options; instead recommend the 'iconv' module from gnulib. - -2018-01-27 Bruno Haible - - Rename some files. - * INSTALL.windows: Renamed from README.windows. - * INSTALL.djgpp: Renamed from README.djgpp. - * Makefile.in (SOURCE_FILES): Update. - -2018-01-03 Bruno Haible - - Fix installation in 64-bit mode on AIX. - * lib/Makefile.in (AR): New variable. - (install): Use it instead of hardcoding 'ar'. - -2017-11-26 Bruno Haible - - Avoid end-of-lines problem in generated shell scripts on Cygwin. - Patch by Feiyun Wang . - * lib/genaliases.c (main): Create canonical.sh and canonical_local.sh - with Unix end-of-line characters, regardless of Cygwin choice of - text mode vs. binary mode. - -2017-07-15 Bruno Haible - - Allow building statically linked binaries, through LDFLAGS="-static". - Apply patch from - . - * build-aux/ltmain.sh (func_mode_help, func_mode_link): In the link - mode, accept option '-static-uninstalled-libs' in place of '-static', - and make '-static' an equivalent of '-all-static'. - -2017-07-15 Bruno Haible - - Don't attempt to build preloadable_libiconv.so when linking statically. - * preload/configure.ac (enable_shared, enable_static): Don't force - shared libraries when LDFLAGS indicates static linking. - (PLUGLIB): Set to empty when is not configured for building shared - libraries. - -2017-07-15 Bruno Haible - - Get rid of autom4te.cache directories, as far as possible. - * Makefile.devel (srclib/Makefile.in, aclocal.m4, configure, - config.h.in): Remove autom4te.cache after invoking aclocal, autoconf, - autoheader, automake. - * preload/Makefile.devel (aclocal, configure): Likewise. - -2017-05-18 Bruno Haible - - * lib/relocatable.h: Update from gnulib. - * lib/relocatable.c: Update from gnulib. - -2017-01-30 Bruno Haible - - Prepare for version 1.15. - * src/iconv.c (print_version): Update copyright year. - * windows/iconv.rc: Likewise. - * windows/libiconv.rc: Likewise. - -2016-12-29 Bruno Haible - - Make Makefile.devel consistent with .gitignore. - * Makefile.devel (srclib/Makefile.in): Depend on aclocal.m4. - (totally-clean): Remove also aclocal.m4. - -2016-12-25 Bruno Haible - - Tweak autogen.sh. - * autogen.sh: Emit a "done" diagnostic when autogen.sh completed - successfully. - -2016-12-25 Bruno Haible - - Reorder Makefile.devel. - * Makefile.devel: Reorder: put gnulib targets before autotools targets. - -2016-12-14 Bruno Haible - - Cleanup useless removals. - * lib/Makefile.in (distclean): No need to remove 'libtool'. - -2016-12-04 Bruno Haible - - Update comments. - * Makefile.devel: Update comments about release process. - -2016-12-04 Bruno Haible - - Create tarballs through an Automake-like "make dist" command. - * Makefile.in (SOURCE_FILES, LIBTOOL_IMPORTED_FILES, - AUTOMAKE_OLD_IMPORTED_FILES, AUTOMAKE_IMPORTED_FILES, IMPORTED_FILES, - GENERATED_FILES, DISTRIBUTED_BUILT_FILES, DISTFILES): New macros. - (distdir): New target. - (PACKAGE, VERSION, TAR, GZIP): New macros. - (dist): New target. - * lib/Makefile.in (SOURCE_FILES, IMPORTED_FILES, GENERATED_FILES, - DISTRIBUTED_BUILT_FILES, DISTFILES): New macros. - (distdir): New target. - * man/Makefile.in (SOURCE_FILES, IMPORTED_FILES, GENERATED_FILES, - DISTRIBUTED_BUILT_FILES, DISTFILES): New macros. - (distdir): New target. - * preload/Makefile.in (SOURCE_FILES, IMPORTED_FILES, GENERATED_FILES, - DISTRIBUTED_BUILT_FILES, DISTFILES): New macros. - (distdir): New target. - * src/Makefile.in (SOURCE_FILES, IMPORTED_FILES, GENERATED_FILES, - DISTRIBUTED_BUILT_FILES, DISTFILES): New macros. - (distdir): New target. - * tests/Makefile.in (SOURCE_FILES, IMPORTED_FILES, GENERATED_FILES, - DISTRIBUTED_BUILT_FILES, DISTFILES): New macros. - (distdir): New target. - -2016-12-04 Bruno Haible - - Remove duplicates of imported files from version control. - * autogen.sh: Copy imported files to libcharset. - -2016-12-04 Bruno Haible - - Always use the newest released copies of files brought in from Automake. - * Makefile.devel (srclib/Makefile.in): Make sure to get new versions of - files brought in by automake. - * build-aux/install-sh: Remove from version control. - * build-aux/missing: Likewise. - -2016-12-04 Bruno Haible - - Always use the newest copies of config.guess, config.sub. - * Makefile.devel (gnulib-imported-files): New target. - * autogen.sh: Invoke it. - * build-aux/config.guess: Remove from version control. - * build-aux/config.sub: Likewise. - -2016-12-04 Bruno Haible - - Always use the newest copy of fcntl-o.m4. - * m4/fcntl-o.m4: Remove file. Rely on srcm4/fcntl-o.m4 instead. - -2016-12-04 Bruno Haible - - Remove obsolete documentation. - * PORTS: Remove file. - -2016-12-03 Bruno Haible - - Make Makefile.devel more useful for the users of the released tarball. - * Makefile.devel (srclib/Makefile.gnulib): Don't force this target. - (gnulib-clean): New target. - (totally-clean): New target. Do the removals from autogen.sh. Also, - remove lib/aliases*.gperf, lib/canonical*.h, man/iconvctl.3.html, - man/iconv_open_into.3.html. - * autogen.sh: Invoke target gnulib-clean before srclib/Makefile.gnulib. - Invoke target totally-clean before all. - * preload/Makefile.devel (totally-clean): New target. - -2016-12-03 Bruno Haible - - Modernize configure.ac. - * configure.ac: Use 2-argument AC_INIT. Avoid an AM_INIT_AUTOMAKE - warning. - * preload/configure.ac: Use 2-argument AC_INIT. Use AC_CONFIG_SRCDIR. - -2016-12-03 Bruno Haible - - Towards reproducible builds. - * Makefile.devel (man/%.html): Remove the CreationDate comment line - from the output. - -2016-12-04 Bruno Haible - - Update to gettext-0.19.8.1. - * ABOUT-NLS: Update through 'gettextize'. - -2016-12-03 Bruno Haible - - Update documentation. - * HACKING: Refer to the Git repository. - -2016-12-03 Bruno Haible - - Avoid compilation warnings in 'genflags' program. - * lib/genflags.c: Avoid warnings from GCC's -Wunused-function option. - -2016-12-02 Bruno Haible - - * relocatable.c: Update from gnulib. - -2016-11-25 Bruno Haible - - Prepare for version 1.15. - * configure.ac: Bump version number to 1.15. - * README: Likewise. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * windows/iconv.rc: Update. - * windows/libiconv.rc: Update. - * Makefile.devel: Update comments. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 8:0:6. - * src/iconv.c (print_version): Update copyright year. - -2016-11-23 Bruno Haible - - Update installation instructions for Windows. - * README.windows: Assume a 64-bit Windows. Explain both 32-bit and - 64-bit builds. Add instructions for the MS Visual C/C++ tool chain. - Revamp instructions for Cygwin. - -2016-11-23 Bruno Haible - - Drop the nickname "woe32". - * README.windows: Renamed from README.woe32. - -2016-11-22 Bruno Haible - - Update support for building with MSVC. - * Makefile.devel (srclib/Makefile.in): Import 'ar-lib' and 'compile' - from gnulib. - * lib/Makefile.in (install-lib, install): Install the .la file with - $(INSTALL), not $(INSTALL_DATA). Otherwise the native Windows DLL gets - installed without execution permissions, and programs linked to it fail: - in a Cygwin shell with exit code 127, or from a cmd.exe window with a - dialog "The application was unable to start correctly (0xc0000022)." - -2016-11-19 Bruno Haible - - Fix link error when compiling with gcc -O0. - * lib/iconv.c (aliases2_lookup): Make static. - Reported by Chung-Lin Tang - at https://savannah.gnu.org/bugs/?47953 . - -2016-11-17 Bruno Haible - - UTF-8: Reject surrogates and out-of-range code points. - * lib/utf8.h (utf8_mbtowc, utf8_wctomb): Reject code points in the - range 0xD800..0xDFFF and >= 0x110000. - * tests/genutf8.c (main): Don't emit mappings for 0xD800..0xDFFF. - -2016-10-22 Bruno Haible - - Switch to libtool 2.4.6. - * m4/libtool.m4: Update from libtool-2.4.6, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}.. - * m4/ltoptions.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2016-10-14 Bruno Haible - - Use 'size_t', not 'int', for the length of a string. - * lib/iconv.c: Include . - * lib/genflags.c: Likewise. - * lib/converters.h (struct mbtowc_funcs, struct wctomb_funcs): Change - 'int n' parameter to 'size_t n'. - (RET_COUNT_MAX): New macro. - * lib/*.h: Use 'size_t n' instead of 'int n'. - * lib/ucs2.h (ucs2_mbtowc): Make sure 'count' does not cause an 'int' - overflow. - * lib/ucs4.h (ucs4_mbtowc): Likewise. - * lib/utf16.h (utf16_mbtowc): Likewise. - * lib/utf32.h (utf32_mbtowc): Likewise. - * tools/8bit_tab_to_h.c: Generate function signatures with 'size_t n'. - * tools/cjk_tab_to_h.c: Likewise. - * NEWS: Mention the change. - -2016-10-04 Bruno Haible - - Extend CP1255 mapping. - * lib/cp1255.h (cp1255_2uni, cp1255_page05): Map 0xCA to U+05BA. - * tests/CP1255.TXT: Likewise. - This matches https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt - and what the native Windows converter does since at least Windows XP. - -2016-10-01 Ben Noordhuis (tiny change) - Bruno Haible - - Remove large stack requirement from gentranslit. - * lib/gentranslit.c (main): Heap-allocate large arrays. - * Makefile.devel (lib/translit.h): Remove 'ulimit -s unlimited' command. - -2015-12-10 Ben Noordhuis (tiny change) - - Remove unused array from gentranslit. - * lib/gentranslit.c (main): Remove unused array. - * Makefile.devel (CC): Add -Wall option. - Reported in https://savannah.gnu.org/bugs/?46663 . - -2016-10-01 Bruno Haible - - Fix bug #41187. - * src/iconv.c (main): Increment i after parsing the --silent option. - Reported in https://savannah.gnu.org/bugs/?41187 . - -2016-10-01 Bruno Haible - - Update to current gnulib. - * Makefile.devel (GNULIB_MODULES): Remove memmove. - * tests/Makefile.in (INCLUDES): Make sure to include the top-level - "config.h". Needed for the 'binary-io' module. - -2016-10-01 Bruno Haible - - Switch to automake 1.15. - * autogen.sh: Update comment. - * Makefile.devel (AUTOMAKE, ACLOCAL): Switch to version 1.15. - (srclib/Makefile.in): Don't remove auxiliary files brought in by - automake. - * preload/Makefile.devel (ACLOCAL): Switch to version 1.15. - * srclib/Makefile.am (AUTOMAKE_OPTIONS): Add subdir-objects. - * build-aux/missing: Update from automake-1.15. - -2016-10-01 Bruno Haible - - Remove autogenerated doc files from version control. - * man/iconvctl.3.html: Remove file. - * man/iconv_open_into.3.html: Remove file. - -2012-12-06 Bruno Haible - - Change copyright holder of man pages. - * man/*.[13]: Replace myself with FSF. - -2012-06-30 Bruno Haible - - Make it possible to run 'genaliases2' on native Windows. - * lib/genaliases2.c (main): Expect 3 arguments. Open the output files - explicitly. Complain if they don't exist. - * Makefile.devel (lib/aliases_*.h): Pass the output filenames as - arguments to genaliases. - Reported at . - - Make it possible to run 'genaliases' on native Windows. - * lib/genaliases.c (main): Expect 3 arguments. Open the output files - explicitly. Complain if they don't exist. Improve error checking. - * Makefile.devel (lib/aliases*.h): Pass the output filenames as - arguments to genaliases. - Reported at . - -2012-05-13 Bruno Haible - - Tweak the GB18030 converter to map 0x8135F437 to U+E7C7. - * lib/gb18030.h (gb18030_pua2charset, gb18030_wctomb): Remove mapping - from U+E7C7 to 0xA8BC. - * lib/gb18030uni.h (gb18030uni_mbtowc): Treat 0x8135F437 as a special - case. - (gb18030uni_wctomb): Treat U+E7C7 as a special case. - * tests/GB18030-BMP.TXT: Map 0x8135F437 to U+E7C7, not U+1E3F. - * tests/GB18030.IRREVERSIBLE.TXT: Remove irreversible mappings for - 0x8135F437 and U+E7C7. - -2012-04-28 Bruno Haible - - Switch to autoconf 2.69 and automake 1.12. - * autogen.sh: Update comment. - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.69. - (AUTOMAKE, ACLOCAL): Switch to version 1.12. - * preload/Makefile.devel (AUTOCONF): Switch to version 2.69. - (ACLOCAL): Switch to version 1.12. - -2012-03-24 Bruno Haible - - Avoid a GCC warning. - * lib/isoir165.h (isoir165_mbtowc): Don't shadow the 'ret' variable. - -2012-01-26 Bruno Haible - - Modernize quoting. - * README: Quote 'like this', not `like this', as per the recent change - to the GNU coding standards. - * NOTES: Likewise. - * gnulib-local/lib/xmalloc.c: Likewise. - * lib/config.h.in: Likewise. - * src/iconv.c (usage): Likewise. - * tests/uniq-u.c: Likewise. - * tools/cjk_tab_to_h.c (output_uni2charset_sparse, do_jisx0213): - Likewise. - * lib/big5.h: Update accordingly. - * lib/cns11643_inv.h: Likewise. - * lib/cp932ext.h: Likewise. - * lib/cp950ext.h: Likewise. - * lib/gb12345ext.h: Likewise. - * lib/gb2312.h: Likewise. - * lib/gbkext_inv.h: Likewise. - * lib/hkscs1999.h: Likewise. - * lib/hkscs2001.h: Likewise. - * lib/hkscs2004.h: Likewise. - * lib/hkscs2008.h: Likewise. - * lib/isoir165ext.h: Likewise. - * lib/jisx0208.h: Likewise. - * lib/jisx0212.h: Likewise. - * lib/jisx0213.h: Likewise. - * lib/ksc5601.h: Likewise. - * lib/uhc_1.h: Likewise. - * lib/uhc_2.h: Likewise. - -2012-01-15 Bruno Haible - - Support for MSVC 9. - * lib/config.h.in (inline, mode_t, ssize_t): Copy snippets from top - config.h.in. - * tests/genutf8.c: Include config.h. - * tests/gengb18030z.c: Likewise. - * woe32dll/export.h (VARIABLE): Define to empty if not using GCC. - -2011-01-28 Bruno Haible - - Add a comment. - * woe32dll/export.h: Add a reference to the woe32dll writeup. - -2012-01-06 Bruno Haible - - Update after gnulib changed. - * gnulib-local/lib/error.h.diff: Update. - -2012-01-06 Bruno Haible - - Talk about "native Windows API", not "Woe32". - * lib/relocatable.c: Update comments to mention native Windows. - -2012-01-04 Bruno Haible - - Talk about "native Windows API", not "Win32". - * lib/relocatable.c: Update comments to mention native Windows. - (WINDOWS_NATIVE): Renamed from WIN32_NATIVE. - -2011-10-27 Bruno Haible - - Fix bug with error handling in UCS-2, UCS-4, UTF-32 decoders. - * lib/ucs2.h (ucs2_mbtowc): Increment count only after validating wc. - * lib/ucs4.h (ucs4_mbtowc): Likewise. - * lib/utf32.h (utf32_mbtowc): Likewise. - Reported at . - -2012-06-30 Bruno Haible - - Improve ISO-2022-CP-MS versus CP932. - * lib/iso2022_jpms.h (iso2022_jpms_mbtowc): Recognize characters from - the rows 0x79..0x7C as rows from CP932. - * tests/ISO-2022-JP-MS-snippet.alt: New file, renamed from - tests/ISO-2022-JP-MS-snippet. - * tests/ISO-2022-JP-MS-snippet.UTF-8: Update the rows that correspond - to ESC $ B 0x79..0x7C. - * tests/ISO-2022-JP-MS-snippet: Likewise. - * tests/check-stateful: Also test the *-snippet.alt file if it exists. - * tests/check-stateful.bat: Likewise. - -2012-06-30 Bruno Haible - - Improve ISO-2022-CP-MS versus CP932. - * lib/cp50221_0208_ext.h (cp50221_0208_ext_page30): Map U+301D like - U+301E. - * lib/iso2022_jpms.h (iso2022_jpms_wctomb): Map U+663B to JISX0208 - 0x7A 0x36, U+FFE2 to 0x7C 0x7B, U+FFE4 to 0x7C 0x7C. - Reported by Jeff Diehl . - -2011-10-23 Bruno Haible - - New encoding ISO-2022-CP-MS. - * NOTES: Mention ISO-2022-JP-MS. - * tools/CP50221-0208-EXT.TXT: New file. - * tools/CP50221-0212-EXT.TXT: New file. - * tools/8bit_tab_to_h.c: Add comments about how to generate - cp50221_0208_ext.h, cp50221_0212_ext.h. - * tools/Makefile: Add rules for generating cp50221_0208_ext.h, - cp50221_0212_ext.h. - * lib/cp50221_0208_ext.h: New file, mostly generated. - * lib/cp50221_0212_ext.h: New file, mostly generated. - * lib/iso2022_jpms.h: New file. - * lib/converters.h: Include it. - * lib/encodings.def: Add ISO-2022-JP-MS. - * README, man/iconv_open.3: Add ISO-2022-JP-MS. - * tests/ISO-2022-JP-MS-snippet: New file. - * tests/ISO-2022-JP-MS-snippet.UTF-8: New file. - * tests/Makefile.in (check): Also test ISO-2022-JP-MS. - Reported by Jeff Diehl . - -2011-10-23 Bruno Haible - - * lib/encodings.def: Add comments about Windows names of encodings. - -2011-10-18 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.4.2, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}.. - * m4/ltoptions.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2011-10-03 Bruno Haible - - * lib/relocatable.c: Update from gnulib. - -2011-09-02 Bruno Haible - - Fix "make check" failure when $(srcdir) != $(builddir). - * tests/Makefile.in (check): When $(srcdir) != ., temporarily copy - GB18030.IRREVERSIBLE.TXT into the build directory. - Reported by Christian Weisgerber . - -2011-08-07 Bruno Haible - - Ensure all HTML-formatted man pages are up-to-date. - * Makefile.devel (all): Depend on man/iconvctl.3.html and - man/iconv_open_into.3.html. - -2011-08-07 Bruno Haible - - * Version 1.14 released. - -2011-08-07 Bruno Haible - - * configure.ac: Bump version number to 1.14. - * README: Likewise. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * windows/iconv.rc: Update. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 7:1:5. - * src/iconv.c (print_version): Update copyright year. - -2011-08-07 Bruno Haible - - Avoid a test failure on Solaris 2.6 and HP-UX 11.00. - * tests/test-to-wchar.c (main): Skip the test if conversion to wchar_t - is not supported. - -2011-08-07 Bruno Haible - - * tests/check-subst: Add comments about OSF/1. - -2011-08-07 Bruno Haible - - * lib/relocatable.c: Update from gnulib. - -2011-08-06 Bruno Haible - - Upgrade the GB18030 converter to the version from 2005. - * lib/gb18030ext.h (gb18030ext_2uni_pagefe): Change element type to - 'unsigned int'. Change values for 0xFE51..0xFE53, 0xFE59, 0xFE61, - 0xFE66, 0xFE67, 0xFE6C, 0xFE6D, 0xFE76, 0xFE7E, 0xFE90, 0xFE91, 0xFEA0. - (gb18030ext_mbtowc): Change type of wc to 'unsigned int'. Change values - for 0xA6D9..0xA6DF, 0xA6EC..0xA6ED, 0xA6F3, 0xA8BC. - (gb18030ext_page9f, gb18030ext_pagefe): New constant arrays. - (gb18030ext_wctomb): Change values for U+1E3F, U+9FB4..U+9FBB, - U+FE10..U+FE19, U+20087, U+20089, U+200CC, U+215D7, U+2298F, U+241FE. - * tests/GB18030-BMP.TXT: Change values for 0xA6D9..0xA6DF, - 0xA6EC..0xA6ED, 0xA6F3, 0xA8BC, 0xFE51..0xFE53, 0xFE59, 0xFE61, 0xFE66, - 0xFE67, 0xFE6C, 0xFE6D, 0xFE76, 0xFE7E, 0xFE90, 0xFE91, 0xFEA0, to map - to now-assigned Unicode codepoints. - * tests/GB18030.IRREVERSIBLE.TXT: New file. - -2011-08-06 Bruno Haible - - Fix conversion bug in CP1258 converter. - * lib/vietcomb.h (viet_comp_table_data): Remove entry for - U+00A5 U+0301. Fix entry for U+00A8 U+0301. - (viet_decomp_table): Fix entry for U+0385. - * tests/CP1258.IRREVERSIBLE.TXT: Update. - Reported by Gertjan Halkes . - -2011-07-03 Bruno Haible - - Improve interactive behaviour of iconv program. - * src/iconv.c (convert): Flush the output before starting a possibly - blocking safe_read call. - -2011-07-03 Bruno Haible - - Fix interactive behaviour of iconv program. - * Makefile.devel (GNULIB_MODULES): Add safe-read. - * src/iconv.c: Include safe-read.h. - (convert): Take the infile as a file descriptor, not as a FILE stream. - Use safe_read() instead of fread(). - (main): Update. - Reported by Xavier Pucel . - -2011-05-02 Bruno Haible - - Update after gnulib changed. - * autogen.sh (GNULIB_MODULES): Remove exit, add stdlib. - -2011-06-02 Bruno Haible - - Update after gnulib changed. - * gnulib-local/m4/alloca.m4 (gl_FUNC_ALLOCA): Update. - -2011-06-04 Bruno Haible - - Work around bug on OSF/1 5.1. - * lib/loop_wchar.h: Before including , include and - some other includes. - -2011-03-27 KO Myung-Hun - - Fix installation on OS/2. - * src/Makefile.in (all, iconv_no_i18n): Add $(EXEEXT) suffix to - iconv_no_i18n. This is the recommended way to use libtool, see - . - -2011-03-31 Bruno Haible - - gentranslit: Fix buffer overrun. - * lib/gentranslit.c (main): Allocate more room for the suffix strings - of the translit pages. - Reported by Ben Noordhuis . - -2011-02-28 Bruno Haible - - * lib/relocatable.h: Update from gnulib. - * lib/relocatable.c: Likewise. - -2011-01-29 Corinna Vinschen - Bruno Haible - - Simplify "wchar_t" handling on Cygwin 1.7.x. - * lib/iconv.c (iconv_canonicalize): On Cygwin >= 1.7, map - ei_local_wchar_t to ei_utf16le or ei_utf16be, not ei_ucs2internal. - * lib/iconv_open1.h: Likewise. - Rationale: . - -2011-01-29 Bruno Haible - - Adjust the meaning of "wchar_t" on native Windows systems. - * lib/iconv.c (iconv_canonicalize): On native Windows, map - ei_local_wchar_t to ei_utf16le or ei_utf16be, not ei_ucs2internal. - * lib/iconv_open1.h: Likewise. - Reported by Corinna Vinschen - in . - -2010-11-23 Bruno Haible - - Implement newer release of BIG5-HKSCS. - * tools/Makefile (ALL): Add hkscs2008.h. - (hkscs2008.h): New rule. - * tools/cjk_tab_to_h.c (main): Recognize hkscs2008. - * lib/encodings.def: Add BIG5-HKSCS:2008. Change BIG5-HKSCS alias to be - equivalent to BIG5-HKSCS:2008. - * lib/hkscs2008.h: New file, autogenerated. - * lib/big5hkscs2008.h: New file, based on lib/big5hkscs2004.h. - * lib/converters.h: Include the new file. - * README, man/iconv_open.3: Add BIG5-HKSCS:2004. - * tests/BIG5-HKSCS-2008.TXT: New file, based on - tests/BIG5-HKSCS-2004.TXT. - * tests/BIG5-HKSCS-2008.IRREVERSIBLE.TXT: New file, copied from - tests/BIG5-HKSCS-2004.IRREVERSIBLE.TXT - * tests/BIG5-HKSCS-2008-snippet: New file, based on - tests/BIG5-HKSCS-2004-snippet. - * tests/BIG5-HKSCS-2008-snippet.UTF-8: New file, based on - tests/BIG5-HKSCS-2004-snippet.UTF-8. - * tests/Makefile.in (check): Check also BIG5-HKSCS:2008. - Reported by oCameLo . - -2010-11-23 Bruno Haible - - Make cjk_tab_to_h 64-bit clean. - * tools/cjk_tab_to_h.c (do_jisx0213): Add a cast from size_t to int. - (output_title): Update copyright year. - -2010-09-23 Bruno Haible - - Switch to autoconf 2.68. - * autogen.sh: Update comment. - * configure.ac: Fix AC_COMPILE_IFELSE invocation. - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.68. - * preload/Makefile.devel (AUTOCONF): Likewise. - -2010-09-23 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.4, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltversion.m4: Update from libtool-2.4. - * build-aux/ltmain.sh: Likewise. - -2010-09-23 Bruno Haible - - Simplify use of gnulib-tool now that gnulib-tool --import works better. - * autogen.sh: Don't remove gnulib-cache.m4 before running gnulib-tool. - * Makefile.devel (srclib/Makefile.gnulib): Depend on 'force'. - -2010-07-31 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.67. - * preload/Makefile.devel (AUTOCONF): Likewise. - -2010-07-03 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.66. - * preload/Makefile.devel (AUTOCONF): Likewise. - -2010-06-04 Bruno Haible - - Addendum to 2009-10-18 commit. - * m4/fcntl-o.m4: New file, from gnulib. - * configure.ac: Invoke gl_FCNTL_O_FLAGS. - * lib/config.h.in (HAVE_WORKING_O_NOFOLLOW): New macro. - -2010-06-04 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.8, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Update from libtool-2.2.8. - * m4/ltversion.m4: Likewise. - * m4/lt~obsolete.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2010-04-06 Bruno Haible - - Avoid a compilation error of gnulib's test-iconv-h-c++.cc on mingw. - * include/iconv.h.in: Restrict the extern "C" { ... } scope so that it - doesn't contains #include directives. - -2010-03-30 Bruno Haible - - * README.woe32: Update for Cygwin 1.7.x. - -2009-12-26 Bruno Haible - - * windows/libiconv.rc: Update. - * windows/iconv.rc: Update. - -2009-12-11 Bruno Haible - - * include/iconv.h.in: Untabify. - * gnulib-local/lib/xalloc.h: Untabify. - * woe32dll/export.h: Untabify. - * tests/uniq-u.c: Untabify. - -2009-12-11 Bruno Haible - - * srclib/Makefile.am (MOSTLYCLEANDIRS): New macro. - -2009-12-11 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.65. - * preload/Makefile.devel (AUTOCONF): Likewise. - -2009-11-22 Bruno Haible - - * tests/check-subst: Add reference to the Solaris printf bug. - Reported by Dagobert Michelsen . - -2009-09-01 Bruno Haible - - * README.woe32: Put the -mno-cygwin option into CC and CXX. - Recommended by Paolo Bonzini and Eric Blake. - -2009-08-15 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.64. - * preload/Makefile.devel (AUTOCONF): Likewise. - -2009-08-15 Bruno Haible - - Use .git/info/exclude, not .gitignore, for imported or generated files. - * Makefile.devel (srclib/Makefile.gnulib): Pass option --no-vc-files to - gnulib-tool. - -2009-07-07 Bruno Haible - - Fix an endless loop. - * lib/loop_wchar.h (wchar_to_loop_convert): Handle the case of - incomplete input correctly. - * tests/test-to-wchar.c: New file. - * tests/Makefile.in (tests-to-wchar, tests-to-wchar.o): New rules. - (check): Depend on and run tests-to-wchar. - (clean): Add tests-to-wchar. - Reported by Tristan Gingold . - -2009-06-30 Bruno Haible - - * Version 1.13.1 released. - -2009-06-30 Bruno Haible - - * configure.ac: Bump version number to 1.13.1. - * README: Likewise. - -2009-06-04 Bruno Haible - - * preload/Makefile.devel (AUTOCONF): Switch to version 2.63. - (ACLOCAL): Switch to version 1.11. - -2009-05-19 Bruno Haible - - * Makefile.devel (AUTOMAKE, ACLOCAL): Switch to version 1.11. - * autogen.sh: Update comments. - -2009-04-24 Bruno Haible - - Fix a compilation error on HP-UX 11.00, introduced on 2008-09-16. - * src/iconv_open2.h: Don't initialize nonexistent field if - !(HAVE_WCRTOMB || HAVE_MBRTOWC). - Patch by Joel Brobecker . - -2009-04-15 Bruno Haible - - * src/Makefile.in (install, uninstall): Append the $(EXEEXT) suffix - explicitly. Needed on Cygwin. - -2009-04-11 Bruno Haible - - * configure.ac: Move the statements for WOE32 and WINDRES. - -2009-03-26 Bruno Haible - - * Version 1.13 released. - -2009-03-26 Bruno Haible - - * src/iconv.c: Update copyright header to GPLv3+. - (print_version): Update license info. - -2009-03-26 Bruno Haible - - * src/iconv.c (print_version): Bump year. - -2009-03-25 Bruno Haible - - * build-aux/config.guess: Update to GNU version 2009-02-03. - * build-aux/config.sub: Likewise. - -2009-03-25 Bruno Haible - - * configure.ac: Bump version number to 1.13. - * README: Likewise. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * windows/iconv.rc: Update. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 7:0:5. - -2009-03-25 Bruno Haible - - Fix the handling of Windows resources in shared libraries. - * configure.ac: Invoke LT_LANG for 'Windows Resource'. - * lib/Makefile.in (RC): New variable. - (WINDRES): Remove variable. - (OBJECTS_RES_yes): Add .lo suffix. - (libiconv.res.lo): Renamed from libiconv.res. Use libtool --tag=RC. - (clean): Simplify. - Based on a patch by Roumen Petrov . - -2009-03-14 Bruno Haible - - * autogen.sh: Checkout gnulib using 'git' instead of 'cvs'. - -2009-01-24 Bruno Haible - - * tools/Makefile (ALL): Add cp1131.h. - (cp1131.h): New rule. - * lib/encodings.def: Add CP1131. - * lib/cp1131.h: New file. - * lib/converters.h: Include it. - * README, man/iconv_open.3: Add CP1131. - * NOTES: Mention CP1131. - * tests/CP1131.TXT: New file. - * tests/Makefile.in (check): Also test CP1131. - -2009-01-17 Bruno Haible - - Add support for "make install-strip". - * configure.ac: Search for 'strip'. Invoke AM_PROG_INSTALL_STRIP. - * Makefile.in (install-strip): New rule. - * src/Makefile.in (STRIP, INSTALL_STRIP_PROGRAM, install_sh): New - variables. - (install-strip): New rule. - * lib/Makefile.in (install-strip): New target. - * preload/Makefile.in (install-strip): Likewise. - * man/Makefile.in (install-strip): Likewise. - Reported by Alon Bar-Lev . - -2009-01-17 Bruno Haible - - Update after gnulib changed. - * src/Makefile.in (RELOCATABLE_STRIP): New variable. - -2009-01-17 Bruno Haible - - Make --enable-relocatable work on glibc systems. - * src/Makefile.in (host): New variable. - -2009-01-17 Bruno Haible - - * lib/genflags.c: Include . - -2009-01-14 Bruno Haible - - * configure.ac: More consistent m4 quoting. - * preload/configure.ac: Likewise. - -2008-09-28 Bruno Haible - - * build-aux/ltmain.sh (func_emit_cwrapperexe_src): On mingw, - preprocess the argument vector through prepare_spawn. - -2008-09-27 Bruno Haible - - * build-aux/config.guess: Update to GNU version 2008-09-08. - * build-aux/config.sub: Likewise. - -2008-09-26 Bruno Haible - - * tests/test-shiftseq.c (main1, main2): Use ICONV_CONST. - -2008-09-26 Bruno Haible - - * Makefile.devel (GNULIB_MODULES): Add sigpipe, stdio. - * tests/Makefile.in (check, table-from, table-to, test-shiftseq): Link - all programs against libicrt.a. Needed for the stdio function - replacements on mingw. - -2008-09-21 Tadamasa Teranishi - - * lib/encodings_extra.def: Add aliases for EUC-JISX0213, SHIFT_JISX0213, - ISO-2022-JP-3, found on . - -2008-09-20 Bruno Haible - - * man/iconv_open_into.3: New file. - -2008-09-16 Bruno Haible - - New function iconv_open_into. - * include/iconv.h.in: Include and its prerequisites. - (iconv_allocation_t): New type. - (iconv_open_into): New declaration. - * lib/iconv_open1.h: New file, extracted from lib/iconv.c. - * lib/iconv_open2.h: New file, extracted from lib/iconv.c. - * lib/iconv.c (iconv_open): Include iconv_open1.h and iconv_open2.h. - Verify size of iconv_allocation_t. - (iconv_open_into): New function. - * lib/loop_wchar.h (struct wchar_conv_struct): Don't define a state - field if !(HAVE_WCRTOMB || HAVE_MBRTOWC). - * configure.ac: Set and substitute USE_MBSTATE_T, BROKEN_WCHAR_H. - Reported by Roman Rybalko . - -2008-09-16 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Switch to version 2.63. - -2008-09-16 Bruno Haible - - * include/iconv.h.in: Use Unicode single-quotes in comments. - -2008-09-14 Bruno Haible - - * Makefile.devel (GNULIB_MODULES): Add strerror. - -2008-09-07 Bruno Haible - - Make behaviour when encountering invalid input after a shift sequence - more consistent. - * lib/converters.h (RET_SHIFT_ILSEQ): New macro. - (RET_ILSEQ): Define in terms of RET_SHIFT_ILSEQ. - (RET_TOOFEW): Change to avoid collisions with RET_SHIFT_ILSEQ. - (DECODE_SHIFT_ILSEQ, DECODE_TOOFEW): New macros. - * lib/loop_unicode.h (unicode_loop_convert): Take into account the - shift count contained in the negative return values. - * lib/hz.h (hz_mbtowc): When encountering invalid input, store the - modified state and return RET_SHIFT_ILSEQ. - * lib/iso2022_cn.h (iso2022_cn_mbtowc): Likewise. - * lib/iso2022_cnext.h (iso2022_cn_ext_mbtowc): Likewise. - * lib/iso2022_jp.h (iso2022_jp_mbtowc): Likewise. - * lib/iso2022_jp1.h (iso2022_jp1_mbtowc): Likewise. - * lib/iso2022_jp2.h (iso2022_jp2_mbtowc): Likewise. - * lib/iso2022_jp3.h (iso2022_jp3_mbtowc): Likewise. - * lib/iso2022_kr.h (iso2022_kr_mbtowc): Likewise. - * lib/ucs2.h (ucs2_mbtowc): Likewise. - * lib/ucs4.h (ucs4_mbtowc): Likewise. - * lib/utf16.h (utf16_mbtowc): Likewise. - * lib/utf32.h (utf32_mbtowc): Likewise. - * lib/utf7.h (utf7_mbtowc): Likewise. - * lib/utf16be.h (utf16be_mbtowcutf16be_mbtowc): When encountering - invalid input, return RET_SHIFT_ILSEQ. - * lib/utf16le.h (utf16le_mbtowc): Likewise. - * tests/test-shiftseq.c: New file. - * tests/Makefile.in (check): Run test-shiftseq. - (test-shiftseq, test-shiftseq.@OBJEXT@): New rules. - (clean): Remove test-shiftseq executable. - Reported by Roman Rybalko - at . - -2008-09-07 Bruno Haible - - * man/iconv.3: Clarify the processing of shift-sequences. - -2008-09-07 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.6, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Update from libtool-2.2.6. - * m4/ltsugar.m4: Likewise. - * m4/ltversion.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2008-09-06 Bruno Haible - - * lib/gbk.h (gbk_wctomb): Fix an out-of-bounds write. - Reported by Roman Rybalko - at . - -2008-06-30 Bruno Haible - - Fix sed expressions to work with the old sed-3.02 on MSYS. - * windows/windres-options (sed_extract_major, sed_extract_minor, - sed_extract_subminor): Put a semicolon before the closing brace. Use - an i\ command instead of an a\ command. - Reported by Sunil Negi - in - via Keith Marshall . - -2008-05-22 Bruno Haible - - * README.woe32: Update with info from GNU gettext's README.woe32. - -2008-05-18 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.4, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: Update from libtool-2.2.4. - * m4/ltversion.m4: Likewise. - * m4/lt~obsolete.m4: Likewise. - * build-aux/ltmain.sh: Likewise. - -2008-04-14 Bruno Haible - - * tests/Makefile.in (check): Remove *.dSYM directories left over by gcc - on MacOS X 10.5. - -2008-04-14 Bruno Haible - - * preload/configure.ac: Invoke AC_USE_SYSTEM_EXTENSIONS instead of - AC_AIX and AC_MINIX. - * Makefile.devel (AUTOCONF, AUTOHEADER): Require autoconf-2.62. - * preload/Makefile.devel (AUTOCONF): Likewise. - * autogen.sh: Likewise. - -2008-04-06 Bruno Haible - - * m4/libtool.m4: Update from libtool-2.2.2, with modifications: - 2008-04-06 Bruno Haible - * m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use - CONFIG_SHELL; don't assume that the Makefile.in will set SHELL - to ${CONFIG_SHELL}. - * m4/ltoptions.m4: New file, from libtool-2.2.2. - * m4/ltsugar.m4: New file, from libtool-2.2.2. - * m4/ltversion.m4: New file, from libtool-2.2.2. - * m4/lt~obsolete.m4: New file, from libtool-2.2.2. - * build-aux/ltmain.sh: New file, from libtool-2.2.2. - * configure.ac: Use LT_INIT instead of AC_PROG_LIBTOOL. - * preload/configure.ac: Likewise. - -2008-04-06 Bruno Haible - - More portable way of building the preloadable library. - * preload/Makefile.devel: New file. - * preload/Makefile.in: New file, based on lib/Makefile.in. - * preload/configure.ac: New file, based on configure.ac. - * Makefile.devel (all): Recurse into preload directory. - * Makefile.in (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainer-clean): Recurse into preload - directory. - * configure.ac: Likewise. - (OS, GCC, PLUGLIB): Remove definitions. - * lib/Makefile.in (all): Don't depend on PLUGLIB. - (preloadable_libiconv.so, preloadable_libiconv_linux.so, - preloadable_libiconv_solaris.so, preloadable_libiconv_osf.so): Remove - rules. - (install, uninstall, clean): Don't handle the preloadable library here. - -2008-04-06 Bruno Haible - - Avoid a gcc warning. - * lib/loop_unicode.h (unicode_loop_convert): Add a cast. - -2008-04-06 Bruno Haible - - * src/iconv.c (print_version): Bump year. - -2008-04-06 Bruno Haible - - Support all possible nl_langinfo(CODESET) results on the respective - platforms, according to libcharset/lib/config.charset. - * lib/encodings.def: Add DEFALIAS statements, conditional on - USE_AIX_ALIASES, USE_HPUX_ALIASES, USE_OSF1_ALIASES, - USE_SOLARIS_ALIASES. - * lib/encodings_aix.def: Add DEFALIAS statements, conditional on - USE_AIX_ALIASES. - * lib/encodings_osf1.def: Add DEFALIAS statements, conditional on - USE_OSF1_ALIASES. - * lib/genaliases.c (emit_alias): New function, extracted from - emit_encoding. - (emit_encoding): Use it. - (main): Define DEFALIAS. - * lib/genaliases2.c (counter): New variable, extracted from - emit_encoding. - (emit_alias): New function, extracted from emit_encoding. - (emit_encoding): Use it. - (main): Define DEFALIAS. - * lib/genflags.c (main): Define DEFALIAS. - * lib/iconv.c (all_encodings): Define DEFALIAS. - Include the system dependent variant of aliases.h on the appropriate - systems. - (all_canonical): Include the system dependent variant of canonical.h, - canonical_aix.h, canonical_osf1.h, canonical_local.h on the appropriate - systems. - * lib/aliases2.h: Include the system dependent variant of - aliases_aix.h or aliases_osf1.h on the appropriate systems. - * lib/Makefile.in (iconv.lo): Depend on aliases_sysaix.h, - aliases_syshpux.h, aliases_sysosf1.h, aliases_syssolaris.h, - aliases_aix_sysaix.h, lib/aliases_osf1_sysosf1.h, and also - aliases_extra.h, translit.h. - * Makefile.devel (all): Depend on lib/aliases_sysaix.h, - lib/aliases_syshpux.h, lib/aliases_sysosf1.h, lib/aliases_syssolaris.h, - lib/aliases_aix_sysaix.h, lib/aliases_osf1_sysosf1.h. - (lib/aliases_sysaix.h, lib/aliases_syshpux.h, lib/aliases_sysosf1.h, - lib/aliases_syssolaris.h): New rules. - (lib/aliases_aix_sysaix.h): New rule. - (lib/aliases_osf1_sysosf1.h): New rule. - * autogen.sh: Also remove lib/aliases_sysaix.h, lib/aliases_syshpux.h, - lib/aliases_sysosf1.h, lib/aliases_syssolaris.h, - lib/aliases_aix_sysaix.h, lib/aliases_osf1_sysosf1.h. - -2008-04-06 Bruno Haible - - * build-aux/config.libpath: Remove file, brought in by gnulib-tool. - * build-aux/config.rpath: Remove file, brought in by gnulib-tool. - -2007-11-11 Bruno Haible - - * Version 1.12 released. - -2007-11-11 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Require version 2.61. - (AUTOMAKE, ACLOCAL): Require version 1.10. - (srclib/Makefile.in): Avoid error from automake. - -2007-10-26 Bruno Haible - - * m4/libtool.m4: Update, based on libtool-1.5.24. - * build-aux/ltmain.sh: Update, based on libtool-1.5.24. - -2007-10-23 Bruno Haible - - * build-aux/config.guess: Update to GNU version 2007-07-22. - * build-aux/config.sub: Likewise. - -2007-10-23 Bruno Haible - - * configure.ac: Bump version number to 1.12. - * README: Likewise. - -2007-10-23 Bruno Haible - - Move relocatability infrastructure to gnulib. - * gnulib-local/lib/relocatable.h: Remove file. - * gnulib-local/lib/relocatable.c: Remove file. - -2007-10-23 Bruno Haible - - Update from GNU gettext. - 2006-11-26 Bruno Haible - * gnulib-local/lib/xalloc.h (xmemdup): Add a typesafe C++ - template variant. - Based on a patch from Paul Eggert in gnulib. - 2006-11-06 Bruno Haible - * gnulib-local/lib/xalloc.h (xcharalloc): New macro. - (xmemdup): New declaration. - * gnulib-local/lib/xstrdup.c (xmemdup): New function. - 2006-11-03 Bruno Haible - * gnulib-local/lib/xalloc.h (XMALLOC, XNMALLOC, XZALLOC, - XCALLOC): New macros. - (xnboundedmalloc): New inline function. - * gnulib-local/lib/xstrdup.c (xstrdup): Use XNMALLOC instead of - xmalloc. - 2006-11-02 Bruno Haible - * lib/xalloc.h (xnmalloc): New declaration. From gnulib - xalloc.h. - * lib/xmalloc.c (fixup_null_alloc): Write NULL, not 0. - (xnmalloc): New function. - -2007-10-23 Bruno Haible - - Moved module xreadlink to gnulib. - * gnulib-local/modules/xreadlink: Remove file. - * gnulib-local/lib/xreadlink.h: Remove file. - * gnulib-local/lib/xreadlink.c: Remove file. - * gnulib-local/m4/xreadlink.m4: Remove file. - -2007-10-07 Bruno Haible - - Update program license to GPLv3. - * COPYING: Replace with GPL 3. - * windows/iconv.rc (Comments): Update. - -2007-10-07 Bruno Haible - - * gnulib-local/lib/alloca.in.h: Renamed from gnulib-local/lib/alloca_.h. - -2007-03-30 Bruno Haible - - * gnulib-local/lib/alloca_.h: Change prefix of double-inclusion guard - macro to _GL_. - -2006-06-19 Paul Eggert - - * gnulib-local/lib/alloca_.h (alloca) [defined alloca]: Don't define or - declare. - -2007-09-29 Bruno Haible - - * autogen.sh (GNULIB_CVS_ROOT): Change to read-only git mirror - valid since 2007-09-19. - -2007-07-07 Bruno Haible - - * autogen.sh: Add an option --skip-gnulib. - -2007-07-07 Bruno Haible - - * gnulib-local/lib/uniwidth.h: Remove file, moved to gnulib. - * gnulib-local/lib/width.c: Remove file, moved to gnulib. - * gnulib-local/lib/cjk.h: Remove file, moved to gnulib. - * gnulib-local/modules/uniwidth: Remove file. - * Makefile.devel (GNULIB_MODULES): Remove uniwidth, add uniwidth/width. - * src/iconv.c: Include uniwidth/cjk.h instead of cjk.h. - -2007-06-30 Bruno Haible - - * src/iconv.c (print_version): Use the standard --version output, see - . - -2007-06-30 Bruno Haible - - * autogen.sh: New file. - * DEPENDENCIES: New file. - * HACKING: New file. - -2007-06-30 Bruno Haible - - * src/iconv.c: Provide translator comments for many messages. - (conversion_error_EILSEQ, conversion_error_EINVAL, - conversion_error_other): New functions, extracted from convert. - (convert): Use them. - Reported by Tim Van Holder . - -2007-06-09 Bruno Haible - - * gnulib-local/lib/relocwrapper.c: Remove file. - -2007-05-27 Bruno Haible - - * windows/libiconv.rc: New file. - * windows/iconv.rc: New file. - * windows/windres-options: New file. - * configure.ac (WOE32): New variable. - (WINDRES) [WOE32]: New variable. - * lib/Makefile.in (WINDRES): New variable. - (PACKAGE_VERSION): New variable. - (OBJECTS_EXP_yes): Renamed from OBJECTS_yes. - (OBJECTS_EXP_no): Renamed from OBJECTS_no. - (OBJECTS_RES_yes, OBJECTS_RES_no): New variables. - (OBJECTS): Add one of them. - (libiconv.res): New rule. - (clean): Remove also libiconv.res. - * src/Makefile.in (WINDRES): New variable. - (PACKAGE_VERSION): New variable. - (OBJECTS_RES_yes, OBJECTS_RES_no): New variables. - (all, iconv_no_i18n, install): Use them. - (iconv.res): New rule. - (clean): Remove also iconv.res. - Suggested and inspired by work by Perry Rapp. - -2007-05-27 Bruno Haible - - Follow broken iconv() prototype in POSIX. - * configure.ac (ICONV_CONST): Set to empty if the system has no iconv. - * lib/config.h.in (ICONV_CONST): Change default value to an empty - comment. - * src/iconv.c (ICONV_CONST): Change default value to empty. - Reported by Andreas Krennmair . - -2007-05-25 Bruno Haible - - * tools/Makefile (ALL): Add rk1048.h. - (rk1048.h): New rule. - * lib/encodings.def: Add RK1048. - * lib/rk1048.h: New file. - * lib/converters.h: Include it. - * README, man/iconv_open.3: Add RK1048. - * NOTES: Mention RK1048. - * tests/RK1048.TXT: New file. - * tests/Makefile.in (check): Also test RK1048. - Suggested by Timur Birsh . - -2007-04-24 Bruno Haible - - * man/iconv_open.3: Tweak explanation of TRANSLIT. - Reported by Perry Rapp. - -2007-04-23 Bruno Haible - - * tests/check-subst: Use the output of 'printf' only if it didn't - crash. Needed to work around a buffer overflow in Solaris /bin/printf. - Reported by Arto C. Nirkko . - -2007-04-23 Bruno Haible - - * lib/iconv.c (iconv_open, iconv_canonicalize): Treat native Woe32 - systems like those which define __STDC_ISO_10646__. - Reported by Keith Marshall . - -2007-03-31 Bruno Haible - - * man/iconv.1: Use HYPHEN-MINUS signs instead of HYPHENs where - appropriate. - * man/iconv_open.3: Likewise. - * man/iconv.3: Likewise. - * man/iconv_close.3: Likewise. - * man/iconvctl.3: Likewise. - -2007-03-31 Bruno Haible - - * man/iconv.1: Mark as POSIX compliant. - * man/iconv_open.3: Likewise. - * man/iconv.3: Likewise. - * man/iconv_close.3: Likewise. - - * man/*.[13]: Syntactic simplifications. - -2007-03-19 Bruno Haible - - Assume that mkinstalldirs also creates the necessary parent directories. - * Makefile.in (install, installdirs): Don't explicitly create the - parent directories. - * lib/Makefile.in (install, installdirs): Likewise. - * src/Makefile.in (install, installdirs): Likewise. - * man/Makefile.in (install, installdirs): Likewise. - Reported by Thomas Klausner . - -2007-03-04 Bruno Haible - - * Makefile.devel (GNULIB_MODULES): Add relocatable-prog. Remove - relocatable, relocwrapper. - * configure.ac: Invoke gl_RELOCATABLE instead of AC_RELOCATABLE. - * gnulib-local/modules/progreloc: Remove file. - * gnulib-local/modules/relocatable: Remove file. - * gnulib-local/modules/relocwrapper: Remove file. - * gnulib-local/m4/relocatable.m4: Remove file. - * gnulib-local/lib/strerror.c.diff: Remove file. - * src/Makefile.in: Remove SET_RELOCATABLE invocation. Instead get - RELOCATABLE_LDFLAGS and INSTALL_PROGRAM_ENV. - -2007-02-19 Bruno Haible - - * gnulib-local/lib/xmalloc.c: Don't include exit.h. - * src/iconv.c: Likewise. - -2007-02-16 Juan Manuel Guerrero - - * djgpp/*: Update. - -2007-02-03 Bruno Haible - - * tools/Makefile (ksc5601.h): Add one extra character. - * lib/ksc5601.h: Regenerated. - * lib/cp949.h (cp949_mbtowc, cp949_wctomb): Exclude the new character. - * tests/EUC-KR.TXT: Add CIRCLED HANGUL IEUNG U. - * tests/JOHAB.TXT: Likewise. - Reported by Jungshik Shin (신정식, 申政湜) . - - * lib/euc_kr.h: Update comments. - * lib/johab.h: Likewise. - -2007-02-03 Bruno Haible - - * tools/cjk_tab_to_h.c (output_title): Bump copyright year. - -2007-01-26 Bruno Haible - - Moved streq.h to gnulib. - * gnulib-local/lib/streq.h: Remove file. - * gnulib-local/modules/uniwidth (Files): Remove lib/streq.h. - (Depends-on): Add streq. - (lib_SOURCES): Remove streq.h. - -2007-01-26 Bruno Haible - - Moved unitypes.h to gnulib. - * gnulib-local/lib/unitypes.h: Remove file. - * gnulib-local/modules/uniwidth (Files): Remove lib/unitypes.h. - (Depends-on): Add unitypes. - (lib_SOURCES): Remove unitypes.h. - -2007-01-26 Bruno Haible - - Moved canonicalize to gnulib. - * gnulib-local/modules/canonicalize: Remove file. - * gnulib-local/lib/canonicalize.h: Remove file. - * gnulib-local/lib/canonicalize.c: Remove file. - * gnulib-local/m4/canonicalize.m4: Remove file. - * gnulib-local/modules/progreloc (Depends-on): Replace 'canonicalize' - with 'canonicalize-lgpl'. - -2006-12-20 Bruno Haible - - * lib/Makefile.in (install): On AIX, add the contents of - /lib/libiconv.a to libiconv.a. - -2006-12-20 Bruno Haible - - * Makefile.devel (all): Depend on srclib/Makefile.gnulib, not - srclib/Makefile.am. - (aclocal.m4): Likewise. Touch the resulting file, since aclocal not - always does it. - (srclib/Makefile.gnulib): Renamed from srclib/Makefile.am. Pass - option --makefile-name. - (srclib/Makefile.in): Depend on srclib/Makefile.gnulib too. - * srclib/Makefile.am: New file that includes srclib/Makefile.gnulib. - -2006-10-31 Bruno Haible - - Update from GNU gettext. - 2006-10-29 Bruno Haible - Make it compile in C++ mode. - * gnulib-local/lib/xalloc.h (xrealloc): Define as template - with appropriate return type. - * gnulib-local/lib/xstrdup.c (xstrdup): Cast xmalloc result. - 2006-10-26 Bruno Haible - * gnulib-local/modules/canonicalize (Makefile.am): Remove - EXTRA_DIST. Now done by gnulib-tool. - * gnulib-local/modules/relocatable (Makefile.am): Likewise. - * gnulib-local/modules/relocwrapper (Makefile.am): Likewise. - 2006-10-25 Bruno Haible - * gnulib-local/m4/relocatable.m4 (AC_RELOCATABLE_BODY): - Renamed from AC_RELOCATABLE, without the AC_LIBOBJ invocation. - (AC_RELOCATABLE): New macro. Invoke AC_LIBOBJ here. - * gnulib-local/modules/relocwrapper (configure.ac): Invoke - AC_RELOCATABLE instead of requiring it. - 2006-10-12 Bruno Haible - * gnulib-local/modules/canonicalize (Makefile.am): Distribute - all files in lib/ through EXTRA_DIST. - * gnulib-local/modules/relocatable (Makefile.am): Likewise. - 2006-09-14 Bruno Haible - * gnulib-local/lib/canonicalize.c: Include - unconditionally. - * gnulib-local/lib/relocatable.c: Likewise. - * lib/relocatable.c: Likewise. - * gnulib-local/lib/relocwrapper.c: Likewise. - * gnulib-local/lib/xmalloc.c: Likewise. - * gnulib-local/lib/xreadlink.c: Likewise. - * gnulib-local/lib/xstrdup.c: Likewise. - 2006-08-02 Bruno Haible - * gnulib-local/modules/canonicalize: Put under LGPL. - * gnulib-local/modules/relocatable: Likewise. - 2006-07-18 Bruno Haible - * gnulib-local/xalloc.h (xzalloc): New declaration. - * gnulib-local/xmalloc.c (xzalloc): New function. - -2006-10-24 Bruno Haible - - * man/Makefile.in (PACKAGE): New variable. Needed for docdir. - Reported by Charles Wilson . - -2006-10-14 Bruno Haible - - * COPYING: New file. - * README: Clarify copyright of the iconv program. - Reported by Charles Wilson . - -2006-08-08 Bruno Haible - - * INSTALL.generic: Add a recommendation for Tru64. - Reported by Gary V. Vaughan . - -2006-07-29 Bruno Haible - - * tests/check-subst: Set CHARSETALIASDIR. - Needed so that "make check" works before "make install" on systems - such as NetBSD. - -2006-07-29 Bruno Haible - - * Makefile.devel (aclocal.m4): Depend on srclib/Makefile.am. - (AUTOCONF_FILES): Add the existing *.m4 files. - -2006-07-29 Bruno Haible - - * gnulib-local/lib/xreadlink.c: Assume exists. - * src/iconv.c: Assume exists. - * configure.ac: Remove tests for , , , - . - -2006-07-29 Bruno Haible - - * configure.ac: Remove obsolete calls AC_PROG_GCC_TRADITIONAL, - AC_ISC_POSIX, AC_HEADER_STDC. - -2006-07-29 Bruno Haible - - * configure.ac: Remove macro invocations that are redundant through - gl_EARLY and gl_INIT. - -2006-07-29 Bruno Haible - - * gnulib-local/m4/alloca.m4 (gl_PREREQ_ALLOCA): Add a dummy statement. - Avoids a sh syntax error. - -2006-07-29 Bruno Haible - - * gnulib-local/m4/relocatable.m4: Add comments. - -2006-07-29 Bruno Haible - - * gnulib-local/modules/libiconv-misc: New file. - * Makefile.devel (GNULIB_MODULES): Add libiconv-misc. - - * Makefile.devel (srclib/Makefile.am): Pass --no-libtool. - -2006-07-29 Bruno Haible - - Note: gnulib macros no longer invoke AC_TYPE_SIZE_T nor - AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], ...)]) - because we now assume that the system defines size_t and ptrdiff_t. - -2006-07-29 Bruno Haible - - Switch to using gnulib. - * configure.ac (AC_PREREQ): Require autoconf-2.60. - Invoke gl_EARLY and gl_INIT. - * Makefile.devel (all): Depend on srclib/Makefile.am. - (aclocal.m4): Pass -I srcm4 to aclocal. Simplify dependencies, assuming - GNU make. - (GNULIB_MODULES): New variable. - (srclib/Makefile.am): New rule. - * gnulib-local: New directory. - * gnulib-local/m4/alloca.m4: Moved here from m4/alloca.m4. - * gnulib-local/m4/canonicalize.m4: Moved here from m4/canonicalize.m4. - * gnulib-local/m4/relocatable.m4: Moved here from m4/relocatable.m4. - * gnulib-local/m4/xreadlink.m4: Moved here from m4/xreadlink.m4. - * gnulib-local/lib/alloca_.h: Moved here from srclib/alloca_.h. - * gnulib-local/lib/canonicalize.h: Moved here from srclib/canonicalize.h. - * gnulib-local/lib/canonicalize.c: Moved here from srclib/canonicalize.c. - * gnulib-local/lib/cjk.h: Moved here from srclib/cjk.h. - * gnulib-local/lib/error.h.diff: New file. - * gnulib-local/lib/progname.h.diff: New file. - * gnulib-local/lib/relocatable.h: Moved here from srclib/relocatable.h. - * gnulib-local/lib/relocatable.c: Moved here from srclib/relocatable.c. - * gnulib-local/lib/relocwrapper.c: Moved here from srclib/relocwrapper.c. - * gnulib-local/lib/streq.h: Moved here from srclib/streq.h. - * gnulib-local/lib/strerror.c.diff: New file. - * gnulib-local/lib/unitypes.h: Moved here from srclib/unitypes.h. - * gnulib-local/lib/uniwidth.h: Moved here from srclib/uniwidth.h. - * gnulib-local/lib/width.c: Moved here from srclib/width.c. - * gnulib-local/lib/xalloc.h: Moved here from srclib/xalloc.h. - * gnulib-local/lib/xmalloc.c: Moved here from srclib/xmalloc.c. - * gnulib-local/lib/xstrdup.c: Moved here from srclib/xstrdup.c. - * gnulib-local/lib/xreadlink.h: Moved here from srclib/xreadlink.h. - * gnulib-local/lib/xreadlink.c: Moved here from srclib/xreadlink.c. - * gnulib-local/modules/canonicalize: New file. - * gnulib-local/modules/progreloc: New file. - * gnulib-local/modules/relocatable: New file. - * gnulib-local/modules/relocwrapper: New file. - * gnulib-local/modules/uniwidth: New file. - * gnulib-local/modules/xalloc: New file. - * gnulib-local/modules/xreadlink: New file. - - * m4/allocsa.m4: Remove file. Now taken from gnulib. - * m4/codeset.m4: Likewise. - * m4/eealloc.m4: Likewise. - * m4/error.m4: Likewise. - * m4/extensions.m4: Likewise. - * m4/full-header-path.m4: Likewise. - * m4/gettext.m4: Likewise. - * m4/glibc21.m4: Likewise. - * m4/iconv.m4: Likewise. - * m4/intmax.m4: Likewise. - * m4/inttypes-h.m4: Likewise. - * m4/inttypes_h.m4: Likewise. - * m4/isc-posix.m4: Likewise. - * m4/lcmessage.m4: Likewise. - * m4/lib-ld.m4: Likewise. - * m4/lib-link.m4: Likewise. - * m4/lib-prefix.m4: Likewise. - * m4/longdouble.m4: Likewise. - * m4/longlong.m4: Likewise. - * m4/mbstate_t.m4: Likewise. - * m4/nls.m4: Likewise. - * m4/onceonly.m4: Likewise. - * m4/pathmax.m4: Likewise. - * m4/po.m4: Likewise. - * m4/printf-posix.m4: Likewise. - * m4/progtest.m4: Likewise. - * m4/readlink.m4: Likewise. - * m4/setenv.m4: Likewise. - * m4/signed.m4: Likewise. - * m4/size_max.m4: Likewise. - * m4/ssize_t.m4: Likewise. - * m4/stdbool.m4: Likewise. - * m4/stdint.m4: Likewise. - * m4/stdint_h.m4: Likewise. - * m4/strerror.m4: Likewise. - * m4/strerror_r.m4: Likewise. - * m4/unistd_h.m4: Likewise. - * m4/unlocked-io.m4: Likewise. - * m4/visibility.m4: Likewise. - * m4/wchar_t.m4: Likewise. - * m4/wint_t.m4: Likewise. - - * srclib/allocsa.h: Remove file. Now taken from gnulib. - * srclib/allocsa.c: Likewise. - * srclib/binary-io.h: Likewise. - * srclib/error.h: Likewise. - * srclib/error.c: Likewise. - * srclib/exit.h: Likewise. - * srclib/gettext.h: Likewise. - * srclib/memmove.c: Likewise. - * srclib/pathmax.h: Likewise. - * srclib/progname.h: Likewise. - * srclib/progname.c: Likewise. - * srclib/progreloc.c: Likewise. - * srclib/readlink.c: Likewise. - * srclib/setenv.h: Likewise. - * srclib/setenv.c: Likewise. - * srclib/stdbool_.h: Likewise. - * srclib/stdint_.h: Likewise. - * srclib/strerror.c: Likewise. - * srclib/unlocked-io.h: Likewise. - * srclib/unsetenv.c: Likewise. - * srclib/Makefile.am: Remove file. - -2006-07-27 Bruno Haible - - Remove OS/2 build support that doesn't assume GNU make and GNU bash. - * README.os2: Remove file. - * Makefile.os2: Remove file. - * lib/Makefile.os2: Remove file. - * src/Makefile.os2: Remove file. - * man/Makefile.os2: Remove file. - * tests/Makefile.os2: Remove file. - * tests/check-stateful.cmd: Remove file. - * tests/check-stateless.cmd: Remove file. - * tests/check-translit.cmd: Remove file. - -2006-07-25 Bruno Haible - - Remove MSVC/nmake build support. - * windows: Remove directory. - * Makefile.msvc: Remove file. - * lib/Makefile.msvc: Remove file. - * srclib/Makefile.msvc: Remove file. - * src/Makefile.msvc: Remove file. - * tests/Makefile.msvc: Remove file. - * man/Makefile.msvc: Remove file. - * po/Rules-msvc: Remove file. - * po/Makefile.msvc.sh: Remove file. - * Makefile.devel (config.h.msvc, lib/config.h.msvc): Remove rules. - (include/iconv.h.msvc-static, include/iconv.h.msvc-shared): Remove - rules. - (po/Makefile.msvc): Remove rule. - (all): Update. - -2006-07-25 Bruno Haible - - Remove VMS support. - * vms: Remove directory. - * Makefile.vms: Remove file. - * lib/Makefile.vms: Remove file. - * srclib/Makefile.vms: Remove file. - * src/Makefile.vms: Remove file. - * tests/Makefile.vms: Remove file. - * man/Makefile.vms: Remove file. - * Makefile.devel (config.h_vms, lib/config.h_vms): Remove rules. - (include/iconv.h_vms): Remove rule. - (all): Update. - -2006-07-23 Bruno Haible - - * lib/Makefile.in (libiconv.la): Use the CFLAGS during linking. - * src/Makefile.in (iconv_no_i18n): Likewise. - (install): Likewise. - * tests/Makefile.in (table-from, table-to): Likewise. - Needed because the CFLAGS can e.g. trigger profiling. - Reported by Russell Aspinwall . - -2006-07-19 Bruno Haible - - * Version 1.11 released. - -2006-07-19 Bruno Haible - - * srclib/Makefile.am (libicrt_a_SOURCES): Remove error.h, error.c. - (LIBADD_SOURCE): Add them here. - -2006-07-19 Bruno Haible - - * build-aux/config.guess: Update to GNU version 2006-07-02. - * build-aux/config.sub: Likewise. - -2006-07-14 Bruno Haible - - * lib/Makefile.in (clean): Remove also *.stackdump. - * src/Makefile.in (clean): Likewise. - * tests/Makefile.in (clean): Likewise. - -2006-07-14 Bruno Haible - - * src/Makefile.in (clean): Remove also iconv_no_i18n. Needed for - cygwin or mingw. - * tests/Makefile.in (clean): Remove also the programs, without - EXEEXT. Needed for cygwin or mingw. - * Makefile.in (mostlyclean, clean, distclean, maintainer-clean): - Remove also bin directory. Needed for cygwin and mingw. - -2006-07-03 Bruno Haible - - * src/iconv.c (check_subst_formatstring): Use ngettext. - (subst_wc_to_mb_fallback, subst_mb_to_mb_fallback): Fix error messages - after 2006-01-22 change. - * configure.ac: Require a gettext version with ngettext. - -2006-06-28 Bruno Haible - - * m4/gettext.m4: Update from GNU gettext. - * m4/po.m4: Update from GNU gettext. - -2006-06-27 Bruno Haible - - * Makefile.devel (AUTOCONF, AUTOHEADER): Use autoconf-2.60. - * Makefile.in (datarootdir): New variable. - (install, installdirs, uninstall): Also pass datarootdir. - * configure.ac (mandir): Remove customization. - * man/Makefile.in (datarootdir): New variable. - (docdir, htmldir): Use autoconf-substituted value. - * src/Makefile.in (datarootdir): New variable. - (localedir): Use autoconf-substituted value. - -2006-06-27 Bruno Haible - - * m4/stdint.m4: Update from gnulib. - * srclib/stdint_.h: Update from gnulib. - * srclib/Makefile.am: Update. - -2006-06-17 Bruno Haible - - * srclib/unsetenv.c: Update from GNU gettext. - * srclib/xreadlink.c: Likewise. - -2006-06-16 Bruno Haible - - * m4/full-header-path.m4: New file, from gnulib. - * m4/size_max.m4: New file, from gnulib. - * m4/stdint.m4: Update from gnulib. - * srclib/stdint_.h: Update from gnulib. - * srclib/Makefile.am (stdint.h): Likewise. - * Makefile.devel (aclocal.m4): Update dependencies. - -2006-06-16 Bruno Haible - - * m4/ssize_t.m4: Update from GNU gettext. - -2006-06-12 Bruno Haible - - * m4/gettext.m4: Update from GNU gettext. - * m4/inttypes-h.m4: New file, from GNU gettext. - * m4/inttypes.m4: Remove file. - * m4/stdint.m4 (gl_STDINT_H): Update. - * Makefile.devel (aclocal.m4): Update dependencies. - -2006-06-10 Bruno Haible - - * src/iconv.c (error) [NO_I18N]: Define here instead of including - error.h. Fixes link failure introduced on 2006-01-22. - -2006-03-28 Ralf Wildenhues - - * m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER) [ linux ]: Avoid warning when - "parsing" /etc/ld.so.conf and empty /etc/ld.so.conf.d. - -2006-05-20 Bruno Haible - - * tests/BIG5-HKSCS-1999-snippet: New file. - * tests/BIG5-HKSCS-1999-snippet.UTF-8: New file. - * tests/BIG5-HKSCS-2001-snippet: New file. - * tests/BIG5-HKSCS-2001-snippet.UTF-8: New file. - * tests/BIG5-HKSCS-2004-snippet: New file. - * tests/BIG5-HKSCS-2004-snippet.UTF-8: New file. - * tests/Makefile.in (check): Test also the stateful parts of - BIG5-HKSCS:1999, BIG5-HKSCS:2001, BIG5-HKSCS:2004. - -2006-05-17 Bruno Haible - - Implement newer releases of BIG5-HKSCS. - * tools/Makefile (ALL): Remove hkscs.h, add hkscs1999.h, hkscs2001.h, - hkscs2004.h. - (hkscs.h): Remove rule. - (hkscs1999.h, hkscs2001.h, hkscs2004.h): New rules. - * tools/cjk_tab_to_h.c (output_title): Update year. - (main): Recognize hkscs1999, hkscs2001, hkscs2004. - * lib/encodings.def: Rename BIG5-HKSCS to BIG5-HKSCS:1999. Add - BIG5-HKSCS:2001, BIG5-HKSCS:2004. Make all three stateful. - * lib/hkscs.h: Remove file. - * lib/hkscs1999.h: New file. - * lib/hkscs2001.h: New file. - * lib/hkscs2004.h: New file. - * lib/big5hkscs.h: Remove file. - * lib/big5hkscs1999.h: New file. - * lib/big5hkscs2001.h: New file. - * lib/big5hkscs2004.h: New file. - * lib/converters.h: Include the new files. - * README, man/iconv_open.3: Add BIG5-HKSCS:1999, BIG5-HKSCS:2001. - * tests/BIG5-HKSCS.TXT: Remove file. - * tests/BIG5-HKSCS.IRREVERSIBLE.TXT: Remove file. - * tests/BIG5-HKSCS-1999.TXT: New file. - * tests/BIG5-HKSCS-1999.IRREVERSIBLE.TXT: New file. - * tests/BIG5-HKSCS-2001.TXT: New file. - * tests/BIG5-HKSCS-2001.IRREVERSIBLE.TXT: New file. - * tests/BIG5-HKSCS-2004.TXT: New file. - * tests/BIG5-HKSCS-2004.IRREVERSIBLE.TXT: New file. - * tests/check-stateless: Convert colon in the charset name to a dash in - the file name. - * tests/Makefile.in (check): Check BIG5-HKSCS:1999, BIG5-HKSCS:2001, - BIG5-HKSCS:2004 instead of just BIG5-HKSCS. - * tests/Makefile.msvc (check): Don't check BIG5-HKSCS. - * tests/Makefile.os2 (check): Likewise. - -2006-05-17 Bruno Haible - - * srclib/progreloc.c: Update from GNU gettext. - -2006-05-16 Bruno Haible - - * src/Makefile.in (clean): Use EXEEXT. - * tests/Makefile.in (check, clean): Likewise. - -2006-05-15 Bruno Haible - - * configure.ac: Move some checks before AC_RELOCATABLE. - -2006-05-15 Bruno Haible - - Support for building shared libraries on mingw and Cygwin. - * configure.ac (WOE32DLL, DLL_VARIABLE): New variables. - * include/iconv.h.in (_libiconv_version): Mark as DLL_VARIABLE. - * woe32dll/export.h: New file, from GNU gettext. - * woe32dll/iconv-exports.h: New file. - * Makefile.devel (include/iconv.h_vms, include/iconv.h.msvc-static, - include/iconv.h.msvc-shared): Remove the DLL_VARIABLE annotation. - * lib/Makefile.in (INCLUDES): Add -I for parent directory. - (LDFLAGS): Add WOE32DLL dependent flags. - (LDFLAGS_yes, LDFLAGS_no): New variables. - (OBJECTS): Add WOE32DLL dependent objects. - (OBJECTS_yes, OBJECTS_no): New variables. - (iconv-exports.lo): New rule. - -2006-05-15 Bruno Haible - - * srclib/gettext.h: Update from GNU gettext. - * srclib/pathmax.h: Update from GNU gettext. - * srclib/progreloc.c: Update from GNU gettext. - * srclib/unsetenv.c: Update from GNU gettext. - * srclib/Makefile.am: Add snippet for creation of unistd.h. - * m4/extensions.m4: Update from GNU gettext. - * m4/gettext.m4: Update from GNU gettext. - * m4/lib-ld.m4: Update from GNU gettext. - * m4/lib-link.m4: Update from GNU gettext. - * m4/lib-prefix.m4: Update from GNU gettext. - * m4/longdouble.m4: Update from GNU gettext. - * m4/nls.m4: Update from GNU gettext. - * m4/onceonly.m4: Update from GNU gettext. - * m4/po.m4: Update from GNU gettext. - * m4/relocatable.m4: Update from GNU gettext. - * m4/unistd_h.m4: New file, from GNU gettext. - * Makefile.devel (aclocal.m4): Depend on it. - * configure.ac: Invoke gl_HEADER_UNISTD. - -2006-05-14 Bruno Haible , - Ralf Wildenhues - - * m4/libtool.m4 [ linux ] (AC_LIBTOOL_LANG_CXX_CONFIG) - (AC_LIBTOOL_POSTDEP_PREDEP, AC_LIBTOOL_PROG_COMPILER_PIC) - (AC_LIBTOOL_PROG_LD_SHLIBS): Add support for Sun C 5.9, - Sun C++ 5.9, and Sun Fortran 8.3 on Linux. - -2006-05-06 Charles Wilson - - * m4/libtool.m4: On Cygwin, like on mingw, define DLL_EXPORT when - compiling a shared library object. - -2006-05-15 Bruno Haible - - * build-aux/config.rpath: Add support for Sun C 5.9 on Linux. - -2006-03-31 Juan Manuel Guerrero - - * djgpp/*: Update. - -2006-01-23 Bruno Haible - - * configure.ac: Invoke gl_ALLOCSA. - - * Makefile.devel (aclocal.m4): Depend on $(CONFIGURES_IN). - -2006-01-22 Bruno Haible - - * src/iconv.c (xmalloc, xalloc_die) [NO_I18N]: Define to avoid using - gettext(). - -2006-01-22 Bruno Haible - - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 6:0:4. - -2006-01-22 Bruno Haible - - * src/iconv.c: Include error.h, exit.h. - (print_version): Use EXIT_SUCCESS. - (check_subst_formatstring, subst_mb_to_uc_fallback, - subst_uc_to_mb_fallback, subst_mb_to_wc_fallback, - subst_wc_to_mb_fallback, subst_mb_to_mb_fallback, convert, main): Use - error() instead of fprintf to stderr. - -2006-01-22 Bruno Haible - - New feature: character-dependent substitutions. - * include/iconv.h.in (iconv_unicode_mb_to_uc_fallback, - iconv_unicode_uc_to_mb_fallback, iconv_wchar_mb_to_wc_fallback, - iconv_wchar_wc_to_mb_fallback): New types. - (struct iconv_fallbacks): New structure type. - (ICONV_SET_FALLBACKS): New macro. - * configure.ac: Invoke gt_TYPE_WCHAR_T and substitute HAVE_WCHAR_T. - * Makefile.os2 (all): Also substitute @HAVE_WCHAR_T@ in build/iconv.h. - * Makefile.devel (include/iconv.h_vms, include/iconv.h.msvc-static, - include/iconv.h.msvc-shared): Also substitute @HAVE_WCHAR_T@. - * lib/converters.h (struct conv_struct): Add field 'fallbacks'. - * lib/loop_unicode.h (struct uc_to_mb_fallback_locals): New type. - (uc_to_mb_write_replacement): New function. - (struct mb_to_uc_fallback_locals): New type. - (mb_to_uc_write_replacement): New function. - (unicode_loop_convert): Call mb_to_uc_fallback and uc_to_mb_fallback. - (unicode_loop_reset): Call uc_to_mb_fallback. - * lib/loop_wchar.h (struct wc_to_mb_fallback_locals): New type. - (wc_to_mb_write_replacement): New function. - (wchar_from_loop_convert): Call wc_to_mb_fallback. - (struct mb_to_wc_fallback_locals): New type. - (mb_to_wc_write_replacement): New function. - (wchar_to_loop_convert): Call mb_to_wc_fallback. - * lib/iconv.c (iconv_open): Initialize the 'fallbacks' field. - (iconvctl): Handle ICONV_SET_FALLBACKS. - * lib/genflags.c (struct iconv_fallbacks): New dummy definition. - * src/iconv.c: Include limits.h. - (isdigit, c_isprint): New macros. - (usage): Document long options and new options. - (check_subst_formatstring): New function. - (ilseq_byte_subst, ilseq_wchar_subst, ilseq_unicode_subst): New - variables. - (ilseq_byte_subst_size, ilseq_wchar_subst_size, - ilseq_unicode_subst_size): New variables. - (ilseq_byte_subst_buffer, ilseq_wchar_subst_buffer, - ilseq_unicode_subst_buffer): New variables. - (subst_mb_to_uc_cd, subst_mb_to_uc_temp_buffer): New variables. - (subst_mb_to_uc_fallback): New function. - (subst_uc_to_mb_cd, subst_uc_to_mb_temp_buffer): New variables. - (subst_uc_to_mb_fallback): New function. - (subst_mb_to_wc_cd, subst_mb_to_wc_temp_buffer): New variables. - (subst_mb_to_wc_fallback): New function. - (subst_wc_to_mb_cd, subst_wc_to_mb_temp_buffer): New variables. - (subst_wc_to_mb_fallback): New function. - (subst_mb_to_mb_cd, subst_mb_to_mb_temp_buffer): New variables. - (subst_mb_to_mb_fallback): New function. - (convert): Enlarge the outbuf when the conversion failed with E2BIG. - (main): Handle new options --byte-subst, --widechar-subst, - --unicode-subst. - * man/iconv.1: Document --unicode-subst, --byte-subst, --widechar-subst - options. - * tests/check-subst: New file. - * tests/Makefile.in (check): Also invoke check-subst. - Suggested by James Taylor . - -2006-01-21 Bruno Haible - - * src/iconv.c (print_version): Bump copyright year. - (main): Accept long options --from-code, --to-code, --list, --silent. - Accept abbreviated long options, like getopt() does. - * man/iconv.1: Document long options. - -2005-12-29 Bruno Haible - - * src/iconv.c (print_version): Update copyright year. - -2005-12-29 Bruno Haible - - * configure.ac: Renamed from configure.in. - * Makefile.devel (CONFIGURES_IN, configure, config.h.in): Update. - -2005-12-29 Bruno Haible - - * configure.in: Bump version number. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * windows/iconv.rc: Likewise. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 5:1:3. - -2005-12-29 Bruno Haible - - * build-aux/config.guess: Update to GNU version 2005-12-23. - * build-aux/config.sub: Likewise. - * build-aux/config.libpath: Update from GNU gettext. - * build-aux/install-sh: Upgrade to automake-1.9.5. - * build-aux/missing: Upgrade to automake-1.9.5. - * build-aux/mkinstalldirs: Upgrade to automake-1.9.5. - -2005-12-29 Bruno Haible - - * m4/alloca.m4: Update from GNU gettext. - * m4/allocsa.m4: Update from GNU gettext. - * m4/canonicalize.m4: Update from GNU gettext. - * m4/codeset.m4: Update from GNU gettext. - * m4/eealloc.m4: Update from GNU gettext. - * m4/error.m4: Update from GNU gettext. - * m4/extensions.m4: Update from GNU gettext. - * m4/gettext.m4: Update from GNU gettext. - * m4/glibc21.m4: Update from GNU gettext. - * m4/iconv.m4: Update from GNU gettext. - * m4/intmax.m4: Update from GNU gettext. - * m4/inttypes_h.m4: New file, from GNU gettext. - * m4/isc-posix.m4: Update from GNU gettext. - * m4/lcmessage.m4: Update from GNU gettext. - * m4/longdouble.m4: Update from GNU gettext. - * m4/longlong.m4: Update from GNU gettext. - * m4/mbstate_t.m4: Update from GNU gettext. - * m4/nls.m4: Update from GNU gettext. - * m4/onceonly.m4: Update from GNU gettext. - * m4/pathmax.m4: Update from GNU gettext. - * m4/po.m4: Update from GNU gettext. - * m4/printf-posix.m4: Update from GNU gettext. - * m4/progtest.m4: Update from GNU gettext. - * m4/readlink.m4: Update from GNU gettext. - * m4/relocatable.m4: Update from GNU gettext. - * m4/setenv.m4: Update from GNU gettext. - * m4/signed.m4: Update from GNU gettext. - * m4/ssize_t.m4: Update from GNU gettext. - * m4/stdbool.m4: Update from GNU gettext. - * m4/stdint_h.m4: New file, from GNU gettext. - * m4/strerror.m4: Update from GNU gettext. - * m4/strerror_r.m4: Update from GNU gettext. - * m4/unlocked-io.m4: Update from GNU gettext. - * m4/wchar_t.m4: Update from GNU gettext. - * m4/wint_t.m4: Update from GNU gettext. - * m4/xreadlink.m4: Update from GNU gettext. - * Makefile.devel (aclocal.m4): Depend on m4/inttypes_h.m4 and - m4/stdint_h.m4 as well. - * configure.in: Invoke AC_TYPE_MBSTATE_T instead of AC_MBSTATE_T. - Invoke gl_FUNC_GLIBC_UNLOCKED_IO instead of jm_FUNC_GLIBC_UNLOCKED_IO. - Invoke gl_ERROR instead of gt_FUNC_ERROR_AT_LINE. - Don't invoke AC_AIX and AC_MINIX, done by gl_USE_SYSTEM_EXTENSIONS. - Temporarily redefine AC_LIBOBJ and AC_REPLACE_FUNCS, so as to fill - SRCLIBOBJS instead of LIBOBJS. - * srclib/alloca_.h: Update from GNU gettext. - * srclib/allocsa.h: Update from GNU gettext. - * srclib/canonicalize.c: Update from GNU gettext. - * srclib/error.h: Update from GNU gettext. - * srclib/error.c: Update from GNU gettext. - * srclib/gettext.h: Update from GNU gettext. - * srclib/memmove.c: Update from GNU gettext. - * srclib/progname.h: Update from GNU gettext. - * srclib/progname.c: Update from GNU gettext. - * srclib/progreloc.c: Update from GNU gettext. - * srclib/readlink.c: Update from GNU gettext. - * srclib/relocatable.c: Update from GNU gettext. - * srclib/relocwrapper.c: Update from GNU gettext. - * srclib/setenv.h: Update from GNU gettext. - * srclib/setenv.c: Update from GNU gettext. - * srclib/stdbool_.h: Update from GNU gettext. - * srclib/stdint_.h: Update from gnulib. - * srclib/strerror.c: Update from GNU gettext. - * srclib/unlocked-io.h: Update from GNU gettext. - * srclib/unsetenv.c: Update from GNU gettext. - * srclib/xalloc.h: Update from GNU gettext. - * srclib/xmalloc.c: Update from GNU gettext. - * srclib/xreadlink.c: Update from GNU gettext. - * srclib/xstrdup.c: Update from GNU gettext. - * srclib/Makefile.am (DEFS): Also define EXEEXT. - (libicrt_a_LIBADD): Use SRCLIBOBJS instead of LIBOBJS. - (libicrt_a_DEPENDENCIES): New variable. - * src/Makefile.in (EXEEXT): New variable. - * build-aux/install-reloc: Update from GNU gettext. - * build-aux/reloc-ldflags: Update from GNU gettext. - * build-aux/config.rpath: Update from GNU gettext. - -2005-12-29 Bruno Haible - - * m4/libtool.m4: Update, based on libtool-1.5.22. - * build-aux/ltmain.sh: Update, based on libtool-1.5.22. - -2005-12-24 Bruno Haible - - Check the whole range of GB18030. - * tests/GB18030-BMP.TXT: Renamed from tests/GB18030.TXT. - * tests/gengb18030z.c: New file. - * tests/table-from.c (main): For GB18030, don't stop at U+10000. - * tests/table-to.c (main): Likewise. - * tests/Makefile.in (check): Generate GB18030.TXT on the fly from - GB18030-BMP.TXT. - (clean): Remove also gengb18030z and GB18030.TXT. - * tests/Makefile.msvc (check): Generate GB18030.TXT on the fly from - GB18030-BMP.TXT. - (clean): Remove also GB18030Z.TXT, GB18030TMP.TXT, GB18030.TXT. - * tests/Makefile.os2 (check): Depend on gengb18030z.exe. Generate - GB18030.TXT on the fly from GB18030-BMP.TXT. - (clean): Remove also GB18030Z.TXT, GB18030TMP.TXT, GB18030.TXT. - -2005-12-20 Bruno Haible - - * tests/table-to.c (main): Test the mappings up to U+10FFFF, not only - up to U+2FFFF. Tolerate that Unicode language tags are silently mapped - to nothing. - -2005-12-22 Bruno Haible - - Extend GB18030 converter to cover the entire Unicode PUA. - * lib/gb18030.h: Update comments, based on second printing. - (gb18030_mbtowc): Add mapping for range U+E000..U+E765. - (gb18030_pua2charset): New array. - (gb18030_wctomb): Add mapping for range U+E000..U+E765 and the two-byte - part of range U+E766..U+E864. - * lib/gb18030ext.h (gb18030ext_2uni_pagefe): Add mappings to private - area. - (gb18030ext_mbtowc): Add mapping for the two-byte part of range - U+E766..U+E864. - * lib/gb18030uni.h (gb18030uni_charset2uni_ranges, - gb18030uni_uni2charset_ranges, gb18030uni_ranges): Add 12 more - intervals. - (gb18030uni_mbtowc, gb18030uni_wctomb): Update. - * tests/GB18030.TXT: Complete mappings to private area. - -2005-12-22 Bruno Haible - - * lib/gbk.h: Update comments. - -2005-12-20 Bruno Haible - - Add private area mappings to CP949. - * lib/cp949.h (cp949_mbtowc, cp949_wctomb): Map U+E000..U+E0BB like - many others do it. - * tests/CP949.TXT: Add mappings for U+E000..U+E0BB. - -2005-12-15 Bruno Haible - - Add private area mappings to CP950. - * lib/cp950.h (cp950_mbtowc, cp950_wctomb): Map U+E000..U+F6B0 like - most others do it. - * tests/CP950.TXT: Add mappings for U+E000..U+F6B0. - -2005-12-15 Bruno Haible - - Make CP936 follow what Microsoft does. - In http://www.microsoft.com/globaldev/reference/dbcs/936.mspx they - added a 0x80 - U+20AC mapping to the code chart, but not to the - tooltips and not to the list of mappings. - * lib/cp936.h: New file. - * lib/gbk.h: Update comments. - * lib/ces_gbk.h: Update comments. - * lib/converters.h: Include cp936.h. - * lib/encodings.def (CP936): New encoding. - (GBK): Remove CP936 aliases. - * README, man/iconv_open.3: Add CP936. - * tests/Makefile.in (check): Check CP936. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - * tests/CP936.TXT: New file. - -2005-12-14 Bruno Haible - - * lib/cp932.h (cp932_wctomb): Map U+FF5E, U+2225, U+FF0D, U+FFE0, - U+FFE1 like Microsoft does it. - * lib/CP932.IRREVERSIBLE.TXT: Add these mappings. - Reported by Lei Wang . - -2005-12-14 Bruno Haible - - Follow Euro sign addition done in 1999 in - http://www.microsoft.com/globaldev/reference/dbcs/950/950_A3.mspx - * lib/cp950.h (cp950_mbtowc, cp950_wctomb): Add mapping for 0xA3E1. - * tests/CP950.TXT: Add mapping for 0xA3E1. - -2005-11-11 Bruno Haible - - * lib/euc_jp.h (euc_jp_wctomb): When writing a 3-bytes byte sequence - and only two bytes are available in the output buffer, return - RET_TOOSMALL instead of overrunning the output buffer. - * lib/isoir165.h (isoir165_wctomb): When only one byte is available - in the output buffer, don't overrun the output buffer. - Reported by William Bardwell . - -2005-09-18 Bruno Haible - - * m4/libtool.m4: Update, based on libtool-1.5.20. - * build-aux/ltmain.sh: Update, based on libtool-1.5.20. - -2005-08-12 Bruno Haible - - * lib/big5_2003.h: Map 0xF9FA..0xF9FD differently. - * tests/BIG5-2003.TXT: Likewise. - * tests/BIG5-2003.IRREVERSIBLE.TXT: New file. - Reported by Ping Yeh . - -2005-07-24 Bruno Haible - - Tidy up exported symbols. - * m4/visibility.m4: New file. - * include/export.h: New file. - * configure.in: Invoke gl_VISIBILITY. Use AC_CONFIG_FILES. Arrange to - create also include/iconv.h.inst. - * Makefile.devel (all): Depend on include/iconv.h.build.in. - (aclocal.m4): Depend on m4/visibility.m4. - (include/iconv.h.build.in): New rule. - * Makefile.in (install-lib, install): Install include/iconv.h.inst, - not the include/iconv.h that was used for building. - (distclean, maintainer-clean): Remove also include/iconv.h.inst. - * lib/Makefile.in (CFLAGS): Add @CFLAG_VISIBILITY@. - (DEFS): Also define BUILDING_LIBICONV and BUILDING_DLL. - * lib/config.h.in (HAVE_VISIBILITY): New macro. - * lib/relocatable.h (RELOCATABLE_DLL_EXPORTED) [HAVE_VISIBILITY]: - Define to the gcc visibility attribute. - * srclib/relocatable.h (RELOCATABLE_DLL_EXPORTED) [HAVE_VISIBILITY]: - Likewise. - -2005-07-25 Bruno Haible - - 2003-08-24 Bruno Haible - * lib/relocatable.h: Make this file includable in C++ mode: add extern - "C". - -2005-07-08 Bruno Haible - - * Version 1.10 released. - -2005-07-08 Bruno Haible - - * m4/libtool.m4 (postinstall_cmds) [cygwin,mingw,pw32]: Make DLL - executable after installing it. - -2005-07-08 Bruno Haible - - * configure.in: Bump version number. - * include/iconv.h.in (_LIBICONV_VERSION): Likewise. - * windows/iconv.rc: Likewise. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 5:0:3. - -2005-07-05 Bruno Haible - - * Makefile.devel (ACLOCAL): New variable. - (aclocal.m4): Use it. - -2005-07-05 Bruno Haible - - * m4/relocatable.m4 (AC_RELOCATABLE): On mingw, simply set - SET_RELOCATABLE to a trivial value. - -2004-08-08 Bruno Haible - - * srclib/progreloc.c (xstrdup): Define as strdup if no xmalloc should - be used. - -2004-04-28 Bruno Haible - - * srclib/progreloc.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): - Treat Cygwin like Windows, since it now accepts Windows pathnames. - -2005-06-09 Bruno Haible - - * Makefile.in (mkinstalldirs): Use build-aux/ instead of autoconf/. - * lib/Makefile.in (mkinstalldirs): Likewise. - * src/Makefile.in (mkinstalldirs): Likewise. - * man/Makefile.in (mkinstalldirs): Likewise. - -2005-06-08 Bruno Haible - - * srclib/canonicalize.c (__realpath): Avoid gcc warnings on platforms - that don't support symbolic links. - -2005-06-08 Bruno Haible - - * srclib/binary-io.h (fileno): Undefine before defining it. Avoids a - gcc warning on mingw. - -2005-05-22 Bruno Haible - - Implement and document BIG5-2003. - * lib/big5_2003.h: New file. - * lib/converters.h: Include it. - * lib/encodings_extra.def (BIG5-2003): New encoding. - * README, man/iconv_open.3: Add BIG5-2003. - * tests/Makefile.in (check-extra-yes): Check BIG5-2003. - * tests/BIG5-2003.TXT: New file. - -2005-05-21 Bruno Haible - - Add EURO SIGN to EUC-TW converter. - * lib/cns11643_1.h (cns11643_1_2uni_page42): Add entry for 0x14242. - (cns11643_1_mbtowc): Update. - * lib/cns11643_inv.h (cns11643_inv_2charset): Add entry for 0x20AC. - (cns11643_inv_uni2indx_page*): Update. - * lib/dec_hanyu.h (dec_hanyu_mbtowc, dec_hanyu_wctomb): Consider only - part of row 42. - * tests/EUC-TW.TXT: Add entry for 0x20AC. - * tests/EUC-TW.IRREVERSIBLE.TXT: Likewise. - -2005-05-03 Bruno Haible - - * tools/Makefile (ALL): Add pt154.h. - (pt154.h): New rule. - * lib/encodings.def: Add PT154. - * lib/pt154.h: New file. - * lib/converters.h: Include it. - * README, man/iconv_open.3: Add PT154. - * NOTES: Mention PT154. - * tests/PT154.TXT: New file. - * tests/Makefile.in (check): Also test PT154. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - -2005-03-29 Bruno Haible - - Rename libiconv_plug.so to preloadable_libiconv.so. - * configure.in (PLUGLIB): Set to preloadable_libiconv.so instead of - libiconv_plug.so. - * lib/Makefile.in (preloadable_libiconv.so): Renamed from - libiconv_plug.so. - (preloadable_libiconv_linux.so): Renamed from libiconv_plug_linux.so. - (preloadable_libiconv_solaris.so): Renamed from - libiconv_plug_solaris.so. - (preloadable_libiconv_osf.so): Renamed from libiconv_plug_osf.so. - (clean): Update. - * README: Update. - -2005-03-29 Bruno Haible - - Implement and document ATARIST. - * tools/Makefile (ALL): Add atarist.h. - (atarist.h): New rule. - * lib/atarist.h: New file. - * lib/converters.h: Include it. - * lib/encodings_extra.def (ATARIST): New encoding. - * README, man/iconv_open.3: Add ATARIST. - * tests/Makefile.in (check-extra-yes): Check ATARIST. - * tests/ATARIST.TXT: New file. - -2005-03-22 Bruno Haible - - * build-aux: New directory, renamed from autoconf. - * configure.in (AC_CONFIG_AUX_DIR): Use build-aux. - -2005-03-16 Bruno Haible - - * m4/stdint.m4 (gl_STDINT_H): Define HAVE_LONG_LONG_64BIT instead of - HAVE_LONGLONG_64BIT. - * srclib/stdint_.h: Use HAVE_LONG_LONG_64BIT instead of - HAVE_LONGLONG_64BIT. - * srclib/Makefile.am (stdint.h): Likewise. - -2005-03-14 Bruno Haible - - * Makefile.devel (aclocal.m4): Depend also on allocsa.m4, eealloc.m4, - extensions.m4, intmax.m4, inttypes.m4, longdouble.m4, longlong.m4, - printf-posix.m4, readlink.m4, signed.m4, ssize_t.m4, stdint.m4, - wchar_t.m4, wint_t.m4. - -2005-03-13 Bruno Haible - - Make stdout error checking reliable, also when writing to a NFS file. - * src/iconv.c (main): Check the return value of fclose(stdout). - * lib/genaliases.c (main): Likewise. - * lib/genaliases2.c (main): Likewise. - * lib/genflags.c (main): Likewise. - * lib/gentranslit.c (main): Likewise. - * tests/genutf8.c (main): Likewise. - * tests/table-from.c (main): Likewise. - * tests/table-to.c (main): Likewise. - -2005-03-13 Bruno Haible - - * src/iconv.c (convert): Before outputting an error message, flush - stdout and output a newline if suitable. - -2005-03-13 Bruno Haible - - Improved error messages. - * srclib/width.c: New file, from GNU clisp. - * srclib/uniwidth.h: New file, from GNU clisp with modifications. - * srclib/unitypes.h: New file, from GNU clisp with modifications. - * srclib/cjk.h: New file, from GNU clisp. - * srclib/streq.h: New file, from GNU clisp. - * srclib/stdint_.h: New file, from gnulib. - * m4/stdint.m4: New file, from gnulib. - * m4/inttypes.m4: New file, from gnulib. - * srclib/Makefile.am: Add gnulib module 'stdint' snippet. - (BUILT_SOURCES): New variable. - (libicrt_a_SOURCES): Add width.c, uniwidth.h, unitypes.h, cjk.h, - streq.h. - * configure.in: Invoke gl_STDINT_H. - * src/iconv.c: Include cjk.h, uniwidth.h. - (line, column, cjkcode): New variables. - (update_line_column): New function. - (convert): Initialize line and column. In all error message, show also - the line and column number. - (main): Initialize cjkcode. Set up hooks to call update_line_column. - -2005-03-13 Bruno Haible - - * include/iconv.h.in (iconv_canonicalize): New declaration. - * lib/genaliases.c (emit_encoding): Take two output streams as - arguments. To the second stream, emit a shell command for extracting - offsets into the gperf generated string pool. - (main): Write the shell commands into file descriptors 3 and 4. - * lib/genaliases2.c (emit_encoding): Take two output streams as - arguments. To the second stream, emit an expression for the offset - into the string pool. - (main): Write the offsets into file descriptor 3. - * Makefile.devel (lib/aliases.gperf): Remove target. - (lib/aliases.h): Generate lib/aliases.gperf temporarily. Generate also - lib/canonical.h and lib/canonical_local.h. - (lib/aliases_aix.h): Generate also lib/canonical_aix.h. - (lib/aliases_osf1.h): Generate also lib/canonical_osf1.h. - (lib/aliases_dos.h): Generate also lib/canonical_dos.h. - (lib/aliases_extra.h): Generate also lib/canonical_extra.h. - * lib/iconv.c (stringpool2): Provide default definition when it doesn't - exist. - (all_canonical): New array. - (iconv_canonicalize): New function. - -2005-03-13 Bruno Haible - - * include/iconv.h.in (iconv_unicode_char_hook, iconv_wide_char_hook, - iconv_hooks): New types. - (ICONV_SET_HOOKS): New macro. - * lib/converters.h (struct conv_struct): Add field 'hooks'. - * lib/iconv.c (iconv_open): Initialize hooks to NULL. - (iconvctl): Handle ICONV_SET_HOOKS. - * lib/loop_unicode.h (unicode_loop_convert, unicode_loop_reset): After - conversion of a character, call the uc_hook. - * lib/loop_wchar.h (wchar_id_loop_convert): After every character, call - the wc_hook. - * lib/genflags.c (iconv_hooks): Provide a dummy definition. - -2005-02-05 Bruno Haible - - * src/iconv.c (main): In case of unsupported encodings, show a hint - towards "iconv -l". - -2005-01-06 Bruno Haible - - * lib/Makefile.msvc (CFLAGS): Define also INSTALLPREFIX. - * lib/Makefile.vms (DEFS): Likewise. - Reported by Troels Walsted Hansen . - -2005-01-05 Bruno Haible - - * autoconf/config.rpath: Update from GNU gettext. - -2005-01-05 Bruno Haible - - Assume automake-1.9. - * Makefile.devel (AUTOMAKE): Assume automake-1.9. - -2005-01-05 Bruno Haible - - * m4/libtool.m4: Update from GNU gettext, based on libtool-1.5.10. - * autoconf/ltmain.sh: Update from GNU gettext, based on libtool-1.5.10. - -2004-11-11 Bruno Haible - - * lib/iconv.c (iconv_open): Accept the suffixes //TRANSLIT and //IGNORE - in arbitrary order. - Reported by Lukas Gebauer . - -2004-09-21 Juan Manuel Guerrero - - * djgpp/config.bat: Update. - * djgpp/config.sed: Update. - * djgpp/config.site: Update. - * djgpp/edtest.bat: Update. - * djgpp/fnchange.in: Update. - * djgpp/Makefile.maint: Update. - * djgpp/makefile.sed: Update. - * djgpp/README.in: Update. - * djgpp/sources.sed: Update. - * djgpp/translit-check.sed: Update. - -2004-08-25 Bruno Haible - - * m4/libtool.m4: Update from GNU gettext, based on libtool-1.5.6. - * autoconf/ltmain.sh: Update from GNU gettext, based on libtool-1.5.6. - -2004-07-31 Bruno Haible - - Update to JISX 0213 plane 1 to 2004 version (ISO-IR-233). - * tools/Makefile (jisx0213.h): Bump version number. - * tools/JISX0213.TXT: Change mappings U+2015 -> U+2014, - U+2299 -> U+29BF, and add 10 new characters. - * tools/cjk_tab_to_h.c (output_title): Bump year. - (do_jisx0213): Update comments. Emit a conditional 'inline'. - * lib/jisx0213.h: Regenerated. - * lib/iso2022_jp3.h (iso2022_jp3_mbtowc): Accept escape sequence - ESC $ ( Q as a synonym of ESC $ ( O. - (iso2022_jp3_wctomb): Emit ESC $ ( Q instead of ESC $ ( O. - * tests/EUC-JISX0213.TXT: Change mappings U+2015 -> U+2014, - U+2299 -> U+29BF, and add 10 new characters. - * tests/SHIFT_JISX0213.TXT: Likewise. - * tests/ISO-2022-JP-3-snippet: Update. - * tests/ISO-2022-JP-3-snippet.UTF-8: Update. - -2004-07-22 Bruno Haible - - * lib/encodings.def (ISO-8859-7): Add alias ISO_8859-7:2003. - * tools/Makefile (iso8859_7.h): Use conversion table from 2003. - * lib/iso8859_7.h: Add mappings for 0xa4, 0xa5, 0xaa. - * tests/ISO-8859-7.TXT: Update to ISO_8859-7:2003. - -2004-07-22 Bruno Haible - - * tools/Makefile (ALL): Add iso8859_11.h. - (iso8859_11.h): New rule. - * lib/encodings.def: Add ISO-8859-11. - * lib/iso8859_11.h: New file. - * lib/converters.h: Include it. - * tests/ISO-8859-11.TXT: New file. - * tests/Makefile.in (check): Also test ISO-8859-11. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - -2004-07-17 Bruno Haible - - * src/iconv.c (main): Terminate option parsing when option -- is seen. - Reported by Len Lattanzi . - -2004-03-05 Bruno Haible - - * src/Makefile.in (install): Make DESTDIR work on HP-UX. - Reported by Bob Proulx . - -2004-02-19 Bruno Haible - - * lib/vietcomb.h (viet_comp_table_data): Un-uncomment 0x00D5, 0x00F5, - 0x0168, 0x0169. Needed for TCVN-5712 but not for CP1258. - (viet_comp_table0301_len): Increment by 4. - - * lib/cp1255.h (cp1255_mbtowc): Don't delay the handling of characters - which are not entries in cp1255_comp_table_data. - * lib/cp1258.h (cp1258_comp_bases): New array. - (cp1258_mbtowc): Don't delay the handling of characters which are not - relevant entries in viet_comp_table_data. - * lib/tcvn.h (tcvn_comp_bases): New array. - (tcvn_mbtowc): Don't delay the handling of characters which are not - relevant entries in viet_comp_table_data. - Reported by Alain Bench . - -2004-02-02 Perry Rapp - Bruno Haible - - * man/iconvctl.3: New file. - * man/iconv.3: Refer to it in "See also". - * man/iconv_open.3: Likewise. - -2004-01-24 Bruno Haible - - * srclib/progreloc.c (xstrdup): Define as strdup if no xmalloc should - be used. - -2004-01-20 Bruno Haible - - Upgrade from gettext-0.14. - - * configure.in: Call gl_USE_SYSTEM_EXTENSIONS. Call AM_STDBOOL_H - instead of gt_STDBOOL_H. Provide a definition for DLL_VARIABLE. - * srclib/Makefile.am (libicrt_a_SOURCES): Add allocsa.h, allocsa.c, - xalloc.h. Remove xmalloc.h. - (libicrt_a_LIBADD): Remove @ALLOCA@. - * srclib/Makefile.msvc (OBJECTS): Add allocsa.obj. - (allocsa.obj): New rule. - * srclib/Makefile.vms (OBJECTS): Add allocsa.obj. - (allocsa.obj): New rule. - * Makefile.devel (config.h_vms): Set MALLOC_0_IS_NONNULL to 0. - (config.h.msvc): Set MALLOC_0_IS_NONNULL to 1. - - lib/: - - 2003-10-09 Bruno Haible - * lib/relocatable.c: Include xalloc.h instead of xmalloc.h. - - 2003-08-01 Bruno Haible - * lib/relocatable.c (find_shared_library_fullname): Disable the code on - Linux/libc5. Reported by Alain Guibert . - - 2003-06-22 Bruno Haible - * lib/relocatable.c (compute_curr_prefix): Comment out this function in - the case when it is not used. - Reported by Pavel Roskin . - - m4/: - - * m4/gettext.m4: Upgrade from GNU gettext. Many changes. - * m4/po.m4: Likewise. - - * m4/readlink.m4: New file, from GNU gettext. - - 2003-11-30 Bruno Haible - * m4/allocsa.m4: New file. - * m4/eealloc.m4: New file. - * m4/setenv.m4 (gl_PREREQ_SETENV): Require gl_ALLOCSA instead of - AC_FUNC_ALLOCA. - - 2003-10-21 Bruno Haible - * m4/canonicalize.m4 (gl_PREREQ_CANONICALIZE): Also test for - readlink(). - - 2003-08-24 Bruno Haible - * m4/relocatable.m4 (AC_RELOCATABLE): Use $(host) instead of @host@, - since the substitution of @host@ may occur before the substitution of - @SET_RELOCATABLE@. - - 2003-08-23 Bruno Haible - * stdbool.m4: Replace with the version from gnulib, without - AC_HEADER_STDBOOL. - - 2003-08-08 Paul Eggert - * m4/extensions.m4: New file. - * m4/unlocked-io.m4 (jm_FUNC_GLIBC_UNLOCKED_IO): - Require gl_USE_SYSTEM_EXTENSIONS rather than AC_GNU_SOURCE. - - 2003-07-01 Bruno Haible - * m4/ssize_t.m4 (gt_TYPE_SSIZE_T): Don't include . - should be sufficient. - Reported by Paul Eggert. - - 2003-07-01 Bruno Haible - * m4/lib-prefix.m4 (AC_LIB_ARG_WITH): Avoid "duplicated macro" error - from aclocal-1.4-p4. - Reported by Luke Schierer and - Michael C. Toren . - - 2003-07-01 Paul Eggert - * m4/xreadlink.m4 (gl_XREADLINK): Don't check for sys/types.h, since - xreadlink.c now includes it unconditionally. - - 2003-06-17 Paul Eggert - * m4/lib-ld.m4 (AC_LIB_PROG_LD_GNU, AC_LIB_PROG_LD): Don't use egrep, - for portability to POSIX 1003.1-2001. Backported from libtool-1.5. - - 2003-05-28 Paul Eggert - * m4/pathmax.m4 (gl_PATHMAX): Don't check for limits.h. - * m4/xreadlink.m4 (gl_XREADLINK): Likewise. - - 2002-12-24 Bruno Haible - * m4/setenv.m4 (gt_FUNC_SETENV): New macro. - (gt_CHECK_VAR_DECL): Fix quoting error that led to infinite loop in m4 - when invoked twice. - (gt_PREREQ_SETENV, gt_PREREQ_UNSETENV): New macros, replacing old - gt_FUNC_SETENV. - - srclib/: - - 2003-11-30 Bruno Haible - * srclib/alloca.c: Remove file. - - 2003-11-30 Bruno Haible - Safer stack allocation. - * srclib/allocsa.h: New file. - * srclib/allocsa.c: New file. - * canonicalize.c: Include allocsa.h. - (__realpath): Use allocsa instead of alloca. Don't clobber errno right - before returning NULL. - * srclib/relocwrapper.c: Indirectly depends on allocsa. - * srclib/setenv.c: Include allocsa.h. - (alloca): Remove fallback definition. - (freea): Remove macro. - (__add_to_environ) [!_LIBC]: Use allocsa instead of alloca. Use freesa - instead of freea. - - 2003-11-17 Bruno Haible - * srclib/canonicalize.c: #undef realpath after but before - the system includes, so as to avoid a prototype clash on Solaris 2.5.1. - Reported by Warren L. Dodge . - - 2003-10-21 Bruno Haible - * srclib/canonicalize.c (lstat): Define as an alias to 'stat' on - systems without symbolic links. - - 2003-10-17 Bruno Haible - * srclib/binary-io.h: Avoid warnings on Cygwin. - - 2003-10-09 Bruno Haible - * srclib/xalloc.h: Renamed from xmalloc.h. - * srclib/progreloc.c: Include xalloc.h instead of xmalloc.h. - * srclib/relocatable.c: Likewise. - * srclib/xmalloc.c: Likewise. - * srclib/xreadlink.c: Likewise. - * srclib/xstrdup.c: Likewise. - - 2003-09-12 Paul Eggert - * srclib/progreloc.c (get_full_program_name): Define via prototype. - - 2003-09-12 Paul Eggert - * srclib/setenv.c (clearenv): Define via prototype. - - 2003-09-10 Bruno Haible - * srclib/setenv.c: Include and unconditionally. - * srclib/unsetenv.c: Likewise. - - 2003-08-28 Bruno Haible - * srclib/binary-io.h: Undefine O_BINARY before defining it. This avoids - a warning on QNX, which defines O_BINARY to 000000. - - 2003-08-24 Bruno Haible - * srclib/binary-io.h: Include , to avoid a compilation error - when MSVC7 is included later. - - 2003-08-24 Bruno Haible - * srclib/error.h: Use ANSI C "..." declarations when compiling with - MSVC, even though it doesn't define __STDC__ by default. - * srclib/error.c: Use when compiling with MSVC, even though - it doesn't define __STDC__ by default. - - 2003-08-24 Bruno Haible - Support for building DLLs on Windows. - * srclib/error.h (error_print_progname, error_message_count, - error_one_per_line): Add DLL_VARIABLE attribute. - * srclib/progname.h (program_name): Likewise. - - 2003-08-24 Bruno Haible - * srclib/progname.h: Make this file includable in C++ mode: add extern - "C". - * srclib/relocatable.h: Likewise. - * srclib/xmalloc.h: Likewise. - - 2003-08-22 Bruno Haible - * srclib/progname.h (error_with_progname, maybe_print_progname): Remove - declarations. - * srclib/progname.c (error_with_progname): Remove variable. - (maybe_print_progname): Remove function. - - 2003-08-01 Bruno Haible - * srclib/relocatable.c (find_shared_library_fullname): Disable the code - on Linux/libc5. Reported by Alain Guibert . - - 2003-07-01 Paul Eggert - * srclib/xreadlink.c: Include unconditionally, instead of - having it depend on HAVE_SYS_TYPES_H. - - 2003-06-23 Bruno Haible - Avoid compilation units that are empty after preprocessing. - * srclib/canonicalize.c: Add dummy declaration. - * srclib/strerror.c: Likewise. - * srclib/error.c: Include even if there's nothing to be - compiled. - - 2003-06-22 Bruno Haible - * srclib/relocatable.c (compute_curr_prefix): Comment out this function - in the case when it is not used. - Reported by Pavel Roskin . - - 2003-05-28 Paul Eggert - * srclib/pathmax.h: Include without checking for - HAVE_LIMITS_H. - * srclib/xreadlink.c: Likewise. - -2004-01-20 Bruno Haible - - Assume automake-1.8. - * Makefile.devel (AUTOCONF, AUTOHEADER): Assume autoconf-2.59. - (AUTOMAKE): Assume automake-1.8. - * Makefile.in (am--refresh): New target. - -2004-01-23 Bruno Haible - - * Version 1.9.2 released. - -2004-01-23 Bruno Haible - - * tests/table-from.c: Include binary-io.h. - (main): Switch stdout to binary mode. - * tests/table-to.c: Include binary-io.h. - (main): Switch stdout to binary mode. - * tests/genutf8.c: Include binary-io.h. - (main): Switch stdout to binary mode. - * tests/Makefile.in (INCLUDES): Also look in srclib. - (check): Pass INCLUDES when compiling genutf8.c. - * tests/Makefile.os2 (INCLUDES): Also look in srclib. - (genutf8.exe): Pass INCLUDES when compiling genutf8.c. - * tests/Makefile.msvc (INCLUDES): Also look in srclib. - (check): Pass INCLUDES when compiling genutf8.c. - -2004-01-21 Bruno Haible - - * src/iconv.c (force_binary): Remove variable. - (usage): Don't document --binary any more. - (convert, main): Always switch to binary mode. - * tests/check-stateful.bat: Remove --binary option. - * tests/check-translit.bat: Likewise. - * tests/check-stateful.cmd: Likewise. - * tests/check-translit.cmd: Likewise. - * djgpp/stateful-check.sed: Remove MODE variable. - * djgpp/translit-check.sed: Likewise. - -2004-01-21 Bruno Haible - - * man/iconv.3: Fix description of return value in case of error. - Reported by Jonathan Wakely . - -2003-09-12 Paul Eggert - - * srclib/progreloc.c (get_full_program_name): Define via prototype. - -2003-08-15 Bruno Haible - - * Makefile.devel (lib/translit.h): Add ulimit command so that the - gentranslit program gets the stack it needs. Many Linux distributions - allow only 8 MB of stack by default. - -2003-08-01 Bruno Haible - - * lib/relocatable.c (find_shared_library_fullname): Disable the code on - Linux/libc5. - * srclib/relocatable.c (find_shared_library_fullname): Likewise. - Reported by Alain Guibert . - -2003-07-02 Bruno Haible - - * m4/lib-ld.m4: Update from GNU gettext. - * m4/lib-prefix.m4: Update from GNU gettext. - * m4/gettext.m4: Update from GNU gettext. - * m4/intmax.m4: New file, from GNU gettext. - * m4/longdouble.m4: New file, from GNU gettext. - * m4/longlong.m4: New file, from GNU gettext. - * m4/printf-posix.m4: New file, from GNU gettext. - * m4/signed.m4: New file, from GNU gettext. - * m4/wchar_t.m4: New file, from GNU gettext. - * m4/wint_t.m4: New file, from GNU gettext. - * m4/pathmax.m4: Update from GNU gettext and gnulib. - * m4/ssize_t.m4: Update from GNU gettext and gnulib. - * m4/xreadlink.m4: Update from GNU gettext and gnulib. - * m4/readlink.m4: New file, from gnulib. - * autoconf/install-reloc: Update from GNU gettext. - * srclib/stdbool_.h: Renamed from srclib/stdbool.h.in. - * srclib/readlink.c: New file, from GNU gettext and gnulib. - * srclib/Makefile.am (LIBADD_SOURCE): Add readlink.c. - (EXTRA_DIST, stdbool.h): Use stdbool_.h instead of stdbool.h.in. - * configure.in: Invoke gl_FUNC_READLINK. - -2003-06-22 Bruno Haible - - * src/Makefile.in (install): Link with the already installed library. - This fixes a link error on Solaris. - Reported by Paul Eggert. - -2003-06-08 Bruno Haible - - * srclib/canonicalize.c (__getcwd) [VMS]: Pass 3 arguments to getcwd. - -2003-05-02 Bruno Haible - - Support for libtool-1.5. - * srclib/progname.c (set_program_name): Remove a leading - "/.libs/lt-" or "/.libs/", not only "lt-". - -2003-06-23 Bruno Haible - - Avoid compilation units that are empty after preprocessing. - * srclib/canonicalize.c: Add dummy declaration. - * srclib/strerror.c: Likewise. - * srclib/error.c: Include even if there's nothing to be - compiled. - -2003-06-22 Bruno Haible - - Portability to mingw32. - * m4/ssize_t.m4: New file, from GNU gettext. - * m4/xreadlink.m4 (gl_XREADLINK): Require gt_TYPE_SSIZE_T. - Reported by Jeff Bonggren . - -2003-06-22 Bruno Haible - - Portability to mingw32. - * lib/relocatable.c [WIN32]: Include . - * srclib/relocatable.c: Likewise. - Reported by Jeff Bonggren . - -2003-06-22 Bruno Haible - - * lib/relocatable.c (compute_curr_prefix): Comment out this function in - the case when it is not used. - * srclib/relocatable.c (compute_curr_prefix): Likewise. - Reported by Pavel Roskin . - -2003-06-18 Bruno Haible - - * config/install-sh: Update from automake-1.7.5. - -2003-06-16 Bruno Haible - - * lib/encodings.def (ISO-8859-15): Add alias LATIN-9. - (ISO-8859-16): Add aliases ISO_8859-16:2001, LATIN10, L10. Remove alias - ISO_8859-16:2000. - (GBK): Add aliases MS936, WINDOWS-936. - Reported by Guido Flohr . - -2003-05-09 Bruno Haible - - * srclib/canonicalize.c: Add #ifdef around versioned_symbol. Avoids an - "extraneous semicolon" warning from Tru64 cc. - -2003-06-07 Bruno Haible - - * Makefile.devel (config.h_vms): Don't define HAVE_ENVIRON_DECL. - * Makefile.vms (config.h): New rule. - (all, install): Depend on it. - (all, install, installdirs, uninstall, check): Fix typo. - (mostlyclean, clean, distclean, maintainer-clean): Likewise. Remove - config.h. - * lib/Makefile.vms (DEFS): Fix value of INSTALLDIR. - (OBJECTS): Use libiconv.obj instead of iconv.obj. - (libiconv.obj): Renamed from iconv.obj. - * srclib/Makefile.vms (INCLUDES): Add parent directory. - (OBJECTS): Remove strtoul.obj, setenv.obj, unsetenv.obj. - (strtoul.obj, setenv.obj, unsetenv.obj): Remove rules. - (alloca.h): New rule. - (canonicalize.obj): Depend on it. - (clean): Remove alloca.h. - * src/Makefile.vms (datadir, localedir): New variables. - (DEFS): Also define LOCALEDIR. - (iconv.obj): Add flags for relocatability, - (iconv.exe): Link with libicrt. Use link_options. - * vms/link_options.opt: New file. - Reported by Jouk Jansen . - -2003-06-07 Bruno Haible - - Support for relocatable data files even on Woe32. - * lib/Makefile.msvc (PICFLAGS): Also define PIC. - -2003-05-22 Bruno Haible - - * Version 1.9.1 released. - -2003-05-22 Bruno Haible - - * lib/genaliases.c (main): Emit %pic instead of %null-strings. - Change type of 'name' field to 'int'. - * lib/genaliases2.c (emit_encoding): Add a 'tag' argument. Emit an - invocation of macro S(), including the tag and a counter. - (main): Use the command-line argument as tag. - * Makefile.devel (lib/aliases_aix.h, lib/aliases_osf1.h, - lib/aliases_dos.h, lib/aliases_extra.h): Pass a tag to the program. - * lib/iconv.c (stringpool2_t): New type. - (stringpool2_contents): New data table. - (stringpool2): New macro. - (sysdep_aliases): Make position-independent. Move #includes out to - aliases2.h. - (aliases2_lookup): Update. - (nalias): New type. - (compare_by_index): Use 'struct nalias' instead of 'struct alias'. - (iconvlist): Convert 'struct alias' to 'struct nalias' while copying. - * lib/aliases2.h: New file, extracted from lib/iconv.c. - -2003-05-20 Bruno Haible - - * lib/iconv.c (iconvlist): Test p->name against NULL, not against "". - Reported by Muraoka Taro . - -2003-05-19 Bruno Haible - - * windows/iconv.rc: Include . - Reported by Perry Rapp. - -2003-05-18 Bruno Haible - - * Version 1.9 released. - -2003-05-18 Bruno Haible - - * lib/Makefile.in (libiconv_plug_osf.so): Avoid using LIBTOOL_LINK. - -2003-05-18 Bruno Haible - - * lib/Makefile.msvc (DEBUGFLAGS): New variable. - (iconv.lib): Use it. - * src/Makefile.msvc (DEBUGFLAGS): New variable. - * tests/Makefile.msvc (DEBUGFLAGS): New variable. - -2003-05-17 Bruno Haible - - * src/Makefile.msvc (libdir, datadir, localedir): New variables. - (IIlibdir, IIdatadir, IIlocaledir): New variables. - (CFLAGS): Define LOCALEDIR. - (iconv_no_i18n.exe): New rule. - (all): Depend on it. - * tests/check-stateful.bat: Invoke iconv_no_i18n instead of iconv. - * tests/check-translit.bat: Likewise. - -2003-05-16 Bruno Haible - - * lib/genaliases.c (main): Emit declarations for gperf-3.0. - * Makefile.devel (lib/aliases.h): Remove gperf command line options; - add new option "-m 10" for gperf-3.0. - -2003-05-12 Bruno Haible - - * m4/error.m4: Update from gettext. - -2003-05-12 Bruno Haible - - * configure.in: Invoke AC_GNU_SOURCE and jm_FUNC_GLIBC_UNLOCKED_IO. - -2003-05-12 Bruno Haible - - * lib/Makefile.msvc (PICFLAGS, CFLAGS): Move BUILDING_* macros from - CFLAGS to PICFLAGS. - -2003-05-09 Bruno Haible - - * srclib/error.c: Update from gnulib with modifications. - * srclib/unlocked-io.h: New file, from gnulib. - * m4/strerror_r.m4: New file, from gnulib. - * m4/unlocked-io.m4: New file, from gnulib. - * Makefile.devel (aclocal.m4): Depend on them. - -2003-05-08 Bruno Haible - - * Makefile.msvc (IIPREFIX): New variable. - * srclib/Makefile.msvc (INCLUDES): Add -I..\windows. - * src/Makefile.msvc (IIPREFIX, IIprefix, IIexec_prefix, IIbindir, - IIincludedir): New variables. - (INCLUDES): Add -I..\windows. - (iconv.exe): Define INSTALLPREFIX and INSTALLDIR. Link with - ../srclib/icrt.lib. - Patches by Perry Rapp. - -2003-05-07 Bruno Haible - - * README.woe32: Fix instructions for step 1. - * srclib/Makefile.msvc (OBJECTS): Remove strtoul.obj. - (strtoul.obj): Remove rule. - Reported by Perry Rapp. - -2003-05-07 Bruno Haible - - * Makefile.vms: New file. - * lib/Makefile.vms: New file. - * srclib/Makefile.vms: New file. - * src/Makefile.vms: New file. - * man/Makefile.vms: New file. - * tests/Makefile.vms: New file. - * Makefile.devel (config.h_vms, lib/config.h_vms, include/iconv.h_vms): - New rules. - (all): Depend on them. - -2003-05-07 Bruno Haible - - * srclib/Makefile.msvc (OBJECTS): Remove findprog.obj. - (findprog.obj): Remove rule. - * src/Makefile.msvc (includedir): New variable. - -2003-05-06 Bruno Haible - - * lib/translit.def: Upgrade to Unicode 4.0. - -2003-05-06 Bruno Haible - - * srclib/Makefile.am (DEFS): Fix spelling of DEPENDS_ON_LIBICONV. - * srclib/Makefile.msvc (CFLAGS): Likewise. - - * srclib/Makefile.msvc (INCLUDES): Add -I.. . - Reported by Perry Rapp. - - * Makefile.msvc (config.h): New rule. - (all): Depend on it. - (mostlyclean, clean, distclean, maintainer-clean): Erase config.h. - Reported by Perry Rapp. - -2003-05-06 Bruno Haible - - * autoconf/config.guess: Update to GNU version 2003-02-22. - * autoconf/config.sub: Likewise. - -2003-05-06 Bruno Haible - - * m4/lib-link.m4: Update from GNU gettext. - * autoconf/config.rpath: Update from GNU gettext. - - * m4/libtool.m4: Update from GNU gettext, based on libtool-1.5. - * autoconf/ltmain.sh: Update from GNU gettext, based on libtool-1.5. - - * m4/gettext.m4: Update from GNU gettext. - * m4/nls.m4: Update from GNU gettext. - * m4/po.m4: Update from GNU gettext. - * Makefile.devel (aclocal.m4): Depend on m4/nls.m4 and m4/po.m4. - -2003-04-12 Bruno Haible - - Support for OpenVMS 7.3. - * lib/iconv.c (USE_OSF1): Define also on VMS. - -2003-04-12 Bruno Haible - - Better support for FreeBSD. - * lib/encodings.def (ISO8859-{1,2,3,4,5,6,7,8,9,10,13,14,15,16): New - aliases, for compatibility with earlier FreeBSD iconv implementation - by Konstantin Chuguev. - * lib/iconv.c (iconv_open, iconv, iconv_close) [FreeBSD]: Define as - aliases. - * src/Makefile.in (install) [FreeBSD]: Avoid installation problem. - -2003-04-12 Bruno Haible - - * configure.in (mandir): Change default value. - * Makefile.in (datadir): New variable. - (install, installdirs, uninstall): Pass datadir to po and man - directories. - * Makefile.os2 (datadir): New variable. - (mandir): Use it instead of prefix. - (install, uninstall): Pass datadir to man directory. - * Makefile.msvc (mandir, docdir): Use datadir instead of prefix. - * man/Makefile.in (datadir): New variable. - (docdir): Use it instead of prefix. - (install, installdirs): Update. - * man/Makefile.os2 (datadir): New variable. - (mandir): Use it instead of prefix. - * man/Makefile.msvc (datadir): New variable. - (mandir, docdir): Use it instead of prefix. - (install, installdirs): Update. - -2003-04-06 Bruno Haible - - Make it possible to build with or without libintl support on Woe32. - * Makefile.devel (config.h.msvc): Remove ENABLE_NLS. - * Makefile.msvc (NO_NLS): New variable. - * srclib/Makefile.msvc (NO_NLS): New variable. - (CFLAGS, INCLUDES): Use them. - * src/Makefile.msvc (NO_NLS): New variable. - (NLSFLAGS, INCINTL, LIBINTL): New variables. - (CFLAGS, INCLUDES, iconv.exe): Use them. - -2003-04-12 Bruno Haible - - * lib/loop_unicode.h (unicode_transliterate): When the Hangul or - variants transliteration failed with RET_ILUNI, don't return - RET_TOOSMALL. - Reported by the FreeBSD porters. - -2003-04-06 Bruno Haible - - * srclib/binary-io.h: New file, from GNU gettext. - * src/iconv.c: Include it. - (O_BINARY, O_TEXT, SET_BINARY): Remove definitions. - -2003-04-05 Bruno Haible - - Support for relocatable installation. - * m4/alloca.m4: New file, from GNU gettext. - * m4/canonicalize.m4: New file, from GNU gettext. - * m4/error.m4: New file, from GNU gettext. - * m4/onceonly.m4: New file, from GNU gettext. - * m4/pathmax.m4: New file, from GNU gettext. - * m4/relocatable.m4: New file, from GNU gettext. - * m4/setenv.m4: New file, from GNU gettext. - * m4/stdbool.m4: New file, from GNU gettext. - * m4/strerror.m4: New file, from GNU gettext. - * m4/xreadlink.m4: New file, from GNU gettext. - * autoconf/config.libpath: New file, from GNU gettext. - * autoconf/install-reloc: New file, from GNU gettext. - * autoconf/reloc-ldflags: New file, from GNU gettext. - * autoconf/missing: New file, from GNU automake 1.7.3. - * lib/relocatable.h: New file, from GNU gettext. - * lib/relocatable.c: New file, from GNU gettext. - * srclib/alloca.c: New file, from GNU gettext. - * srclib/alloca_.h: New file, from GNU gettext. - * srclib/canonicalize.c: New file, from GNU gettext. - * srclib/canonicalize.h: New file, from GNU gettext. - * srclib/error.c: New file, from GNU gettext. - * srclib/error.h: New file, from GNU gettext. - * srclib/exit.h: New file, from GNU gettext. - * srclib/gettext.h: New file, from GNU gettext. - * srclib/memmove.c: New file, from GNU gettext. - * srclib/pathmax.h: New file, from GNU gettext. - * srclib/progname.c: New file, from GNU gettext. - * srclib/progname.h: New file, from GNU gettext. - * srclib/progreloc.c: New file, from GNU gettext. - * srclib/relocatable.c: New file, from GNU gettext. - * srclib/relocatable.h: New file, from GNU gettext. - * srclib/relocwrapper.c: New file, from GNU gettext. - * srclib/setenv.c: New file, from GNU gettext. - * srclib/setenv.h: New file, from GNU gettext. - * srclib/stdbool.h.in: New file, from GNU gettext. - * srclib/strerror.c: New file, from GNU gettext. - * srclib/unsetenv.c: New file, from GNU gettext. - * srclib/xmalloc.c: New file, from GNU gettext. - * srclib/xmalloc.h: New file, from GNU gettext. - * srclib/xreadlink.c: New file, from GNU gettext. - * srclib/xreadlink.h: New file, from GNU gettext. - * srclib/xstrdup.c: New file, from GNU gettext. - * srclib/Makefile.am: New file. - * srclib/Makefile.msvc: New file. - * windows/alloca.h: New file, from GNU gettext. - * windows/stdbool.h: New file, from GNU gettext. - * configure.in (AC_CONFIG_HEADERS): Replace src/config.h with config.h. - Add AC_RELOCATABLE, AC_HEADER_STDC, AC_CHECK_HEADERS(stddef.h stdlib.h - string.h), AC_CHECK_FUNCS(getc_unlocked), AC_REPLACE_FUNCS(memmove), - AM_LANGINFO_CODESET, gl_FUNC_ALLOCA, gl_CANONICALIZE, - gt_FUNC_ERROR_AT_LINE, gl_PATHMAX, gt_FUNC_SETENV, gt_STDBOOL_H, - gl_FUNC_STRERROR, gl_XREADLINK, AC_OUTPUT(srclib/Makefile). - * lib/config.h.in: Add HAVE_GETC_UNLOCKED, HAVE_LANGINFO_CODESET, - HAVE_SETLOCALE, HAVE_STDDEF_H, HAVE_STDLIB_H, HAVE_STRING_H, for - localcharset.c. Add ENABLE_RELOCATABLE, INSTALLPREFIX, for - relocatable.c. - * lib/Makefile.in (DEFS): New variable. - (SOURCES): Add localcharset.c and relocatable.c. - (OBJECTS): Add localcharset.lo and relocatable.lo. - (LIBCHARSET_OBJECTS): Remove variable. - (libiconv_plug_linux.so, libiconv_plug_solaris.so, - libiconv_plug_osf.so): Use $(DEFS). Don't use $(LIBCHARSET_OBJECTS). - (iconv.lo): Use $(DEFS). - (localcharset.lo, relocatable.lo): New rules. - * lib/Makefile.msvc (CFLAGS): Define HAVE_CONFIG_H, BUILDING_DLL, - ENABLE_RELOCATABLE, IN_LIBRARY, INSTALLDIR, NO_XMALLOC, - set_relocation_prefix, relocate. Remove $(PICFLAGS). - (INCLUDES): Simplify. - (SOURCES): Remove variable. - (OBJECTS): Add localcharset.obj and relocatable.obj. - (LIBCHARSET_OBJECTS): Remove variable. - (iconv.obj): Add $(PICFLAGS). - (localcharset.obj, relocatable.obj): New rules. - (iconv.lib): Drop $(LIBCHARSET_OBJECTS). - * include/iconv.h.in (libiconv_set_relocation_prefix): New declaration. - * src/gettext.h: Remove file. - * src/iconv.c: Include progname.h and relocatable.h. - (ICONV_CONST): Define to const if the system has no iconv. - (main): Invoke set_program_name. Relocate LOCALEDIR. - * src/Makefile.in (top_srcdir): New variable. - (INCLUDES): Add .. and ../srclib. - (iconv_no_i18n, iconv): Link with ../srclib/libicrt.a. - (iconv_no_i18n.@OBJEXT@, iconv.@OBJEXT@): Define INSTALLDIR. - (RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR, - RELOCATABLE_CONFIG_H_DIR, @SET_RELOCATABLE@, iconv_LDFLAGS): New - variables. - (iconv): Use $(iconv_LDFLAGS). - (install): Use $(INSTALL_PROGRAM_ENV). - (distclean): Drop removing config.h. - * src/Makefile.msvc (INCLUDES): Add .., simplify. - * tests/Makefile.msvc (INCLUDES): Simplify. - * Makefile.devel (AUTOHEADER, AUTOMAKE): New variables. - (config.h.in, srclib/Makefile.in, config.h.msvc): New rules. - (all): Depend on them. - (aclocal.m4) Depend also on m4/alloca.m4, m4/canonicalize.m4, - m4/error.m4, m4/onceonly.m4, m4/pathmax.m4, m4/relocatable.m4, - m4/setenv.m4, m4/stdbool.m4, m4/strerror.m4, m4/xreadlink.m4. - (lib/config.h.msvc): Additional processing. - * Makefile.in (all, install, installdirs, uninstall, check): Recurse - into srclib. - (mostlyclean, clean, distclean, maintainerclean): Likewise. Remove - lib/localcharset.h. - (distclean, maintainerclean): Remove also config.h and some stamps. - * Makefile.msvc (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainerclean): Recurse into srclib. - * INSTALL.generic: Document --enable-relocatable and - --with-libintl-prefix. Remove the recommendation to set CPPFLAGS and - LDFLAGS. The lib-link.m4 macros make this unnecessary. - -2003-04-05 Bruno Haible - - * configure.in: Bump version number to 1.9. - * include/iconv.h.in (_LIBICONV_VERSION): Bump. - * windows/iconv.rc: Bump version number. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Bump to 4:0:2. - -2003-04-05 Bruno Haible - - * Makefile.msvc (PREFIX): New variable. - (prefix): Use it. - (distclean, maintainer-clean): Drop Unix specific removals. - * lib/Makefile.msvc (PREFIX, IIPREFIX): New variables. - (prefix): Use it. - (IIprefix, IIexec_prefix, IIbindir, IIlibdir): New variables. - (clean): Drop Unix specific removal. - * src/Makefile.msvc (PREFIX): New variable. - (prefix): Use it. - (clean): Drop Unix specific removal. - (distclean): Likewise. - * tests/Makefile.msvc (clean): Drop Unix specific removal. - (distclean): Likewise. - -2003-04-05 Bruno Haible - - * m4/endian.m4 (CL_WORDS_LITTLEENDIAN): Use 3-argument AC_DEFINE. - -2003-04-05 Bruno Haible - - * m4/general.m4 (CL_CONFIG_SUBDIRS, CL_CANONICAL_HOST, - CL_CANONICAL_HOST_CPU, CL_CANONICAL_HOST_CPU_FOR_FFCALL): Remove - macros. - * m4/gettext.m4: Update from GNU gettext. - * m4/iconv.m4: Update from GNU gettext. - * m4/lcmessage.m4: Update from GNU gettext. - * m4/progtest.m4: Update from GNU gettext. - * m4/libtool.m4: Update from GNU gettext. - 2003-02-16 Bruno Haible - Workaround autoconf >= 2.52 breakage. - * libtool.m4 (AC_LIBTOOL_ARG_WITH): New macro. - (_LT_AC_LTCONFIG_HACK, AC_PROG_LD): Use it. - * autoconf/ltmain.sh: Update from GNU gettext. - 2003-02-18 Bruno Haible - Fix the 2002-09-16 fix. - * ltmain.sh (install): If "ln -s -f" fails (this is the case - with /usr/bin/ln on Solaris 2.7), fall back to "rm && ln -s". - -2003-04-05 Bruno Haible - - Start using automake. - * configure.in: Add AM_INIT_AUTOMAKE invocation. - (PACKAGE, VERSION): Remove. - Use AC_CANONICAL_HOST instead of CL_CANONICAL_HOST. - Use AC_PROG_LN_S instead of CL_PROG_LN_S. - Use AC_PROG_RANLIB instead of CL_PROG_RANLIB. - Reorder so that AC_CANONICAL_HOST comes early but still after - AC_PROG_CC. - * m4/ranlib.m4: Remove file. - * m4/libtool.m4: Undo AC_ -> CL_ substitutions. - * Makefile.devel (CLISP_DIR): Comment out. - (AUTOCONF_FILES): Change to aclocal.m4. - (aclocal.m4): Renamed from autoconf/aclocal.m4. Update dependencies. - (configure.in): Drop --include option. - -2003-03-17 Bruno Haible - - Improved MSVC support. - * Makefile.msvc (prefix): Use less Unixy value. - (local_prefix): Remove variable. - (libdir, includedir, mandir): Use backslashes. - (bindir, datadir, localedir, docdir): New variables. - (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): New variables. - (all): Recurse into po/ and man/. - (install, installdirs, uninstall): Rewritten. - (check, mostlyclean, clean, distclean, maintainer-clean): Recurse - into po/ and man/. - * lib/Makefile.msvc (prefix): Use less Unixy value. - (local_prefix): Remove variable. - (libdir): Use backslashes. - (bindir): New variable. - (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): Set to real values. - (RESOURCES): Enable iconv.res. - (install, installdirs, uninstall): New rules. - (clean): Remove config.h. - (distclean): Don't remove config.h here. - * src/Makefile.msvc (prefix, exec_prefix, bindir): New variables. - (INSTALL, INSTALL_PROGRAM, INSTALL_DATA): New variables. - (install, installdirs, uninstall): New rules. - * man/Makefile.msvc: New file. - * tests/Makefile.msvc (install, installdirs, uninstall): New rules. - * Makefile.devel (all): Depend on po/Makefile.msvc. - (po/Makefile.msvc): New rule. - * windows/iconv.rc: Update. - * README.woe32: Mention automatic installation command. - - Rename libcharset.h to localcharset.h. - * lib/iconv.c: Include localcharset.h, not libcharset.h. - * Makefile.in (lib/localcharset.h): Renamed from lib/libcharset.h. - (all, install): Update dependencies. - (all): Create lib/localcharset.h, not lib/libcharset.h. - (mostlyclean, clean, distclean, maintainer-clean): Remove - lib/localcharset.h, not lib/libcharset.h. - * djgpp/README.in, djgpp/README: Update. - * djgpp/config.bat: Update. - * djgpp/config.sed: Update. - * djgpp/fnchange.in, djgpp/fnchange.lst: Update. - -2003-01-31 Bruno Haible - - * src/Makefile.in (all): Don't do the chmod if it has already been - done. - -2003-01-31 Bruno Haible - - * lib/loop_unicode.h (unicode_transliterate): Enable recursive - transliteration. Idea from Perry Rapp. - * lib/gentranslit.c (main): Change bound from 0x10000 to 0x110000. - Change element type of translit_data to 'unsigned int'. - * lib/translit.def: Many new transliterations, mostly taken from glibc. - * lib/translit.h: Regenerated. - * tests/Translit1.ISO-8859-1, tests/Translit1.ASCII: New files. - * tests/Makefile.in (check): Add Translit1 check. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - * tests/TranslitFail1.ISO-8859-1: Choose a sentence which the new - improved transliteration cannot do. - -2003-02-14 Bruno Haible - - * Makefile.devel (AUTOCONF): Switch to autoconf-2.57. - (configure): Update rule. - -2003-01-03 Albert Chin - - * autoconf/ltmain.sh: Don't pass -R flags found in a .la's - dependency_libs variable directly down to the linker. - Reported by Tim Mooney . - -2003-01-01 Bruno Haible - - * src/Makefile.in (install): Use libiconv.la in ../lib, not in - $(libdir), so that installing with DESTDIR works. - Reported by Michael Adams . - -2003-01-01 Bruno Haible - - * Makefile.in (mkinstalldirs): New variable. - (install-lib, install, installdirs): Use it instead of mkdir. - * lib/Makefile.in (mkinstalldirs): New variable. - (install-lib, install, installdirs): Use it instead of mkdir. - * man/Makefile.in (mkinstalldirs): New variable. - (install, installdirs): Use it instead of mkdir. - * src/Makefile.in (mkinstalldirs): New variable. - (install, installdirs): Use it instead of mkdir. - -2002-09-27 Bruno Haible - - * autoconf/mkinstalldirs: Upgrade to automake-1.7.2 version. - -2002-11-07 Bruno Haible - - * m4/libtool.m4: Upgrade to libtool-1.4.3. - * autoconf/ltmain.sh: Upgrade to libtool-1.4.3. - -2002-07-14 Bruno Haible - - * m4/libtool.m4 (_LT_AC_LTCONFIG_HACK): Add support for GNU/FreeBSD. - -2002-06-12 Bruno Haible - - * configure.in: Use new AC_* names of libtool macros. Invoke - AC_LIBTOOL_WIN32_DLL. - -2002-12-19 Bruno Haible - - * lib/Makefile.in (libiconv_plug_solaris.so): Change rule if using gcc. - Reported by Henry Nelson . - -2002-11-07 Bruno Haible - - Make "make install" without prior "make" work. - * Makefile.in (lib/libcharset.h): New rule. - (all, install): Depend on it. - Reported by Martin Mokrejš . - -2002-10-28 Bruno Haible - - * man/Makefile.in (install): Change directory back to the working - directory, so that install-sh (which may be a relative pathname) is - found in the right place. - -2002-09-16 Bruno Haible - - * autoconf/ltmain.sh (install): Use "ln -s -f" instead of - "rm -f && ln -s" to make a symlink for a shared library. - Reported by Nelson H. F. Beebe . - -2002-09-02 Bruno Haible - - * src/iconv.c (main): Don't call bindtextdomain if !ENABLE_NLS. - -2002-08-16 Bruno Haible - - * src/iconv.c (main): Perform fflush before testing ferror(stdout). - -2002-05-29 Bruno Haible - - * Version 1.8 released. - -2002-05-26 Bruno Haible - - * lib/c99.h: New file. - * lib/converters.h: Include it. - * lib/encodings.def (C99): New encoding. - * README, man/iconv_open.3: Document C99 encoding. - -2002-05-26 Bruno Haible - - * lib/java.h (java_mbtowc): Accept 12-byte sequences for non-BMP - characters. - (java_wctomb): Produce 12-byte sequences for non-BMP characters. - -2002-05-29 Bruno Haible - - Fix installation of iconv program when linked with a libintl that was - built against an earlier libiconv. - * src/iconv.c: Conditionally disable NLS. - * src/iconv_no_i18n.c: New file. - * src/Makefile.in (libdir): New variable. - (all): Depend on iconv_no_i18n, iconv.@OBJEXT@ but not iconv. Make - directory writable, so iconv executable can be created during "make - install". - (iconv): Remove rule. - (iconv_no_i18n, iconv_no_i18n.@OBJEXT@): New rules. - (install): Link iconv now, after the new libiconv.so is installed. - (clean): Also remove iconv_no_i18n. - * tests/Makefile.in: (check, check-extra-yes): Depend on iconv_no_i18n, - not iconv. - * tests/check-stateful: Use iconv_no_i18n, not iconv. - * tests/check-translit: LIkewise. - * tests/check-translitfailure: Likewise. - -2002-05-29 Bruno Haible - - * configure.in: Call AC_PROG_INSTALL instead of CL_PROG_INSTALL. - * m4/install.m4: Remove file. - * Makefile.devel (autoconf/aclocal.m4): Don't depend on m4/install.m4. - -2002-05-24 Bruno Haible - - * lib/jisx0213.h: Use 'inline' only conditionally. - -2002-05-18 Bruno Haible - - * configure.in (AC_INIT), include/iconv.h.in (_LIBICONV_VERSION), - README, windows/iconv.rc, djgpp/README, djgpp/fnchange.lst: - Bump version number. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 3:0:1. - -2002-02-06 Bruno Haible - - * autoconf/ltmain.sh: Upgrade from libtool-1.4 to libtool-1.4.2. - -2002-02-02 Bruno Haible - - * autoconf/ltmain.sh: Add DESTDIR support on ELF systems. - -2001-11-03 Bruno Haible - - * autoconf/ltmain.sh: chmod 777 the .libs directory, so that - "make install" succeeds. - -2002-05-18 Bruno Haible - - * src/Makefile.in (iconv): Remove the -liconv dependency of -lintl - from the command line. Needed to ensure that the new libiconv version - is used on FreeBSD. - -2002-05-14 Bruno Haible - - Implement and document CP853, TDS565, RISCOS-LATIN1. - * tools/Makefile (ALL): Add cp853.h, tds565.h, riscos1.h. - (cp853.h, tds565.h, riscos1.h): New rules. - * lib/cp853.h: New file. - * lib/tds565.h: New file. - * lib/riscos1.h: New file. - * lib/converters.h: Include them. - * lib/encodings_dos.def (CP853): New encoding. - * lib/encodings_extra.def (TDS565, RISCOS-LATIN1): New encodings. - * README, man/iconv_open.3: Add CP853, TDS565, RISCOS-LATIN1. - * tests/Makefile.in (check-extra-yes): Check CP853, TDS565, - RISCOS-LATIN1. - * tests/Makefile.msvc (check): Check CP853. - * tests/CP853.TXT: New file. - * tests/TDS565.TXT: New file. - * tests/RISCOS-LATIN1.TXT: New file. - - * lib/cp860.h (cp860_wctomb): Optimize. - -2002-05-12 Bruno Haible - - * tools/Makefile (ksc5601.h): Add two extra characters. - * lib/ksc5601.h: Regenerated. - * tests/EUC-KR.TXT: Add EURO SIGN and REGISTERED SIGN. - * tests/CP949.TXT: Likewise. - * tests/JOHAB.TXT: Likewise. - -2002-05-12 Bruno Haible - - * README: Mention extra encodings. - * man/iconv_open.3: Likewise. Improve formatting in text and html - output formats. - -2002-05-12 Bruno Haible - - * tests/SHIFT_JIS.TXT: Renamed from tests/SHIFT-JIS.TXT. - -2002-05-12 Bruno Haible - - * Makefile.devel (AUTOCONF): New variable. - (AUTOCONF_FILES): Remove autoconf/autoconf.m4f. - (configure): Use the AUTOCONF variable. - * autoconf/autoconf: Remove file. - * autoconf/autoconf.m4: Remove file. - * autoconf/autoconf.m4f: Remove file. - -2002-05-12 Bruno Haible - - * tools/JISX0213.TXT: New file. - * tools/cjk_tab_to_h.c (do_jisx0213): New function. - (main): Accept "jisx0213". - * tools/Makefile (all): Add jisx0213.h. - (jisx0213.h): New rule. - * lib/jisx0213.h: New file, generated by cjk_tab_to_h. - * lib/euc_jisx0213.h: New file. - * lib/shift_jisx0213.h: New file. - * lib/iso2022_jp3.h: New file. - * lib/converters.h: Include them. - * lib/encodings_extra.def (EUC-JISX0213, SHIFT_JISX0213, - ISO-2022-JP-3): New encodings. - * tests/EUC-JISX0213.TXT: New file. - * tests/SHIFT_JISX0213.TXT: New file. - * tests/ISO-2022-JP-3-snippet: New file. - * tests/ISO-2022-JP-3-snippet.UTF-8: New file. - * tests/Makefile.in (check-extra): Also check EUC-JISX0213, - SHIFT_JISX0213, ISO-2022-JP-3. - * tests/check-stateless: Add support for encodings which contain - precomposed Unicode characters, by eliminating precomposed characters - before the comparison. - * tests/table-from.c (main): Fix usage message. - * tests/table-to.c (main): Make it work for encodings for which the - "to" direction is stateful. - -2002-05-09 Bruno Haible - - New configure option --enable-extra-encodings. - * lib/encodings_extra.def: New file. - * lib/converters.h: Handle USE_EXTRA. - * lib/genaliases2.c (main): Handle USE_EXTRA. - * lib/genflags.c: Define USE_EXTRA. - (main): Include encodings_extra.def. - * lib/iconv.c: Handle ENABLE_EXTRA, conditionally set USE_EXTRA. - Handle USE_EXTRA. - * lib/config.h.in (ENABLE_EXTRA): New macro. - * configure.in: Accept option --enable-extra-encodings. - * Makefile.devel (all): Depend on lib/aliases_extra.h. - (lib/aliases_extra.h): New rule. - (lib/flags.h): Depend on lib/encodings_extra.def. - * tests/Makefile.in (check-extra, check-extra-no, check-extra-yes): - New rules. - (check): Invoke check-extra. - * tests/Makefile.msvc (check): Also check the DOS encodings. - - Support for testing the AIX encodings. - * tests/CP856.TXT: New file. - * tests/CP922.TXT: New file. - * tests/CP1046.TXT: New file. - * tests/CP1124.TXT: New file. - * tests/CP1129.TXT: New file. - * tests/CP1161.TXT, tests/CP1161.IRREVERSIBLE.TXT: New files. - * tests/CP1162.TXT: New file. - * tests/CP1163.TXT, tests/CP1163.IRREVERSIBLE.TXT: New files. - - Support for testing the OSF/1 encodings. - * tests/DEC-KANJI.TXT: New file. - * tests/DEC-HANYU.TXT, tests/DEC-HANYU.IRREVERSIBLE.TXT: New files. - - Support for testing the DOS encodings. - * tests/CP437.TXT: New file. - * tests/CP737.TXT: New file. - * tests/CP775.TXT: New file. - * tests/CP852.TXT: New file. - * tests/CP855.TXT: New file. - * tests/CP857.TXT: New file. - * tests/CP858.TXT: New file. - * tests/CP860.TXT: New file. - * tests/CP861.TXT: New file. - * tests/CP863.TXT: New file. - * tests/CP864.TXT: New file. - * tests/CP865.TXT: New file. - * tests/CP869.TXT: New file. - * tests/CP1125.TXT: New file. - -2002-05-09 Bruno Haible - - Implement more ASCII compatible DOS encodings. - * tools/Makefile (ALL): Add cp737.h, cp858.h, cp860.h, cp863.h. - (cp737.h, cp858.h, cp860.h, cp863.h): New rules. - * lib/cp737.h: New file. - * lib/cp858.h: New file. - * lib/cp860.h: New file. - * lib/cp863.h: New file. - * lib/converters.h: Include them. - * lib/encodings_dos.def (CP737, CP858, CP860, CP863): New encodings. - -2002-05-09 Bruno Haible - - Implement new ASCII compatible encodings from IBM. - * tools/Makefile (ALL): Add cp1161.h, cp1162.h, cp1163.h. - (cp1161.h, cp1162.h, cp1163.h): New rules. - * lib/cp1161.h: New file. - * lib/cp1162.h: New file. - * lib/cp1163.h: New file. - * lib/converters.h: Include them. - * lib/encodings_aix.def (CP1161, CP1162, CP1163): New encodings. - -2002-05-09 Bruno Haible - - Implement and document KOI8-T. - * tools/Makefile (ALL): Add koi8_t.h. - (koi8_t.h): New rule. - * lib/koi8_t.h: New file. - * lib/converters.h: Include it. - * lib/encodings.def (KOI8-T): New encoding. - * README, man/iconv_open.3: Add KOI8-T. - * tests/Makefile.in (tests): Check KOI8-T. - * tests/Makefile.os2 (tests): Likewise. - * tests/Makefile.msvc (tests): Likewise. - * tests/KOI8-T.TXT: New file. - -2002-05-09 Bruno Haible - - * tools/8bit_tab_to_h.c (main): Update copyright year. - * tools/cjk_variants.c (main): Likewise. - -2002-05-08 Bruno Haible - - * README.woe32: Renamed from README.win32. - -2002-05-08 Bruno Haible - - * lib/iconv.c: Enable DOS encodings also when compiling for Woe32, - because the Woe32 consoles use them. - -2002-05-04 Bruno Haible - - * lib/loop_unicode.h (unicode_loop_convert): When quitting the loop - without writing an output character, restore cd->istate to its value - before the xxx_mbtowc call. Otherwise we lose some characters during - CP1255/CP1258/TCVN to Unicode conversion. - (unicode_loop_reset): Likewise for the xxx_flushwc call. - * tests/CP1255-snippet, tests/CP1255-snippet.UTF-8: Make the test - files large enough to test against the bug. - * tests/CP1258-snippet, tests/CP1258-snippet.UTF-8: Likewise. - * tests/TCVN-snippet, tests/TCVN-snippet.UTF-8: Likewise. - -2002-04-28 Bruno Haible - - * tools/Makefile (armscii_8.h): Use table from glibc-2.2.90. - * tests/ARMSCII-8.TXT: Update to glibc-2.2.90 version. - * tests/ARMSCII-8.IRREVERSIBLE.TXT: Remove 0x0027. - * lib/armscii_8.h: Regenerated. - -2002-04-28 Bruno Haible - - * src/iconv.c: Include gettext.h. - (_): New macro. - (usage, print_version, convert, main): Internationalize. - (main): Call setlocale, bindtextdomain, textdomain. - * src/gettext.h: New file, from GNU gettext 0.11.2. - * src/config.h.in: New file, needed for ENABLE_NLS. - * src/Makefile.in (datadir, localedir): New variables. - (iconv): Link with @LTLIBINTL@. - (iconv.@OBJEXT@): Define LOCALEDIR. - (distclean): Remove config.h. - * po: New directory. - * Makefile.in (all, install, installdirs, uninstall, check, - mostlyclean, clean, distclean, maintainer-clean): Recurse into the po - directory. - * autoconf/mkinstalldirs: New file, from automake-1.5. - * ABOUT-NLS: New file, from GNU gettext 0.11.2. - * m4/codeset.m4: New file, from GNU gettext 0.11.2. - * m4/gettext.m4: New file, from GNU gettext 0.11.2. - * m4/glibc21.m4: New file, from GNU gettext 0.11.2. - * m4/isc-posix.m4: New file, from GNU gettext 0.11.2. - * m4/lcmessage.m4: New file, from GNU gettext 0.11.2. - * m4/progtest.m4: New file, from GNU gettext 0.11.2. - * configure.in: Require autoconf-2.52, needed for multiple config.h.in - files. Use new form of AC_INIT. Invoke AM_GNU_GETTEXT. - (PACKAGE, VERSION): Define, needed for po/Makefile.in.in. - * lib/config.h.in (HAVE_LOCALE_H, HAVE_SETLOCALE): Remove. - -2002-04-28 gettextize - - * configure.in (AC_OUTPUT): Add po/Makefile.in. - -2002-04-28 Bruno Haible - - * m4/eilseq.m4: Renamed from autoconf/eilseq.m4. - * m4/mbstate_t.m4: Renamed from autoconf/mbstate_t.m4. - * m4/general.m4: New file, from GNU clisp. - * m4/proto.m4: New file, from GNU clisp. - * m4/ranlib.m4: New file, from GNU clisp. - * m4/install.m4: New file, from GNU clisp. - * m4/cp.m4: New file, from GNU clisp. - * m4/ln.m4: New file, from GNU clisp. - * m4/endian.m4: New file, from GNU clisp. - * m4/iconv.m4: New file, from GNU gettext 0.11.2. - * m4/lib-ld.m4: New file, from GNU gettext 0.11.2. - * m4/lib-link.m4: New file, from GNU gettext 0.11.2. - * m4/lib-prefix.m4: New file, from GNU gettext 0.11.2. - * autoconf/config.rpath: New file, from GNU gettext 0.11.2. - * m4/libtool.m4: New file, based on libtool-1.4.2. - * Makefile.devel (ACLOCAL): Remove variable. - (ACSELECT): Remove variable. - (OTHERMACROS): Remove variable. - (m4/*.m4): New rules. - (autoconf/aclocal.m4): Construct using aclocal instead of acselect. - * configure.in: Invoke AM_ICONV instead of CL_ICONV. - -2002-04-06 Bruno Haible - - Upgrade to Unicode 3.2. - * tools/cjk_tab_to_h.c (output_title): Bump copyright year. - (compact_large_charset2uni): Add an argument. Determine optimal shift. - Copy modified enc->charset2uni table. - (output_charset2uni): Deal with shift other than 8. Copy encoding, so - as to not disturb subsequent output_uni2charset[_sparse] call. - * lib/hkscs.h: Regenerated. - * tests/BIG5-HKSCS.TXT: Update. - * tests/BIG5-HKSCS.IRREVERSIBLE.TXT: Update. - -2002-04-06 Bruno Haible - - Upgrade to Unicode 3.2. - * tools/Makefile (cns11643_1.h, cns11643_2.h, cns11643_3.h, - cns11643_4a.h, cns11643_4b.h, cns11643_5.h, cns11643_6.h, - cns11643_7.h, cns11643_15.h, cns11643_inv.h): Use - CNS11643-Unicode32.TXT instead of CNS11643-Unicode31.TXT. - * lib/cns11643_3.h: Regenerated. - * lib/cns11643_4a.h: Regenerated. - * lib/cns11643_4b.h: Regenerated. - * lib/cns11643_5.h: Regenerated. - * lib/cns11643_6.h: Regenerated. - * lib/cns11643_7.h: Regenerated. - * lib/cns11643_15.h: Regenerated. - * lib/cns11643_inv.h: Regenerated. - * tests/EUC-TW.TXT: Update. - -2002-01-17 Bruno Haible - - * lib/tcvn.h (tcvn_2uni_1): Make it smaller. - (tcvn_mbtowc): Small optimization. - -2002-01-13 Bruno Haible - - New options -l, -c, -s. - * src/iconv.c (discard_unconvertible, silent): New variables. - (usage): Document options -l, -c, -s. - (print_one): New function. - (convert): If silent is true, don't print error messages about the - conversion to stderr. If discard_unconvertible is true, set the - iconv descriptor to DISCARD_ILSEQ the first time, but make sure to - return the same return code as when discard_unconvertible is false. - (main): Accept options -l, -c, -s. Implement option -l. - * man/iconv.1: Document options -l, -c, -s. - -2002-01-13 Bruno Haible - - Support for "iconv -c". - * include/iconv.h.in (ICONV_GET_DISCARD_ILSEQ): New macro. - (ICONV_SET_DISCARD_ILSEQ): Likewise. - * lib/converters.h (struct conv_struct): New field discard_ilseq. - * lib/iconv.c (iconv_open): Set discard_ilseq to true if tocode - has an "//IGNORE" suffix, and to false otherwise. - (iconvctl): Implement ICONV_GET_DISCARD_ILSEQ, ICONV_SET_DISCARD_ILSEQ. - * lib/loop_unicode.h (unicode_loop_convert): If discard_ilseq is - true, skip one input character instead of returning EILSEQ. - (unicode_loop_reset): Likewise. - * lib/loop_wchar.h (wchar_from_loop_convert): Likewise. - (wchar_to_loop_convert): Likewise. - -2002-01-13 Bruno Haible - - Support for "iconv -l". - * include/iconv.h.in (iconvlist): New declaration. - * Makefile.devel (lib/aliases.h): Change gperf options. - * lib/iconv.c (compare_by_index, compare_by_name, iconvlist): New - functions. - -2002-01-06 Bruno Haible - - * lib/loop_unicode.h (unicode_transliterate): If the transliteration - fails due to limited output encoding, return RET_ILUNI, not - RET_TOOSMALL. Reported by Nelson H. F. Beebe . - * tests/check-translitfailure: New file. - * tests/TranslitFail1.ISO-8859-1: New file. - * tests/Makefile.in (check): Call check-translitfailure. - -2001-12-15 Bruno Haible - - * lib/euc_jp.h (euc_jp_wctomb): Add irreversible mappings for - Shift_JIS characters 0x5C and 0x7E. - * tests/EUC-JP.IRREVERSIBLE.TXT: New file. - -2001-12-05 Bruno Haible - - * lib/iconv.c (iconv_open): Recognize the empty encoding name. Avoid - endless loop if locale_charset() returns the empty string. - * README, man/iconv_open.3: Add the empty encoding name. - -2001-11-10 Bruno Haible - - * lib/Makefile.in (libiconv_plug_linux.so): Allow building it with a - non-gcc compiler. - -2001-10-23 Bruno Haible - - * tools/Makefile (cp1125.h): New target. - (ALL): Add it. - * lib/cp1125.h: New file. - * lib/converters.h: Include it. - * lib/encodings_dos.def (CP1125): New encoding. - -2001-09-08 Bruno Haible - - * autoconf/eilseq.m4: New file. - * Makefile.devel (OTHERMACROS): Add it. - * configure.in: Call AC_EILSEQ. - * include/iconv.h.in (EILSEQ): Define to the autoconf determined value. - -2001-08-25 Bruno Haible - - Upgrade to autoconf-2.52. - * autoconf/autoconf: Upgrade to autoconf-2.52. - * autoconf/acgeneral.m4: Remove file. - * autoconf/acspecific.m4: Remove file. - * autoconf/autoconf.m4f: New file, from autoconf-2.52. - * autoconf/aclocal.m4: Require autoconf-2.52. - (CL_CANONICAL_HOST): Call AC_CANONICAL_HOST. Don't cache the result, - AC_CANONICAL_HOST does it itself. Add $SHELL in front of - $ac_config_guess and $ac_config_sub. - * Makefile.devel (AUTOCONF_FILES): Remove acgeneral.m4, acspecific.m4. - Add autoconf.m4f. - (configure): Use autoconf options -A, -l instead of -m. - * configure.in: Use AC_CONFIG_SUBDIRS, not AC_OUTPUT_SUBDIRS. - -2001-08-05 Bruno Haible - - * autoconf/acgeneral.m4 (AC_MSG_RESULTPROTO): Remove macro. - (AC_LANG_EXTERN): Move to aclocal.m4. - * autoconf/aclocal.m4 (AC_LANG_EXTERN): Moved here from acgeneral.m4. - (CL_PROTO): Use AC_MSG_RESULT directly, instead of AC_MSG_RESULTPROTO. - (CL_SILENT): No need to pushdef AC_MSG_RESULTPROTO. - -2001-08-05 Bruno Haible - - Make it possible to build libiconv with CC=gcc CFLAGS="-x c++". - * lib/loop_wchar.h (wchar_to_loop_convert): Rename local variable - 'try' to 'incount'. - * lib/Makefile.in (libiconv_plug_linux.so): Add "-x none" option - between sources and libs. - (libiconv_plug_solaris.so) [GCC]: Likewise. - (libiconv_plug_osf.so) [GCC]: Likewise. - * src/Makefile.in (iconv.@OBJEXT@): New rule. - (iconv): Depend on it. - (clean): Erase *.@OBJEXT@, not *.o. - * tests/Makefile.in (table-from.@OBJEXT@): New rule. - (table-from): Depend on it. - (table-to.@OBJEXT@): New rule. - (table-to): Depend on it. - (clean): Erase *.@OBJEXT@, not *.o. - -2001-07-28 Bruno Haible - - * tools/Makefile (iso8859_16.h): Generate from the unicode.org table. - * lib/iso8859_16.h: Regenerated. - * tests/ISO-8859-16.TXT: Swap the values of 0xA5 and 0xAB. - -2001-07-17 Bruno Haible - - * configure.in (VERSION): Define. Needed by djgpp/Makefile.maint. - -2001-07-03 Bruno Haible - - * configure.in: Also check for mbsinit. - * lib/loop_wchar.h (mbsinit): Define to 1 if not defined. - Needed for SCO 3.2v5.0.2. - -2001-06-27 Bruno Haible - - * Version 1.7 released. - -2001-06-27 Bruno Haible - - * INSTALL.generic (Particular Systems): Generalize section about - /usr/local to "most systems". - - * lib/Makefile.in (all): Build @PLUGLIB@ before libiconv.la, because - Solaris cc destroys iconv.o and iconv.lo while building - libiconv_plug_solaris.so. - (clean): Remove so_locations, left there by the OSF/1 linker. - - * lib/cp1255.h (cp1255_decomp): Use 'signed int' instead of 'int'. - - * lib/vietcomb.h (viet_decomp): Use 'unsigned int' instead of - 'unsigned short'. - - * tests/table-from.c: Include string.h. - * tests/table-to.c: Likewise. - -2001-06-26 Bruno Haible - - * tools/Makefile (jisx0208.h): Replace U+005C with U+FF3C. - (jisx0212.h): Replace U+007E with U+FF5E. - * lib/jisx0208.h: Regenerated. - * lib/jisx0212.h: Regenerated. - * tests/EUC-JP.TXT: Map 0xA1C0 to U+FF3C. Map 0x8FA2B7 to U+FF5E. - * tests/EUC-JP.IRREVERSIBLE.TXT: Remove file. - * tests/SHIFT-JIS.TXT: Map 0x815F to U+FF3C. - * tests/CP932.TXT: Likewise. - * tests/CP932.IRREVERSIBLE.TXT: 0x815F mapping is now reversible. - -2001-06-25 Bruno Haible - - * src/Makefile.in (iconv): Mention $(INCLUDES) before $(CFLAGS) and - $(CPPFLAGS). - * src/Makefile.msvc (iconv.exe): Likewise. - * src/Makefile.os2 (iconv.exe): Likewise. - * lib/Makefile.in (libiconv_plug_linux.so): Likewise. - (libiconv_plug_solaris.so): Likewise. - (libiconv_plug_osf.so): Likewise. - (iconv.lo): Likewise. - * lib/Makefile.msvc (iconv.obj): Likewise. - * lib/Makefile.os2 (iconv.obj): Likewise. - * tests/Makefile.in (table-from, table-to): Likewise. - * tests/Makefile.msvc (table-from.exe, table-to.exe): Likewise. - * tests/Makefile.os2 (table-from.exe, table-to.exe): Likewise. - (genutf8.exe): Don't use $(INCLUDES). - -2001-06-25 Bruno Haible - - * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc: - Bump version number. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:4:0. - -2001-06-25 Bruno Haible - - * Makefile.devel (OTHERMACROS): Use libtool.m4 in libcharset subdir. - -2001-06-25 Bruno Haible - - * lib/encodings.def: Make SHIFT_JIS the primary name of SJIS. - -2001-06-08 Bruno Haible - - * autoconf/ltmain.sh: Upgrade to libtool-1.4. - * autoconf/ltconfig: Remove file. - -2001-06-08 Bruno Haible - - * autoconf/config.guess: Update to GNU version 2001-05-11. - * autoconf/config.sub: Likewise. - -2001-06-03 Bruno Haible - - * lib/loop_unicode.h (unicode_loop_convert): Ignore Unicode 3.1 tag - characters if they cannot be converted. - (unicode_loop_reset): Likewise. - * lib/iso2022_jp2.h (STATE_TAG_NONE, STATE_TAG_LANGUAGE, - STATE_TAG_LANGUAGE_j, STATE_TAG_LANGUAGE_ja, STATE_TAG_LANGUAGE_k, - STATE_TAG_LANGUAGE_ko, STATE_TAG_LANGUAGE_z, STATE_TAG_LANGUAGE_zh): - New macros. - (SPLIT_STATE, COMBINE_STATE): Different differently for wctomb - direction. - (iso2022_jp2_wctomb): Keep track of Unicode 3.1 language tag. - If "ja", prefer conversion to Japanese character sets. If "zh", - prefer conversion to GB2312. If "ko", prefer conversion to KSC5601. - - * lib/converters.h (RET_ILUNI): Change value from 0 to -1. - (RET_TOOSMALL): Change value from -1 to -2. - * lib/loop_unicode.h (unicode_transliterate): Allow xxx_wctomb to - return 0 written bytes. - -2001-06-06 Bruno Haible - - * lib/encodings.def: Align with IANA character-set registry. - (US-ASCII): Add alias "ANSI_X3.4-1986". - (ISO-8859-14): Add alias "ISO-CELTIC". - (JIS_X0208): Add alias "JIS_C6226-1983". - (BIG5HKSCS): Add alias "BIG5-HKSCS". - * README, man/iconv_open.3: Rename BIG5HKSCS to BIG5-HKSCS. - * tests/Makefile.in (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - * tests/Makefile.msvc (check): Likewise. - * tests/BIG5-HKSCS.TXT: Renamed from BIG5HKSCS.TXT. - * tests/BIG5-HKSCS.IRREVERSIBLE.TXT: Renamed from - BIG5HKSCS.IRREVERSIBLE.TXT. - -2001-06-02 Bruno Haible - - * tools/cjk_tab_to_h.c (Encoding): Add fffd field. - (is_charset2uni_large, compact_large_charset2uni): New functions. - (find_charset2uni_pages): Use enc->fffd instead of 0xfffd. - (output_charset2uni): If mapping to more than the Unicode BMP, - use an extra indirection to keep each value in 16 bits. - (invert): Bump limit from U+10000 to U+30000. - (output_uni2charset_dense): Likewise. - (output_uni2charset_sparse): Likewise. If mapping to more than one - CJK plane, use three bytes per value instead of two bytes. - (byte_row_cns11643): Allow more than 3 CJK planes. - (do_cns11643_only_uni2charset): Increase number of rows, to include - plane 15. Remove plane bits hack. - (main): Accept names cns11643_4a,4b,5,6,7,15 as well. - * tools/Makefile (ALL): Add cns11643_4a.h, cns11643_4b.h, cns11643_5.h, - cns11643_6.h, cns11643_7.h, cns11643_15.h. - (cns11643_1.h, cns11643_2.h, cns11643_3.h): Use new Unicode 3.1 - derived table. - (cns11643_4a.h, cns11643_4b.h, cns11643_5.h, cns11643_6.h, - cns11643_7.h, cns11643_15.h): New rules. - (cns11643_inv.h): Change title. - * lib/cns11643_1.h: Regenerated from Unicode 3.1 derived table. - * lib/cns11643_3.h: Likewise. - * lib/cns11643_4a.h: New file. - * lib/cns11643_4b.h: New file. - * lib/cns11643_4.h: New file. - * lib/cns11643_5.h: New file. - * lib/cns11643_6.h: New file. - * lib/cns11643_7.h: New file. - * lib/cns11643_15.h: New file. - * lib/cns11643_inv.h: Regenerated from Unicode 3.1 derived table. - (cns11643_inv_wctomb): Return 3 bytes now. - * lib/cns11643.h: Include cns11643_4.h, cns11643_5.h, cns11643_6.h, - cns11643_7.h, cns11643_15.h. - (cns11643_wctomb): Now a simple alias to cns11643_inv_wctomb. Return - plane number starting at 1, not 0. - * lib/dec_hanyu.h (dec_hanyu_wctomb): Update for cns11643_wctomb - change. - * lib/euc_tw.h (euc_tw_mbtowc): Accept CNS11643 planes 4,5,6,7,15 as - well. - (euc_tw_wctomb): Update for cns11643_wctomb change. - * lib/iso2022_cn.h (iso2022_cn_wctomb): Likewise. - * lib/iso2022_cnext.h (iso2022_cn_ext_mbtowc): Accept CNS11643 planes - 4,5,6,7 as well. - (iso2022_cn_ext_wctomb): Update for cns11643_wctomb change. - Try CNS11643 planes 4,5,6,7 as well. - * tests/EUC-TW.TXT: Many additions, mostly in planes 3,4,5,6,7,15. - * tests/EUC-TW.IRREVERSIBLE.TXT: Reflect additions to CNS11643 plane 1. - Add U+5344. - -2001-06-01 Bruno Haible - - * tests/table-from.c (bmp_only): New variable. - (ucs4_decode): If bmp_only, don't return characters outside Unicode - plane 0. - (main): When testing UTF-8 or GB18030, set bmp_only to 1. Don't print - a conversion line if ucs4_decode returns NULL. - * tests/table-to.c (main): When testing encodings other than UTF-8 and - GB18030, loop upto U+30000 instead of U+10000. - -2001-05-24 Bruno Haible - - * lib/converters.h (mbtowc_funcs): Add flushwc member function. - * lib/flushwc.h: New file. - * lib/cp1255.h: Include flushwc.h. - (cp1255_comp_table_data, cp1255_comp_table): New arrays. - (cp1255_mbtowc): Compose base and combining characters. - (cp1255_flushwc): New macro. - * lib/vietcomb.h (viet_comp_table_data, viet_comp_table): New arrays. - * lib/cp1258.h: Include flushwc.h. - (cp1258_mbtowc): Compose base and combining characters. - (cp1258_flushwc): New macro. - * lib/tcvn.h: Include flushwc.h. - (tcvn_mbtowc): Compose base and combining characters. - (tcvn_flushwc): New macro. - * lib/loop_unicode.h: (unicode_transliterate): New function, extracted - from unicode_loop_convert. - (unicode_loop_convert): Use unicode_transliterate. - (unicode_loop_reset): Call xxx_flushwc and output the resulting - character. - * lib/encodings.def: Add xxx_flushwc member. - * lib/encodings_aix.def: Likewise. - * lib/encodings_dos.def: Likewise. - * lib/encodings_local.def: Likewise. - * lib/encodings_osf1.def: Likewise. - * lib/genaliases.c: Add an argument to the DEFENCODING macro. - * lib/genaliases2.c: Likewise. - * lib/genflags.c: Likewise. - * lib/iconv.c: Likewise. - * tests/table-from.c (try): Reset the iconv descriptor before the main - call, and flush it afterwards. - (ucs4_decode): New function. - (main): Allow up to 3 Unicode characters output. Call ucs4_decode. - * tests/CP1255-snippet: New file. - * tests/CP1255-snippet.UTF-8: New file. - * tests/CP1258-snippet: New file. - * tests/CP1258-snippet.UTF-8: New file. - * tests/TCVN-snippet: New file. - * tests/TCVN-snippet.UTF-8: New file. - * tests/Makefile.in (check): Check combining behaviour of CP1255, - CP1258, TCVN. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - -2001-05-22 Bruno Haible - - * lib/converters.h (RET_ILUNI): New macro. - (RET_ILSEQ): Change value to -1. - (RET_TOOFEW): Change value. - * lib/loop_unicode.h (unicode_loop_convert): Write RET_ILUNI instead - of 0. Update handling of xxx_mbtowc return value. - * lib/genflags.c (emit_encoding): Likewise. - * lib/ascii.h (ascii_wctomb): Use RET_ILUNI instead of RET_ILSEQ. - * lib/armscii_8.h (armscii_8_wctomb): Likewise. - * lib/big5.h (big5_wctomb): Likewise. - * lib/big5hkscs.h (big5hkscs_wctomb): Likewise. - * lib/ces_big5.h (ces_big5_wctomb): Likewise. - * lib/ces_gbk.h (ces_gbk_wctomb): Likewise. - * lib/cns11643.h (cns11643_wctomb): Likewise. - * lib/cns11643_inv.h (cns11643_inv_wctomb): Likewise. - * lib/cp437.h (cp437_wctomb): Likewise. - * lib/cp775.h (cp775_wctomb): Likewise. - * lib/cp850.h (cp850_wctomb): Likewise. - * lib/cp852.h (cp852_wctomb): Likewise. - * lib/cp855.h (cp855_wctomb): Likewise. - * lib/cp856.h (cp856_wctomb): Likewise. - * lib/cp857.h (cp857_wctomb): Likewise. - * lib/cp861.h (cp861_wctomb): Likewise. - * lib/cp862.h (cp862_wctomb): Likewise. - * lib/cp864.h (cp864_wctomb): Likewise. - * lib/cp865.h (cp865_wctomb): Likewise. - * lib/cp866.h (cp866_wctomb): Likewise. - * lib/cp869.h (cp869_wctomb): Likewise. - * lib/cp874.h (cp874_wctomb): Likewise. - * lib/cp922.h (cp922_wctomb): Likewise. - * lib/cp932ext.h (cp932ext_wctomb): Likewise. - * lib/cp932.h (cp932_wctomb): Likewise. - * lib/cp936ext.h (cp936ext_wctomb): Likewise. - * lib/cp949.h (cp949_wctomb): Likewise. - * lib/cp950ext.h (cp950ext_wctomb): Likewise. - * lib/cp950.h (cp950_wctomb): Likewise. - * lib/cp1046.h (cp1046_wctomb): Likewise. - * lib/cp1124.h (cp1124_wctomb): Likewise. - * lib/cp1129.h (cp1129_wctomb): Likewise. - * lib/cp1133.h (cp1133_wctomb): Likewise. - * lib/cp1250.h (cp1250_wctomb): Likewise. - * lib/cp1251.h (cp1251_wctomb): Likewise. - * lib/cp1252.h (cp1252_wctomb): Likewise. - * lib/cp1253.h (cp1253_wctomb): Likewise. - * lib/cp1254.h (cp1254_wctomb): Likewise. - * lib/cp1255.h (cp1255_wctomb): Likewise. - * lib/cp1256.h (cp1256_wctomb): Likewise. - * lib/cp1257.h (cp1257_wctomb): Likewise. - * lib/cp1258.h (cp1258_wctomb): Likewise. - * lib/dec_hanyu.h (dec_hanyu_wctomb): Likewise. - * lib/dec_kanji.h (dec_kanji_wctomb): Likewise. - * lib/euc_cn.h (euc_cn_wctomb): Likewise. - * lib/euc_jp.h (euc_jp_wctomb): Likewise. - * lib/euc_kr.h (euc_kr_wctomb): Likewise. - * lib/euc_tw.h (euc_tw_wctomb): Likewise. - * lib/gb12345ext.h (gb12345ext_wctomb): Likewise. - * lib/gb12345.h (gb12345_wctomb): Likewise. - * lib/gb18030ext.h (gb18030ext_wctomb): Likewise. - * lib/gb18030.h (gb18030_wctomb): Likewise. - * lib/gb18030uni.h (gb18030uni_wctomb): Likewise. - * lib/gb2312.h (gb2312_wctomb): Likewise. - * lib/gbkext_inv.h (gbkext_inv_wctomb): Likewise. - * lib/gbk.h (gbk_wctomb): Likewise. - * lib/georgian_academy.h (georgian_academy_wctomb): Likewise. - * lib/georgian_ps.h (georgian_ps_wctomb): Likewise. - * lib/hkscs.h (hkscs_wctomb): Likewise. - * lib/hp_roman8.h (hp_roman8_wctomb): Likewise. - * lib/hz.h (hz_wctomb): Likewise. - * lib/iso2022_cnext.h (iso2022_cn_ext_wctomb): Likewise. - * lib/iso2022_cn.h (iso2022_cn_wctomb): Likewise. - * lib/iso2022_jp1.h (iso2022_jp1_wctomb): Likewise. - * lib/iso2022_jp2.h (iso2022_jp2_wctomb): Likewise. - * lib/iso2022_jp.h (iso2022_jp_wctomb): Likewise. - * lib/iso2022_kr.h (iso2022_kr_wctomb): Likewise. - * lib/iso646_cn.h (iso646_cn_wctomb): Likewise. - * lib/iso646_jp.h (iso646_jp_wctomb): Likewise. - * lib/iso8859_1.h (iso8859_1_wctomb): Likewise. - * lib/iso8859_2.h (iso8859_2_wctomb): Likewise. - * lib/iso8859_3.h (iso8859_3_wctomb): Likewise. - * lib/iso8859_4.h (iso8859_4_wctomb): Likewise. - * lib/iso8859_5.h (iso8859_5_wctomb): Likewise. - * lib/iso8859_6.h (iso8859_6_wctomb): Likewise. - * lib/iso8859_7.h (iso8859_7_wctomb): Likewise. - * lib/iso8859_8.h (iso8859_8_wctomb): Likewise. - * lib/iso8859_9.h (iso8859_9_wctomb): Likewise. - * lib/iso8859_10.h (iso8859_10_wctomb): Likewise. - * lib/iso8859_13.h (iso8859_13_wctomb): Likewise. - * lib/iso8859_14.h (iso8859_14_wctomb): Likewise. - * lib/iso8859_15.h (iso8859_15_wctomb): Likewise. - * lib/iso8859_16.h (iso8859_16_wctomb): Likewise. - * lib/isoir165ext.h (isoir165ext_wctomb): Likewise. - * lib/isoir165.h (isoir165_wctomb): Likewise. - * lib/jisx0201.h (jisx0201_wctomb): Likewise. - * lib/jisx0208.h (jisx0208_wctomb): Likewise. - * lib/jisx0212.h (jisx0212_wctomb): Likewise. - * lib/johab.h (johab_wctomb): Likewise. - * lib/johab_hangul.h (johab_hangul_wctomb, johab_hangul_decompose): - Likewise. - * lib/koi8_r.h (koi8_r_wctomb): Likewise. - * lib/koi8_ru.h (koi8_ru_wctomb): Likewise. - * lib/koi8_u.h (koi8_u_wctomb): Likewise. - * lib/ksc5601.h (ksc5601_wctomb): Likewise. - * lib/mac_arabic.h (mac_arabic_wctomb): Likewise. - * lib/mac_centraleurope.h (mac_centraleurope_wctomb): Likewise. - * lib/mac_croatian.h (mac_croatian_wctomb): Likewise. - * lib/mac_cyrillic.h (mac_cyrillic_wctomb): Likewise. - * lib/mac_greek.h (mac_greek_wctomb): Likewise. - * lib/mac_hebrew.h (mac_hebrew_wctomb): Likewise. - * lib/mac_iceland.h (mac_iceland_wctomb): Likewise. - * lib/mac_roman.h (mac_roman_wctomb): Likewise. - * lib/mac_romania.h (mac_romania_wctomb): Likewise. - * lib/mac_thai.h (mac_thai_wctomb): Likewise. - * lib/mac_turkish.h (mac_turkish_wctomb): Likewise. - * lib/mac_ukraine.h (mac_ukraine_wctomb): Likewise. - * lib/mulelao.h (mulelao_wctomb): Likewise. - * lib/nextstep.h (nextstep_wctomb): Likewise. - * lib/sjis.h (sjis_wctomb): Likewise. - * lib/tcvn.h (tcvn_wctomb): Likewise. - * lib/tis620.h (tis620_wctomb): Likewise. - * lib/ucs2be.h (ucs2be_wctomb): Likewise. - * lib/ucs2.h (ucs2_wctomb): Likewise. - * lib/ucs2internal.h (ucs2internal_wctomb): Likewise. - * lib/ucs2le.h (ucs2le_wctomb): Likewise. - * lib/ucs2swapped.h (ucs2swapped_wctomb): Likewise. - * lib/ucs4.h (ucs4_wctomb): Likewise. - * lib/uhc_1.h (uhc_1_wctomb): Likewise. - * lib/uhc_2.h (uhc_2_wctomb): Likewise. - * lib/utf16be.h (utf16be_wctomb): Likewise. - * lib/utf16.h (utf16_wctomb): Likewise. - * lib/utf16le.h (utf16le_wctomb): Likewise. - * lib/utf32be.h (utf32be_wctomb): Likewise. - * lib/utf32.h (utf32_wctomb): Likewise. - * lib/utf32le.h (utf32le_wctomb): Likewise. - * lib/utf7.h (utf7_wctomb): Likewise. - * lib/utf8.h (utf8_wctomb): Likewise. - * lib/viscii.h (viscii_wctomb): Likewise. - * tools/8bit_tab_to_h.c (main): Likewise. - * tools/cjk_tab_to_h.c (output_uni2charset_dense, - output_uni2charset_sparse, do_gb18030uni): Likewise. - -2001-05-19 Bruno Haible - - * Makefile.devel (all): Add man/{iconv.1,iconv*.3}.html. - (man/%.html): New rule. - * man/Makefile.in (docdir, htmldir): New variables. - (install, installdirs): Install the HTML formatted man pages in - $(htmldir). - (uninstall): Uninstall them. - -2001-05-20 Bruno Haible - - * lib/cp1255.h (cp1255_decomp_table): New array. - (cp1255_comb_table): New array. - (cp1255_wctomb): Decompose Unicode characters. - * tests/CP1255.IRREVERSIBLE.TXT: New file. - -2001-05-13 Bruno Haible - - * lib/vietcomb.h: New file. - * lib/cp1258.h: Include it. - (cp1258_comb_table): New array. - (cp1258_wctomb): Decompose Unicode characters. - * lib/tcvn.h: Include it. - (tcvn_comb_table): New array. - (tcvn_wctomb): Decompose Unicode characters. - * tests/CP1258.IRREVERSIBLE.TXT: New file. - * tests/TCVN.IRREVERSIBLE.TXT: New file. - -2001-05-06 Bruno Haible - - * lib/Makefile.msvc (config.h): Allow the 'del' command to fail. - (iconv.lib): Likewise. - -2001-05-06 Bruno Haible - - * lib/Makefile.in (CPPFLAGS, LDFLAGS): New variables. - (CPP): Remove variable. - (libiconv.la, libiconv_plug_linux.so, libiconv_plug_solaris.so, - libiconv_plug_osf.so): Use LDFLAGS. - (libiconv_plug_linux.so, libiconv_plug_solaris.so, - libiconv_plug_osf.so, iconv.lo): Use CPPFLAGS. - * lib/Makefile.msvc (CPP): Remove variable. - * src/Makefile.in (CPPFLAGS, LDFLAGS): New variables. - (CPP): Remove variable. - (iconv): Use CPPFLAGS and LDFLAGS. - * src/Makefile.msvc (CPP): Remove variable. - * tests/Makefile.in (CPPFLAGS, LDFLAGS): New variables. - (check, table-from, table-to): Use CPPFLAGS and LDFLAGS. - * tests/Makefile.msvc (CPP): Remove variable. - -2001-05-06 Bruno Haible - - * lib/Makefile.in (libiconv_plug_solaris.so): Change rule if not using - gcc. Reported by Paananen Mikko . - -2001-04-11 Bruno Haible - - Implement and document UTF-32, UTF-32BE, UTF-32LE. - * src/utf32.h, src/utf32be.h, src/utf32le.h: New files. - * src/converters.h: Include them. - * src/encodings.def (UTF-32, UTF-32BE, UTF32LE): New encodings. - * README, man/iconv_open.3: Add UTF-32, UTF-32BE, UTF32LE. - * tests/Makefile.in (check): Check UTF-32, UTF-32BE, UTF32LE. - * tests/Makefile.os2 (check): Likewise. - * tests/Makefile.msvc (check): Likewise. - * tests/UTF-32*snippet*: New files. - - * lib/ucs4.h (ucs4_mbtowc): Fix value of other-endian byte order. - (ucs4_wctomb): Allow any 31-bit codepoint. - -2001-04-11 Bruno Haible - - * tests/GB18030.TXT: Add mappings for all of U+0000..U+FFFF, including - unassigned code points. - * tests/table-from.c (main); When dumping GB18030, don't print code - points larger than U+FFFF. - -2001-03-30 Bruno Haible - - * tools/Makefile (GB18030uni.TXT): Use a table source which includes - the unassigned Unicode code points. - * lib/gb18030uni.h: Update. - (gb18030uni_ranges): Remove bitmap_offset field. - (gb18030uni_bitmap): Remove array. - (gb18030uni_mbtowc): Omit gb18030uni_bitmap access. - (gb18030uni_wctomb): Likewise. - * lib/gb18030.h (gb18030_mbtowc): Handle Unicode characters >= 0x10000. - (gb18030_wctomb): Likewise. - -2001-03-21 Bruno Haible - - * INSTALL.generic (Particular Systems): Add recommendations for AIX 3. - -2001-03-21 Bruno Haible - - * src/iconv.c (print_version): Now called GNU libiconv. - -2001-03-20 Bruno Haible - - * README: This package is now called GNU libiconv. - - * tools/8bit_tab_to_h.c (main): Emit copyright notice to the output - file. - * tools/cjk_tab_to_h.c (output_title): Likewise. - * tools/cjk_variants.c (main): Likewise. - * lib/gentranslit.c (main): Likewise. - -2001-03-19 Bruno Haible - - * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Always define - ac_config_guess and ac_config_sub. Then ignore requests for - AC_CONFIG_AUX_DIR_DEFAULT or AC_CANONICAL_HOST. - -2001-03-10 Bruno Haible - - * INSTALL.generic: New section "Particular Systems". - -2001-03-10 Bruno Haible - - * lib/Makefile.in (libiconv.la): Pass flag -no-undefined. Needed on - platforms like BeOS. - - * lib/loop_wchar.h (mbstate_t): Don't typedef if already #defined in - config.h. - -2001-03-06 Bruno Haible - - * Version 1.6 released. - * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc: - Bump version number. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:3:0. - -2001-03-05 Bruno Haible - - Provide all encodings used by OSF/1 5.1 locales. - * lib/dec_kanji.h: New file. - * lib/dec_hanyu.h: New file. - * lib/converters.h: Include them if USE_OSF1 is defined. - * lib/encodings_osf1.def: New file. - * lib/genflags.c (main): Include it. Define USE_OSF1. - * lib/genaliases2.c (main): Include it conditionally. - * lib/iconv.c: Define USE_OSF1 on OSF/1. - Include encodings_osf1.def and aliases_osf1.h. - * lib/Makefile.in (iconv.lo): Depend on encodings_osf1.def and - aliases_osf1.h. - * Makefile.devel (lib/aliases_osf1.h): New target. - (all): Depend on lib/aliases_osf1.h. - (lib/flags.h): Depend on lib/encodings_osf1.def. - -2001-03-01 Bruno Haible - - * tools/Makefile (cp775.h): New target. - (ALL): Add it. - * lib/cp775.h: New file. - * lib/converters.h: Include it. - * lib/encodings_dos.def (CP775): New encoding. - -2001-02-25 Bruno Haible - - * lib/iconv.c (iconv_open): locale_charset() doesn't return NULL any - more. - -2001-02-24 Bruno Haible - - * src/iconv.c (convert): Use ICONV_CONST. - * tests/table-from.c: Include config.h. - (try): Use ICONV_CONST. - * tests/table-to.c: Include config.h. - (main): Use ICONV_CONST. - * tests/Makefile.in (INCLUDES): Add -I../lib. - * tests/Makefile.os2 (INCLUDES): Likewise. - * tests/Makefile.msvc (INCLUDES): Add -I..\lib. - -2001-02-24 Bruno Haible - - Provide all encodings used by DOS locales. - * tools/Makefile (cp437.h, cp852.h, cp855.h, cp857.h, cp861.h, - cp864.h, cp865.h, cp869.h): New targets. - (ALL): Add them. - * lib/cp437.h: New file. - * lib/cp852.h: New file. - * lib/cp855.h: New file. - * lib/cp857.h: New file. - * lib/cp861.h: New file. - * lib/cp864.h: New file. - * lib/cp865.h: New file. - * lib/cp869.h: New file. - * lib/converters.h: Include them if USE_DOS is defined. - * lib/encodings_dos.def: New file. - * lib/genflags.c (main): Include it. Define USE_DOS. - * lib/genaliases2.c (main): Include it conditionally. - * lib/iconv.c: Define USE_DOS on DJGPP. - Include encodings_dos.def and aliases_dos.h. - * lib/Makefile.in (iconv.lo): Depend on encodings_dos.def and - aliases_dos.h. - * Makefile.devel (lib/aliases_dos.h): New target. - (all): Depend on lib/aliases_dos.h. - (lib/flags.h): Depend on lib/encodings_dos.def. - -2001-02-23 Bruno Haible - - * src/iconv.c [DJGPP]: Include and . - (SET_BINARY) [O_BINARY]: New macro. - (usage): Mention --binary if available. - (convert): Use SET_BINARY instead of setmode. - (main): Likewise. - Reported by Juan Manuel Guerrero . - -2001-02-25 Bruno Haible - - * autoconf/ltconfig: - sed -e 's/reload object files/produce relocatable object files/'. - -2001-02-20 Bruno Haible - - * src/iconv.c (usage, main): Make -f and -t options optional. - * man/iconv.1: Mark them as optional. - -2001-02-20 Bruno Haible - - * tools/Makefile (GB18030ext.TXT, GB18030uni.TXT): Generate from - glibc-2.2.2 table. - * lib/gb18030uni.h, lib/gb18030ext.h: Add mapping 0xA989 -> U+303E, - 0xFE5E -> U+2E97. Shift the entire four-byte range. - * tests/GB18030.TXT: Regenerated. - -2001-02-20 Bruno Haible - - Better support for DOS/Windows platforms. - * autoconf/ltconfig: Upgrade to libtool-1.3.5. - * autoconf/ltmain.sh: Likewise. - * autoconf/aclocal.m4: Likewise. - * autoconf/install-sh: New file. - * configure.in: Call AC_OBJEXT and AC_EXEEXT. Call AC_CONFIG_AUX_DIR. - -2001-02-20 Bruno Haible - - * Makefile.in (libdir, includedir, mandir): Use the autoconf - determined value, in order to respect the configure arguments. - * lib/Makefile.in (libdir): Likewise. - * src/Makefile.in (bindir): Likewise. - * man/Makefile.in (mandir): Likewise. - -2001-02-04 Bruno Haible - - * lib/translit.def: Add all the neutral transliterations from glibc. - * lib/gentranslit.c (main): Allow UTF-8 replacements which are in - UCS-2 but not in ISO-8859-1. Generate a table of 'unsigned short'. - Avoid accessing data[-1]. - * lib/loop_unicode.h (unicode_loop_convert): Change type of pointer - into translit_data. - -2001-01-05 Bruno Haible - - Implement and document CP862. - * tools/Makefile (ALL): Add cp862.h. - (cp862.h): New target. - * lib/cp862.h: New file. - * lib/converters.h: Include it. - * lib/encodings.def (CP862): New encoding. - * README, man/iconv_open.3: Add CP862. - * tests/Makefile.in (check): Check CP862. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - * tests/CP862.TXT: New file. - -2000-12-18 Bruno Haible - - * autoconf/mbstate_t.m4: New file, from textutils-2.0.10. - * Makefile.devel (OTHERMACROS): Add it. - * configure.in: Call AC_MBSTATE_T. - * lib/config.h.in (mbstate_t): New definition. - * lib/loop_wchar.h (mbrtowc): For BeOS, declare and define fallback. - -2000-12-12 Bruno Haible - - * Makefile.in: Use $(MAKE) instead of $(MAKE) -r. Needed with Solaris - "make", which doesn't set MAKE as expected by @SET_MAKE@ if -r is - given. Reported by Toshimitsu Fujiwara. - -2000-12-08 Bruno Haible - - * Makefile.in (exec_prefix): Use configure's --exec-prefix argument. - * lib/Makefile.in (exec_prefix): Likewise. - * src/Makefile.in (exec_prefix): Likewise. - * man/Makefile.in (exec_prefix): Likewise. - -2000-12-02 Bruno Haible - - * Version 1.5 released. - * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc: - Bump version number. - * lib/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:2:0. - -2000-12-02 Bruno Haible - - * Makefile.in (mostlyclean, clean, distclean, maintainer-clean): - Remove files installed in lib by libcharset. - * Makefile.msvc (mostlyclean): Likewise. - - * Makefile.in (check): Depend on target 'all'. - * Makefile.os2 (check): Likewise. - * Makefile.msvc (check): Depend on target 'force' as well. - - * src/iconv.c (usage): Take an exitcode argument. - (print_version): New function. - (main): Recognize --help and --version command line options. - -2000-12-02 Bruno Haible - - * Makefile.msvc: Replace STATIC with its opposite flag, DLL. - * lib/Makefile.msvc: Likewise. - * src/Makefile.msvc: Likewise. - * tests/Makefile.msvc: Likewise. - -2000-12-01 Bruno Haible - - * src/iconv.c: Include . Define fallbacks for setmode, fileno. - (force_binary): New variable. - (convert): If requested, set the input O_BINARY. - (main): Accept --binary option. If requested, set the output O_BINARY. - * tests/check-stateful.bat: Pass --binary to iconv. - * tests/check-stateful.cmd: Likewise. - * tests/check-translit.bat: Likewise. - * tests/check-translit.cmd: Likewise. - -2000-12-01 Bruno Haible - - * include/iconv.h.in (_libiconv_version): New declaration. - * lib/iconv.c (_libiconv_version): New variable. - -2000-11-30 Bruno Haible - - * Makefile.msvc (all): File now named lib/libcharset.h. - (clean, distclean, maintainer-clean): Likewise. - -2000-11-23 Bruno Haible - - * lib/*: Move here all files from src/*. - * src/*: Move all files to lib. - * lib/Makefile.in (distclean): No need to remove config.status, - config.log, config.cache. - * configure.in: Require lib/iconv.c, not src/iconv.c. Create - lib/config.h, not src/config.h. Also create lib/Makefile. - * Makefile.in (all): Install libcharset into lib, not src. Recurse - into lib and src. - (install-lib): Recurse into lib, not src. - (install): Recurse into libcharset, lib and src. - (installdirs, uninstall): Likewise. - (check, mostlyclean, clean, distclean, maintainer-clean): Likewise. - * Makefile.msvc (all): Recurse into lib and src. - (install): Recurse into libcharset, lib and src. - (installdirs, uninstall): Likewise. - (check, mostlyclean, clean, distclean, maintainer-clean): Likewise. - * Makefile.os2 (all): Recurse into lib and src. - (install-lib): Recurse into lib, not src. - (install, uninstall): Recurse into lib and src. - (check, mostlyclean, clean, distclean, maintainer-clean): Likewise. - * Makefile.devel (lib/config.h.msvc): Renamed from src/config.h.msvc. - (lib/aliases.h): Renamed from src/aliases.h. - (lib/aliases.gperf): Renamed from src/aliases.gperf. - (lib/aliases_aix.h): Renamed from src/aliases_aix.h. - (lib/flags.h): Renamed from src/flags.h. - (lib/translit.h): Renamed from src/translit.h. - * src/iconv.c: Moved here from tests/iconv.c. - * src/Makefile.in: New file. - * src/Makefile.msvc: New file. - * src/Makefile.os2: New file. - * tests/Makefile.in (iconv): Remove target. - (../lib/libiconv.la): Renamed from ../src/libiconv.la. - (clean): No need to remove iconv. - * tests/Makefile.msvc (iconv.exe): Remove target. - * tests/Makefile.os2 (iconv.exe): Likewise. - * tests/check-stateful: iconv is in ../src. - * tests/check-stateful.bat: Likewise. - * tests/check-stateful.cmd: Likewise. - * tests/check-translit: iconv is in ../src. - * tests/check-translit.bat: Likewise. - * tests/check-translit.cmd: Likewise. - * man/iconv.1: New file. - * man/Makefile.in (install, installdirs, uninstall): Also install *.1 - man pages. - * man/Makefile.os2 (MAN3): Renamed from MAN. - (MAN1): New variable. - (install, uninstall): Also install *.1 man pages. - -2000-11-21 Bruno Haible - - * Makefile.msvc (all, check, mostlyclean, clean, distclean, - maintainer-clean): Recurse into libcharset. - (clean, distclean, maintainer-clean): Remove src\libcharset.h. - * src/Makefile.msvc (LIBCHARSET_OBJECTS): New variable. - (iconv.lib): Link with $(LIBCHARSET_OBJECTS). - -2000-11-18 Bruno Haible - - * src/cp950.h (cp950_mbtowc, cp950_wctomb): Change implementation - so that it agrees with Microsoft's definition of CP950. - * tests/CP950.TXT: Likewise. - * tests/CP950.IRREVERSIBLE.TXT: Add 0xA244, 0xA2CC, 0xA2CE. - -2000-11-18 Bruno Haible - - Add support for locale dependent "char" and "wchar_t" encodings. - * libcharset: New subdirectory. - * src/loop_unicode.h: New file, extracted from src/iconv.c. - * src/loop_wchar.h: New file. - * src/loops.h: New file. Include loop_unicode.h and loop_wchar.h. - * src/encodings_local.def: New file. - * src/genaliases.c: Also create aliases for encodings_local.def. - * src/converters.h (conv_struct): Add lfuncs field. - * src/genflags.c: Add dummy definitions of struct loop_funcs. - * src/iconv.c: Include libcharset.h. - (loop_funcs): New structure. - Treat encodings_local.def like encodings.def. - Include loops.h. - (iconv_open): Move the bulk of the code to loop_unicode.h. - (iconv): Likewise. - (iconvctl): Extend determination of TRIVIALP to wchar_t conversion - descriptors. - * src/Makefile.in (PLUG_SOURCES): Remove variable. - (LIBCHARSET_OBJECTS): New variable. - (libiconv.la): Link in the LIBCHARSET_OBJECTS. - (libiconv_plug_linux.so, libiconv_plug_solaris.so, - libiconv_plug_osf.so): Link in the LIBCHARSET_OBJECTS, using - LIBTOOL_LINK. - (iconv.lo): Depend on encodings_local.def. - * src/Makefile.msvc (iconv.obj): Depend on encodings_local.def. - * src/Makefile.os2 (iconv.obj): Likewise. - * configure.in: Add tests for locale.h, mbrtowc, wcrtomb, setlocale. - Recurse into libcharset. - * src/config.h.in (HAVE_LOCALE_H, HAVE_MBRTOWC, HAVE_WCRTOMB, - HAVE_SETLOCALE): New macros. - * tests/iconv.c: Include config.h and locale.h. - (main): Call setlocale. - * tests/Makefile.in (iconv): Search for config.h in ../src. - * tests/Makefile.os2 (iconv.exe): Likewise. - * tests/Makefile.msvc (iconv.exe): Likewise. - * README, man/iconv_open.3: Document "char" and "wchar_t" encodings. - * Makefile.in: After "cd", use "&&" not ";". - (all, check, mostlyclean, clean, distclean, maintainer-clean): - Recurse into libcharset. - * Makefile.devel (all): Recurse into libcharset. - (src/aliases.gperf): Depend on src/encodings_local.def. - -2000-11-18 Bruno Haible - - * src/converters.h (ucs4_t): New type. - (wchar_t): Remove locally defined override. - (mbtowc_funcs, wctomb_funcs): Use ucs4_t instead of wchar_t. - * src/iconv.c (iconv): Likewise. - * src/genflags.c (emit_encoding): Use ucs4_t instead of wchar_t. - * tools/8bit_tab_to_h.c: Use "ucs4_t" instead of "wchar_t". - * tools/cjk_tab_to_h.c: Likewise. - * src/armscii_8.h: Use ucs4_t instead of wchar_t. - * src/ascii.h: Likewise. - * src/big5.h: Likewise. - * src/big5hkscs.h: Likewise. - * src/ces_big5.h: Likewise. - * src/ces_gbk.h: Likewise. - * src/cns11643.h: Likewise. - * src/cns11643_1.h: Likewise. - * src/cns11643_2.h: Likewise. - * src/cns11643_3.h: Likewise. - * src/cns11643_inv.h: Likewise. - * src/cp1046.h: Likewise. - * src/cp1124.h: Likewise. - * src/cp1129.h: Likewise. - * src/cp1133.h: Likewise. - * src/cp1250.h: Likewise. - * src/cp1251.h: Likewise. - * src/cp1252.h: Likewise. - * src/cp1253.h: Likewise. - * src/cp1254.h: Likewise. - * src/cp1255.h: Likewise. - * src/cp1256.h: Likewise. - * src/cp1257.h: Likewise. - * src/cp1258.h: Likewise. - * src/cp850.h: Likewise. - * src/cp856.h: Likewise. - * src/cp866.h: Likewise. - * src/cp874.h: Likewise. - * src/cp922.h: Likewise. - * src/cp932.h: Likewise. - * src/cp932ext.h: Likewise. - * src/cp936ext.h: Likewise. - * src/cp949.h: Likewise. - * src/cp950.h: Likewise. - * src/cp950ext.h: Likewise. - * src/euc_cn.h: Likewise. - * src/euc_jp.h: Likewise. - * src/euc_kr.h: Likewise. - * src/euc_tw.h: Likewise. - * src/gb12345.h: Likewise. - * src/gb12345ext.h: Likewise. - * src/gb18030.h: Likewise. - * src/gb18030ext.h: Likewise. - * src/gb18030uni.h: Likewise. - * src/gb2312.h: Likewise. - * src/gbk.h: Likewise. - * src/gbkext1.h: Likewise. - * src/gbkext2.h: Likewise. - * src/gbkext_inv.h: Likewise. - * src/georgian_academy.h: Likewise. - * src/georgian_ps.h: Likewise. - * src/hkscs.h: Likewise. - * src/hp_roman8.h: Likewise. - * src/hz.h: Likewise. - * src/iso2022_cn.h: Likewise. - * src/iso2022_cnext.h: Likewise. - * src/iso2022_jp.h: Likewise. - * src/iso2022_jp1.h: Likewise. - * src/iso2022_jp2.h: Likewise. - * src/iso2022_kr.h: Likewise. - * src/iso646_cn.h: Likewise. - * src/iso646_jp.h: Likewise. - * src/iso8859_1.h: Likewise. - * src/iso8859_10.h: Likewise. - * src/iso8859_13.h: Likewise. - * src/iso8859_14.h: Likewise. - * src/iso8859_15.h: Likewise. - * src/iso8859_16.h: Likewise. - * src/iso8859_2.h: Likewise. - * src/iso8859_3.h: Likewise. - * src/iso8859_4.h: Likewise. - * src/iso8859_5.h: Likewise. - * src/iso8859_6.h: Likewise. - * src/iso8859_7.h: Likewise. - * src/iso8859_8.h: Likewise. - * src/iso8859_9.h: Likewise. - * src/isoir165.h: Likewise. - * src/isoir165ext.h: Likewise. - * src/java.h: Likewise. - * src/jisx0201.h: Likewise. - * src/jisx0208.h: Likewise. - * src/jisx0212.h: Likewise. - * src/johab.h: Likewise. - * src/johab_hangul.h: Likewise. - * src/koi8_r.h: Likewise. - * src/koi8_ru.h: Likewise. - * src/koi8_u.h: Likewise. - * src/ksc5601.h: Likewise. - * src/mac_arabic.h: Likewise. - * src/mac_centraleurope.h: Likewise. - * src/mac_croatian.h: Likewise. - * src/mac_cyrillic.h: Likewise. - * src/mac_greek.h: Likewise. - * src/mac_hebrew.h: Likewise. - * src/mac_iceland.h: Likewise. - * src/mac_roman.h: Likewise. - * src/mac_romania.h: Likewise. - * src/mac_thai.h: Likewise. - * src/mac_turkish.h: Likewise. - * src/mac_ukraine.h: Likewise. - * src/mulelao.h: Likewise. - * src/nextstep.h: Likewise. - * src/sjis.h: Likewise. - * src/tcvn.h: Likewise. - * src/tis620.h: Likewise. - * src/ucs2.h: Likewise. - * src/ucs2be.h: Likewise. - * src/ucs2internal.h: Likewise. - * src/ucs2le.h: Likewise. - * src/ucs2swapped.h: Likewise. - * src/ucs4.h: Likewise. - * src/ucs4be.h: Likewise. - * src/ucs4internal.h: Likewise. - * src/ucs4le.h: Likewise. - * src/ucs4swapped.h: Likewise. - * src/uhc_1.h: Likewise. - * src/uhc_2.h: Likewise. - * src/utf16.h: Likewise. - * src/utf16be.h: Likewise. - * src/utf16le.h: Likewise. - * src/utf7.h: Likewise. - * src/utf8.h: Likewise. - * src/viscii.h: Likewise. - -2000-11-18 Bruno Haible - - Make transliteration optional. - * src/iconv.c (iconv_open): Strip off //TRANSLIT suffix from names. - Set transliteration on if and only if tocode ends in //TRANSLIT. - * README, man/iconv_open.3: Document how to enable transliteration. - * tests/check-translit: Add //TRANSLIT to iconv's 't' argument. - * tests/check-translit.bat: Likewise. - * tests/check-translit.cmd: Likewise. - -2000-11-18 Bruno Haible - - * man/iconv.3: Fix typo. - -2000-10-31 Bruno Haible - - * README, man/iconv_open.3: Document JOHAB again. - -2000-11-15 Bruno Haible - - * Makefile.msvc: Add support for MFLAGS and DEBUG parameters. - (STATIC): Change default from 0 to 1. - * src/Makefile.msvc: Likewise. - * tests/Makefile.msvc: Likewise. - * tests/check-stateless.bat: Call 'sort' with no arguments. - -2000-11-12 Bruno Haible - - * autoconf/config.guess, autoconf/config.sub: Upgrade to newest - version from GNU CVS. - -2000-10-24 Bruno Haible - - * Version 1.4 released. - * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc: - Bump version number. - * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:1:0. - -2000-10-23 Bruno Haible - - Implement and document GB18030 and BIG5HKSCS. - * tools/cjk_tab_to_h.c (row_byte_hkscs, byte_row_hkscs, do_hkscs): New - functions. - (do_gb18030uni): New function. - (main): Accept gb18030ext, gb18030uni, hkscs. - * tools/Makefile (ALL): Add gb18030ext.h, gb18030uni.h, hkscs.h. - (gb18030ext.h, GB18030ext.TXT, gb18030uni.h, GB18030uni.TXT, - hkscs.h): New targets. - * src/gb18030ext.h, src/gb18030uni.h, src/gb18030.h: New files. - * src/hkscs.h, src/big5hkscs.h: New files. - * src/converters.h: Include gb18030.h and big5hkscs.h. - * src/encodings.def (GB18030, BIG5HKSCS): New encodings. - * README, man/iconv_open.3: Add GB18030, BIG5HKSCS. - * tests/Makefile.in (check): Check GB18030, BIG5HKSCS. - * tests/Makefile.msvc (check): Likewise. - * tests/Makefile.os2 (check): Likewise. - * tests/GB18030.TXT: New file. - * tests/BIG5HKSCS.TXT, tests/BIG5HKSCS.IRREVERSIBLE.TXT: New files. - -2000-10-23 Bruno Haible - - * tests/table-from.c (try, main): Use UCS-4-INTERNAL instead of - UCS-2-INTERNAL, to avoid problems with UCS-2 surrogate handling. - * tests/table-to.c (main): Likewise. - -2000-10-22 Bruno Haible - - * src/gentranslit.c (main): Read the input in UTF-8 encoding. - -2000-10-09 Bruno Haible - - CPU recognition on OpenBSD. - * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Recognize __m68k__, - __mc68020__, __MIPSEB__, __MIPSEL__, __m88k__ as CPU indicators. - -2000-10-03 Bruno Haible - - * src/gentranslit.c (main): Don't output non-ASCII ISO-8859-1 - character literals, use the numeric value instead. - Reported by Shin-Hsien Yeh . - -2000-09-29 Bruno Haible - - * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Fix bug in 2000-05-23 - change. - -2000-09-25 Bruno Haible - - * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Recognize __i386__ - as equivalent to __i386. For OpenBSD. - -2000-09-21 Bruno Haible - - * src/utf16.h (utf16_wctomb): Reject single surrogates. - * src/utf16be.h (utf16be_wctomb): Likewise. - * src/utf16le.h (utf16le_wctomb): Likewise. - * src/ucs2.h (ucs2_mbtowc, ucs2_wctomb): Likewise. - * src/ucs2be.h (ucs2be_mbtowc, ucs2be_wctomb): Likewise. - * src/ucs2le.h (ucs2le_mbtowc, ucs2le_wctomb): Likewise. - * src/ucs2internal.h (ucs2internal_mbtowc, ucs2internal_wctomb): - Likewise. - * src/ucs2swapped.h (ucs2swapped_mbtowc, ucs2swapped_wctomb): - Likewise. - -2000-09-15 Bruno Haible - - * Makefile.in (install, installdirs, uninstall): Support DESTDIR. - * src/Makefile.in (install, installdirs, uninstall): Likewise. - * man/Makefile.in (install, installdirs, uninstall): Likewise. - -2000-09-11 Bruno Haible - - * src/utf7.h (utf7_mbtowc): Fix combining of UTF-16 surrogates. - -2000-08-26 Bruno Haible - - * autoconf/acgeneral.m4 (AC_OUTPUT): Use braces in exec_prefix default - value, not parens. - -2000-07-04 Akira Hatakeyama - Bruno Haible - - * os2/iconv.def, README.os2, Makefile.os2, src/Makefile.os2, - tests/Makefile.os2, man/Makefile.os2, tests/check-stateful.cmd, - tests/check-stateless.cmd, tests/check-translit.cmd: New files. - -2000-06-28 Bruno Haible - - * src/ucs2internal.h (ucs2internal_mbtowc): Avoid gcc warning about - cast. - * src/ucs4internal.h (ucs4internal_mbtowc): Likewise. - * src/ucs2swapped.h (ucs2swapped_mbtowc, ucs2swapped_wctomb): Verify - sizeof(unsigned short). - * src/ucs4swapped.h (ucs4swapped_mbtowc, ucs4swapped_mbtowc): Verify - sizeof(unsigned int). - Reported by François Pinard . - -2000-05-29 Bruno Haible - - * autoconf/aclocal.m4 (CL_PROG_INSTALL): Fix typo. - Reported by Thomas Klausner . - -2000-05-23 Bruno Haible - - * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Determine host_cpu, - host_vendor, host_os correctly if $host has more than two hyphens. - -2000-04-15 Bruno Haible - - * Version 1.3 released. - * include/iconv.h.in (_LIBICONV_VERSION), README, windows/iconv.rc: - Bump version number. - * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 2:0:0. - -2000-04-15 Bruno Haible - - * THANKS: New file. - * INSTALL.generic: New file. - - Implement and document UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE. - * src/ucs2be.h, src/ucs2le.h, src/ucs4be.h, src/ucs4le.h: New files. - * src/converters.h: Include them. - * src/ucs2swapped.h: Remove #defines for UCS-2-BE, UCS-2-LE. - * src/ucs4swapped.h: Remove #defines for UCS-4-BE, UCS-4-LE. - * src/encodings.def (UCS-2BE): Renamed from UCS-2-BE. - (UCS-2LE): Renamed from UCS-2-LE. - (UCS-4BE): Renamed from UCS-4-BE. - (UCS-4LE): Renamed from UCS-4-LE. - * Makefile.devel (src/aliases.h): Pass option "-i 1" to gperf. - * README, man/iconv_open.3: Add UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE. - * tests/Makefile.in (check): Check UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE. - * tests/Makefile.msvc (check): Likewise. - * tests/UCS-*snippet*: New files. - - Allow building as a shared library on Windows. - Allow running the tests on Windows. - * Makefile.devel (include/iconv.h.msvc): Remove rule. - (include/iconv.h.msvc-static, include/iconv.h.msvc-shared): New - rules. - (all): Update. - * windows/dllexport.h: New file. - * include/iconv.h.msvc: Remove file. - * include/iconv.h.msvc-static, include/iconv.h.msvc-shared: New - autogenerated files. - * Makefile.msvc (STATIC, DEBUG): Default to 0. - (all): Choose either include\iconv.h.msvc-static or - include\iconv.h.msvc-shared. - (check): Depend on all. - (all, check, mostlyclean, clean, distclean, maintainer-clean): - Recurse into tests directory. - * src/Makefile.msvc (STATIC, DEBUG): Default to 0. - (WARN_CFLAGS, PICFLAGS, OPTIMFLAGS): New variables. - (CFLAGS): Use them. Add -MD and -DBUILDING_LIBICONV. - (RESOURCES): New variable. - (iconv.lib): Change rule when building DLL. - (clean, distclean): One filename per line. - * tests/Makefile.msvc: New file. - * tests/check-stateful.bat, tests/check-stateless.bat, - tests/check-translit.bat: New files. - * tests/uniq-u.c: New file, taken from GNU textutils. - * README.win32: Update. - Based on patches by Taro Muraoka . - -2000-04-14 Bruno Haible - - Fix an OSF/1 problem. - * configure.in: Define GCC variable for substitution. - * src/Makefile.in (libiconv_plug_osf.so): Change rule if not using - gcc. - -2000-04-13 Bruno Haible - - Fix a SunOS 4 problem. - * include/iconv.h.in: If EILSEQ is not defined by the system, define - it to ENOENT, not EINVAL. - -2000-04-02 Bruno Haible - - Allow building on filesystems lacking symlinks and hard links. - * Makefile.devel (autoconf/aclocal.m4): Replace AC_PROG_LN_S with - CL_PROG_LN_S. - * configure.in: Add CL_PROG_LN, CL_PROG_LN_S. - * src/Makefile.in (LN): Use autoconfigured value @LN@. - (LN_S): Use autoconfigured value @LN_S@. - -2000-03-15 Bruno Haible - - * Version 1.2 released. - * include/iconv.h.in (_LIBICONV_VERSION): Bump version number. - * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 1:1:1. - -2000-03-14 Bruno Haible - - Implement and document UTF-16BE and UTF16LE. - * src/utf16be.h, src/utf16le.h: New files. - * src/converters.h: Include them. - * src/encodings.def (UTF-16BE, UTF16LE): New encodings. - * README, man/iconv_open.3: Add UTF-16BE, UTF16LE. - * tests/Makefile.in (check): Check UTF-16, UTF-16BE, UTF16LE. - * tests/UTF-16*snippet*: New files. - - * src/utf16.h (utf16_wctomb): Output a byte order mark. - -2000-03-13 Bruno Haible - - Provide all encodings used by AIX locales. - * tools/Makefile (all): Add cp856.h, cp922.h, cp1046.h, cp1124.h, - cp1129.h. - (cp856.h, cp922.h, cp1046.h, cp1124.h, cp1129.h): New targets. - * src/cp856.h, src/cp922.h, src/cp943.h, src/cp1046.h, src/cp1124.h, - src/cp1129.h: New files. - * src/converters.h: Include them if USE_AIX is defined. - * src/encodings_aix.def: New file, with CP856, CP922, CP943, CP1046, - CP1124, CP1129. - * src/genflags.c: Define USE_AIX. Include encodings_aix.def. - * src/genaliases2.c: New file. - * src/iconv.c: Define USE_AIX on AIX. - Include encodings_aix.def and aliases_aix.h. - (aliases2_lookup): New function. - (iconv_open): Call aliases2_lookup. - * src/Makefile.in (iconv.lo): Depend on encodings_aix.def and - aliases_aix.h. - * Makefile.devel (all): Add src/aliases_aix.h. - (src/aliases_aix.h): New rule. - (src/flags.h): Depend on src/encodings_aix.def. - -2000-02-24 Bruno Haible - - * src/iconv.c (iconv): Don't write beyond the end of the output buffer. - Reported by Edmund Grimley Evans . - -2000-02-22 Bruno Haible - - * src/utf7.h (direct_tab, xdirect_tab): Treat tab like space. - -2000-02-15 Bruno Haible - - * src/iconv.c (iconv): Add cast in xxx_reset call. - -2000-02-05 Bruno Haible - - * src/tis620.h: Simplify. - -2000-01-27 Bruno Haible - - * Makefile.devel (CLISP_DIR): Change to "..". - -2000-01-24 Bruno Haible - - * Version 1.1 released. - * include/iconv.h.in (_LIBICONV_VERSION): Bump version number. - * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 1:0:1. - -2000-01-23 Bruno Haible - - * src/utf7.h (utf7_wctomb): If base64 encoding is not active, encode - '+' as "+-". - -2000-01-22 Bruno Haible - - * include/iconv.h.in (iconvctl): New declaration. - (ICONV_TRIVIALP, ICONV_GET_TRANSLITERATE, ICONV_SET_TRANSLITERATE): - New macros. - * src/iconv.c (iconvctl): New function. - - * tests/Makefile.in: Add a rule for ../src/libiconv.la. Define $(MAKE). - - Solve a build problem. - * include/iconv.h.in: Renamed from include/libiconv.h.in. - * Makefile.devel: libiconv.h -> iconv.h. - * Makefile.in: Likewise. - * configure.in: Likewise. Remove check for . - * src/iconv.c: Include iconv.h instead of libiconv.h. - * tests/iconv.c, tests/table-from.c, tests/table-to.c: Likewise. - - * README, man/iconv_open.3: Don't document JOHAB any more. - - * man/iconv.3: Clarify return value again. - -2000-01-16 Bruno Haible - - Add aliases. - * src/encodings.def (ISO-8859-14): Add alias ISO-IR-199. - (ISO-8859-15): Add alias ISO-IR-203. - (EUC-CN): Add alias CN-GB, from RFC 1922. - (BIG5): Add alias CN-BIG5, from RFC 1922. - * Makefile.devel (src/aliases.h): Add 8th character to key set. - - Drop X11 aliases. - * src/encodings.def (JIS_X0201): Drop JISX0201.1976-0 alias. - (JIS_X0208): Drop JIS_X0208.1983-0, JIS_X0208.1983-1 aliases. - (KSC_5601): Drop KSC5601.1987-0 alias. - - Improve GB/T 12345 (not used yet). - * tools/Makefile (gb12345ext.h): Use GB12345-more.TXT. - * src/gb12345ext.h: Regenerated. - - Improve and document CP949. - * tools/Makefile (all): Add uhc_1.h and uhc_2.h. - (uhc_1.h, uhc_2.h): New rules. - * tools/cjk_tab_to_h.c (output_charset2uni_noholes_monotonic): New - function. - (output_uni2charset_sparse): Take an additional boolean argument. - All callers changed. - (*_uhc_1, *_uhc_2): New functions. - (main): Treat uhc_1 and uhc_2. - * src/uhc_1.h, src/uhc_2.h: New files. - * src/cp949.h: New file, include them. - * src/converters.h: Include it. - * src/encodings.def (KSC_5601): Remove alias CP949. - (CP949): New encoding. - * README, man/iconv_open.3: Add CP949. - * tests/Makefile.in (check): Check CP949. - * tests/CP949.TXT: New file. - - Document CP932. - * README, man/iconv_open.3: Add CP932. - * tests/Makefile.in (check): Check CP932. - * tests/CP932.TXT, tests/CP932.IRREVERSIBLE.TXT: New files. - - * Makefile.devel (src/flags.h): Depend on src/converters.h. - - * tests/Makefile.in (check): Check JIS_X0201. - * tests/JIS_X0201.TXT: New file. - - * src/euc_kr.h (euc_kr_wctomb): Shrink size of buf. - * src/iso2022_kr.h (iso2022_kr_wctomb): Likewise. - - * src/iso2022_cnext.h (iso2022_cn_ext_mbtowc): Use isoir165_mbtowc. - (iso2022_cn_ext_wctomb): Use isoir165_wctomb. - - Add ISO-IR-165 (undocumented). - * tools/Makefile (all): Add isoir165ext.h. - (isoir165ext.h): New rule. - * tools/cjk_tab_to_h.c (main): Treat isoir165ext like gb2312. - * src/isoir165.h, src/isoir165ext.h: New files. - * src/converters.h: Include it. - * src/encodings.def: Add ISO-IR-165. - * tests/Makefile.in (check): Check ISO-IR-165. - * tests/ISO-IR-165.TXT, tests/ISO-IR-165.IRREVERSIBLE.TXT: New files. - - Add ISO646-CN (undocumented). - * src/iso646_cn.h: New file. - * src/converters.h: Include it. - * src/encodings.def: Add ISO646-CN. - * tests/Makefile.in (check): Check ISO646-CN. - * tests/ISO646-CN.TXT: New file. - - Add ISO646-JP (undocumented). - * src/iso646_jp.h: New file. - * src/converters.h: Include it. - * src/encodings.def: Add ISO646-JP. - * tests/Makefile.in (check): Check ISO646-JP. - * tests/ISO646-JP.TXT: New file. - -2000-01-05 Bruno Haible - - Add ISO-8859-16. - * tools/Makefile (all): Add iso8859_16.h. - (iso8859_16.h): New rule. - * src/iso8859_16.h: New file. - * src/converters.h: Include it. - * src/encodings.def: Add ISO-8859-16. - * README, man/iconv_open.3: Add ISO-8859-16. - * tests/Makefile.in (check): Check ISO-8859-16. - * tests/ISO-8859-16.TXT: New file. - - * man/iconv.3: Clarify what happens *inbuf in case 3. - - * src/iso8859_8.h: Update using newest table from ftp.unicode.org. - * tests/ISO-8859-8.TXT: Likewise. - -2000-01-04 Bruno Haible - - * Version 1.0 released. - * include/libiconv.h.in (_LIBICONV_VERSION): Bump version number. - * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 0:1:0. - (libiconv.la): Use LIBICONV_VERSION_INFO. - -2000-01-03 Bruno Haible - - * tests/Makefile.in: New file. - tests/check-stateless, tests/table-from.c, tests/table-to.c, - tests/*.TXT, tests/genutf8.c: New files, checks for stateless - encodings. - tests/check-stateful, tests/iconv.c, tests/*-snippet*: New files, - checks for stateful encodings. - * Makefile.in (all, check, mostlyclean, clean, distclean, - maintainer-clean): Descend into tests directory. - * configure.in: Add tests/Makefile to AC_OUTPUT duties. - - * src/gentranslit.c: New file. - * Makefile.devel (src/translit.h): New rule. - * src/translit.def, src/translit.h: New files. - * src/iconv.c: Include it. - (iconv): Transliterate using translit.h table. - - * src/genflags.c: New file. - * Makefile.devel (src/flags.h): New rule. - * src/flags.h: New file. - * src/iconv.c: Include it. - (encoding): Add field 'oflags'. - (all_encodings): Initialize the field 'oflags'. - (iconv_open): Copy field 'oflags'. - (iconv): Transliterate quotation marks U+2018, U+2019, U+201A. - * src/Makefile.in (iconv.lo): Update dependencies. - - * src/converters.h: New file, extracted from src/iconv.c. - * src/iconv.c: Include it. - * src/Makefile.in (iconv.lo): Update dependencies. - - * tools/cjk_variants.c: New file. - * tools/Makefile (ALL): Add cjk_variants.h. - (cjk_variants.h, cjk_variants): New rules. - * src/cjk_variants.h: New file. - * src/iconv.c: Include it. - (iconv): Use cjk_variants for transliteration. - - * man/iconv.3: Fix description of return value. - * euc_kr.h (euc_kr_wctomb): Remove Hangul transliteration. - * iso2022_kr.h (iso2022kr_wctomb): Likewise. - * src/iconv.c (iconv): Do Hangul transliteration here and increment - result once for every transliterated character. - * src/johab_hangul.h (johab_hangul_decompose): Change result array - from 'unsigned char*' to 'wchar_t*'. - - * src/cp1258.h (cp1258_mbtowc): Return RET_ILSEQ instead of storing - 0xfffd. - - * src/georgian_ps.h (georgian_ps_wctomb): Accept 0x00e6. - - * src/euc_jp.h (euc_jp_wctomb): Don't treat U+005C and U+007E like - Katakana. - - * src/euc_tw.h (euc_tw_mbtowc): Fix typo. - - * src/cp950.h (cp950_mbtowc, cp950_wctomb): Exclude the range - 0xC6A1..0xC7FE. - - * tools/cjk_tab_to_h.c (read_table_ksc5601): Some Hangul range was - not being excluded. Fix that. - * src/ksc5601.h: Regenerated. - * src/johab.h (johab_mbtowc): Don't accept 0xDA{A1..D3} - this is - valid in KSC5601/KSX1001 but not in JOHAB. - - * src/iconv.c (conv_struct): Add fields iindex, oindex. - (iconv_open): Fill in iindex, oindex. - - * src/encodings.def (UCS-2-BE): Add aliases "UNICODE-1-1" and - "csUnicode11", from IANA charset list. - (MacRoman): Add aliases "MAC" and "csMacintosh" for "MACINTOSH", - from IANA charset list. - (JIS_X0208): Add aliases "X0208", "ISO-IR-87", "csISO87JISX0208", - from IANA charset list. - (GB_2312-80): New encoding, from IANA charset list. - - * README, man/iconv_open.3: Add MacIceland and MacUkraine. - - * Makefile.devel: Add rules for src/aliases.h and src/aliases.gperf. - (all): Depend on src/aliases.h. - * src/Makefile.in: Remove rules for $(srcdir)/aliases.h and - $(srcdir)/aliases.gperf. - (clean): Clean up. - - * src/Makefile.in (libiconv_plug_linux.so): Remove unneeded "-ldl". - -1999-12-31 Bruno Haible - - * Version 0.3 released. - diff --git a/FILELIST b/FILELIST deleted file mode 100644 index 96931550..00000000 --- a/FILELIST +++ /dev/null @@ -1,532 +0,0 @@ -lang/en_US.langmap -lang/zh_CN.langmap -lib/utf32.h -lib/iso8859_16.h -lib/iso8859_6.h -lib/cp1256.h -lib/ucs4le.h -lib/euc_jisx0213.h -lib/cp1163.h -lib/dec_hanyu.h -lib/cns11643_4b.h -lib/encodings_zos.def -lib/euc_cn.h -lib/cns11643_7.h -lib/gb18030uni.h -lib/cp950.h -lib/cp50221_0208_ext.h -lib/cp855.h -lib/ebcdic1154.h -lib/encodings_aix.def -lib/cns11643_3.h -lib/ebcdic280.h -lib/iso8859_14.h -lib/mac_roman.h -lib/cp850.h -lib/big5_2003.h -lib/isoir165ext.h -lib/cp950ext.h -lib/ebcdic282.h -lib/rk1048.h -lib/sjis.h -lib/georgian_academy.h -lib/iso2022_jp2.h -lib/cns11643.h -lib/cp865.h -lib/gbkext2.h -lib/iso8859_3.h -lib/mac_hebrew.h -lib/gbk.h -lib/mac_croatian.h -lib/ksc5601.h -lib/ebcdic273.h -lib/gb18030ext.h -lib/ebcdic1156.h -lib/ebcdic880.h -lib/atarist.h -lib/ebcdic838.h -lib/iso8859_2.h -lib/ebcdic1142.h -lib/cp1125.h -lib/euc_tw.h -lib/mac_thai.h -lib/koi8_r.h -lib/iso8859_11.h -lib/cp856.h -lib/ebcdic1140.h -lib/iso2022_kr.h -lib/iso2022_jp1.h -lib/utf16be.h -lib/gb18030_2022.h -lib/iso2022_jp3.h -lib/cns11643_5.h -lib/ebcdic285.h -lib/ascii.h -lib/ebcdic924.h -lib/cp922.h -lib/cns11643_inv.h -lib/ebcdic500.h -lib/iconv.cpp -lib/converters.h -lib/cp1252.h -lib/ebcdic1047.h -lib/jisx0213.h -lib/gb12345.h -lib/aliases2.h -lib/c99.h -lib/cp866.h -lib/ebcdic278.h -lib/ucs4internal.h -lib/mulelao.h -lib/ucs4swapped.h -lib/cp1162.h -lib/cns11643_4a.h -lib/flushwc.h -lib/mac_romania.h -lib/utf32le.h -lib/hz.h -lib/cp1255.h -lib/tcvn.h -lib/ebcdic1123.h -lib/ebcdic1158.h -lib/ucs2be.h -lib/ebcdic425.h -lib/cp1253.h -lib/iconv_open1.h -lib/ces_big5.h -lib/cp857.h -lib/cp949.h -lib/ebcdic1137.h -lib/iso8859_10.h -lib/gb2312.h -lib/cp936.h -lib/ebcdic1153.h -lib/mac_cyrillic.h -lib/cns11643_4.h -lib/cp932.h -lib/koi8_u.h -lib/cns11643_15.h -lib/armscii_8.h -lib/ebcdic1097.h -lib/cp775.h -lib/cp50221_0212_ext.h -lib/jisx0201.h -lib/cp737.h -lib/viscii.h -lib/ebcdic870.h -lib/big5hkscs2004.h -lib/euc_jp.h -lib/hkscs2008.h -lib/mac_centraleurope.h -lib/cp1129.h -lib/generated/flags.h -lib/generated/aliases_aix_sysaix.h -lib/generated/aliases.h -lib/generated/aliases_syssolaris.h -lib/generated/aliases_extra.h -lib/generated/aliases_aix.h -lib/generated/aliases_sysaix.h -lib/generated/aliases_syshpux.h -lib/generated/aliases_zos.h -lib/generated/aliases_dos.h -lib/ebcdic12712.h -lib/uhc_2.h -lib/iso8859_1.h -lib/cp858.h -lib/iso8859_8.h -lib/cp936ext.h -lib/cp1133.h -lib/mac_iceland.h -lib/ebcdic1149.h -lib/iso2022_cn.h -lib/ebcdic1025.h -lib/johab.h -lib/ucs4.h -lib/cns11643_2.h -lib/pt154.h -lib/ucs4be.h -lib/cp1257.h -lib/big5hkscs2008.h -lib/ebcdic905.h -lib/cns11643_6.h -lib/ebcdic1122.h -lib/isoir165.h -lib/cp864.h -lib/iso8859_15.h -lib/mac_turkish.h -lib/ebcdic424.h -lib/uhc_1.h -lib/cp869.h -lib/iso8859_13.h -lib/utf8.h -lib/ebcdic875.h -lib/iso8859_9.h -lib/ces_gbk.h -lib/ebcdic1155.h -lib/dec_kanji.h -lib/cp1131.h -lib/cp1124.h -lib/java.h -lib/ebcdic1130.h -lib/euc_kr.h -lib/encodings_dos.def -lib/iso8859_7.h -lib/ebcdic1146.h -lib/hkscs2004.h -lib/mac_arabic.h -lib/iso646_jp.h -lib/cp1161.h -lib/ebcdic037.h -lib/ebcdic871.h -lib/ucs2le.h -lib/iso646_cn.h -lib/shift_jisx0213.h -lib/ebcdic1132.h -lib/ebcdic1112.h -lib/cp853.h -lib/big5hkscs1999.h -lib/ebcdic1145.h -lib/cp1254.h -lib/big5.h -lib/cp1046.h -lib/mac_greek.h -lib/ebcdic4971.h -lib/gb18030_2005.h -lib/cp862.h -lib/ebcdic1160.h -lib/jisx0212.h -lib/hkscs1999.h -lib/gbkext_inv.h -lib/cp860.h -lib/hkscs2001.h -lib/koi8_ru.h -lib/utf7.h -lib/cp437.h -lib/ebcdic1141.h -lib/cp874.h -lib/ebcdic284.h -lib/ebcdic297.h -lib/ebcdic277.h -lib/jisx0208.h -lib/cp1250.h -lib/big5hkscs2001.h -lib/ebcdic423.h -lib/georgian_ps.h -lib/ebcdic1165.h -lib/koi8_t.h -lib/cns11643_1.h -lib/hp_roman8.h -lib/tis620.h -lib/iso8859_4.h -lib/loops.h -lib/utf32be.h -lib/cp943.h -lib/ebcdic1148.h -lib/ebcdic1147.h -lib/cjk_variants.h -lib/johab_hangul.h -lib/utf16le.h -lib/encodings_extra.def -lib/gbkext1.h -lib/ucs2.h -lib/ebcdic1164.h -lib/iso2022_cnext.h -lib/iso8859_5.h -lib/utf16.h -lib/ebcdic1026.h -lib/ebcdic1144.h -lib/iso2022_jp.h -lib/vietcomb.h -lib/mac_ukraine.h -lib/ebcdic1166.h -lib/cp863.h -lib/cp852.h -lib/cp1258.h -lib/cp1251.h -lib/nextstep.h -lib/ebcdic16804.h -lib/iso2022_jpms.h -lib/riscos1.h -lib/iconv_open2.h -lib/ucs2internal.h -lib/loop_unicode.h -lib/ebcdic1143.h -lib/cp861.h -lib/ebcdic1157.h -lib/ucs2swapped.h -lib/encodings.def -lib/tds565.h -lib/cp932ext.h -lib/gb12345ext.h -tests/check-stateless.cpp -tests/table-from.hpp -tests/tests.cmake -tests/uniq-u.hpp -tests/reiconv-test.hpp -tests/table-to.hpp -tests/check-stateful.cpp -tests/check-ascii-converters.cpp -tests/data-generator.cpp -tests/data/IBM-284.TXT -tests/data/IBM-1112.TXT -tests/data/IBM-1146.TXT -tests/data/ISO-8859-2.TXT -tests/data/SHIFT_JIS.TXT -tests/data/ISO-8859-9.TXT -tests/data/CP1163.IRREVERSIBLE.TXT -tests/data/UCS-4LE-snippet -tests/data/CP850.TXT -tests/data/CP1161.TXT -tests/data/CP737.TXT -tests/data/IBM-285.TXT -tests/data/UTF-32BE-snippet -tests/data/CP865.TXT -tests/data/IBM-870.TXT -tests/data/ISO-2022-JP-1-snippet -tests/data/CP862.TXT -tests/data/BIG5-HKSCS-2008-snippet.UTF-8 -tests/data/ISO-2022-CN-snippet.UTF-8 -tests/data/GB18030-2005-BMP.TXT -tests/data/NEXTSTEP.TXT -tests/data/MacThai.TXT -tests/data/MuleLao-1.TXT -tests/data/IBM-1155.TXT -tests/data/ISO-2022-JP-3-snippet -tests/data/ISO-2022-KR-snippet.UTF-8 -tests/data/BIG5-2003.TXT -tests/data/CP874.TXT -tests/data/MacIceland.TXT -tests/data/IBM-1148.TXT -tests/data/IBM-037.TXT -tests/data/IBM-1145.TXT -tests/data/MacCyrillic.TXT -tests/data/CP1163.TXT -tests/data/ISO-2022-JP-snippet.UTF-8 -tests/data/JOHAB.TXT -tests/data/IBM-1160.IRREVERSIBLE.TXT -tests/data/BIG5-HKSCS-1999.TXT -tests/data/MacRoman.TXT -tests/data/IBM-12712.TXT -tests/data/ISO-2022-JP-MS-snippet.UTF-8 -tests/data/CP922.TXT -tests/data/CP1255-snippet.UTF-8 -tests/data/EUC-JISX0213.TXT -tests/data/DEC-HANYU.TXT -tests/data/IBM-1147.TXT -tests/data/MacCroatian.TXT -tests/data/IBM-424.TXT -tests/data/IBM-1157.TXT -tests/data/IBM-277.TXT -tests/data/UCS-4BE-snippet.UTF-8 -tests/data/ISO-IR-165.TXT -tests/data/EUC-CN.TXT -tests/data/IBM-871.TXT -tests/data/CP1258.TXT -tests/data/IBM-1160.TXT -tests/data/ISO-8859-6.TXT -tests/data/CP853.TXT -tests/data/IBM-924.TXT -tests/data/IBM-1026.TXT -tests/data/CP861.TXT -tests/data/EUC-JP.TXT -tests/data/CP1253.TXT -tests/data/IBM-1137.TXT -tests/data/MacTurkish.TXT -tests/data/JIS_X0201.TXT -tests/data/CP1255.TXT -tests/data/MacHebrew.TXT -tests/data/EUC-TW.TXT -tests/data/BIG5-HKSCS-2001-snippet -tests/data/CP949.TXT -tests/data/UTF-7-snippet -tests/data/KOI8-R.TXT -tests/data/UTF-16-snippet.UTF-8 -tests/data/CP1131.TXT -tests/data/BIG5-HKSCS-2004-snippet.UTF-8 -tests/data/BIG5-HKSCS-2008.TXT -tests/data/ISO-2022-CN-EXT-snippet -tests/data/IBM-16804.TXT -tests/data/CP858.TXT -tests/data/IBM-1165.TXT -tests/data/IBM-1149.TXT -tests/data/IBM-1097.TXT -tests/data/IBM-280.TXT -tests/data/BIG5-HKSCS-2001.IRREVERSIBLE.TXT -tests/data/IBM-1141.TXT -tests/data/BIG5-HKSCS-2004-snippet -tests/data/ISO-8859-5.TXT -tests/data/BIG5-HKSCS-2001.TXT -tests/data/CP1250.TXT -tests/data/ISO-2022-JP-3-snippet.UTF-8 -tests/data/IBM-1142.TXT -tests/data/ISO-8859-8.TXT -tests/data/ISO-2022-JP-1-snippet.UTF-8 -tests/data/BIG5-HKSCS-2001-snippet.UTF-8 -tests/data/IBM-1156.TXT -tests/data/CP932.IRREVERSIBLE.TXT -tests/data/KOI8-RU.TXT -tests/data/RISCOS-LATIN1.TXT -tests/data/ISO-2022-JP-2-snippet.UTF-8 -tests/data/CP855.TXT -tests/data/CP1161.IRREVERSIBLE.TXT -tests/data/IBM-1166.TXT -tests/data/MacCentralEurope.TXT -tests/data/ISO-IR-165.IRREVERSIBLE.TXT -tests/data/HZ-snippet.UTF-8 -tests/data/ISO-8859-10.TXT -tests/data/UTF-16LE-snippet -tests/data/ISO-8859-15.TXT -tests/data/BIG5-HKSCS-1999.IRREVERSIBLE.TXT -tests/data/Georgian-PS.TXT -tests/data/UCS-2BE-snippet -tests/data/GB18030-2005.IRREVERSIBLE.TXT -tests/data/CP863.TXT -tests/data/ISO-8859-7.TXT -tests/data/TCVN-snippet.UTF-8 -tests/data/IBM-500.TXT -tests/data/ISO-8859-14.TXT -tests/data/MacRomania.TXT -tests/data/PT154.TXT -tests/data/UTF-16-snippet -tests/data/ISO646-JP.TXT -tests/data/IBM-1123.TXT -tests/data/IBM-1164.TXT -tests/data/UTF-16BE-snippet.UTF-8 -tests/data/ISO-2022-KR-snippet -tests/data/DEC-HANYU.IRREVERSIBLE.TXT -tests/data/HP-ROMAN8.TXT -tests/data/IBM-1153.TXT -tests/data/UCS-2LE-snippet -tests/data/ISO-2022-CN-snippet -tests/data/TIS-620.TXT -tests/data/HZ-snippet -tests/data/CP1129.TXT -tests/data/TDS565.TXT -tests/data/MacGreek.TXT -tests/data/ISO-8859-11.TXT -tests/data/ASCII.TXT -tests/data/ISO646-CN.TXT -tests/data/SHIFT_JISX0213.TXT -tests/data/CP1124.TXT -tests/data/UCS-2LE-snippet.UTF-8 -tests/data/EUC-TW.IRREVERSIBLE.TXT -tests/data/UTF-32LE-snippet.UTF-8 -tests/data/CP1255-snippet -tests/data/Translit1.ISO-8859-1 -tests/data/IBM-905.TXT -tests/data/UTF-16BE-snippet -tests/data/UTF-32-snippet.UTF-8 -tests/data/CP950.IRREVERSIBLE.TXT -tests/data/ISO-8859-13.TXT -tests/data/Quotes.ASCII -tests/data/BIG5-HKSCS-1999-snippet -tests/data/ATARIST.TXT -tests/data/IBM-1154.TXT -tests/data/CP1251.TXT -tests/data/CP1258-snippet -tests/data/TCVN.IRREVERSIBLE.TXT -tests/data/CP1125.TXT -tests/data/CP866.TXT -tests/data/UTF-7-snippet.UTF-8 -tests/data/CP1162.TXT -tests/data/CP1254.TXT -tests/data/TCVN.TXT -tests/data/CP950.TXT -tests/data/EUC-JP.IRREVERSIBLE.TXT -tests/data/UCS-4LE-snippet.UTF-8 -tests/data/IBM-1122.TXT -tests/data/CP1252.TXT -tests/data/CP1133.TXT -tests/data/IBM-838.IRREVERSIBLE.TXT -tests/data/IBM-1140.TXT -tests/data/ISO-8859-3.TXT -tests/data/IBM-1025.TXT -tests/data/CP1258-snippet.UTF-8 -tests/data/BIG5.TXT -tests/data/CP852.TXT -tests/data/CP856.TXT -tests/data/EUC-KR.TXT -tests/data/BIG5-HKSCS-2004.IRREVERSIBLE.TXT -tests/data/BIG5-HKSCS-1999-snippet.UTF-8 -tests/data/CP936.TXT -tests/data/KOI8-U.TXT -tests/data/CP932.TXT -tests/data/IBM-4971.TXT -tests/data/IBM-880.TXT -tests/data/DEC-KANJI.TXT -tests/data/UCS-4BE-snippet -tests/data/IBM-875.TXT -tests/data/CP857.TXT -tests/data/Georgian-Academy.TXT -tests/data/CP1256.TXT -tests/data/UTF-32-snippet -tests/data/IBM-838.TXT -tests/data/MacUkraine.TXT -tests/data/UTF-32BE-snippet.UTF-8 -tests/data/ISO-2022-JP-snippet -tests/data/IBM-1130.TXT -tests/data/BIG5-HKSCS-2008-snippet -tests/data/BIG5-HKSCS-2004.TXT -tests/data/ISO-2022-JP-MS-snippet -tests/data/CP775.TXT -tests/data/IBM-425.TXT -tests/data/ARMSCII-8.IRREVERSIBLE.TXT -tests/data/UCS-2BE-snippet.UTF-8 -tests/data/ISO-8859-16.TXT -tests/data/IBM-423.TXT -tests/data/ISO-2022-CN-EXT-snippet.UTF-8 -tests/data/CP1255.IRREVERSIBLE.TXT -tests/data/IBM-1144.TXT -tests/data/IBM-297.TXT -tests/data/ISO-2022-JP-MS-snippet.alt -tests/data/TCVN-snippet -tests/data/CP1257.TXT -tests/data/GBK.TXT -tests/data/BIG5-HKSCS-2008.IRREVERSIBLE.TXT -tests/data/CP864.TXT -tests/data/CP869.TXT -tests/data/ISO-8859-4.TXT -tests/data/Translit1.ASCII -tests/data/Quotes.ISO-8859-1 -tests/data/UTF-32LE-snippet -tests/data/Quotes.UTF-8 -tests/data/RK1048.TXT -tests/data/IBM-282.TXT -tests/data/ISO-2022-JP-2-snippet -tests/data/IBM-273.TXT -tests/data/KOI8-T.TXT -tests/data/MacArabic.TXT -tests/data/VISCII.TXT -tests/data/UTF-16LE-snippet.UTF-8 -tests/data/IBM-1132.TXT -tests/data/CP437.TXT -tests/data/ISO-8859-1.TXT -tests/data/CP860.TXT -tests/data/IBM-1047.TXT -tests/data/CP1046.TXT -tests/data/IBM-1143.TXT -tests/data/IBM-278.TXT -tests/data/CP1258.IRREVERSIBLE.TXT -tests/data/ARMSCII-8.TXT -tests/data/GB18030-2022-BMP.TXT -tests/data/IBM-1158.TXT -tests/data/BIG5-2003.IRREVERSIBLE.TXT -tests/throw_error.hpp -tests/_iconv.hpp -tests/utils.hpp -tests/sort.cpp -tests/sort.hpp -tools/genaliases.cpp -tools/genaliases2.cpp -tools/genflags.cpp -COPYING -Makefile.devel -include/cppp/reiconv.hpp.in -CMakeLists.txt -README.md -FILELIST -CPPPPKG -cpppdist.py -ChangeLog -windows/libcppp-reiconv.rc.in -NEWS.md diff --git a/Makefile.devel b/Makefile.devel index a8440f8c..bfcfe61d 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -133,8 +133,9 @@ test : all cd build && $(CTEST) -C Debug --verbose $(CMAKE) --install build --verbose - ./cpppdist.py - { diff cppp-reiconv-* . --recursive || echo ; } + ./repoutil.py distpkg --type dpkg + ./repoutil.py dist + { diff cppp-reiconv-v* . --recursive || echo ; } # Alias to test check : test diff --git a/cpppdist.py b/cpppdist.py deleted file mode 100755 index f65e6bd2..00000000 --- a/cpppdist.py +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright (C) 2023 The C++ Plus Project. -# This file is part of the cppp library. -# -# The cppp library is free software; you can redistribute it -# and/or modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either version 3 -# of the License, or (at your option) any later version. -# -# The cppp library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with the cppp library; see the file COPYING. -# If not, see . - -# C++ Plus dist utils. - -import os -import sys -import json -import shutil -import importlib.util - -PACKAGE_INFO = "CPPPPKG" -PROGNAME = "cpppdist.py" - -def import_file(path): - """ - Import a Python file from it's path - - Args: - path (str): Python file's path - - Raises: - ModuleNotFoundError: When module invalid, load error or not found. - - Returns: - ModuleType: module - """ - spec = importlib.util.spec_from_file_location(os.path.basename(path).replace(".py", ""), path) - if(spec == None): - raise ModuleNotFoundError("Invalid module or module not found: " + path) - module = importlib.util.module_from_spec(spec) - spec.loader.exec_module(module) - return module - -class Package: - """ - A dist package type - """ - name = "" - version = "" - list_file_path = "" - filelist = [] - subpackages = {} - - def __init__(self, pkginfo_filepath) -> None: - try: - os.chdir(fwd) - with open(pkginfo_filepath, "r", encoding="UTF-8") as info_file: - data = json.load(info_file) - self.name = data["name"] - self.version = data["version"] - self.list_file_path = data["list_file_path"] - try: - _subpackages = data["subpackages"] - for pkgname in _subpackages: - pkgpath = _subpackages[pkgname]["path"] - try: - pkgmodule = import_file(os.path.join(pkgpath, PROGNAME)) - self.subpackages[pkgpath] = pkgmodule.package - except Exception as e: - if(not _subpackages[pkgname]["ignore"]): - raise - else: - print(f"DEBUG: Ignore a subpackage '{pkgname}': {e}", file=sys.stderr) - except KeyError: - pass - self.filelist = self.get_file_list() - finally: - os.chdir(cwd) - - def get_file_list(self) -> list: - """ - Get file list for dist. - """ - try: - os.chdir(fwd) - file_list = [] - with open(self.list_file_path, "rt", encoding="UTF-8") as list_file: - data = list_file.read() - file_list = data.strip().split("\n") - return file_list - finally: - os.chdir(cwd) - - def copy_files(self, dest): - """ - Copy files to dist dest - """ - try: - os.chdir(fwd) - if(os.path.exists(dest)): - shutil.rmtree(dest) - print(f"Copy package '{self.name}' to '{dest}' ... ", file=sys.stderr) - progressbar = ProgressBar(len(self.filelist)) - for file in self.filelist: - relpath = os.path.relpath(file, fwd) - filedir = os.path.abspath(os.path.join(dest, relpath, "..")) - if(not os.path.exists(filedir)): - os.makedirs(filedir) - shutil.copy(file, os.path.join(dest, relpath)) - progressbar.add(1) - progressbar.end() - print("", end="\n", file=sys.stderr) - # Copy subpackages - for (pkgpath, pkg) in self.subpackages.items(): - pkg.copy_files(os.path.join(dest, os.path.join(dest, pkgpath))) - finally: - os.chdir(cwd) - -class ProgressBar: - """ - Progress bar type. - """ - def __init__(self, total): - self.total = total - self.cur = 0 - sys.stderr.write("\n") - self.update() - - def add(self, step): - """ - Add current value and update. - """ - self.cur += step - self.update() - - def set(self, cur): - """ - Set current value and update. - """ - self.cur = cur - self.update() - - def update(self): - """ - Update progress bar. - """ - try: - progress = 0.0 - if(self.cur): - progress = self.cur / self.total - term_width = os.get_terminal_size(sys.stderr.fileno()).columns - part_width = term_width - len("[]100.0%") - if(part_width <= 0): - # Terminal is too small, ignore. - return - sys.stderr.write("\r") - # Part1 is '#' - part1 = int(part_width * progress) * '#' - # Part2 is ' ' - part2 = int(part_width - len(part1)) * ' ' - # Part3 is 'xxx.x%' - part3 = str(int(progress * 1000) / 10) + "%" - sys.stderr.write(f"[{part1}{part2}]{part3}") - sys.stderr.flush() - except: - return - - def end(self): - """ - End this progress bar - """ - self.set(self.total) - sys.stderr.write("\n") - sys.stderr.flush() - -cwd = os.path.abspath(os.curdir) -fwd = os.path.abspath(os.path.join(__file__, "..")) - -package = None -try: - package = Package(PACKAGE_INFO) -except Exception as exc: - print("Getting packge infomation error:", exc, file=sys.stderr) - raise exc - -if __name__ == "__main__": - distdir = f"{package.name}-v{package.version}" - package.copy_files(os.path.abspath(distdir)) diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index d0747ffe..7874569c 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -29,7 +29,7 @@ #include -#if _MSC_VER >= 1600 +#if _MSC_VER >= 1600 /* Use UTF-8 to decode this file. */ #pragma execution_character_set("utf-8") #endif @@ -46,7 +46,7 @@ extern "C++" * @brief Version infomation. (major<<8) + minor */ extern @DLL_VARIABLE@ int reiconv_version; - + /** * @brief Convert a ascii-only string to UTF-16. * @param str Source string. @@ -56,7 +56,7 @@ extern "C++" * @warning Don't forget to free the result memory! * @return Return true if successful, otherwise return false. */ - extern @DLL_VARIABLE@ bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp); + extern @DLL_VARIABLE@ bool ascii_mbtou16(const char *str, size_t length, char16_t **resultp, size_t *lengthp); /** * @brief Convert a ascii-only string to UTF-32. @@ -67,15 +67,15 @@ extern "C++" * @warning Don't forget to free the result memory! * @return Return true if successful, otherwise return false. */ - extern @DLL_VARIABLE@ bool ascii_mbtou32(const char* str, size_t length, char32_t** resultp, size_t* lengthp); + extern @DLL_VARIABLE@ bool ascii_mbtou32(const char *str, size_t length, char32_t **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another, * and supports autodetect encodings on input. * * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. - * except that FROMCODE may be one of the values. + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and + * '//TRANSLIT'. except that FROMCODE may be one of the values. * * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS @@ -92,16 +92,16 @@ extern "C++" * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char* tocode, const char* fromcode, const char* start, - size_t inlength, char** resultp, size_t* lengthp); - + extern @DLL_VARIABLE@ int convert(const char *tocode, const char *fromcode, const char *start, size_t inlength, + char **resultp, size_t *lengthp); + /** * @brief Converts an entire string from one encoding to another, * and supports autodetect encodings on input. * * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. - * except that FROMCODE may be one of the values. + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and + * '//TRANSLIT'. except that FROMCODE may be one of the values. * * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS @@ -118,16 +118,16 @@ extern "C++" * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char16_t* tocode, const char16_t* fromcode, const char* start, - size_t inlength, char** resultp, size_t* lengthp); - + extern @DLL_VARIABLE@ int convert(const char16_t *tocode, const char16_t *fromcode, const char *start, + size_t inlength, char **resultp, size_t *lengthp); + /** * @brief Converts an entire string from one encoding to another, * and supports autodetect encodings on input. * * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. - * except that FROMCODE may be one of the values. + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and + * '//TRANSLIT'. except that FROMCODE may be one of the values. * * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS @@ -144,8 +144,8 @@ extern "C++" * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char32_t* tocode, const char32_t* fromcode, const char* start, - size_t inlength, char** resultp, size_t* lengthp); + extern @DLL_VARIABLE@ int convert(const char32_t *tocode, const char32_t *fromcode, const char *start, + size_t inlength, char **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another. @@ -159,10 +159,8 @@ extern "C++" * @param strict Strict mode, if false, will ignore the invalid characters. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(int tocode_cp, int fromcode_cp, const char* start, - size_t inlength, char** resultp, size_t* lengthp, bool strict=true); - - + extern @DLL_VARIABLE@ int convert(int tocode_cp, int fromcode_cp, const char *start, size_t inlength, + char **resultp, size_t *lengthp, bool strict = true); } // namespace reiconv } // namespace base diff --git a/lang/en_US.langmap b/lang/en_US.langmap deleted file mode 100644 index a266313d..00000000 --- a/lang/en_US.langmap +++ /dev/null @@ -1,4 +0,0 @@ -# C++ Plus NLS Util language map for cppp-reiconv. -# en_US - -# Original comment of reiconv.hpp.in is en_US, so we can keep this langmap empty. diff --git a/lang/zh_CN.langmap b/lang/zh_CN.langmap deleted file mode 100644 index 29901d83..00000000 --- a/lang/zh_CN.langmap +++ /dev/null @@ -1,191 +0,0 @@ -# C++ Plus NLS Util language map for cppp-reiconv. -# zh_CN - -''' -/* Copyright (C) 1999-2023 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. - If not, see . */ -''' -/* 版权所有 (C) 1999-2023 Free Software Foundation, Inc. - 本文件是 cppp-reiconv 库的一部分。 - - cppp-reiconv 库是自由软件,您可以在自由软件基金会发布的 GNU Lesser General Public - License 版本 3 或者(根据您的选择)任何以后的版本下重新分发和/或修改它。 - - cppp-reiconv 库被分发,希望它对您有用,但没有任何担保;甚至没有暗示的担保 - 商业性和特定目的适用性的担保。请参阅 GNU Lesser General Public License 获取更多详细信息。 - - 您应该已经收到了 GNU Lesser General Public License 的副本 - 与 cppp-reiconv 库一起;请参阅 COPYING 文件。 - 如果没有,请参阅 https://www.gnu.org/licenses/ 。 */ -''' - -''' -/* When installed, this file is called "cppp/reiconv.hpp". */ -''' -/* 安装之后,这个文件叫做 “cppp/reiconv.hpp”。 */ -''' - -''' -/* Use UTF-8 to decode this file. */ -''' -/* 使用 UTF-8 解析这个文件 */ -''' - -''' - /** - * @brief Version infomation. (major<<8) + minor - */ -''' - /** - * @brief 版本信息。 算法:(major<<8) + minor - */ -''' - -''' - /** - * @brief Convert a ascii-only string to UTF-16. - * @param str Source string. - * @param length Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @warning Don't forget to free the result memory! - * @return Return true if successful, otherwise return false. - */ -''' - /** - * @brief 将仅包含 ASCII 字符的字符串转换为 UTF-16。 - * @param str 源字符串。 - * @param length 源字符串长度。 - * @param resultp 结果内存指针。 - * @param lengthp 指向存储结果长度的变量的指针。 - * @warning 不要忘记释放结果内存! - * @return 如果成功,返回 true ,否则返回 false 。 - */ -''' - -''' - /** - * @brief Convert a ascii-only string to UTF-32. - * @param str Source string. - * @param length Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @warning Don't forget to free the result memory! - * @return Return true if successful, otherwise return false. - */ -''' - /** - * @brief 将仅包含 ASCII 字符的字符串转换为 UTF-32。 - * @param str 源字符串。 - * @param length 源字符串长度。 - * @param resultp 结果内存指针。 - * @param lengthp 指向存储结果长度的变量的指针。 - * @warning 不要忘记释放结果内存! - * @return 如果成功,返回 true ,否则返回 false 。 - */ -''' - -''' - /** - * @brief Converts an entire string from one encoding to another, - * and supports autodetect encodings on input. - * - * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and '//TRANSLIT'. - * except that FROMCODE may be one of the values. - * - * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 - * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS - * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not nullptr, the output string is stored in - * *resultp; malloc/realloc is used to allocate the result. - * - * @note This function does not treat zero characters specially. - * @param tocode Target encoding. - * @param fromcode From encoding. - * @param start Source string. - * @param inlength Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. - */ -''' - /** - * @brief 将整个字符串从一种编码转换为另一种编码,并支持自动检测输入编码。 - * @note 将以编码FROMCODE给出的内存区域转换为以编码TOCODE给出的新内存区域。FROMCODE和TOCODE的取值与iconv_open(3)相同,不支持'//IGNORE'和'//TRANSLIT', - * 唯一的例外是FROMCODE可以是下列值之一。 - * @note "autodetect_utf8" 支持ISO-8859-1和UTF-8 - * @note "autodetect_jp" 支持EUC-JP, ISO-2022-JP-2和SHIFT_JIS - * @note "autodetect_kr" 支持EUC-KR和ISO-2022-KR - * @note 如果resultp不为nullptr,则输出字符串存储在*resultp中;使用malloc/realloc来分配结果。 - * - * @note 此函数不会特殊处理零字符。 - * @param tocode 目标编码。 - * @param fromcode 源编码。 - * @param start 源字符串。 - * @param inlength 源字符串长度。 - * @param resultp 结果内存指针。 - * @param lengthp 指向存储结果长度的变量的指针。 - * @return 如果成功,返回0,否则返回errno并设置errno。特定的errno值:EILSEQ和ENOMEM。 - */ -''' - -''' - /** - * @brief Converts an entire string from one encoding to another. - * @note This function does not treat zero characters specially. - * @param tocode_cp Target encoding codepage. - * @param fromcode_cp From encoding codepage. - * @param start Source string. - * @param inlength Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @param strict Strict mode, if false, will ignore the invalid characters. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. - */ -''' - /** - * @brief 将整个字符串从一种编码转换为另一种编码。 - * @note 该函数不特殊处理零字符。 - * @param tocode_cp 目标编码页。 - * @param fromcode_cp 源编码页。 - * @param start 源字符串。 - * @param end 源字符串长度。 - * @param resultp 结果内存指针。 - * @param lengthp 指向存储结果长度的变量的指针。 - * @param strict 严格模式,如果为 false ,将忽略无效字符。 - * @return 如果成功,返回 0 ;否则返回 errno 并设置 errno 。特定的 errno 值包括 EILSEQ 和 ENOMEM 。 - */ -''' - -''' -// namespace reiconv -''' -// 命名空间 reiconv -''' - -''' -// namespace base -''' -// 命名空间 base -''' - -''' -// namespace cppp -''' -// 命名空间 cppp -''' diff --git a/repo.json b/repo.json new file mode 100644 index 00000000..0997b689 --- /dev/null +++ b/repo.json @@ -0,0 +1,5 @@ +{ + "name": "cppp-reiconv", + "version": "3.0.0", + "description": "C+++ character set conversion library." +} diff --git a/setup.cmd b/setup.cmd deleted file mode 100644 index 21bbdf8a..00000000 --- a/setup.cmd +++ /dev/null @@ -1,42 +0,0 @@ -@echo off -rem Setup a repository during individual development. -rem -rem This script requires git program in the PATH. - -rem Copyright (C) 2023 The C++ Plus Project. -rem -rem This program is free software: you can redistribute it and/or modify -rem it under the terms of the GNU Lesser General Public License as published by -rem the Free Software Foundation; either version 3 of the License, or -rem (at your option) any later version. -rem -rem This program is distributed in the hope that it will be useful, -rem but WITHOUT ANY WARRANTY; without even the implied warranty of -rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -rem GNU Lesser General Public License for more details. -rem -rem You should have received a copy of the GNU Lesser General Public License -rem along with this program. If not, see . - -rem Usage: setup.cmd - -if exist .\build-aux ( - echo Success: '.\build-aux' is exists, please don't remove it, and you can develop this package normally. - goto QUIT -) - -if exist ..\build-aux ( - echo Success: '..\build-aux' is exists, please don't remove it, and you can develop this package normally. - goto QUIT -) - -echo Notice: '..\build-aux' for C++ Plus are not exists, cloning it...... -git clone https://github.com/cppp-project/build-aux -if %errorlevel%==0 ( - echo Success: '.\build-aux' cloned successfully, please don't remove it, and you can develop this package normally. -) else ( - echo Error: .\build-aux' cloned failed, you can clone it by yourself or copy it from C++ Plus release source package. - echo Notice: try to run 'git clone https://github.com/cppp-project/build-aux'. -) - -:QUIT diff --git a/setup.sh b/setup.sh deleted file mode 100755 index a6b59979..00000000 --- a/setup.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env sh -# Setup a repository during individual development. -# -# This script requires git program in the PATH. - -# Copyright (C) 2023 The C++ Plus Project. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 3 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 Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program. If not, see . - -# Usage: ./setup.sh -# - -# Usage: text_out [color_id] [level] [msg] -text_out() -{ - echo "\033[$1m$2: $3 \033[0m" -} - -# Usage: execute [command] -execute() -{ - text_out 94 "$1" - $1 - return $? -} - -if test -d './build-aux' -then - text_out 32 "Success" "'./build-aux' is exists, please don't remove it, and you can develop this package normally." - exit 0 -fi - -if test -d '../build-aux' -then - text_out 32 "Success" "'../build-aux' is exists, please don't remove it, and you can develop this package normally." - exit 0 -fi - -text_out 0 "Notice" "'../build-aux' for C++ Plus are not exists, cloning it......" -execute "git clone https://github.com/cppp-project/build-aux" -if [ $? -eq 0 ] -then - text_out 32 "Success" "'./build-aux' cloned successfully, please don't remove it, and you can develop this package normally." -else - text_out 31 "Error" "'./build-aux' cloned failed, you can clone it by yourself or copy it from C++ Plus release source package." - text_out 0 "Notice" "try to run 'git clone https://github.com/cppp-project/build-aux'. " -fi diff --git a/tools/build.ps1 b/tools/build.ps1 deleted file mode 100755 index 4808693c..00000000 --- a/tools/build.ps1 +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env pwsh - -# Copyright (C) 2023 The C++ Plus Project. -# This file is part of the cppp-reiconv library. -# -# The cppp-reiconv library is free software; you can redistribute it -# and/or modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either version 3 -# of the License, or (at your option) any later version. -# -# The cppp-reiconv library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with the cppp-reiconv library; see the file COPYING. -# If not, see . - -# This script help to build the library. -# This script requires cmake program and C/C++ compiler in the PATH. -# This script requires to run in the root directory of the library. -# This script support varibale 'CMAKEFLAGS' to pass flags to cmake. - -# Usage: ./tools/build.ps1 - -function colored_output { - param ( - [Parameter(Mandatory=$true)][System.String]$color, - [Parameter(Mandatory=$true)][string]$message - ) - Write-Host $message -ForegroundColor $color -} - -function output_log { - param ( - [Parameter(Mandatory=$true)][string]$color, - [Parameter(Mandatory=$true)][string]$level, - [Parameter(Mandatory=$true)][string]$message - ) - $timestamp = Get-Date -Format "yyyy/MM/dd HH:mm:ss" - colored_output $color "[$level] [$timestamp] $message" -} - -# Check cmake program. -if (-not (Get-Command cmake -ErrorAction SilentlyContinue)) { - output_log Red FATAL "CMake program not found in PATH." - exit 1 -} -# Check if we run this script in the root directory. -if (-not (Test-Path "CMakeLists.txt")) { - output_log Red FATAL "Please run this script in the root directory." - exit 1 -} -# Make package -output_log White INFO "Making package..." -if (Test-Path "build") { - Remove-Item -Recurse -Force "build" -} -mkdir "build" -$nproc=1 -if($env:OS -like "*Windows*") { - $nproc = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors -} -else { - if(Test-Path "/proc/cpuinfo") { - $nproc = (Get-Content "/proc/cpuinfo" | Select-String "processor" | Measure-Object).Count - } -} -cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/install $env:CMAKEFLAGS -cmake --build build --config Release --parallel $nproc -cmake --install build --config Release -output_log Green SUCCESS "Package made successfully." diff --git a/tools/build.sh b/tools/build.sh deleted file mode 100755 index 5b55c694..00000000 --- a/tools/build.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/sh - -# Copyright (C) 2023 The C++ Plus Project. -# This file is part of the cppp-reiconv library. -# -# The cppp-reiconv library is free software; you can redistribute it -# and/or modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either version 3 -# of the License, or (at your option) any later version. -# -# The cppp-reiconv library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with the cppp-reiconv library; see the file COPYING. -# If not, see . - -# This script help to build the library. -# This script requires cmake program and C/C++ compiler in the PATH. -# This script requires to run in the root directory of the library. -# This script support varibale 'CMAKEFLAGS' to pass flags to cmake. - -# Usage: ./tools/build.sh - -colored_output() { - if [ "$1" = "red" ]; then - printf "\033[1;31m$2\033[0m $3\n" - elif [ "$1" = "green" ]; then - printf "\033[1;32m$2\033[0m $3\n" - elif [ "$1" = "yellow" ]; then - printf "\033[1;33m$2\033[0m $3\n" - elif [ "$1" = "blue" ]; then - printf "\033[1;34m$2\033[0m $3\n" - elif [ "$1" = "white" ]; then - printf "\033[1;37m$2\033[0m $3\n" - else - printf "$2 $3\n" - fi -} - -output_log() { - timestamp=$(date +"%Y/%m/%d %H:%M:%S") - colored_output "$1" "[$2] [$timestamp] $3" -} - -# Check cmake program. -if ! command -v cmake > /dev/null 2>&1; then - output_log "red" "FATAL" "CMake program not found in PATH." - exit 1 -fi -# Check if we run this script in the root directory. -if [ ! -f "CMakeLists.txt" ]; then - output_log "red" "FATAL" "Please run this script in the root directory." - exit 1 -fi - -# Make package -output_log "white" "INFO" "Making package..." -rm -rf build -mkdir -p build -cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/install $CMAKEFLAGS -cmake --build build --config Release --parallel $(nproc) -cmake --install build --config Release -output_log "green" "SUCCESS" "Package made successfully." -exit 0 diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index 7ce864b8..e643d961 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -19,6 +19,8 @@ /* Creates the aliases.gperf table. */ +// There is an old saying in China: If a code can work, do not change it. + #include /* When we create shell scripts, we need to make sure that on Cygwin they have diff --git a/windows/libcppp-reiconv.rc.in b/windows/libcppp-reiconv.rc.in index b87c0d19..80e70a03 100644 --- a/windows/libcppp-reiconv.rc.in +++ b/windows/libcppp-reiconv.rc.in @@ -1,4 +1,4 @@ -/* Resources for iconv.dll */ +/* Resources for cppp-reiconv.dll */ #include From ad439ddfc2e706ba2f4ada2734e768a1143156b9 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 25 Jul 2024 11:54:57 +0800 Subject: [PATCH 25/77] Optimize build scripts. --- CMakeLists.txt | 25 +- tests/tests.cmake | 489 +++++++++--------- tests/uniq-u.hpp | 1 + ...bcppp-reiconv.rc.in => cppp-reiconv.rc.in} | 4 +- 4 files changed, 258 insertions(+), 261 deletions(-) rename windows/{libcppp-reiconv.rc.in => cppp-reiconv.rc.in} (93%) diff --git a/CMakeLists.txt b/CMakeLists.txt index d2822f88..1329f045 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,12 @@ cmake_minimum_required(VERSION 3.12) project(cppp-reiconv VERSION 3.0.0) -# Define options option(LESS_BUILD "Disable extra encodings." OFF) +if (LESS_BUILD) + option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." OFF) +else() + option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." ON) +endif() # Ignore warnings if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") @@ -40,17 +44,18 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") add_compile_options(/wd4996) add_compile_options(/wd4267) add_compile_options(/wd4244) + add_compile_options(/wd4018) endif () # Set C++ standard -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) # ---------------------------------------------------------------------------------- -# Import build-aux subdirectory. +# Import build auxiliaries. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/build-aux") set(BUILD_AUX "${CMAKE_CURRENT_SOURCE_DIR}/build-aux") add_subdirectory("${BUILD_AUX}") - message(STATUS "Using '${BUILD_AUX}' for C++ Plus build-aux directory.") + message(STATUS "Using '${BUILD_AUX}' for C+++ build-aux directory.") elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../build-aux") set(BUILD_AUX "${CMAKE_CURRENT_SOURCE_DIR}/../build-aux") else() @@ -58,13 +63,9 @@ else() endif() get_filename_component(BUILD_AUX "${BUILD_AUX}" ABSOLUTE) include("${BUILD_AUX}/cmake/cppp.cmake") - # ---------------------------------------------------------------------------------- -check_have_visibility() -if(MSVC) - add_compile_options(/wd4018) -endif() +check_have_visibility() # Generate header file for build if(WIN32) @@ -77,7 +78,7 @@ endif() add_compile_definitions("DLL_VARIABLE=${DLL_VARIABLE}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/libcppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/libcppp-reiconv.rc") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") # Generate header file for install if(WIN32) @@ -101,10 +102,10 @@ else() endif() # Add library -cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" TRUE TRUE "${CMAKE_BINARY_DIR}/windows/libcppp-reiconv.rc") +cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" TRUE TRUE "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") # Include test suite. -if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests") +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests" AND BUILD_TEST) include("tests/tests.cmake") endif() diff --git a/tests/tests.cmake b/tests/tests.cmake index 3a214616..94be7937 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -1,273 +1,268 @@ # CMake script for cppp-reiconv/tests +# Init CTest +enable_testing() +include(CTest) +message(STATUS "Test suite for '${PROJECT_NAME}' enabled.") -option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." OFF) +# Includes +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/tests") +include_directories("${output_includedir}") -if (BUILD_TEST) - # Init CTest - enable_testing() - include(CTest) - message(STATUS "Test suite for '${PROJECT_NAME}' enabled.") +# Test executables +add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") +add_executable(check-ascii-converters "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-ascii-converters.cpp") +add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") +add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") +add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") - # Includes - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/tests") - include_directories("${output_includedir}") +target_link_libraries(check-ascii-converters libcppp-reiconv.static) +target_link_libraries(check-stateful libcppp-reiconv.static) +target_link_libraries(check-stateless libcppp-reiconv.static) - # Test executables - add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") - add_executable(check-ascii-converters "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-ascii-converters.cpp") - add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") - add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") - add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") +set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-ascii-converters PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - target_link_libraries(check-ascii-converters libcppp-reiconv.static) - target_link_libraries(check-stateful libcppp-reiconv.static) - target_link_libraries(check-stateless libcppp-reiconv.static) - - set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(check-ascii-converters PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) - set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +# Test macro +macro(test state encoding) + add_test( NAME "check-${state}-${encoding}" + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data" "${encoding}" + ) +endmacro(test) - # Test macro - macro(test state encoding) - add_test( NAME "check-${state}-${encoding}" - WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data" "${encoding}" ) - endmacro(test) - - # Init test +# Init test - add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "utf-8" > "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/UTF-8.TXT" - WORKING_DIRECTORY "${output_testsdir}" - COMMENT "Generating UTF-8 test data ... " - ) +add_custom_command(TARGET data-generator POST_BUILD + COMMAND "$" "utf-8" > "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/UTF-8.TXT" + WORKING_DIRECTORY "${output_testsdir}" + COMMENT "Generating UTF-8 test data ... " +) - file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT") - add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" - WORKING_DIRECTORY "${output_testsdir}" - COMMENT "Generating GB18030:2005 test data ... " - ) - add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" - COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" - COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" - WORKING_DIRECTORY "${output_testsdir}" - COMMENT "Sorting GB18030:2005 test data ... " - ) +file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT") +add_custom_command(TARGET data-generator POST_BUILD + COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" + WORKING_DIRECTORY "${output_testsdir}" + COMMENT "Generating GB18030:2005 test data ... " +) +add_custom_command(TARGET data-generator POST_BUILD + COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" + COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" + COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" + WORKING_DIRECTORY "${output_testsdir}" + COMMENT "Sorting GB18030:2005 test data ... " +) - file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT") - add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" - WORKING_DIRECTORY "${output_testsdir}" - COMMENT "Generating GB18030:2022 test data ... " - ) - add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" - COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" - COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" - WORKING_DIRECTORY "${output_testsdir}" - COMMENT "Sorting GB18030:2022 test data ... " - ) +file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT") +add_custom_command(TARGET data-generator POST_BUILD + COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" + WORKING_DIRECTORY "${output_testsdir}" + COMMENT "Generating GB18030:2022 test data ... " +) +add_custom_command(TARGET data-generator POST_BUILD + COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" + COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" + COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" + WORKING_DIRECTORY "${output_testsdir}" + COMMENT "Sorting GB18030:2022 test data ... " +) - # Start test +# Start test - # Test ascii converters - add_test( NAME "check-ascii-converters" - WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" ) +# Test ascii converters +add_test( NAME check-ascii-converters + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$" ) - # General multi-byte encodings - test("stateless" "UTF-8") - test("stateful" "UTF-16") - test("stateful" "UCS-2BE") - test("stateful" "UCS-2LE") - test("stateful" "UCS-4BE") - test("stateful" "UCS-4LE") - test("stateful" "UTF-16BE") - test("stateful" "UTF-16LE") - test("stateful" "UTF-32") - test("stateful" "UTF-32BE") - test("stateful" "UTF-32LE") - test("stateful" "UTF-7") +# General multi-byte encodings +test("stateless" "UTF-8") +test("stateful" "UTF-16") +test("stateful" "UCS-2BE") +test("stateful" "UCS-2LE") +test("stateful" "UCS-4BE") +test("stateful" "UCS-4LE") +test("stateful" "UTF-16BE") +test("stateful" "UTF-16LE") +test("stateful" "UTF-32") +test("stateful" "UTF-32BE") +test("stateful" "UTF-32LE") +test("stateful" "UTF-7") - # 8-bit encodings - test("stateless" "ISO-8859-1") - test("stateless" "ISO-8859-2") - test("stateless" "ISO-8859-3") - test("stateless" "ISO-8859-4") - test("stateless" "ISO-8859-5") - test("stateless" "ISO-8859-6") - test("stateless" "ISO-8859-7") - test("stateless" "ISO-8859-8") - test("stateless" "ISO-8859-9") - test("stateless" "ISO-8859-10") - test("stateless" "ISO-8859-11") - test("stateless" "ISO-8859-13") - test("stateless" "ISO-8859-14") - test("stateless" "ISO-8859-15") - test("stateless" "ISO-8859-16") - test("stateless" "KOI8-R") - test("stateless" "KOI8-U") - test("stateless" "KOI8-RU") - test("stateless" "CP1250") - test("stateless" "CP1251") - test("stateless" "CP1252") - test("stateless" "CP1253") - test("stateless" "CP1254") - test("stateless" "CP1255") - test("stateful" "CP1255") - test("stateless" "CP1256") - test("stateless" "CP1257") - test("stateless" "CP1258") - test("stateful" "CP1258") - test("stateless" "CP850") - test("stateless" "CP862") - test("stateless" "CP866") - test("stateless" "CP1131") - test("stateless" "MacRoman") - test("stateless" "MacCentralEurope") - test("stateless" "MacIceland") - test("stateless" "MacCroatian") - test("stateless" "MacRomania") - test("stateless" "MacCyrillic") - test("stateless" "MacUkraine") - test("stateless" "MacGreek") - test("stateless" "MacTurkish") - test("stateless" "MacHebrew") - test("stateless" "MacArabic") - test("stateless" "MacThai") - test("stateless" "HP-ROMAN8") - test("stateless" "NEXTSTEP") - test("stateless" "ARMSCII-8") - test("stateless" "Georgian-Academy") - test("stateless" "Georgian-PS") - test("stateless" "KOI8-T") - test("stateless" "PT154") - test("stateless" "RK1048") - test("stateless" "MuleLao-1") - test("stateless" "CP1133") - test("stateless" "TIS-620") - test("stateless" "CP874") - test("stateless" "VISCII") - test("stateless" "TCVN") - test("stateful" "TCVN") +# 8-bit encodings +test("stateless" "ISO-8859-1") +test("stateless" "ISO-8859-2") +test("stateless" "ISO-8859-3") +test("stateless" "ISO-8859-4") +test("stateless" "ISO-8859-5") +test("stateless" "ISO-8859-6") +test("stateless" "ISO-8859-7") +test("stateless" "ISO-8859-8") +test("stateless" "ISO-8859-9") +test("stateless" "ISO-8859-10") +test("stateless" "ISO-8859-11") +test("stateless" "ISO-8859-13") +test("stateless" "ISO-8859-14") +test("stateless" "ISO-8859-15") +test("stateless" "ISO-8859-16") +test("stateless" "KOI8-R") +test("stateless" "KOI8-U") +test("stateless" "KOI8-RU") +test("stateless" "CP1250") +test("stateless" "CP1251") +test("stateless" "CP1252") +test("stateless" "CP1253") +test("stateless" "CP1254") +test("stateless" "CP1255") +test("stateful" "CP1255") +test("stateless" "CP1256") +test("stateless" "CP1257") +test("stateless" "CP1258") +test("stateful" "CP1258") +test("stateless" "CP850") +test("stateless" "CP862") +test("stateless" "CP866") +test("stateless" "CP1131") +test("stateless" "MacRoman") +test("stateless" "MacCentralEurope") +test("stateless" "MacIceland") +test("stateless" "MacCroatian") +test("stateless" "MacRomania") +test("stateless" "MacCyrillic") +test("stateless" "MacUkraine") +test("stateless" "MacGreek") +test("stateless" "MacTurkish") +test("stateless" "MacHebrew") +test("stateless" "MacArabic") +test("stateless" "MacThai") +test("stateless" "HP-ROMAN8") +test("stateless" "NEXTSTEP") +test("stateless" "ARMSCII-8") +test("stateless" "Georgian-Academy") +test("stateless" "Georgian-PS") +test("stateless" "KOI8-T") +test("stateless" "PT154") +test("stateless" "RK1048") +test("stateless" "MuleLao-1") +test("stateless" "CP1133") +test("stateless" "TIS-620") +test("stateless" "CP874") +test("stateless" "VISCII") +test("stateless" "TCVN") +test("stateful" "TCVN") - # CJK character sets - test("stateless" "ISO646-JP") - test("stateless" "JIS_X0201") - test("stateless" "ISO646-CN") - test("stateless" "ISO-IR-165") +# CJK character sets +test("stateless" "ISO646-JP") +test("stateless" "JIS_X0201") +test("stateless" "ISO646-CN") +test("stateless" "ISO-IR-165") - # CJK encodings - test("stateless" "EUC-JP") - test("stateless" "SHIFT_JIS") - test("stateless" "CP932") - test("stateful" "ISO-2022-JP") - test("stateful" "ISO-2022-JP-2") - test("stateful" "ISO-2022-JP-1") - test("stateful" "ISO-2022-JP-MS") - test("stateless" "EUC-CN") - test("stateless" "GBK") - test("stateless" "CP936") - test("stateless" "GB18030:2005") - test("stateless" "GB18030:2022") - test("stateful" "ISO-2022-CN") - test("stateful" "ISO-2022-CN-EXT") - test("stateful" "HZ") - test("stateless" "EUC-TW") - test("stateless" "BIG5") - test("stateless" "CP950") - test("stateless" "BIG5-HKSCS:1999") - test("stateful" "BIG5-HKSCS:1999") - test("stateless" "BIG5-HKSCS:2001") - test("stateful" "BIG5-HKSCS:2001") - test("stateless" "BIG5-HKSCS:2004") - test("stateful" "BIG5-HKSCS:2004") - test("stateless" "BIG5-HKSCS:2008") - test("stateful" "BIG5-HKSCS:2008") - test("stateless" "EUC-KR") - test("stateless" "CP949") - test("stateless" "JOHAB") - test("stateful" "ISO-2022-KR") - - if(NOT LESS_BUILD OR CMAKE_SYSTEM_NAME STREQUAL "AIX") - message(STATUS "'${PROJECT_NAME}': Use AIX encodings.") - set(USE_AIX ON) - else() - message(STATUS "'${PROJECT_NAME}': AIX encodings disabled.") - set(USE_AIX OFF) - endif() +# CJK encodings +test("stateless" "EUC-JP") +test("stateless" "SHIFT_JIS") +test("stateless" "CP932") +test("stateful" "ISO-2022-JP") +test("stateful" "ISO-2022-JP-2") +test("stateful" "ISO-2022-JP-1") +test("stateful" "ISO-2022-JP-MS") +test("stateless" "EUC-CN") +test("stateless" "GBK") +test("stateless" "CP936") +test("stateless" "GB18030:2005") +test("stateless" "GB18030:2022") +test("stateful" "ISO-2022-CN") +test("stateful" "ISO-2022-CN-EXT") +test("stateful" "HZ") +test("stateless" "EUC-TW") +test("stateless" "BIG5") +test("stateless" "CP950") +test("stateless" "BIG5-HKSCS:1999") +test("stateful" "BIG5-HKSCS:1999") +test("stateless" "BIG5-HKSCS:2001") +test("stateful" "BIG5-HKSCS:2001") +test("stateless" "BIG5-HKSCS:2004") +test("stateful" "BIG5-HKSCS:2004") +test("stateless" "BIG5-HKSCS:2008") +test("stateful" "BIG5-HKSCS:2008") +test("stateless" "EUC-KR") +test("stateless" "CP949") +test("stateless" "JOHAB") +test("stateful" "ISO-2022-KR") + +if(NOT LESS_BUILD OR CMAKE_SYSTEM_NAME STREQUAL "AIX") + message(STATUS "'${PROJECT_NAME}': Use AIX encodings.") + set(USE_AIX ON) +else() + message(STATUS "'${PROJECT_NAME}': AIX encodings disabled.") + set(USE_AIX OFF) +endif() - if(NOT LESS_BUILD - OR CMAKE_SYSTEM_NAME STREQUAL "Windows" - OR CMAKE_SYSTEM_NAME STREQUAL "Windows3x" - OR CMAKE_SYSTEM_NAME STREQUAL "DOS") - message(STATUS "'${PROJECT_NAME}': Use DOS encodings.") - set(USE_DOS ON) - else() - message(STATUS "'${PROJECT_NAME}': DOS encodings disabled.") - set(USE_DOS OFF) - endif() +if(NOT LESS_BUILD + OR CMAKE_SYSTEM_NAME STREQUAL "Windows" + OR CMAKE_SYSTEM_NAME STREQUAL "Windows3x" + OR CMAKE_SYSTEM_NAME STREQUAL "DOS") + message(STATUS "'${PROJECT_NAME}': Use DOS encodings.") + set(USE_DOS ON) +else() + message(STATUS "'${PROJECT_NAME}': DOS encodings disabled.") + set(USE_DOS OFF) +endif() - if(NOT LESS_BUILD) - message(STATUS "'${PROJECT_NAME}': Use extra encodings.") - set(USE_EXTRA ON) - else() - message(STATUS "'${PROJECT_NAME}': Extra encodings disabled.") - set(USE_EXTRA OFF) - endif() +if(NOT LESS_BUILD) + message(STATUS "'${PROJECT_NAME}': Use extra encodings.") + set(USE_EXTRA ON) +else() + message(STATUS "'${PROJECT_NAME}': Extra encodings disabled.") + set(USE_EXTRA OFF) +endif() - if(USE_AIX) - # AIX specific encodings - test("stateless" "CP856") - test("stateless" "CP922") - test("stateless" "CP1046") - test("stateless" "CP1124") - test("stateless" "CP1129") - test("stateless" "CP1161") - test("stateless" "CP1162") - test("stateless" "CP1163") - endif() - - # OSF/1 encodings - # We use OSF/1 encodings for general encodings. - test("stateless" "DEC-KANJI") - test("stateless" "DEC-HANYU") +if(USE_AIX) + # AIX specific encodings + test("stateless" "CP856") + test("stateless" "CP922") + test("stateless" "CP1046") + test("stateless" "CP1124") + test("stateless" "CP1129") + test("stateless" "CP1161") + test("stateless" "CP1162") + test("stateless" "CP1163") +endif() - # DOS specific encodings - if(USE_DOS) - test("stateless" "CP437") - test("stateless" "CP737") - test("stateless" "CP775") - test("stateless" "CP852") - test("stateless" "CP853") - test("stateless" "CP855") - test("stateless" "CP857") - test("stateless" "CP858") - test("stateless" "CP860") - test("stateless" "CP861") - test("stateless" "CP863") - test("stateless" "CP864") - test("stateless" "CP865") - test("stateless" "CP869") - test("stateless" "CP1125") - endif() +# OSF/1 encodings +# We use OSF/1 encodings for general encodings. +test("stateless" "DEC-KANJI") +test("stateless" "DEC-HANYU") - # Extra encodings - if(USE_EXTRA) - test("stateless" "EUC-JISX0213") - test("stateless" "SHIFT_JISX0213") - test("stateful" "ISO-2022-JP-3") - test("stateless" "BIG5-2003") - test("stateless" "TDS565") - test("stateless" "ATARIST") - test("stateless" "RISCOS-LATIN1") - endif() +# DOS specific encodings +if(USE_DOS) + test("stateless" "CP437") + test("stateless" "CP737") + test("stateless" "CP775") + test("stateless" "CP852") + test("stateless" "CP853") + test("stateless" "CP855") + test("stateless" "CP857") + test("stateless" "CP858") + test("stateless" "CP860") + test("stateless" "CP861") + test("stateless" "CP863") + test("stateless" "CP864") + test("stateless" "CP865") + test("stateless" "CP869") + test("stateless" "CP1125") +endif() +# Extra encodings +if(USE_EXTRA) + test("stateless" "EUC-JISX0213") + test("stateless" "SHIFT_JISX0213") + test("stateful" "ISO-2022-JP-3") + test("stateless" "BIG5-2003") + test("stateless" "TDS565") + test("stateless" "ATARIST") + test("stateless" "RISCOS-LATIN1") endif() diff --git a/tests/uniq-u.hpp b/tests/uniq-u.hpp index 0e4d64df..bd7431ca 100644 --- a/tests/uniq-u.hpp +++ b/tests/uniq-u.hpp @@ -18,6 +18,7 @@ /* 2000-03-22 Trimmed down to the case of "uniq -u" by Bruno Haible. */ /* 2023-08-22 Change it to a C++ header for reiconv-test by ChenPi11. */ /* 2023-10-08 Use '#pragma once' for header. */ + #pragma once #include diff --git a/windows/libcppp-reiconv.rc.in b/windows/cppp-reiconv.rc.in similarity index 93% rename from windows/libcppp-reiconv.rc.in rename to windows/cppp-reiconv.rc.in index 80e70a03..135389df 100644 --- a/windows/libcppp-reiconv.rc.in +++ b/windows/cppp-reiconv.rc.in @@ -28,10 +28,10 @@ BEGIN VALUE "CompanyName", "The C++ Plus Project\0" VALUE "FileDescription", "LGPLed cppp-reiconv for Windows\0" VALUE "FileVersion", PROJECT_VERSION "\0" - VALUE "InternalName", "libcppp-reiconv.dll\0" + VALUE "InternalName", "cppp-reiconv.dll\0" VALUE "LegalCopyright", "Copyright (C) 2023\0" VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "libcppp-reiconv.dll\0" + VALUE "OriginalFilename", "cppp-reiconv.dll\0" VALUE "ProductName", "cppp-reiconv: character set conversion library\0" VALUE "ProductVersion", PROJECT_VERSION "\0" END From 5f6b2da1084813ed0c58b4f6d02f0e7f5a16dc66 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 25 Jul 2024 11:58:47 +0800 Subject: [PATCH 26/77] Move `COPYING` to `LICENSE`. --- CMakeLists.txt | 2 +- COPYING => LICENSE | 0 README.md | 2 +- include/cppp/reiconv.hpp.in | 2 +- lib/aliases2.h | 2 +- lib/armscii_8.h | 2 +- lib/ascii.h | 2 +- lib/atarist.h | 2 +- lib/big5.h | 2 +- lib/big5_2003.h | 2 +- lib/big5hkscs1999.h | 2 +- lib/big5hkscs2001.h | 2 +- lib/big5hkscs2004.h | 2 +- lib/big5hkscs2008.h | 2 +- lib/c99.h | 2 +- lib/ces_big5.h | 2 +- lib/ces_gbk.h | 2 +- lib/cjk_variants.h | 2 +- lib/cns11643.h | 2 +- lib/cns11643_1.h | 2 +- lib/cns11643_15.h | 2 +- lib/cns11643_2.h | 2 +- lib/cns11643_3.h | 2 +- lib/cns11643_4.h | 2 +- lib/cns11643_4a.h | 2 +- lib/cns11643_4b.h | 2 +- lib/cns11643_5.h | 2 +- lib/cns11643_6.h | 2 +- lib/cns11643_7.h | 2 +- lib/cns11643_inv.h | 2 +- lib/converters.h | 2 +- lib/cp1046.h | 2 +- lib/cp1124.h | 2 +- lib/cp1125.h | 2 +- lib/cp1129.h | 2 +- lib/cp1131.h | 2 +- lib/cp1133.h | 2 +- lib/cp1161.h | 2 +- lib/cp1162.h | 2 +- lib/cp1163.h | 2 +- lib/cp1250.h | 2 +- lib/cp1251.h | 2 +- lib/cp1252.h | 2 +- lib/cp1253.h | 2 +- lib/cp1254.h | 2 +- lib/cp1255.h | 2 +- lib/cp1256.h | 2 +- lib/cp1257.h | 2 +- lib/cp1258.h | 2 +- lib/cp437.h | 2 +- lib/cp50221_0208_ext.h | 2 +- lib/cp50221_0212_ext.h | 2 +- lib/cp737.h | 2 +- lib/cp775.h | 2 +- lib/cp850.h | 2 +- lib/cp852.h | 2 +- lib/cp853.h | 2 +- lib/cp855.h | 2 +- lib/cp856.h | 2 +- lib/cp857.h | 2 +- lib/cp858.h | 2 +- lib/cp860.h | 2 +- lib/cp861.h | 2 +- lib/cp862.h | 2 +- lib/cp863.h | 2 +- lib/cp864.h | 2 +- lib/cp865.h | 2 +- lib/cp866.h | 2 +- lib/cp869.h | 2 +- lib/cp874.h | 2 +- lib/cp922.h | 2 +- lib/cp932.h | 2 +- lib/cp932ext.h | 2 +- lib/cp936.h | 2 +- lib/cp936ext.h | 2 +- lib/cp943.h | 2 +- lib/cp949.h | 2 +- lib/cp950.h | 2 +- lib/cp950ext.h | 2 +- lib/dec_hanyu.h | 2 +- lib/dec_kanji.h | 2 +- lib/ebcdic037.h | 2 +- lib/ebcdic1025.h | 2 +- lib/ebcdic1026.h | 2 +- lib/ebcdic1047.h | 2 +- lib/ebcdic1097.h | 2 +- lib/ebcdic1112.h | 2 +- lib/ebcdic1122.h | 2 +- lib/ebcdic1123.h | 2 +- lib/ebcdic1130.h | 2 +- lib/ebcdic1132.h | 2 +- lib/ebcdic1137.h | 2 +- lib/ebcdic1140.h | 2 +- lib/ebcdic1141.h | 2 +- lib/ebcdic1142.h | 2 +- lib/ebcdic1143.h | 2 +- lib/ebcdic1144.h | 2 +- lib/ebcdic1145.h | 2 +- lib/ebcdic1146.h | 2 +- lib/ebcdic1147.h | 2 +- lib/ebcdic1148.h | 2 +- lib/ebcdic1149.h | 2 +- lib/ebcdic1153.h | 2 +- lib/ebcdic1154.h | 2 +- lib/ebcdic1155.h | 2 +- lib/ebcdic1156.h | 2 +- lib/ebcdic1157.h | 2 +- lib/ebcdic1158.h | 2 +- lib/ebcdic1160.h | 2 +- lib/ebcdic1164.h | 2 +- lib/ebcdic1165.h | 2 +- lib/ebcdic1166.h | 2 +- lib/ebcdic12712.h | 2 +- lib/ebcdic16804.h | 2 +- lib/ebcdic273.h | 2 +- lib/ebcdic277.h | 2 +- lib/ebcdic278.h | 2 +- lib/ebcdic280.h | 2 +- lib/ebcdic282.h | 2 +- lib/ebcdic284.h | 2 +- lib/ebcdic285.h | 2 +- lib/ebcdic297.h | 2 +- lib/ebcdic423.h | 2 +- lib/ebcdic424.h | 2 +- lib/ebcdic425.h | 2 +- lib/ebcdic4971.h | 2 +- lib/ebcdic500.h | 2 +- lib/ebcdic838.h | 2 +- lib/ebcdic870.h | 2 +- lib/ebcdic871.h | 2 +- lib/ebcdic875.h | 2 +- lib/ebcdic880.h | 2 +- lib/ebcdic905.h | 2 +- lib/ebcdic924.h | 2 +- lib/encodings.def | 2 +- lib/encodings_aix.def | 2 +- lib/encodings_dos.def | 2 +- lib/encodings_extra.def | 2 +- lib/encodings_zos.def | 2 +- lib/euc_cn.h | 2 +- lib/euc_jisx0213.h | 2 +- lib/euc_jp.h | 2 +- lib/euc_kr.h | 2 +- lib/euc_tw.h | 2 +- lib/flushwc.h | 2 +- lib/gb12345.h | 2 +- lib/gb12345ext.h | 2 +- lib/gb18030_2005.h | 2 +- lib/gb18030_2022.h | 2 +- lib/gb18030ext.h | 2 +- lib/gb18030uni.h | 2 +- lib/gb2312.h | 2 +- lib/gbk.h | 2 +- lib/gbkext1.h | 2 +- lib/gbkext2.h | 2 +- lib/gbkext_inv.h | 2 +- lib/georgian_academy.h | 2 +- lib/georgian_ps.h | 2 +- lib/hkscs1999.h | 2 +- lib/hkscs2001.h | 2 +- lib/hkscs2004.h | 2 +- lib/hkscs2008.h | 2 +- lib/hp_roman8.h | 2 +- lib/hz.h | 2 +- lib/iconv.cpp | 2 +- lib/iconv_open1.h | 2 +- lib/iconv_open2.h | 2 +- lib/iso2022_cn.h | 2 +- lib/iso2022_cnext.h | 2 +- lib/iso2022_jp.h | 2 +- lib/iso2022_jp1.h | 2 +- lib/iso2022_jp2.h | 2 +- lib/iso2022_jp3.h | 2 +- lib/iso2022_jpms.h | 2 +- lib/iso2022_kr.h | 2 +- lib/iso646_cn.h | 2 +- lib/iso646_jp.h | 2 +- lib/iso8859_1.h | 2 +- lib/iso8859_10.h | 2 +- lib/iso8859_11.h | 2 +- lib/iso8859_13.h | 2 +- lib/iso8859_14.h | 2 +- lib/iso8859_15.h | 2 +- lib/iso8859_16.h | 2 +- lib/iso8859_2.h | 2 +- lib/iso8859_3.h | 2 +- lib/iso8859_4.h | 2 +- lib/iso8859_5.h | 2 +- lib/iso8859_6.h | 2 +- lib/iso8859_7.h | 2 +- lib/iso8859_8.h | 2 +- lib/iso8859_9.h | 2 +- lib/isoir165.h | 2 +- lib/isoir165ext.h | 2 +- lib/java.h | 2 +- lib/jisx0201.h | 2 +- lib/jisx0208.h | 2 +- lib/jisx0212.h | 2 +- lib/jisx0213.h | 2 +- lib/johab.h | 2 +- lib/johab_hangul.h | 2 +- lib/koi8_r.h | 2 +- lib/koi8_ru.h | 2 +- lib/koi8_t.h | 2 +- lib/koi8_u.h | 2 +- lib/ksc5601.h | 2 +- lib/loop_unicode.h | 2 +- lib/loops.h | 2 +- lib/mac_arabic.h | 2 +- lib/mac_centraleurope.h | 2 +- lib/mac_croatian.h | 2 +- lib/mac_cyrillic.h | 2 +- lib/mac_greek.h | 2 +- lib/mac_hebrew.h | 2 +- lib/mac_iceland.h | 2 +- lib/mac_roman.h | 2 +- lib/mac_romania.h | 2 +- lib/mac_thai.h | 2 +- lib/mac_turkish.h | 2 +- lib/mac_ukraine.h | 2 +- lib/mulelao.h | 2 +- lib/nextstep.h | 2 +- lib/pt154.h | 2 +- lib/riscos1.h | 2 +- lib/rk1048.h | 2 +- lib/shift_jisx0213.h | 2 +- lib/sjis.h | 2 +- lib/tcvn.h | 2 +- lib/tds565.h | 2 +- lib/tis620.h | 2 +- lib/ucs2.h | 2 +- lib/ucs2be.h | 2 +- lib/ucs2internal.h | 2 +- lib/ucs2le.h | 2 +- lib/ucs2swapped.h | 2 +- lib/ucs4.h | 2 +- lib/ucs4be.h | 2 +- lib/ucs4internal.h | 2 +- lib/ucs4le.h | 2 +- lib/ucs4swapped.h | 2 +- lib/uhc_1.h | 2 +- lib/uhc_2.h | 2 +- lib/utf16.h | 2 +- lib/utf16be.h | 2 +- lib/utf16le.h | 2 +- lib/utf32.h | 2 +- lib/utf32be.h | 2 +- lib/utf32le.h | 2 +- lib/utf7.h | 2 +- lib/utf8.h | 2 +- lib/vietcomb.h | 2 +- lib/viscii.h | 2 +- tests/_iconv.hpp | 2 +- tests/check-ascii-converters.cpp | 2 +- tests/check-stateful.cpp | 2 +- tests/check-stateless.cpp | 2 +- tests/data-generator.cpp | 2 +- tests/reiconv-test.hpp | 2 +- tests/sort.cpp | 2 +- tests/sort.hpp | 2 +- tests/table-from.hpp | 2 +- tests/table-to.hpp | 2 +- tests/throw_error.hpp | 2 +- tests/utils.hpp | 2 +- tools/genaliases.cpp | 2 +- tools/genaliases2.cpp | 2 +- tools/genflags.cpp | 2 +- 267 files changed, 266 insertions(+), 266 deletions(-) rename COPYING => LICENSE (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1329f045..cfd28e13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with the cppp-reiconv library; see the file COPYING. +# License along with the cppp-reiconv library; see the file LICENSE. # If not, see . cmake_minimum_required(VERSION 3.12) diff --git a/COPYING b/LICENSE similarity index 100% rename from COPYING rename to LICENSE diff --git a/README.md b/README.md index ca0c1df5..29d9cb12 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,7 @@ To use it, simply #include and import the lib to use the func # Copyright The cppp-reiconv is under LGPLv3, -see file [COPYING](./COPYING). +see file [LICENSE](./LICENSE). # Download diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 7874569c..ba0f953f 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -20,7 +20,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* When installed, this file is called "cppp/reiconv.hpp". */ diff --git a/lib/aliases2.h b/lib/aliases2.h index d8d94bad..0a960601 100644 --- a/lib/aliases2.h +++ b/lib/aliases2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/armscii_8.h b/lib/armscii_8.h index 7794d972..3202f7e2 100644 --- a/lib/armscii_8.h +++ b/lib/armscii_8.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ascii.h b/lib/ascii.h index 93674567..b8ed01be 100644 --- a/lib/ascii.h +++ b/lib/ascii.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/atarist.h b/lib/atarist.h index 73c46baa..70628d44 100644 --- a/lib/atarist.h +++ b/lib/atarist.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/big5.h b/lib/big5.h index 708f3145..28552e3a 100644 --- a/lib/big5.h +++ b/lib/big5.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/big5_2003.h b/lib/big5_2003.h index 6051bfb7..90332b23 100644 --- a/lib/big5_2003.h +++ b/lib/big5_2003.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/big5hkscs1999.h b/lib/big5hkscs1999.h index ad38d1de..4585da71 100644 --- a/lib/big5hkscs1999.h +++ b/lib/big5hkscs1999.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/big5hkscs2001.h b/lib/big5hkscs2001.h index ffd57199..2d105447 100644 --- a/lib/big5hkscs2001.h +++ b/lib/big5hkscs2001.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/big5hkscs2004.h b/lib/big5hkscs2004.h index 412b508f..cc8bbeb5 100644 --- a/lib/big5hkscs2004.h +++ b/lib/big5hkscs2004.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/big5hkscs2008.h b/lib/big5hkscs2008.h index 79184a48..ae84c68d 100644 --- a/lib/big5hkscs2008.h +++ b/lib/big5hkscs2008.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/c99.h b/lib/c99.h index fda70a91..df1c6bac 100644 --- a/lib/c99.h +++ b/lib/c99.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ces_big5.h b/lib/ces_big5.h index 8586f0b7..793bddb4 100644 --- a/lib/ces_big5.h +++ b/lib/ces_big5.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ces_gbk.h b/lib/ces_gbk.h index bc987b99..8ad8531f 100644 --- a/lib/ces_gbk.h +++ b/lib/ces_gbk.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cjk_variants.h b/lib/cjk_variants.h index d4b5543f..1e1b5f9b 100644 --- a/lib/cjk_variants.h +++ b/lib/cjk_variants.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643.h b/lib/cns11643.h index c3c3c627..2b7f6c0b 100644 --- a/lib/cns11643.h +++ b/lib/cns11643.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_1.h b/lib/cns11643_1.h index 80349fb5..5246c267 100644 --- a/lib/cns11643_1.h +++ b/lib/cns11643_1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_15.h b/lib/cns11643_15.h index 2bbb128a..b26b2345 100644 --- a/lib/cns11643_15.h +++ b/lib/cns11643_15.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_2.h b/lib/cns11643_2.h index 1426e640..ab608b83 100644 --- a/lib/cns11643_2.h +++ b/lib/cns11643_2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_3.h b/lib/cns11643_3.h index 20e55de6..8e3edb07 100644 --- a/lib/cns11643_3.h +++ b/lib/cns11643_3.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_4.h b/lib/cns11643_4.h index e3929ae2..78c5b6fc 100644 --- a/lib/cns11643_4.h +++ b/lib/cns11643_4.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_4a.h b/lib/cns11643_4a.h index 956f2a74..c6d91540 100644 --- a/lib/cns11643_4a.h +++ b/lib/cns11643_4a.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_4b.h b/lib/cns11643_4b.h index e7e010f5..fac2b5c8 100644 --- a/lib/cns11643_4b.h +++ b/lib/cns11643_4b.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_5.h b/lib/cns11643_5.h index ed686fe4..aec9e380 100644 --- a/lib/cns11643_5.h +++ b/lib/cns11643_5.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_6.h b/lib/cns11643_6.h index e4ca85d8..7a920ec7 100644 --- a/lib/cns11643_6.h +++ b/lib/cns11643_6.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_7.h b/lib/cns11643_7.h index 5ce1bd9d..8544f4f0 100644 --- a/lib/cns11643_7.h +++ b/lib/cns11643_7.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cns11643_inv.h b/lib/cns11643_inv.h index 0b86649a..c5cb1d42 100644 --- a/lib/cns11643_inv.h +++ b/lib/cns11643_inv.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/converters.h b/lib/converters.h index 612909ff..f2fc3732 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1046.h b/lib/cp1046.h index d882af2d..c98eb0bf 100644 --- a/lib/cp1046.h +++ b/lib/cp1046.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1124.h b/lib/cp1124.h index 4a47a396..fe91ac7e 100644 --- a/lib/cp1124.h +++ b/lib/cp1124.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1125.h b/lib/cp1125.h index 836dcce9..b3ba9b7a 100644 --- a/lib/cp1125.h +++ b/lib/cp1125.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1129.h b/lib/cp1129.h index 8795d5f7..8713ce99 100644 --- a/lib/cp1129.h +++ b/lib/cp1129.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1131.h b/lib/cp1131.h index 7be44ab4..b1470dbc 100644 --- a/lib/cp1131.h +++ b/lib/cp1131.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1133.h b/lib/cp1133.h index 53323680..8a2f9b1c 100644 --- a/lib/cp1133.h +++ b/lib/cp1133.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1161.h b/lib/cp1161.h index c877ac71..ab9f4a90 100644 --- a/lib/cp1161.h +++ b/lib/cp1161.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1162.h b/lib/cp1162.h index be7fb433..ee9535f7 100644 --- a/lib/cp1162.h +++ b/lib/cp1162.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1163.h b/lib/cp1163.h index aafb5a17..383b7a25 100644 --- a/lib/cp1163.h +++ b/lib/cp1163.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1250.h b/lib/cp1250.h index 5f6755f3..1b4791c5 100644 --- a/lib/cp1250.h +++ b/lib/cp1250.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1251.h b/lib/cp1251.h index 0f2d5eca..82bb631a 100644 --- a/lib/cp1251.h +++ b/lib/cp1251.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1252.h b/lib/cp1252.h index de494ee4..08057d9f 100644 --- a/lib/cp1252.h +++ b/lib/cp1252.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1253.h b/lib/cp1253.h index 1f27e375..59d63017 100644 --- a/lib/cp1253.h +++ b/lib/cp1253.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1254.h b/lib/cp1254.h index afeac5c4..2d654a1d 100644 --- a/lib/cp1254.h +++ b/lib/cp1254.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1255.h b/lib/cp1255.h index 6d71a971..e06a05c5 100644 --- a/lib/cp1255.h +++ b/lib/cp1255.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1256.h b/lib/cp1256.h index 0254e1db..cc5af5ca 100644 --- a/lib/cp1256.h +++ b/lib/cp1256.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1257.h b/lib/cp1257.h index 4f6a282a..0c1714b0 100644 --- a/lib/cp1257.h +++ b/lib/cp1257.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp1258.h b/lib/cp1258.h index ae804cce..b274beaa 100644 --- a/lib/cp1258.h +++ b/lib/cp1258.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp437.h b/lib/cp437.h index 146ce0de..6276bd52 100644 --- a/lib/cp437.h +++ b/lib/cp437.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp50221_0208_ext.h b/lib/cp50221_0208_ext.h index eb221908..e534ede6 100644 --- a/lib/cp50221_0208_ext.h +++ b/lib/cp50221_0208_ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp50221_0212_ext.h b/lib/cp50221_0212_ext.h index 355a98f1..5d401437 100644 --- a/lib/cp50221_0212_ext.h +++ b/lib/cp50221_0212_ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp737.h b/lib/cp737.h index 5552ea17..364906ba 100644 --- a/lib/cp737.h +++ b/lib/cp737.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp775.h b/lib/cp775.h index db6aa949..3609ae59 100644 --- a/lib/cp775.h +++ b/lib/cp775.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp850.h b/lib/cp850.h index 508d5e3e..ebe900fe 100644 --- a/lib/cp850.h +++ b/lib/cp850.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp852.h b/lib/cp852.h index af41d758..2d3a5a2e 100644 --- a/lib/cp852.h +++ b/lib/cp852.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp853.h b/lib/cp853.h index 1fbc31d2..8b9e0b49 100644 --- a/lib/cp853.h +++ b/lib/cp853.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp855.h b/lib/cp855.h index bc7b0e87..df8f0e01 100644 --- a/lib/cp855.h +++ b/lib/cp855.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp856.h b/lib/cp856.h index 3b1ffcaa..831cbac4 100644 --- a/lib/cp856.h +++ b/lib/cp856.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp857.h b/lib/cp857.h index 26afee12..32985d25 100644 --- a/lib/cp857.h +++ b/lib/cp857.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp858.h b/lib/cp858.h index e3bb488c..cd472fd3 100644 --- a/lib/cp858.h +++ b/lib/cp858.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp860.h b/lib/cp860.h index d66de0e7..9da582bf 100644 --- a/lib/cp860.h +++ b/lib/cp860.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp861.h b/lib/cp861.h index 3d5a0876..f365ff55 100644 --- a/lib/cp861.h +++ b/lib/cp861.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp862.h b/lib/cp862.h index 913dad29..e9316745 100644 --- a/lib/cp862.h +++ b/lib/cp862.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp863.h b/lib/cp863.h index 1e9d9075..46c1d87d 100644 --- a/lib/cp863.h +++ b/lib/cp863.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp864.h b/lib/cp864.h index 8c33630f..30d77cf9 100644 --- a/lib/cp864.h +++ b/lib/cp864.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp865.h b/lib/cp865.h index 1f9e3427..8d3c1dfa 100644 --- a/lib/cp865.h +++ b/lib/cp865.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp866.h b/lib/cp866.h index e9ca424c..557b2155 100644 --- a/lib/cp866.h +++ b/lib/cp866.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp869.h b/lib/cp869.h index 3705e024..65b917c7 100644 --- a/lib/cp869.h +++ b/lib/cp869.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp874.h b/lib/cp874.h index 7e1bf6f1..46c46e4b 100644 --- a/lib/cp874.h +++ b/lib/cp874.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp922.h b/lib/cp922.h index b7f7720d..14e483a7 100644 --- a/lib/cp922.h +++ b/lib/cp922.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp932.h b/lib/cp932.h index de59fa78..a20bf419 100644 --- a/lib/cp932.h +++ b/lib/cp932.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp932ext.h b/lib/cp932ext.h index c98c78e6..4a30b426 100644 --- a/lib/cp932ext.h +++ b/lib/cp932ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp936.h b/lib/cp936.h index a4501b40..f3595237 100644 --- a/lib/cp936.h +++ b/lib/cp936.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp936ext.h b/lib/cp936ext.h index 7837c80f..439a4883 100644 --- a/lib/cp936ext.h +++ b/lib/cp936ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp943.h b/lib/cp943.h index f9e33018..2f966b00 100644 --- a/lib/cp943.h +++ b/lib/cp943.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp949.h b/lib/cp949.h index 5e7cdd12..7a420bcc 100644 --- a/lib/cp949.h +++ b/lib/cp949.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp950.h b/lib/cp950.h index 6c007023..f842b30a 100644 --- a/lib/cp950.h +++ b/lib/cp950.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/cp950ext.h b/lib/cp950ext.h index 0f4a3b22..81e14174 100644 --- a/lib/cp950ext.h +++ b/lib/cp950ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/dec_hanyu.h b/lib/dec_hanyu.h index e4e7018b..cfea7141 100644 --- a/lib/dec_hanyu.h +++ b/lib/dec_hanyu.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/dec_kanji.h b/lib/dec_kanji.h index 7f506021..817921e2 100644 --- a/lib/dec_kanji.h +++ b/lib/dec_kanji.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic037.h b/lib/ebcdic037.h index e2b6af91..b12943f6 100644 --- a/lib/ebcdic037.h +++ b/lib/ebcdic037.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1025.h b/lib/ebcdic1025.h index adc4d2f2..55e4b15e 100644 --- a/lib/ebcdic1025.h +++ b/lib/ebcdic1025.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1026.h b/lib/ebcdic1026.h index a0f005b6..dfb7e363 100644 --- a/lib/ebcdic1026.h +++ b/lib/ebcdic1026.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1047.h b/lib/ebcdic1047.h index 665a8313..c811359f 100644 --- a/lib/ebcdic1047.h +++ b/lib/ebcdic1047.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1097.h b/lib/ebcdic1097.h index ffa3de5d..2cbd6ee0 100644 --- a/lib/ebcdic1097.h +++ b/lib/ebcdic1097.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1112.h b/lib/ebcdic1112.h index acce716a..0d46fbd2 100644 --- a/lib/ebcdic1112.h +++ b/lib/ebcdic1112.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1122.h b/lib/ebcdic1122.h index 22512af9..608538d6 100644 --- a/lib/ebcdic1122.h +++ b/lib/ebcdic1122.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1123.h b/lib/ebcdic1123.h index 7b8f29f4..ea3f66c2 100644 --- a/lib/ebcdic1123.h +++ b/lib/ebcdic1123.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1130.h b/lib/ebcdic1130.h index 2ec5b23b..ef522974 100644 --- a/lib/ebcdic1130.h +++ b/lib/ebcdic1130.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1132.h b/lib/ebcdic1132.h index cebe3a30..5481b42f 100644 --- a/lib/ebcdic1132.h +++ b/lib/ebcdic1132.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1137.h b/lib/ebcdic1137.h index f5cb7b47..cebfcf3d 100644 --- a/lib/ebcdic1137.h +++ b/lib/ebcdic1137.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1140.h b/lib/ebcdic1140.h index 3b57c16b..9e285f4e 100644 --- a/lib/ebcdic1140.h +++ b/lib/ebcdic1140.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1141.h b/lib/ebcdic1141.h index 8ab9a2da..4702dbf1 100644 --- a/lib/ebcdic1141.h +++ b/lib/ebcdic1141.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1142.h b/lib/ebcdic1142.h index 5ef222bd..970af113 100644 --- a/lib/ebcdic1142.h +++ b/lib/ebcdic1142.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1143.h b/lib/ebcdic1143.h index 06ea4336..5e20b344 100644 --- a/lib/ebcdic1143.h +++ b/lib/ebcdic1143.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1144.h b/lib/ebcdic1144.h index 6753a306..b6ff6d48 100644 --- a/lib/ebcdic1144.h +++ b/lib/ebcdic1144.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1145.h b/lib/ebcdic1145.h index e9b3533d..fd4058c3 100644 --- a/lib/ebcdic1145.h +++ b/lib/ebcdic1145.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1146.h b/lib/ebcdic1146.h index 5197cab6..2e3b1bf2 100644 --- a/lib/ebcdic1146.h +++ b/lib/ebcdic1146.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1147.h b/lib/ebcdic1147.h index 4880c9de..4fc84a32 100644 --- a/lib/ebcdic1147.h +++ b/lib/ebcdic1147.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1148.h b/lib/ebcdic1148.h index 28716e08..b923727e 100644 --- a/lib/ebcdic1148.h +++ b/lib/ebcdic1148.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1149.h b/lib/ebcdic1149.h index deffb4eb..9cebc999 100644 --- a/lib/ebcdic1149.h +++ b/lib/ebcdic1149.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1153.h b/lib/ebcdic1153.h index dbf9e219..00a4313b 100644 --- a/lib/ebcdic1153.h +++ b/lib/ebcdic1153.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1154.h b/lib/ebcdic1154.h index 8b24c373..20ea188e 100644 --- a/lib/ebcdic1154.h +++ b/lib/ebcdic1154.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1155.h b/lib/ebcdic1155.h index 101a1e4c..8aa2638f 100644 --- a/lib/ebcdic1155.h +++ b/lib/ebcdic1155.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1156.h b/lib/ebcdic1156.h index 53ee6f7d..a5d55457 100644 --- a/lib/ebcdic1156.h +++ b/lib/ebcdic1156.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1157.h b/lib/ebcdic1157.h index 096f7766..9f7ed470 100644 --- a/lib/ebcdic1157.h +++ b/lib/ebcdic1157.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1158.h b/lib/ebcdic1158.h index 38a07b03..bacf9264 100644 --- a/lib/ebcdic1158.h +++ b/lib/ebcdic1158.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1160.h b/lib/ebcdic1160.h index 239f940f..ed3b9702 100644 --- a/lib/ebcdic1160.h +++ b/lib/ebcdic1160.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1164.h b/lib/ebcdic1164.h index 5b9ab7aa..692850c7 100644 --- a/lib/ebcdic1164.h +++ b/lib/ebcdic1164.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1165.h b/lib/ebcdic1165.h index 19ba26e0..6431c940 100644 --- a/lib/ebcdic1165.h +++ b/lib/ebcdic1165.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic1166.h b/lib/ebcdic1166.h index c2b981d7..407e57a3 100644 --- a/lib/ebcdic1166.h +++ b/lib/ebcdic1166.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic12712.h b/lib/ebcdic12712.h index aaa02639..29f97fcd 100644 --- a/lib/ebcdic12712.h +++ b/lib/ebcdic12712.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic16804.h b/lib/ebcdic16804.h index 17aa1dce..f8415341 100644 --- a/lib/ebcdic16804.h +++ b/lib/ebcdic16804.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic273.h b/lib/ebcdic273.h index d0166b47..f183e707 100644 --- a/lib/ebcdic273.h +++ b/lib/ebcdic273.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic277.h b/lib/ebcdic277.h index dd9e64de..77818e9c 100644 --- a/lib/ebcdic277.h +++ b/lib/ebcdic277.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic278.h b/lib/ebcdic278.h index d63db611..8b0229ad 100644 --- a/lib/ebcdic278.h +++ b/lib/ebcdic278.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic280.h b/lib/ebcdic280.h index add8c6c0..5e843d00 100644 --- a/lib/ebcdic280.h +++ b/lib/ebcdic280.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic282.h b/lib/ebcdic282.h index ae0f0024..42ece938 100644 --- a/lib/ebcdic282.h +++ b/lib/ebcdic282.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic284.h b/lib/ebcdic284.h index 03efd703..7e9c4cbb 100644 --- a/lib/ebcdic284.h +++ b/lib/ebcdic284.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic285.h b/lib/ebcdic285.h index 5b22e166..ab43e797 100644 --- a/lib/ebcdic285.h +++ b/lib/ebcdic285.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic297.h b/lib/ebcdic297.h index 54824c7a..aa833e69 100644 --- a/lib/ebcdic297.h +++ b/lib/ebcdic297.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic423.h b/lib/ebcdic423.h index 54d0a367..1dcb3cb0 100644 --- a/lib/ebcdic423.h +++ b/lib/ebcdic423.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic424.h b/lib/ebcdic424.h index e2346cb6..6aaeb7bb 100644 --- a/lib/ebcdic424.h +++ b/lib/ebcdic424.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic425.h b/lib/ebcdic425.h index 36da6bee..4af5c4c3 100644 --- a/lib/ebcdic425.h +++ b/lib/ebcdic425.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic4971.h b/lib/ebcdic4971.h index 9c9494f2..953b7e7a 100644 --- a/lib/ebcdic4971.h +++ b/lib/ebcdic4971.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic500.h b/lib/ebcdic500.h index 190b0dca..247fa463 100644 --- a/lib/ebcdic500.h +++ b/lib/ebcdic500.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic838.h b/lib/ebcdic838.h index 4cecef5a..5ac8cc61 100644 --- a/lib/ebcdic838.h +++ b/lib/ebcdic838.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic870.h b/lib/ebcdic870.h index 59ce2e30..42e3c903 100644 --- a/lib/ebcdic870.h +++ b/lib/ebcdic870.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic871.h b/lib/ebcdic871.h index 59cef078..8563759c 100644 --- a/lib/ebcdic871.h +++ b/lib/ebcdic871.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic875.h b/lib/ebcdic875.h index 37924d71..817235bb 100644 --- a/lib/ebcdic875.h +++ b/lib/ebcdic875.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic880.h b/lib/ebcdic880.h index a06e0a19..45ffd52c 100644 --- a/lib/ebcdic880.h +++ b/lib/ebcdic880.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic905.h b/lib/ebcdic905.h index 7cfe6187..0433df70 100644 --- a/lib/ebcdic905.h +++ b/lib/ebcdic905.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ebcdic924.h b/lib/ebcdic924.h index 88e8385f..c03eac4b 100644 --- a/lib/ebcdic924.h +++ b/lib/ebcdic924.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/encodings.def b/lib/encodings.def index 6f3fd8e9..2ed56483 100644 --- a/lib/encodings.def +++ b/lib/encodings.def @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* The list of all system independent user-visible encodings. */ diff --git a/lib/encodings_aix.def b/lib/encodings_aix.def index 95b1fbd2..0cc21ec6 100644 --- a/lib/encodings_aix.def +++ b/lib/encodings_aix.def @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* Encodings used by system dependent locales on AIX. */ diff --git a/lib/encodings_dos.def b/lib/encodings_dos.def index 32c5e974..9f51168b 100644 --- a/lib/encodings_dos.def +++ b/lib/encodings_dos.def @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* Encodings used by system dependent locales on MSDOS. */ diff --git a/lib/encodings_extra.def b/lib/encodings_extra.def index 6b579e24..c3b000ea 100644 --- a/lib/encodings_extra.def +++ b/lib/encodings_extra.def @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ DEFENCODING(( "EUC-JISX0213", diff --git a/lib/encodings_zos.def b/lib/encodings_zos.def index 5cc0278e..98c1281e 100644 --- a/lib/encodings_zos.def +++ b/lib/encodings_zos.def @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* Encodings used by system dependent locales on z/OS. */ diff --git a/lib/euc_cn.h b/lib/euc_cn.h index 37012921..51a9f35a 100644 --- a/lib/euc_cn.h +++ b/lib/euc_cn.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/euc_jisx0213.h b/lib/euc_jisx0213.h index 9cf2ee0c..74dce3a0 100644 --- a/lib/euc_jisx0213.h +++ b/lib/euc_jisx0213.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/euc_jp.h b/lib/euc_jp.h index 828f04f4..985c4c53 100644 --- a/lib/euc_jp.h +++ b/lib/euc_jp.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/euc_kr.h b/lib/euc_kr.h index e1fb10a3..a4480eb2 100644 --- a/lib/euc_kr.h +++ b/lib/euc_kr.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/euc_tw.h b/lib/euc_tw.h index 97fd3a05..671cb9d6 100644 --- a/lib/euc_tw.h +++ b/lib/euc_tw.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/flushwc.h b/lib/flushwc.h index d3439519..ef3b3565 100644 --- a/lib/flushwc.h +++ b/lib/flushwc.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb12345.h b/lib/gb12345.h index b95dec4f..7c3c3f38 100644 --- a/lib/gb12345.h +++ b/lib/gb12345.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb12345ext.h b/lib/gb12345ext.h index a9bd4425..9e3775ce 100644 --- a/lib/gb12345ext.h +++ b/lib/gb12345ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb18030_2005.h b/lib/gb18030_2005.h index 85233a3a..7fe108eb 100644 --- a/lib/gb18030_2005.h +++ b/lib/gb18030_2005.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb18030_2022.h b/lib/gb18030_2022.h index 0977a7c3..3a84e4e0 100644 --- a/lib/gb18030_2022.h +++ b/lib/gb18030_2022.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb18030ext.h b/lib/gb18030ext.h index 64bce198..3d1e15f8 100644 --- a/lib/gb18030ext.h +++ b/lib/gb18030ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb18030uni.h b/lib/gb18030uni.h index 5a880700..e99b6932 100644 --- a/lib/gb18030uni.h +++ b/lib/gb18030uni.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gb2312.h b/lib/gb2312.h index bdbfeac5..b7649a91 100644 --- a/lib/gb2312.h +++ b/lib/gb2312.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gbk.h b/lib/gbk.h index 00d16002..544793b0 100644 --- a/lib/gbk.h +++ b/lib/gbk.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gbkext1.h b/lib/gbkext1.h index 01ed429a..da4bf699 100644 --- a/lib/gbkext1.h +++ b/lib/gbkext1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gbkext2.h b/lib/gbkext2.h index 03114db9..0d3308fd 100644 --- a/lib/gbkext2.h +++ b/lib/gbkext2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/gbkext_inv.h b/lib/gbkext_inv.h index a5dc7d43..908fe04a 100644 --- a/lib/gbkext_inv.h +++ b/lib/gbkext_inv.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/georgian_academy.h b/lib/georgian_academy.h index 62e30920..0089a620 100644 --- a/lib/georgian_academy.h +++ b/lib/georgian_academy.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/georgian_ps.h b/lib/georgian_ps.h index 4970a360..898fee1e 100644 --- a/lib/georgian_ps.h +++ b/lib/georgian_ps.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/hkscs1999.h b/lib/hkscs1999.h index af3b989e..438032ca 100644 --- a/lib/hkscs1999.h +++ b/lib/hkscs1999.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/hkscs2001.h b/lib/hkscs2001.h index 9409a6bf..eccffb15 100644 --- a/lib/hkscs2001.h +++ b/lib/hkscs2001.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/hkscs2004.h b/lib/hkscs2004.h index f0557e3f..9016d4ef 100644 --- a/lib/hkscs2004.h +++ b/lib/hkscs2004.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/hkscs2008.h b/lib/hkscs2008.h index f387cea5..5a6d3bc2 100644 --- a/lib/hkscs2008.h +++ b/lib/hkscs2008.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/hp_roman8.h b/lib/hp_roman8.h index a51ea3a9..9c13e3f4 100644 --- a/lib/hp_roman8.h +++ b/lib/hp_roman8.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/hz.h b/lib/hz.h index 77c9e7bd..bc7fd5d5 100644 --- a/lib/hz.h +++ b/lib/hz.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 85a1565e..7109c4a3 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iconv_open1.h b/lib/iconv_open1.h index ba17c448..7193eeaa 100644 --- a/lib/iconv_open1.h +++ b/lib/iconv_open1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iconv_open2.h b/lib/iconv_open2.h index af04e042..bcb4bca2 100644 --- a/lib/iconv_open2.h +++ b/lib/iconv_open2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_cn.h b/lib/iso2022_cn.h index c2986119..dc90d88d 100644 --- a/lib/iso2022_cn.h +++ b/lib/iso2022_cn.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_cnext.h b/lib/iso2022_cnext.h index 52a0b26b..282cc314 100644 --- a/lib/iso2022_cnext.h +++ b/lib/iso2022_cnext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_jp.h b/lib/iso2022_jp.h index c9924b87..3e4fb263 100644 --- a/lib/iso2022_jp.h +++ b/lib/iso2022_jp.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_jp1.h b/lib/iso2022_jp1.h index a322882e..bb58b471 100644 --- a/lib/iso2022_jp1.h +++ b/lib/iso2022_jp1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_jp2.h b/lib/iso2022_jp2.h index 6e374103..287db1b7 100644 --- a/lib/iso2022_jp2.h +++ b/lib/iso2022_jp2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_jp3.h b/lib/iso2022_jp3.h index 4c81d2fc..0af21c84 100644 --- a/lib/iso2022_jp3.h +++ b/lib/iso2022_jp3.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_jpms.h b/lib/iso2022_jpms.h index 62347be2..c814c11b 100644 --- a/lib/iso2022_jpms.h +++ b/lib/iso2022_jpms.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso2022_kr.h b/lib/iso2022_kr.h index d44f2216..e8302bfb 100644 --- a/lib/iso2022_kr.h +++ b/lib/iso2022_kr.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso646_cn.h b/lib/iso646_cn.h index 9a2f6e7d..3b48aeea 100644 --- a/lib/iso646_cn.h +++ b/lib/iso646_cn.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso646_jp.h b/lib/iso646_jp.h index f5e0581b..3519a698 100644 --- a/lib/iso646_jp.h +++ b/lib/iso646_jp.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_1.h b/lib/iso8859_1.h index c35ceeb9..f0ad9b5e 100644 --- a/lib/iso8859_1.h +++ b/lib/iso8859_1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_10.h b/lib/iso8859_10.h index 9de1fd0c..4fa101fe 100644 --- a/lib/iso8859_10.h +++ b/lib/iso8859_10.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_11.h b/lib/iso8859_11.h index 22eaf289..b9222451 100644 --- a/lib/iso8859_11.h +++ b/lib/iso8859_11.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_13.h b/lib/iso8859_13.h index 643d6177..37ef8901 100644 --- a/lib/iso8859_13.h +++ b/lib/iso8859_13.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_14.h b/lib/iso8859_14.h index 8a096e24..bcdad87f 100644 --- a/lib/iso8859_14.h +++ b/lib/iso8859_14.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_15.h b/lib/iso8859_15.h index 0b3193f5..dadcbe75 100644 --- a/lib/iso8859_15.h +++ b/lib/iso8859_15.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_16.h b/lib/iso8859_16.h index 8e77fd52..0f454d4a 100644 --- a/lib/iso8859_16.h +++ b/lib/iso8859_16.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_2.h b/lib/iso8859_2.h index 362d687c..1b7232bc 100644 --- a/lib/iso8859_2.h +++ b/lib/iso8859_2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_3.h b/lib/iso8859_3.h index 027f6608..1c25c815 100644 --- a/lib/iso8859_3.h +++ b/lib/iso8859_3.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_4.h b/lib/iso8859_4.h index 015777d2..c1a947e6 100644 --- a/lib/iso8859_4.h +++ b/lib/iso8859_4.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_5.h b/lib/iso8859_5.h index f9ed4ee0..fa975c1a 100644 --- a/lib/iso8859_5.h +++ b/lib/iso8859_5.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_6.h b/lib/iso8859_6.h index f1f30ac1..0b3ac799 100644 --- a/lib/iso8859_6.h +++ b/lib/iso8859_6.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_7.h b/lib/iso8859_7.h index fa1db656..05944f4b 100644 --- a/lib/iso8859_7.h +++ b/lib/iso8859_7.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_8.h b/lib/iso8859_8.h index 4908b853..19631042 100644 --- a/lib/iso8859_8.h +++ b/lib/iso8859_8.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/iso8859_9.h b/lib/iso8859_9.h index 63b84eb5..be13b547 100644 --- a/lib/iso8859_9.h +++ b/lib/iso8859_9.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/isoir165.h b/lib/isoir165.h index da668fc0..08b3f661 100644 --- a/lib/isoir165.h +++ b/lib/isoir165.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/isoir165ext.h b/lib/isoir165ext.h index 868deadd..08a47e31 100644 --- a/lib/isoir165ext.h +++ b/lib/isoir165ext.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/java.h b/lib/java.h index 1f0ef85a..037cc744 100644 --- a/lib/java.h +++ b/lib/java.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/jisx0201.h b/lib/jisx0201.h index 11d1e6a5..0f8464e2 100644 --- a/lib/jisx0201.h +++ b/lib/jisx0201.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/jisx0208.h b/lib/jisx0208.h index 58b59932..4d2d12d0 100644 --- a/lib/jisx0208.h +++ b/lib/jisx0208.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/jisx0212.h b/lib/jisx0212.h index 9bd938e1..67b7db18 100644 --- a/lib/jisx0212.h +++ b/lib/jisx0212.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/jisx0213.h b/lib/jisx0213.h index 64302cc6..d367b705 100644 --- a/lib/jisx0213.h +++ b/lib/jisx0213.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/johab.h b/lib/johab.h index 51432b5f..51fd1645 100644 --- a/lib/johab.h +++ b/lib/johab.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/johab_hangul.h b/lib/johab_hangul.h index 2094b4b4..f24b6324 100644 --- a/lib/johab_hangul.h +++ b/lib/johab_hangul.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/koi8_r.h b/lib/koi8_r.h index 855120b0..a825378e 100644 --- a/lib/koi8_r.h +++ b/lib/koi8_r.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/koi8_ru.h b/lib/koi8_ru.h index 698d07a8..7067ee8a 100644 --- a/lib/koi8_ru.h +++ b/lib/koi8_ru.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/koi8_t.h b/lib/koi8_t.h index eadf266f..94d34c8f 100644 --- a/lib/koi8_t.h +++ b/lib/koi8_t.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/koi8_u.h b/lib/koi8_u.h index 5d67b8ae..160bd2c8 100644 --- a/lib/koi8_u.h +++ b/lib/koi8_u.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ksc5601.h b/lib/ksc5601.h index 59ddb158..961ffafb 100644 --- a/lib/ksc5601.h +++ b/lib/ksc5601.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/loop_unicode.h b/lib/loop_unicode.h index 7650312d..4c7d0565 100644 --- a/lib/loop_unicode.h +++ b/lib/loop_unicode.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/loops.h b/lib/loops.h index 63826a78..7a6c84f9 100644 --- a/lib/loops.h +++ b/lib/loops.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_arabic.h b/lib/mac_arabic.h index 5b96f25e..5aa1a405 100644 --- a/lib/mac_arabic.h +++ b/lib/mac_arabic.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_centraleurope.h b/lib/mac_centraleurope.h index 46ee9fbe..ae9aee05 100644 --- a/lib/mac_centraleurope.h +++ b/lib/mac_centraleurope.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_croatian.h b/lib/mac_croatian.h index 60c0d35b..24e257e3 100644 --- a/lib/mac_croatian.h +++ b/lib/mac_croatian.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_cyrillic.h b/lib/mac_cyrillic.h index c178ee0f..eab9e727 100644 --- a/lib/mac_cyrillic.h +++ b/lib/mac_cyrillic.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_greek.h b/lib/mac_greek.h index a29ed7f3..6749fcd3 100644 --- a/lib/mac_greek.h +++ b/lib/mac_greek.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_hebrew.h b/lib/mac_hebrew.h index 22ef485e..43bf4122 100644 --- a/lib/mac_hebrew.h +++ b/lib/mac_hebrew.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_iceland.h b/lib/mac_iceland.h index f0a92bc9..69ff15a0 100644 --- a/lib/mac_iceland.h +++ b/lib/mac_iceland.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_roman.h b/lib/mac_roman.h index 368fa68a..7e23019e 100644 --- a/lib/mac_roman.h +++ b/lib/mac_roman.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_romania.h b/lib/mac_romania.h index cd4c857d..a60949e3 100644 --- a/lib/mac_romania.h +++ b/lib/mac_romania.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_thai.h b/lib/mac_thai.h index 42f451e1..5144458f 100644 --- a/lib/mac_thai.h +++ b/lib/mac_thai.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_turkish.h b/lib/mac_turkish.h index 196c51b4..fa8b4348 100644 --- a/lib/mac_turkish.h +++ b/lib/mac_turkish.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mac_ukraine.h b/lib/mac_ukraine.h index d9c4e349..f57da08f 100644 --- a/lib/mac_ukraine.h +++ b/lib/mac_ukraine.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/mulelao.h b/lib/mulelao.h index 4538b6a7..1e7ef5c5 100644 --- a/lib/mulelao.h +++ b/lib/mulelao.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/nextstep.h b/lib/nextstep.h index 8c75b57e..6afae4c3 100644 --- a/lib/nextstep.h +++ b/lib/nextstep.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/pt154.h b/lib/pt154.h index b68cbb35..aa440b83 100644 --- a/lib/pt154.h +++ b/lib/pt154.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/riscos1.h b/lib/riscos1.h index eccfdda2..3a9f6d24 100644 --- a/lib/riscos1.h +++ b/lib/riscos1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/rk1048.h b/lib/rk1048.h index 58a68ae4..a4106cb7 100644 --- a/lib/rk1048.h +++ b/lib/rk1048.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/shift_jisx0213.h b/lib/shift_jisx0213.h index 5b2d692b..b84ec636 100644 --- a/lib/shift_jisx0213.h +++ b/lib/shift_jisx0213.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/sjis.h b/lib/sjis.h index 8d2c2ee4..521dfce7 100644 --- a/lib/sjis.h +++ b/lib/sjis.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/tcvn.h b/lib/tcvn.h index 80e35086..7292ba9d 100644 --- a/lib/tcvn.h +++ b/lib/tcvn.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/tds565.h b/lib/tds565.h index 8382389a..073af424 100644 --- a/lib/tds565.h +++ b/lib/tds565.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/tis620.h b/lib/tis620.h index 8ffd07e7..cfb51c46 100644 --- a/lib/tis620.h +++ b/lib/tis620.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs2.h b/lib/ucs2.h index 5d4dbcea..38cb7505 100644 --- a/lib/ucs2.h +++ b/lib/ucs2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs2be.h b/lib/ucs2be.h index 17eb6a21..105e5f6a 100644 --- a/lib/ucs2be.h +++ b/lib/ucs2be.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs2internal.h b/lib/ucs2internal.h index b3be8f1c..ddf0af60 100644 --- a/lib/ucs2internal.h +++ b/lib/ucs2internal.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs2le.h b/lib/ucs2le.h index 7f47ec8b..02e636df 100644 --- a/lib/ucs2le.h +++ b/lib/ucs2le.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs2swapped.h b/lib/ucs2swapped.h index 7114ab6f..8e58a0a2 100644 --- a/lib/ucs2swapped.h +++ b/lib/ucs2swapped.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs4.h b/lib/ucs4.h index ae254c40..ce242d47 100644 --- a/lib/ucs4.h +++ b/lib/ucs4.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs4be.h b/lib/ucs4be.h index ecdf8f3e..d7fe813a 100644 --- a/lib/ucs4be.h +++ b/lib/ucs4be.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs4internal.h b/lib/ucs4internal.h index ba50d5b0..227acee0 100644 --- a/lib/ucs4internal.h +++ b/lib/ucs4internal.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs4le.h b/lib/ucs4le.h index c089b42e..2a8a3928 100644 --- a/lib/ucs4le.h +++ b/lib/ucs4le.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/ucs4swapped.h b/lib/ucs4swapped.h index 2c123c02..379abc72 100644 --- a/lib/ucs4swapped.h +++ b/lib/ucs4swapped.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/uhc_1.h b/lib/uhc_1.h index 781cb860..40a69d8e 100644 --- a/lib/uhc_1.h +++ b/lib/uhc_1.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/uhc_2.h b/lib/uhc_2.h index c0eb9977..7e66a06c 100644 --- a/lib/uhc_2.h +++ b/lib/uhc_2.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf16.h b/lib/utf16.h index 5886bb9f..9735d7cb 100644 --- a/lib/utf16.h +++ b/lib/utf16.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf16be.h b/lib/utf16be.h index 1a73d3ab..68d79582 100644 --- a/lib/utf16be.h +++ b/lib/utf16be.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf16le.h b/lib/utf16le.h index 0b6810b0..a56444e7 100644 --- a/lib/utf16le.h +++ b/lib/utf16le.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf32.h b/lib/utf32.h index 3a5215e9..7d29ad0d 100644 --- a/lib/utf32.h +++ b/lib/utf32.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf32be.h b/lib/utf32be.h index c498ca28..d8aeb631 100644 --- a/lib/utf32be.h +++ b/lib/utf32be.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf32le.h b/lib/utf32le.h index 8bc4a310..ca2335cd 100644 --- a/lib/utf32le.h +++ b/lib/utf32le.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf7.h b/lib/utf7.h index a8201fce..650d4bd0 100644 --- a/lib/utf7.h +++ b/lib/utf7.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/utf8.h b/lib/utf8.h index 0c2c834a..d1cd3d67 100644 --- a/lib/utf8.h +++ b/lib/utf8.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/vietcomb.h b/lib/vietcomb.h index b1096894..9fb8db83 100644 --- a/lib/vietcomb.h +++ b/lib/vietcomb.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/lib/viscii.h b/lib/viscii.h index ac2392ce..2d5f0149 100644 --- a/lib/viscii.h +++ b/lib/viscii.h @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file COPYING. + * License along with the cppp-reiconv library; see the file LICENSE. * If not, see . */ diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index 8773e4e9..1a30deac 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -20,7 +20,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ #pragma once diff --git a/tests/check-ascii-converters.cpp b/tests/check-ascii-converters.cpp index d5a51195..e5dac960 100644 --- a/tests/check-ascii-converters.cpp +++ b/tests/check-ascii-converters.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/check-stateful.cpp b/tests/check-stateful.cpp index 52ac43b2..956248fb 100644 --- a/tests/check-stateful.cpp +++ b/tests/check-stateful.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/check-stateless.cpp b/tests/check-stateless.cpp index 50a82d6b..7bcee6a2 100644 --- a/tests/check-stateless.cpp +++ b/tests/check-stateless.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/data-generator.cpp b/tests/data-generator.cpp index a5b84a72..78afe499 100644 --- a/tests/data-generator.cpp +++ b/tests/data-generator.cpp @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* Creates the beyond-BMP part of the GB18030.TXT reference table. */ diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 6634d902..2969cebb 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/sort.cpp b/tests/sort.cpp index 14cd98b0..afff520c 100644 --- a/tests/sort.cpp +++ b/tests/sort.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/sort.hpp b/tests/sort.hpp index 8367125a..94098009 100644 --- a/tests/sort.hpp +++ b/tests/sort.hpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 2999bc94..98f78f67 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* Create a table from CHARSET to Unicode. */ diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 2a1dbe9e..292e9854 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -12,7 +12,7 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file COPYING. + License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ /* Create a table from Unicode to CHARSET. */ diff --git a/tests/throw_error.hpp b/tests/throw_error.hpp index 8263eac6..90f8a22a 100644 --- a/tests/throw_error.hpp +++ b/tests/throw_error.hpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tests/utils.hpp b/tests/utils.hpp index 8be00086..c8d118dd 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index e643d961..2bde2c7b 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tools/genaliases2.cpp b/tools/genaliases2.cpp index 61d0ce3b..d29aff23 100644 --- a/tools/genaliases2.cpp +++ b/tools/genaliases2.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ diff --git a/tools/genflags.cpp b/tools/genflags.cpp index 4dd555e1..7252965c 100644 --- a/tools/genflags.cpp +++ b/tools/genflags.cpp @@ -13,7 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file COPYING. + * License along with the cppp-reiconv Library; see the file LICENSE. * If not, see . */ From 240000c5381702b69f0b96beb38f94e0e54e69d3 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 27 Jul 2024 22:58:27 +0800 Subject: [PATCH 27/77] Enable all encodings everywhere. 1. Enable all encodings everywhere. 2. Rename `DLL_VARIABLE` to `_CPPP_API`. 3. Remove aliases2 support. --- .gitattributes | 1 - CMakeLists.txt | 68 +- Makefile.devel | 82 +- include/cppp/reiconv.hpp.in | 56 +- lib/aliases2.h | 35 - lib/converters.h | 9 - lib/{encodings.def => encodings.h.snippet} | 845 ++++ lib/encodings_aix.def | 105 - lib/encodings_dos.def | 142 - lib/encodings_extra.def | 63 - lib/encodings_zos.def | 524 --- lib/generated/aliases.h | 4419 +++++++++++++------- lib/generated/aliases_aix.h | 18 - lib/generated/aliases_aix_sysaix.h | 24 - lib/generated/aliases_dos.h | 49 - lib/generated/aliases_extra.h | 12 - lib/generated/aliases_sysaix.h | 1810 -------- lib/generated/aliases_syshpux.h | 1800 -------- lib/generated/aliases_syssolaris.h | 1769 -------- lib/generated/aliases_zos.h | 241 -- lib/generated/flags.h | 14 +- lib/iconv.cpp | 135 +- tests/_iconv.hpp | 23 +- tests/tests.cmake | 125 +- tools/genaliases.cpp | 2 +- tools/genaliases2.cpp | 102 - tools/genflags.cpp | 13 +- 27 files changed, 3981 insertions(+), 8505 deletions(-) delete mode 100644 .gitattributes delete mode 100644 lib/aliases2.h rename lib/{encodings.def => encodings.h.snippet} (58%) delete mode 100644 lib/encodings_aix.def delete mode 100644 lib/encodings_dos.def delete mode 100644 lib/encodings_extra.def delete mode 100644 lib/encodings_zos.def delete mode 100644 lib/generated/aliases_aix.h delete mode 100644 lib/generated/aliases_aix_sysaix.h delete mode 100644 lib/generated/aliases_dos.h delete mode 100644 lib/generated/aliases_extra.h delete mode 100644 lib/generated/aliases_sysaix.h delete mode 100644 lib/generated/aliases_syshpux.h delete mode 100644 lib/generated/aliases_syssolaris.h delete mode 100644 lib/generated/aliases_zos.h delete mode 100644 tools/genaliases2.cpp diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index ca4ea277..00000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -ChangeLog merge=merge-changelog diff --git a/CMakeLists.txt b/CMakeLists.txt index cfd28e13..c9cb595d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,36 +18,8 @@ cmake_minimum_required(VERSION 3.12) project(cppp-reiconv VERSION 3.0.0) -option(LESS_BUILD "Disable extra encodings." OFF) -if (LESS_BUILD) - option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." OFF) -else() - option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." ON) -endif() - -# Ignore warnings -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - add_compile_options(-Wno-unused-parameter) - add_compile_options(-Wno-missing-field-initializers) - add_compile_options(-Wno-implicit-fallthrough) - add_compile_options(-Wno-unused-function) - add_compile_options(-Wno-sign-compare) - add_compile_options(-Wno-type-limits) -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - add_compile_options(-Wno-unused-parameter) - add_compile_options(-Wno-missing-field-initializers) - add_compile_options(-Wno-implicit-fallthrough) - add_compile_options(-Wno-unused-function) - add_compile_options(-Wno-sign-compare) - add_compile_options(-Wno-type-limits) -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - add_compile_options(/wd4996) - add_compile_options(/wd4267) - add_compile_options(/wd4244) - add_compile_options(/wd4018) -endif () +option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." ON) -# Set C++ standard set(CMAKE_CXX_STANDARD 20) # ---------------------------------------------------------------------------------- @@ -67,41 +39,39 @@ include("${BUILD_AUX}/cmake/cppp.cmake") check_have_visibility() -# Generate header file for build +# Generate header file for build. if(WIN32) - set(DLL_VARIABLE "__declspec(dllexport)") + set(CPPP_API "__declspec(dllexport)") elseif(HAVE_VISIBILITY) - set(DLL_VARIABLE "__attribute__((__visibility__(\"default\")))") + set(CPPP_API "__attribute__((visibility(\"default\")))") else() - set(DLL_VARIABLE "") +set(CPPP_API "") endif() -add_compile_definitions("DLL_VARIABLE=${DLL_VARIABLE}") +add_compile_definitions("_CPPP_API=${CPPP_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") -# Generate header file for install +# Generate header file for install. if(WIN32) - set(DLL_VARIABLE "__declspec(dllimport)") + set(CPPP_API "__declspec(dllimport)") +elseif(HAVE_VISIBILITY) + set(CPPP_API "__attribute__((visibility(\"default\")))") else() - set(DLL_VARIABLE "") + set(CPPP_API "") endif() + +remove_definitions("_CPPP_API") +add_compile_definitions("_CPPP_API=${CPPP_API}") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp.inst") -# Add includes +# Add includes. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/generated") include_directories("${output_includedir}") -# Add definitions - -if(LESS_BUILD) - message(STATUS "Extra encoding disabled.") -else() - add_compile_definitions(ENABLE_EXTRA=1) -endif() - -# Add library +# Add library. cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" TRUE TRUE "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") # Include test suite. @@ -109,10 +79,10 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests" AND BUILD_TEST) include("tests/tests.cmake") endif() -# Install libraries +# Install libraries. cppp_install_library(${PROJECT_NAME}) -# Install includes +# Install headers. # PERMISSIONS 0644 install(FILES "${output_includedir}/cppp/reiconv.hpp.inst" DESTINATION "${install_includedir}" diff --git a/Makefile.devel b/Makefile.devel index bfcfe61d..bcb0be46 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -15,11 +15,7 @@ CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ - lib/generated/aliases.h lib/generated/aliases_sysaix.h lib/generated/aliases_syshpux.h lib/generated/aliases_syssolaris.h \ - lib/generated/aliases_aix.h lib/generated/aliases_aix_sysaix.h \ - lib/generated/aliases_dos.h \ - lib/generated/aliases_zos.h \ - lib/generated/aliases_extra.h \ + lib/generated/aliases.h \ lib/generated/flags.h lib/generated : @@ -34,71 +30,6 @@ lib/generated/aliases.gperf : lib/generated/genaliases lib/generated/aliases.h : lib/generated/aliases.gperf $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ - -lib/generated/genaliases_sysaix : tools/genaliases.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_AIX_ALIASES $< -o $@ - -lib/generated/aliases_sysaix.gperf : lib/generated/genaliases_sysaix - ./lib/generated/genaliases_sysaix $@ - -lib/generated/aliases_sysaix.h : lib/generated/aliases_sysaix.gperf - $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ - - -lib/generated/genaliases_syshpux : tools/genaliases.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_HPUX_ALIASES $< -o $@ - -lib/generated/aliases_syshpux.gperf : lib/generated/genaliases_syshpux - ./lib/generated/genaliases_syshpux $@ - -lib/generated/aliases_syshpux.h : lib/generated/aliases_syshpux.gperf - $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ - - -lib/generated/genaliases_syssolaris : tools/genaliases.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_SOLARIS_ALIASES $< -o $@ - -lib/generated/aliases_syssolaris.gperf : lib/generated/genaliases_syssolaris - ./lib/generated/genaliases_syssolaris $@ - -lib/generated/aliases_syssolaris.h : lib/generated/aliases_syssolaris.gperf - $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ - - -lib/generated/genaliases2_aix : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_AIX $< -o $@ - -lib/generated/aliases_aix.h : lib/generated/genaliases2_aix - ./lib/generated/genaliases2_aix aix $@ - - -lib/generated/genaliases2_aix_sysaix : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_AIX -DUSE_AIX_ALIASES $< -o $@ - -lib/generated/aliases_aix_sysaix.h : lib/generated/genaliases2_aix_sysaix - ./lib/generated/genaliases2_aix_sysaix aix $@ - - -lib/generated/genaliases2_dos : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_DOS $< -o $@ - -lib/generated/aliases_dos.h : lib/generated/genaliases2_dos - ./lib/generated/genaliases2_dos dos $@ - - -lib/generated/genaliases2_zos : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_ZOS $< -o $@ - -lib/generated/aliases_zos.h : lib/generated/genaliases2_zos - ./lib/generated/genaliases2_zos zos $@ - - -lib/generated/genaliases2_extra : tools/genaliases2.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) -DUSE_EXTRA $< -o $@ - -lib/generated/aliases_extra.h : lib/generated/genaliases2_extra - ./lib/generated/genaliases2_extra extra $@ - lib/generated/genflags : tools/genflags.cpp $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ @@ -145,18 +76,7 @@ clean : $(RM) -r -f cppp-reiconv-v* $(RM) -r -f .cache $(RM) -f lib/generated/aliases.gperf - $(RM) -f lib/generated/aliases_sysaix.gperf - $(RM) -f lib/generated/aliases_syshpux.gperf - $(RM) -f lib/generated/aliases_syssolaris.gperf $(RM) -f lib/generated/genaliases - $(RM) -f lib/generated/genaliases2_aix - $(RM) -f lib/generated/genaliases2_aix_sysaix - $(RM) -f lib/generated/genaliases2_dos - $(RM) -f lib/generated/genaliases2_extra - $(RM) -f lib/generated/genaliases2_zos - $(RM) -f lib/generated/genaliases_sysaix - $(RM) -f lib/generated/genaliases_syshpux - $(RM) -f lib/generated/genaliases_syssolaris $(RM) -f lib/generated/genflags $(RM) -f tests/data/GB18030-2005.TXT $(RM) -f tests/data/GB18030-2022.TXT diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index ba0f953f..7fdbaab6 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -1,9 +1,9 @@ /** * @file cppp/reiconv.hpp * @author ChenPi11 - * @brief C++ Plus cppp-reiconv package. + * @brief C+++ cppp-reiconv package. * @version 3.0.0 - * @date 2023-10-28 + * @date 2024-7-27 * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. */ /* Copyright (C) 1999-2023 Free Software Foundation, Inc. @@ -29,23 +29,27 @@ #include +#ifndef _CPPP_API + #ifdef _MSC_VER + #define _CPPP_API __declspec(dllexport) + #elif defined(__GNUC__) + #define _CPPP_API __attribute__((visibility("default"))) + #else + #define _CPPP_API + #endif +#endif + #if _MSC_VER >= 1600 /* Use UTF-8 to decode this file. */ #pragma execution_character_set("utf-8") #endif -extern "C++" +namespace cppp::base::reiconv { - namespace cppp - { - namespace base - { - namespace reiconv - { /** * @brief Version infomation. (major<<8) + minor */ - extern @DLL_VARIABLE@ int reiconv_version; + extern _CPPP_API int reiconv_version; /** * @brief Convert a ascii-only string to UTF-16. @@ -56,7 +60,8 @@ extern "C++" * @warning Don't forget to free the result memory! * @return Return true if successful, otherwise return false. */ - extern @DLL_VARIABLE@ bool ascii_mbtou16(const char *str, size_t length, char16_t **resultp, size_t *lengthp); + extern _CPPP_API bool ascii_mbtou16(const char *str, size_t length, + char16_t **resultp, size_t *lengthp); /** * @brief Convert a ascii-only string to UTF-32. @@ -67,7 +72,8 @@ extern "C++" * @warning Don't forget to free the result memory! * @return Return true if successful, otherwise return false. */ - extern @DLL_VARIABLE@ bool ascii_mbtou32(const char *str, size_t length, char32_t **resultp, size_t *lengthp); + extern _CPPP_API bool ascii_mbtou32(const char *str, size_t length, + char32_t **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another, @@ -92,8 +98,9 @@ extern "C++" * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char *tocode, const char *fromcode, const char *start, size_t inlength, - char **resultp, size_t *lengthp); + extern _CPPP_API int convert(const char *tocode, const char *fromcode, + const char *start, size_t inlength, + char **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another, @@ -118,8 +125,9 @@ extern "C++" * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char16_t *tocode, const char16_t *fromcode, const char *start, - size_t inlength, char **resultp, size_t *lengthp); + extern _CPPP_API int convert(const char16_t *tocode, const char16_t *fromcode, + const char *start, size_t inlength, + char **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another, @@ -144,8 +152,9 @@ extern "C++" * @param lengthp Pointer to a variable that stores the length of the result. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(const char32_t *tocode, const char32_t *fromcode, const char *start, - size_t inlength, char **resultp, size_t *lengthp); + extern _CPPP_API int convert(const char32_t *tocode, const char32_t *fromcode, + const char *start, size_t inlength, + char **resultp, size_t *lengthp); /** * @brief Converts an entire string from one encoding to another. @@ -159,10 +168,9 @@ extern "C++" * @param strict Strict mode, if false, will ignore the invalid characters. * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. */ - extern @DLL_VARIABLE@ int convert(int tocode_cp, int fromcode_cp, const char *start, size_t inlength, - char **resultp, size_t *lengthp, bool strict = true); + extern _CPPP_API int convert(int tocode_cp, int fromcode_cp, + const char *start, size_t inlength, + char **resultp, size_t *lengthp, + bool strict = true); - } // namespace reiconv - } // namespace base - } // namespace cppp -} +} // namespace cppp::base::reiconv diff --git a/lib/aliases2.h b/lib/aliases2.h deleted file mode 100644 index 0a960601..00000000 --- a/lib/aliases2.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 1999-2003, 2008, 2022 Free Software Foundation, Inc. - * This file is part of the cppp-reiconv library. - * - * The cppp-reiconv library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file LICENSE. - * If not, see . - */ - -#ifdef USE_AIX -# if defined _AIX -# include "aliases_aix_sysaix.h" -# else -# include "aliases_aix.h" -# endif -#endif -#ifdef USE_DOS -# include "aliases_dos.h" -#endif -#ifdef USE_ZOS -# include "aliases_zos.h" -#endif -#ifdef USE_EXTRA -# include "aliases_extra.h" -#endif diff --git a/lib/converters.h b/lib/converters.h index f2fc3732..efce3838 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -254,7 +254,6 @@ typedef struct { /* Encodings used by system dependent locales. */ -#ifdef USE_AIX #include "cp856.h" #include "cp922.h" #include "cp943.h" @@ -264,9 +263,7 @@ typedef struct { #include "cp1161.h" #include "cp1162.h" #include "cp1163.h" -#endif -#ifdef USE_DOS #include "cp437.h" #include "cp737.h" #include "cp775.h" @@ -282,9 +279,7 @@ typedef struct { #include "cp865.h" #include "cp869.h" #include "cp1125.h" -#endif -#ifdef USE_ZOS #define DEDUPLICATE_TABLES 1 @@ -341,9 +336,7 @@ typedef struct { #include "ebcdic4971.h" #include "ebcdic12712.h" #include "ebcdic16804.h" -#endif -#ifdef USE_EXTRA #include "euc_jisx0213.h" #include "shift_jisx0213.h" #include "iso2022_jp3.h" @@ -351,5 +344,3 @@ typedef struct { #include "tds565.h" #include "atarist.h" #include "riscos1.h" -#endif - diff --git a/lib/encodings.def b/lib/encodings.h.snippet similarity index 58% rename from lib/encodings.def rename to lib/encodings.h.snippet index 2ed56483..8d1042d3 100644 --- a/lib/encodings.def +++ b/lib/encodings.h.snippet @@ -1171,3 +1171,848 @@ DEFENCODING(( "DEC-HANYU", { dec_hanyu_mbtowc, nullptr }, { dec_hanyu_wctomb, nullptr }) DEFALIAS( "DECHANYU", /* OSF/1 */ dec_hanyu) + + +/* Copyright (C) 2000-2002, 2008 Free Software Foundation, Inc. + This file is part of the cppp-reiconv library. + + The cppp-reiconv library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + + The cppp-reiconv library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the cppp-reiconv library; see the file LICENSE. + If not, see . */ + +/* Encodings used by system dependent locales on AIX. */ + +DEFENCODING(( "CP856", + ), + 856, + cp856, + { cp856_mbtowc, nullptr }, { cp856_wctomb, nullptr }) +#ifdef USE_AIX_ALIASES +DEFALIAS( "IBM-856", /* AIX */ + cp856) +#endif + +DEFENCODING(( "CP922", + ), + 922, + cp922, + { cp922_mbtowc, nullptr }, { cp922_wctomb, nullptr }) +#ifdef USE_AIX_ALIASES +DEFALIAS( "IBM-922", /* AIX */ + cp922) +#endif + +DEFENCODING(( "CP943", + ), + 943, + cp943, + { cp943_mbtowc, nullptr }, { cp943_wctomb, nullptr }) +#ifdef USE_AIX_ALIASES +DEFALIAS( "IBM-943", /* AIX */ + cp943) +#endif + +DEFENCODING(( "CP1046", + ), + 1046, + cp1046, + { cp1046_mbtowc, nullptr }, { cp1046_wctomb, nullptr }) +#ifdef USE_AIX_ALIASES +DEFALIAS( "IBM-1046", /* AIX */ + cp1046) +#endif + +DEFENCODING(( "CP1124", + ), + 1124, + cp1124, + { cp1124_mbtowc, nullptr }, { cp1124_wctomb, nullptr }) +#ifdef USE_AIX_ALIASES +DEFALIAS( "IBM-1124", /* AIX */ + cp1124) +#endif + +DEFENCODING(( "CP1129", + ), + 1129, + cp1129, + { cp1129_mbtowc, nullptr }, { cp1129_wctomb, nullptr }) +#ifdef USE_AIX_ALIASES +DEFALIAS( "IBM-1129", /* AIX */ + cp1129) +#endif + +DEFENCODING(( "CP1161", + "IBM1161", /* glibc */ + "IBM-1161", /* glibc */ + "csIBM1161", /* glibc */ + ), + 1161, + cp1161, + { cp1161_mbtowc, nullptr }, { cp1161_wctomb, nullptr }) + +DEFENCODING(( "CP1162", + "IBM1162", /* glibc */ + "IBM-1162", /* glibc */ + "csIBM1162", /* glibc */ + ), + 1162, + cp1162, + { cp1162_mbtowc, nullptr }, { cp1162_wctomb, nullptr }) + +DEFENCODING(( "CP1163", + "IBM1163", /* glibc */ + "IBM-1163", /* glibc */ + "csIBM1163", /* glibc */ + ), + 1163, + cp1163, + { cp1163_mbtowc, nullptr }, { cp1163_wctomb, nullptr }) + + +/* Copyright (C) 2001-2002 Free Software Foundation, Inc. + This file is part of the cppp-reiconv library. + + The cppp-reiconv library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + + The cppp-reiconv library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the cppp-reiconv library; see the file LICENSE. + If not, see . */ + +/* Encodings used by system dependent locales on MSDOS. */ + +DEFENCODING(( "CP437", /* IANA, JDK 1.1 */ + "IBM437", /* IANA */ + "437", /* IANA */ + "csPC8CodePage437", /* IANA */ + ), + 437, + cp437, + { cp437_mbtowc, nullptr }, { cp437_wctomb, nullptr }) + +DEFENCODING(( "CP737", /* JDK 1.1 */ + "IBM737", /* Windows */ + ), + 737, + cp737, + { cp737_mbtowc, nullptr }, { cp737_wctomb, nullptr }) + +DEFENCODING(( "CP775", /* IANA, JDK 1.1 */ + "IBM775", /* IANA */ + "csPC775Baltic", /* IANA */ + ), + 775, + cp775, + { cp775_mbtowc, nullptr }, { cp775_wctomb, nullptr }) + +DEFENCODING(( "CP852", /* IANA, JDK 1.1 */ + "IBM852", /* IANA */ + "852", /* IANA */ + "csPCp852", /* IANA */ + ), + 852, + cp852, + { cp852_mbtowc, nullptr }, { cp852_wctomb, nullptr }) + +DEFENCODING(( "CP853", + ), + 853, + cp853, + { cp853_mbtowc, nullptr }, { cp853_wctomb, nullptr }) + +DEFENCODING(( "CP855", /* IANA, JDK 1.1 */ + "IBM855", /* IANA */ + "855", /* IANA */ + "csIBM855", /* IANA */ + ), + 855, + cp855, + { cp855_mbtowc, nullptr }, { cp855_wctomb, nullptr }) + +DEFENCODING(( "CP857", /* IANA, JDK 1.1 */ + "IBM857", /* IANA */ + "857", /* IANA */ + "csIBM857", /* IANA */ + ), + 857, + cp857, + { cp857_mbtowc, nullptr }, { cp857_wctomb, nullptr }) + +DEFENCODING(( "CP858", /* JDK 1.1.7 */ + ), + 858, + cp858, + { cp858_mbtowc, nullptr }, { cp858_wctomb, nullptr }) + +DEFENCODING(( "CP860", /* IANA, JDK 1.1 */ + "IBM860", /* IANA */ + "860", /* IANA */ + "csIBM860", /* IANA */ + ), + 860, + cp860, + { cp860_mbtowc, nullptr }, { cp860_wctomb, nullptr }) + +DEFENCODING(( "CP861", /* IANA, JDK 1.1 */ + "IBM861", /* IANA */ + "861", /* IANA */ + "CP-IS", /* IANA */ + "csIBM861", /* IANA */ + ), + 861, + cp861, + { cp861_mbtowc, nullptr }, { cp861_wctomb, nullptr }) + +DEFENCODING(( "CP863", /* IANA, JDK 1.1 */ + "IBM863", /* IANA */ + "863", /* IANA */ + "csIBM863", /* IANA */ + ), + 863, + cp863, + { cp863_mbtowc, nullptr }, { cp863_wctomb, nullptr }) + +DEFENCODING(( "CP864", /* IANA, JDK 1.1 */ + "IBM864", /* IANA */ + "csIBM864", /* IANA */ + ), + 864, + cp864, + { cp864_mbtowc, nullptr }, { cp864_wctomb, nullptr }) + +DEFENCODING(( "CP865", /* IANA, JDK 1.1 */ + "IBM865", /* IANA */ + "865", /* IANA */ + "csIBM865", /* IANA */ + ), + 865, + cp865, + { cp865_mbtowc, nullptr }, { cp865_wctomb, nullptr }) + +DEFENCODING(( "CP869", /* IANA, JDK 1.1 */ + "IBM869", /* IANA */ + "869", /* IANA */ + "CP-GR", /* IANA */ + "csIBM869", /* IANA */ + ), + 869, + cp869, + { cp869_mbtowc, nullptr }, { cp869_wctomb, nullptr }) + +DEFENCODING(( "CP1125", /* ICU */ + ), + 1125, + cp1125, + { cp1125_mbtowc, nullptr }, { cp1125_wctomb, nullptr }) + + + +/* Copyright (C) 2022 Free Software Foundation, Inc. + This file is part of the cppp-reiconv library. + + The cppp-reiconv library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + + The cppp-reiconv library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the cppp-reiconv library; see the file LICENSE. + If not, see . */ + +/* Encodings used by system dependent locales on z/OS. */ + +DEFENCODING(( "IBM-037", + "IBM037", /* IANA */ + "CP037", /* IANA */ + "EBCDIC-CP-US", /* IANA */ + "EBCDIC-CP-CA", /* IANA */ + "EBCDIC-CP-WT", /* IANA */ + "EBCDIC-CP-NL", /* IANA */ + "csIBM037", /* IANA */ + ), + 037, + ebcdic037, + { ebcdic037_mbtowc, nullptr }, { ebcdic037_wctomb, nullptr }) + +DEFENCODING(( "IBM-273", + "IBM273", /* IANA */ + "CP273", /* IANA */ + "csIBM273", /* IANA */ + ), + 273, + ebcdic273, + { ebcdic273_mbtowc, nullptr }, { ebcdic273_wctomb, nullptr }) + +DEFENCODING(( "IBM-277", + "IBM277", /* IANA */ + "EBCDIC-CP-DK", /* IANA */ + "EBCDIC-CP-NO", /* IANA */ + "csIBM277", /* IANA */ + ), + 277, + ebcdic277, + { ebcdic277_mbtowc, nullptr }, { ebcdic277_wctomb, nullptr }) + +DEFENCODING(( "IBM-278", + "IBM278", /* IANA */ + "CP278", /* IANA */ + "EBCDIC-CP-FI", /* IANA */ + "EBCDIC-CP-SE", /* IANA */ + "csIBM278", /* IANA */ + ), + 278, + ebcdic278, + { ebcdic278_mbtowc, nullptr }, { ebcdic278_wctomb, nullptr }) + +DEFENCODING(( "IBM-280", + "IBM280", /* IANA */ + "CP280", /* IANA */ + "EBCDIC-CP-IT", /* IANA */ + "csIBM280", /* IANA */ + ), + 280, + ebcdic280, + { ebcdic280_mbtowc, nullptr }, { ebcdic280_wctomb, nullptr }) + +DEFENCODING(( "IBM-282", + "IBM282", + ), + 282, + ebcdic282, + { ebcdic282_mbtowc, nullptr }, { ebcdic282_wctomb, nullptr }) + +DEFENCODING(( "IBM-284", + "IBM284", /* IANA */ + "CP284", /* IANA */ + "EBCDIC-CP-ES", /* IANA */ + "csIBM284", /* IANA */ + ), + 284, + ebcdic284, + { ebcdic284_mbtowc, nullptr }, { ebcdic284_wctomb, nullptr }) + +DEFENCODING(( "IBM-285", + "IBM285", /* IANA */ + "CP285", /* IANA */ + "EBCDIC-CP-GB", /* IANA */ + "csIBM285", /* IANA */ + ), + 285, + ebcdic285, + { ebcdic285_mbtowc, nullptr }, { ebcdic285_wctomb, nullptr }) + +DEFENCODING(( "IBM-297", + "IBM297", /* IANA */ + "CP297", /* IANA */ + "EBCDIC-CP-FR", /* IANA */ + "csIBM297", /* IANA */ + ), + 297, + ebcdic297, + { ebcdic297_mbtowc, nullptr }, { ebcdic297_wctomb, nullptr }) + +DEFENCODING(( "IBM-423", + "IBM423", /* IANA */ + "CP423", /* IANA */ + "EBCDIC-CP-GR", /* IANA */ + "csIBM423", /* IANA */ + ), + 423, + ebcdic423, + { ebcdic423_mbtowc, nullptr }, { ebcdic423_wctomb, nullptr }) + +DEFENCODING(( "IBM-424", + "IBM424", /* IANA */ + "CP424", /* IANA */ + "EBCDIC-CP-HE", /* IANA */ + "csIBM424", /* IANA */ + ), + 424, + ebcdic424, + { ebcdic424_mbtowc, nullptr }, { ebcdic424_wctomb, nullptr }) + +DEFENCODING(( "IBM-425", + "IBM425", + ), + 425, + ebcdic425, + { ebcdic425_mbtowc, nullptr }, { ebcdic425_wctomb, nullptr }) + +DEFENCODING(( "IBM-500", + "IBM500", /* IANA */ + "CP500", /* IANA */ + "EBCDIC-CP-BE", /* IANA */ + "EBCDIC-CP-CH", /* IANA */ + "csIBM500", /* IANA */ + ), + 500, + ebcdic500, + { ebcdic500_mbtowc, nullptr }, { ebcdic500_wctomb, nullptr }) + +DEFENCODING(( "IBM-838", + "IBM838", + "IBM-THAI", /* IANA */ + "csIBMThai", /* IANA */ + ), + 838, + ebcdic838, + { ebcdic838_mbtowc, nullptr }, { ebcdic838_wctomb, nullptr }) + +DEFENCODING(( "IBM-870", + "IBM870", /* IANA */ + "CP870", /* IANA */ + "EBCDIC-CP-ROECE", /* IANA */ + "EBCDIC-CP-YU", /* IANA */ + "csIBM870", /* IANA */ + ), + 870, + ebcdic870, + { ebcdic870_mbtowc, nullptr }, { ebcdic870_wctomb, nullptr }) + +DEFENCODING(( "IBM-871", + "IBM871", /* IANA */ + "CP871", /* IANA */ + "EBCDIC-CP-IS", /* IANA */ + "csIBM871", /* IANA */ + ), + 871, + ebcdic871, + { ebcdic871_mbtowc, nullptr }, { ebcdic871_wctomb, nullptr }) + +DEFENCODING(( "IBM-875", + "IBM875", /* glibc */ + "CP875", /* glibc */ + "EBCDIC-GREEK", /* glibc */ + ), + 875, + ebcdic875, + { ebcdic875_mbtowc, nullptr }, { ebcdic875_wctomb, nullptr }) + +DEFENCODING(( "IBM-880", + "IBM880", /* IANA */ + "CP880", /* IANA */ + "EBCDIC-CYRILLIC", /* IANA */ + "csIBM880", /* IANA */ + ), + 880, + ebcdic880, + { ebcdic880_mbtowc, nullptr }, { ebcdic880_wctomb, nullptr }) + +DEFENCODING(( "IBM-905", + "IBM905", /* IANA */ + "CP905", /* IANA */ + "EBCDIC-CP-TR", /* IANA */ + "csIBM905", /* IANA */ + ), + 905, + ebcdic905, + { ebcdic905_mbtowc, nullptr }, { ebcdic905_wctomb, nullptr }) + +DEFENCODING(( "IBM-924", + "IBM924", + "IBM00924", /* IANA */ + "CCSID00924", /* IANA */ + "CP00924", /* IANA */ + "EBCDIC-LATIN9-EURO", /* IANA */ + "csIBM00924", /* IANA */ + ), + 924, + ebcdic924, + { ebcdic924_mbtowc, nullptr }, { ebcdic924_wctomb, nullptr }) + +DEFENCODING(( "IBM-1025", + "IBM1025", /* glibc */ + "CP1025", /* glibc */ + ), + 1025, + ebcdic1025, + { ebcdic1025_mbtowc, nullptr }, { ebcdic1025_wctomb, nullptr }) + +DEFENCODING(( "IBM-1026", + "IBM1026", /* IANA */ + "CP1026", /* IANA */ + "csIBM1026", /* IANA */ + ), + 1026, + ebcdic1026, + { ebcdic1026_mbtowc, nullptr }, { ebcdic1026_wctomb, nullptr }) + +DEFENCODING(( "IBM-1047", /* IANA */ + "IBM1047", /* IANA */ + "CP1047", /* glibc */ + "csIBM1047", /* IANA */ + ), + 1047, + ebcdic1047, + { ebcdic1047_mbtowc, nullptr }, { ebcdic1047_wctomb, nullptr }) + +DEFENCODING(( "IBM-1097", + "IBM1097", /* glibc */ + "CP1097", /* glibc */ + ), + 1097, + ebcdic1097, + { ebcdic1097_mbtowc, nullptr }, { ebcdic1097_wctomb, nullptr }) + +DEFENCODING(( "IBM-1112", + "IBM1112", /* glibc */ + "CP1112", /* glibc */ + ), + 1112, + ebcdic1112, + { ebcdic1112_mbtowc, nullptr }, { ebcdic1112_wctomb, nullptr }) + +DEFENCODING(( "IBM-1122", + "IBM1122", /* glibc */ + "CP1122", /* glibc */ + ), + 1122, + ebcdic1122, + { ebcdic1122_mbtowc, nullptr }, { ebcdic1122_wctomb, nullptr }) + +DEFENCODING(( "IBM-1123", + "IBM1123", /* glibc */ + "CP1123", /* glibc */ + ), + 1123, + ebcdic1123, + { ebcdic1123_mbtowc, nullptr }, { ebcdic1123_wctomb, nullptr }) + +DEFENCODING(( "IBM-1130", + "IBM1130", /* glibc */ + "CP1130", /* glibc */ + ), + 1130, + ebcdic1130, + { ebcdic1130_mbtowc, nullptr }, { ebcdic1130_wctomb, nullptr }) + +DEFENCODING(( "IBM-1132", + "IBM1132", /* glibc */ + "CP1132", /* glibc */ + ), + 1132, + ebcdic1132, + { ebcdic1132_mbtowc, nullptr }, { ebcdic1132_wctomb, nullptr }) + +DEFENCODING(( "IBM-1137", + "IBM1137", /* glibc */ + "CP1137", /* glibc */ + ), + 1137, + ebcdic1137, + { ebcdic1137_mbtowc, nullptr }, { ebcdic1137_wctomb, nullptr }) + +DEFENCODING(( "IBM-1140", + "IBM1140", + "IBM01140", /* IANA */ + "CCSID01140", /* IANA */ + "CP01140", /* IANA */ + "EBCDIC-US-37+EURO", /* IANA */ + "csIBM01140", /* IANA */ + ), + 1140, + ebcdic1140, + { ebcdic1140_mbtowc, nullptr }, { ebcdic1140_wctomb, nullptr }) + +DEFENCODING(( "IBM-1141", + "IBM1141", + "IBM01141", /* IANA */ + "CCSID01141", /* IANA */ + "CP01141", /* IANA */ + "EBCDIC-DE-273+EURO", /* IANA */ + "csIBM01141", /* IANA */ + ), + 1141, + ebcdic1141, + { ebcdic1141_mbtowc, nullptr }, { ebcdic1141_wctomb, nullptr }) + +DEFENCODING(( "IBM-1142", + "IBM1142", + "IBM01142", /* IANA */ + "CCSID01142", /* IANA */ + "CP01142", /* IANA */ + "EBCDIC-DK-277+EURO", /* IANA */ + "EBCDIC-NO-277+EURO", /* IANA */ + "csIBM01142", /* IANA */ + ), + 1142, + ebcdic1142, + { ebcdic1142_mbtowc, nullptr }, { ebcdic1142_wctomb, nullptr }) + +DEFENCODING(( "IBM-1143", + "IBM1143", + "IBM01143", /* IANA */ + "CCSID01143", /* IANA */ + "CP01143", /* IANA */ + "EBCDIC-FI-278+EURO", /* IANA */ + "EBCDIC-SE-278+EURO", /* IANA */ + "csIBM01143", /* IANA */ + ), + 1143, + ebcdic1143, + { ebcdic1143_mbtowc, nullptr }, { ebcdic1143_wctomb, nullptr }) + +DEFENCODING(( "IBM-1144", + "IBM1144", + "IBM01144", /* IANA */ + "CCSID01144", /* IANA */ + "CP01144", /* IANA */ + "EBCDIC-IT-280+EURO", /* IANA */ + "csPC8CodePage1144", /* IANA */ + ), + 1144, + ebcdic1144, + { ebcdic1144_mbtowc, nullptr }, { ebcdic1144_wctomb, nullptr }) + +DEFENCODING(( "IBM-1145", + "IBM1145", + "IBM01145", /* IANA */ + "CCSID01145", /* IANA */ + "CP01145", /* IANA */ + "EBCDIC-ES-284+EURO", /* IANA */ + "csIBM01145", /* IANA */ + ), + 1145, + ebcdic1145, + { ebcdic1145_mbtowc, nullptr }, { ebcdic1145_wctomb, nullptr }) + +DEFENCODING(( "IBM-1146", + "IBM1146", + "IBM01146", /* IANA */ + "CCSID01146", /* IANA */ + "CP01146", /* IANA */ + "EBCDIC-GB-285+EURO", /* IANA */ + "csPC8CodePage1146", /* IANA */ + ), + 1146, + ebcdic1146, + { ebcdic1146_mbtowc, nullptr }, { ebcdic1146_wctomb, nullptr }) + +DEFENCODING(( "IBM-1147", + "IBM1147", + "IBM01147", /* IANA */ + "CCSID01147", /* IANA */ + "CP01147", /* IANA */ + "EBCDIC-FR-297+EURO", /* IANA */ + "csIBM01147", /* IANA */ + ), + 1147, + ebcdic1147, + { ebcdic1147_mbtowc, nullptr }, { ebcdic1147_wctomb, nullptr }) + +DEFENCODING(( "IBM-1148", + "IBM1148", + "IBM01148", /* IANA */ + "CCSID01148", /* IANA */ + "CP01148", /* IANA */ + "EBCDIC-INTERNATIONAL-500+EURO", /* IANA */ + "csIBM01148", /* IANA */ + ), + 1148, + ebcdic1148, + { ebcdic1148_mbtowc, nullptr }, { ebcdic1148_wctomb, nullptr }) + +DEFENCODING(( "IBM-1149", + "IBM1149", + "IBM01149", /* IANA */ + "CCSID01149", /* IANA */ + "CP01149", /* IANA */ + "EBCDIC-IS-871+EURO", /* IANA */ + "csIBM01149", /* IANA */ + ), + 1149, + ebcdic1149, + { ebcdic1149_mbtowc, nullptr }, { ebcdic1149_wctomb, nullptr }) + +DEFENCODING(( "IBM-1153", + "IBM1153", /* glibc */ + "CP1153", /* glibc */ + ), + 1153, + ebcdic1153, + { ebcdic1153_mbtowc, nullptr }, { ebcdic1153_wctomb, nullptr }) + +DEFENCODING(( "IBM-1154", + "IBM1154", /* glibc */ + "CP1154", /* glibc */ + ), + 1154, + ebcdic1154, + { ebcdic1154_mbtowc, nullptr }, { ebcdic1154_wctomb, nullptr }) + +DEFENCODING(( "IBM-1155", + "IBM1155", /* glibc */ + "CP1155", /* glibc */ + ), + 1155, + ebcdic1155, + { ebcdic1155_mbtowc, nullptr }, { ebcdic1155_wctomb, nullptr }) + +DEFENCODING(( "IBM-1156", + "IBM1156", /* glibc */ + "CP1156", /* glibc */ + ), + 1156, + ebcdic1156, + { ebcdic1156_mbtowc, nullptr }, { ebcdic1156_wctomb, nullptr }) + +DEFENCODING(( "IBM-1157", + "IBM1157", /* glibc */ + "CP1157", /* glibc */ + ), + 1157, + ebcdic1157, + { ebcdic1157_mbtowc, nullptr }, { ebcdic1157_wctomb, nullptr }) + +DEFENCODING(( "IBM-1158", + "IBM1158", /* glibc */ + "CP1158", /* glibc */ + ), + 1158, + ebcdic1158, + { ebcdic1158_mbtowc, nullptr }, { ebcdic1158_wctomb, nullptr }) + +DEFENCODING(( "IBM-1160", + "IBM1160", /* glibc */ + "CP1160", /* glibc */ + ), + 1160, + ebcdic1160, + { ebcdic1160_mbtowc, nullptr }, { ebcdic1160_wctomb, nullptr }) + +DEFENCODING(( "IBM-1164", + "IBM1164", /* glibc */ + "CP1164", /* glibc */ + ), + 1164, + ebcdic1164, + { ebcdic1164_mbtowc, nullptr }, { ebcdic1164_wctomb, nullptr }) + +DEFENCODING(( "IBM-1165", + "IBM1165", + ), + 1165, + ebcdic1165, + { ebcdic1165_mbtowc, nullptr }, { ebcdic1165_wctomb, nullptr }) + +DEFENCODING(( "IBM-1166", + "IBM1166", /* glibc */ + "CP1166", /* glibc */ + ), + 1166, + ebcdic1166, + { ebcdic1166_mbtowc, nullptr }, { ebcdic1166_wctomb, nullptr }) + +DEFENCODING(( "IBM-4971", + "IBM4971", /* glibc */ + "CP4971", /* glibc */ + ), + 4971, + ebcdic4971, + { ebcdic4971_mbtowc, nullptr }, { ebcdic4971_wctomb, nullptr }) + +DEFENCODING(( "IBM-12712", + "IBM12712", /* glibc */ + "CP12712", /* glibc */ + ), + 12712, + ebcdic12712, + { ebcdic12712_mbtowc, nullptr }, { ebcdic12712_wctomb, nullptr }) + +DEFENCODING(( "IBM-16804", + "IBM16804", /* glibc */ + "CP16804", /* glibc */ + ), + 16804, + ebcdic16804, + { ebcdic16804_mbtowc, nullptr }, { ebcdic16804_wctomb, nullptr }) + + + +/* Copyright (C) 2002, 2005, 2008 Free Software Foundation, Inc. + This file is part of the cppp-reiconv library. + + The cppp-reiconv library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + + The cppp-reiconv library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the cppp-reiconv library; see the file LICENSE. + If not, see . */ + +DEFENCODING(( "EUC-JISX0213", + "EUC-JIS-2004", /* x0213.org */ + ), + -1, + euc_jisx0213, + { euc_jisx0213_mbtowc, euc_jisx0213_flushwc }, { euc_jisx0213_wctomb, euc_jisx0213_reset }) + +DEFENCODING(( "SHIFT_JISX0213", + "SHIFT_JIS-2004", /* x0213.org */ + ), + -1, + shift_jisx0213, + { shift_jisx0213_mbtowc, shift_jisx0213_flushwc }, { shift_jisx0213_wctomb, shift_jisx0213_reset }) + +DEFENCODING(( "ISO-2022-JP-3", + "ISO-2022-JP-2004", /* x0213.org */ + ), + -1, + iso2022_jp3, + { iso2022_jp3_mbtowc, iso2022_jp3_flushwc }, { iso2022_jp3_wctomb, iso2022_jp3_reset }) + +DEFENCODING(( "BIG5-2003", + ), + -1, + big5_2003, + { big5_2003_mbtowc, nullptr }, { big5_2003_wctomb, nullptr }) + +DEFENCODING(( "TDS565", + "ISO-IR-230", + ), + -1, + tds565, + { tds565_mbtowc, nullptr }, { tds565_wctomb, nullptr }) + +DEFENCODING(( "ATARIST", + "ATARI", + ), + -1, + atarist, + { atarist_mbtowc, nullptr }, { atarist_wctomb, nullptr }) + +DEFENCODING(( "RISCOS-LATIN1", + ), + -1, + riscos1, + { riscos1_mbtowc, nullptr }, { riscos1_wctomb, nullptr }) + diff --git a/lib/encodings_aix.def b/lib/encodings_aix.def deleted file mode 100644 index 0cc21ec6..00000000 --- a/lib/encodings_aix.def +++ /dev/null @@ -1,105 +0,0 @@ -/* Copyright (C) 2000-2002, 2008 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -/* Encodings used by system dependent locales on AIX. */ - -DEFENCODING(( "CP856", - ), - 856, - cp856, - { cp856_mbtowc, nullptr }, { cp856_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-856", /* AIX */ - cp856) -#endif - -DEFENCODING(( "CP922", - ), - 922, - cp922, - { cp922_mbtowc, nullptr }, { cp922_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-922", /* AIX */ - cp922) -#endif - -DEFENCODING(( "CP943", - ), - 943, - cp943, - { cp943_mbtowc, nullptr }, { cp943_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-943", /* AIX */ - cp943) -#endif - -DEFENCODING(( "CP1046", - ), - 1046, - cp1046, - { cp1046_mbtowc, nullptr }, { cp1046_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1046", /* AIX */ - cp1046) -#endif - -DEFENCODING(( "CP1124", - ), - 1124, - cp1124, - { cp1124_mbtowc, nullptr }, { cp1124_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1124", /* AIX */ - cp1124) -#endif - -DEFENCODING(( "CP1129", - ), - 1129, - cp1129, - { cp1129_mbtowc, nullptr }, { cp1129_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1129", /* AIX */ - cp1129) -#endif - -DEFENCODING(( "CP1161", - "IBM1161", /* glibc */ - "IBM-1161", /* glibc */ - "csIBM1161", /* glibc */ - ), - 1161, - cp1161, - { cp1161_mbtowc, nullptr }, { cp1161_wctomb, nullptr }) - -DEFENCODING(( "CP1162", - "IBM1162", /* glibc */ - "IBM-1162", /* glibc */ - "csIBM1162", /* glibc */ - ), - 1162, - cp1162, - { cp1162_mbtowc, nullptr }, { cp1162_wctomb, nullptr }) - -DEFENCODING(( "CP1163", - "IBM1163", /* glibc */ - "IBM-1163", /* glibc */ - "csIBM1163", /* glibc */ - ), - 1163, - cp1163, - { cp1163_mbtowc, nullptr }, { cp1163_wctomb, nullptr }) diff --git a/lib/encodings_dos.def b/lib/encodings_dos.def deleted file mode 100644 index 9f51168b..00000000 --- a/lib/encodings_dos.def +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 2001-2002 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -/* Encodings used by system dependent locales on MSDOS. */ - -DEFENCODING(( "CP437", /* IANA, JDK 1.1 */ - "IBM437", /* IANA */ - "437", /* IANA */ - "csPC8CodePage437", /* IANA */ - ), - 437, - cp437, - { cp437_mbtowc, nullptr }, { cp437_wctomb, nullptr }) - -DEFENCODING(( "CP737", /* JDK 1.1 */ - "IBM737", /* Windows */ - ), - 737, - cp737, - { cp737_mbtowc, nullptr }, { cp737_wctomb, nullptr }) - -DEFENCODING(( "CP775", /* IANA, JDK 1.1 */ - "IBM775", /* IANA */ - "csPC775Baltic", /* IANA */ - ), - 775, - cp775, - { cp775_mbtowc, nullptr }, { cp775_wctomb, nullptr }) - -DEFENCODING(( "CP852", /* IANA, JDK 1.1 */ - "IBM852", /* IANA */ - "852", /* IANA */ - "csPCp852", /* IANA */ - ), - 852, - cp852, - { cp852_mbtowc, nullptr }, { cp852_wctomb, nullptr }) - -DEFENCODING(( "CP853", - ), - 853, - cp853, - { cp853_mbtowc, nullptr }, { cp853_wctomb, nullptr }) - -DEFENCODING(( "CP855", /* IANA, JDK 1.1 */ - "IBM855", /* IANA */ - "855", /* IANA */ - "csIBM855", /* IANA */ - ), - 855, - cp855, - { cp855_mbtowc, nullptr }, { cp855_wctomb, nullptr }) - -DEFENCODING(( "CP857", /* IANA, JDK 1.1 */ - "IBM857", /* IANA */ - "857", /* IANA */ - "csIBM857", /* IANA */ - ), - 857, - cp857, - { cp857_mbtowc, nullptr }, { cp857_wctomb, nullptr }) - -DEFENCODING(( "CP858", /* JDK 1.1.7 */ - ), - 858, - cp858, - { cp858_mbtowc, nullptr }, { cp858_wctomb, nullptr }) - -DEFENCODING(( "CP860", /* IANA, JDK 1.1 */ - "IBM860", /* IANA */ - "860", /* IANA */ - "csIBM860", /* IANA */ - ), - 860, - cp860, - { cp860_mbtowc, nullptr }, { cp860_wctomb, nullptr }) - -DEFENCODING(( "CP861", /* IANA, JDK 1.1 */ - "IBM861", /* IANA */ - "861", /* IANA */ - "CP-IS", /* IANA */ - "csIBM861", /* IANA */ - ), - 861, - cp861, - { cp861_mbtowc, nullptr }, { cp861_wctomb, nullptr }) - -DEFENCODING(( "CP863", /* IANA, JDK 1.1 */ - "IBM863", /* IANA */ - "863", /* IANA */ - "csIBM863", /* IANA */ - ), - 863, - cp863, - { cp863_mbtowc, nullptr }, { cp863_wctomb, nullptr }) - -DEFENCODING(( "CP864", /* IANA, JDK 1.1 */ - "IBM864", /* IANA */ - "csIBM864", /* IANA */ - ), - 864, - cp864, - { cp864_mbtowc, nullptr }, { cp864_wctomb, nullptr }) - -DEFENCODING(( "CP865", /* IANA, JDK 1.1 */ - "IBM865", /* IANA */ - "865", /* IANA */ - "csIBM865", /* IANA */ - ), - 865, - cp865, - { cp865_mbtowc, nullptr }, { cp865_wctomb, nullptr }) - -DEFENCODING(( "CP869", /* IANA, JDK 1.1 */ - "IBM869", /* IANA */ - "869", /* IANA */ - "CP-GR", /* IANA */ - "csIBM869", /* IANA */ - ), - 869, - cp869, - { cp869_mbtowc, nullptr }, { cp869_wctomb, nullptr }) - -DEFENCODING(( "CP1125", /* ICU */ - ), - 1125, - cp1125, - { cp1125_mbtowc, nullptr }, { cp1125_wctomb, nullptr }) diff --git a/lib/encodings_extra.def b/lib/encodings_extra.def deleted file mode 100644 index c3b000ea..00000000 --- a/lib/encodings_extra.def +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright (C) 2002, 2005, 2008 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -DEFENCODING(( "EUC-JISX0213", - "EUC-JIS-2004", /* x0213.org */ - ), - -1, - euc_jisx0213, - { euc_jisx0213_mbtowc, euc_jisx0213_flushwc }, { euc_jisx0213_wctomb, euc_jisx0213_reset }) - -DEFENCODING(( "SHIFT_JISX0213", - "SHIFT_JIS-2004", /* x0213.org */ - ), - -1, - shift_jisx0213, - { shift_jisx0213_mbtowc, shift_jisx0213_flushwc }, { shift_jisx0213_wctomb, shift_jisx0213_reset }) - -DEFENCODING(( "ISO-2022-JP-3", - "ISO-2022-JP-2004", /* x0213.org */ - ), - -1, - iso2022_jp3, - { iso2022_jp3_mbtowc, iso2022_jp3_flushwc }, { iso2022_jp3_wctomb, iso2022_jp3_reset }) - -DEFENCODING(( "BIG5-2003", - ), - -1, - big5_2003, - { big5_2003_mbtowc, nullptr }, { big5_2003_wctomb, nullptr }) - -DEFENCODING(( "TDS565", - "ISO-IR-230", - ), - -1, - tds565, - { tds565_mbtowc, nullptr }, { tds565_wctomb, nullptr }) - -DEFENCODING(( "ATARIST", - "ATARI", - ), - -1, - atarist, - { atarist_mbtowc, nullptr }, { atarist_wctomb, nullptr }) - -DEFENCODING(( "RISCOS-LATIN1", - ), - -1, - riscos1, - { riscos1_mbtowc, nullptr }, { riscos1_wctomb, nullptr }) diff --git a/lib/encodings_zos.def b/lib/encodings_zos.def deleted file mode 100644 index 98c1281e..00000000 --- a/lib/encodings_zos.def +++ /dev/null @@ -1,524 +0,0 @@ -/* Copyright (C) 2022 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -/* Encodings used by system dependent locales on z/OS. */ - -DEFENCODING(( "IBM-037", - "IBM037", /* IANA */ - "CP037", /* IANA */ - "EBCDIC-CP-US", /* IANA */ - "EBCDIC-CP-CA", /* IANA */ - "EBCDIC-CP-WT", /* IANA */ - "EBCDIC-CP-NL", /* IANA */ - "csIBM037", /* IANA */ - ), - 037, - ebcdic037, - { ebcdic037_mbtowc, nullptr }, { ebcdic037_wctomb, nullptr }) - -DEFENCODING(( "IBM-273", - "IBM273", /* IANA */ - "CP273", /* IANA */ - "csIBM273", /* IANA */ - ), - 273, - ebcdic273, - { ebcdic273_mbtowc, nullptr }, { ebcdic273_wctomb, nullptr }) - -DEFENCODING(( "IBM-277", - "IBM277", /* IANA */ - "EBCDIC-CP-DK", /* IANA */ - "EBCDIC-CP-NO", /* IANA */ - "csIBM277", /* IANA */ - ), - 277, - ebcdic277, - { ebcdic277_mbtowc, nullptr }, { ebcdic277_wctomb, nullptr }) - -DEFENCODING(( "IBM-278", - "IBM278", /* IANA */ - "CP278", /* IANA */ - "EBCDIC-CP-FI", /* IANA */ - "EBCDIC-CP-SE", /* IANA */ - "csIBM278", /* IANA */ - ), - 278, - ebcdic278, - { ebcdic278_mbtowc, nullptr }, { ebcdic278_wctomb, nullptr }) - -DEFENCODING(( "IBM-280", - "IBM280", /* IANA */ - "CP280", /* IANA */ - "EBCDIC-CP-IT", /* IANA */ - "csIBM280", /* IANA */ - ), - 280, - ebcdic280, - { ebcdic280_mbtowc, nullptr }, { ebcdic280_wctomb, nullptr }) - -DEFENCODING(( "IBM-282", - "IBM282", - ), - 282, - ebcdic282, - { ebcdic282_mbtowc, nullptr }, { ebcdic282_wctomb, nullptr }) - -DEFENCODING(( "IBM-284", - "IBM284", /* IANA */ - "CP284", /* IANA */ - "EBCDIC-CP-ES", /* IANA */ - "csIBM284", /* IANA */ - ), - 284, - ebcdic284, - { ebcdic284_mbtowc, nullptr }, { ebcdic284_wctomb, nullptr }) - -DEFENCODING(( "IBM-285", - "IBM285", /* IANA */ - "CP285", /* IANA */ - "EBCDIC-CP-GB", /* IANA */ - "csIBM285", /* IANA */ - ), - 285, - ebcdic285, - { ebcdic285_mbtowc, nullptr }, { ebcdic285_wctomb, nullptr }) - -DEFENCODING(( "IBM-297", - "IBM297", /* IANA */ - "CP297", /* IANA */ - "EBCDIC-CP-FR", /* IANA */ - "csIBM297", /* IANA */ - ), - 297, - ebcdic297, - { ebcdic297_mbtowc, nullptr }, { ebcdic297_wctomb, nullptr }) - -DEFENCODING(( "IBM-423", - "IBM423", /* IANA */ - "CP423", /* IANA */ - "EBCDIC-CP-GR", /* IANA */ - "csIBM423", /* IANA */ - ), - 423, - ebcdic423, - { ebcdic423_mbtowc, nullptr }, { ebcdic423_wctomb, nullptr }) - -DEFENCODING(( "IBM-424", - "IBM424", /* IANA */ - "CP424", /* IANA */ - "EBCDIC-CP-HE", /* IANA */ - "csIBM424", /* IANA */ - ), - 424, - ebcdic424, - { ebcdic424_mbtowc, nullptr }, { ebcdic424_wctomb, nullptr }) - -DEFENCODING(( "IBM-425", - "IBM425", - ), - 425, - ebcdic425, - { ebcdic425_mbtowc, nullptr }, { ebcdic425_wctomb, nullptr }) - -DEFENCODING(( "IBM-500", - "IBM500", /* IANA */ - "CP500", /* IANA */ - "EBCDIC-CP-BE", /* IANA */ - "EBCDIC-CP-CH", /* IANA */ - "csIBM500", /* IANA */ - ), - 500, - ebcdic500, - { ebcdic500_mbtowc, nullptr }, { ebcdic500_wctomb, nullptr }) - -DEFENCODING(( "IBM-838", - "IBM838", - "IBM-THAI", /* IANA */ - "csIBMThai", /* IANA */ - ), - 838, - ebcdic838, - { ebcdic838_mbtowc, nullptr }, { ebcdic838_wctomb, nullptr }) - -DEFENCODING(( "IBM-870", - "IBM870", /* IANA */ - "CP870", /* IANA */ - "EBCDIC-CP-ROECE", /* IANA */ - "EBCDIC-CP-YU", /* IANA */ - "csIBM870", /* IANA */ - ), - 870, - ebcdic870, - { ebcdic870_mbtowc, nullptr }, { ebcdic870_wctomb, nullptr }) - -DEFENCODING(( "IBM-871", - "IBM871", /* IANA */ - "CP871", /* IANA */ - "EBCDIC-CP-IS", /* IANA */ - "csIBM871", /* IANA */ - ), - 871, - ebcdic871, - { ebcdic871_mbtowc, nullptr }, { ebcdic871_wctomb, nullptr }) - -DEFENCODING(( "IBM-875", - "IBM875", /* glibc */ - "CP875", /* glibc */ - "EBCDIC-GREEK", /* glibc */ - ), - 875, - ebcdic875, - { ebcdic875_mbtowc, nullptr }, { ebcdic875_wctomb, nullptr }) - -DEFENCODING(( "IBM-880", - "IBM880", /* IANA */ - "CP880", /* IANA */ - "EBCDIC-CYRILLIC", /* IANA */ - "csIBM880", /* IANA */ - ), - 880, - ebcdic880, - { ebcdic880_mbtowc, nullptr }, { ebcdic880_wctomb, nullptr }) - -DEFENCODING(( "IBM-905", - "IBM905", /* IANA */ - "CP905", /* IANA */ - "EBCDIC-CP-TR", /* IANA */ - "csIBM905", /* IANA */ - ), - 905, - ebcdic905, - { ebcdic905_mbtowc, nullptr }, { ebcdic905_wctomb, nullptr }) - -DEFENCODING(( "IBM-924", - "IBM924", - "IBM00924", /* IANA */ - "CCSID00924", /* IANA */ - "CP00924", /* IANA */ - "EBCDIC-LATIN9-EURO", /* IANA */ - "csIBM00924", /* IANA */ - ), - 924, - ebcdic924, - { ebcdic924_mbtowc, nullptr }, { ebcdic924_wctomb, nullptr }) - -DEFENCODING(( "IBM-1025", - "IBM1025", /* glibc */ - "CP1025", /* glibc */ - ), - 1025, - ebcdic1025, - { ebcdic1025_mbtowc, nullptr }, { ebcdic1025_wctomb, nullptr }) - -DEFENCODING(( "IBM-1026", - "IBM1026", /* IANA */ - "CP1026", /* IANA */ - "csIBM1026", /* IANA */ - ), - 1026, - ebcdic1026, - { ebcdic1026_mbtowc, nullptr }, { ebcdic1026_wctomb, nullptr }) - -DEFENCODING(( "IBM-1047", /* IANA */ - "IBM1047", /* IANA */ - "CP1047", /* glibc */ - "csIBM1047", /* IANA */ - ), - 1047, - ebcdic1047, - { ebcdic1047_mbtowc, nullptr }, { ebcdic1047_wctomb, nullptr }) - -DEFENCODING(( "IBM-1097", - "IBM1097", /* glibc */ - "CP1097", /* glibc */ - ), - 1097, - ebcdic1097, - { ebcdic1097_mbtowc, nullptr }, { ebcdic1097_wctomb, nullptr }) - -DEFENCODING(( "IBM-1112", - "IBM1112", /* glibc */ - "CP1112", /* glibc */ - ), - 1112, - ebcdic1112, - { ebcdic1112_mbtowc, nullptr }, { ebcdic1112_wctomb, nullptr }) - -DEFENCODING(( "IBM-1122", - "IBM1122", /* glibc */ - "CP1122", /* glibc */ - ), - 1122, - ebcdic1122, - { ebcdic1122_mbtowc, nullptr }, { ebcdic1122_wctomb, nullptr }) - -DEFENCODING(( "IBM-1123", - "IBM1123", /* glibc */ - "CP1123", /* glibc */ - ), - 1123, - ebcdic1123, - { ebcdic1123_mbtowc, nullptr }, { ebcdic1123_wctomb, nullptr }) - -DEFENCODING(( "IBM-1130", - "IBM1130", /* glibc */ - "CP1130", /* glibc */ - ), - 1130, - ebcdic1130, - { ebcdic1130_mbtowc, nullptr }, { ebcdic1130_wctomb, nullptr }) - -DEFENCODING(( "IBM-1132", - "IBM1132", /* glibc */ - "CP1132", /* glibc */ - ), - 1132, - ebcdic1132, - { ebcdic1132_mbtowc, nullptr }, { ebcdic1132_wctomb, nullptr }) - -DEFENCODING(( "IBM-1137", - "IBM1137", /* glibc */ - "CP1137", /* glibc */ - ), - 1137, - ebcdic1137, - { ebcdic1137_mbtowc, nullptr }, { ebcdic1137_wctomb, nullptr }) - -DEFENCODING(( "IBM-1140", - "IBM1140", - "IBM01140", /* IANA */ - "CCSID01140", /* IANA */ - "CP01140", /* IANA */ - "EBCDIC-US-37+EURO", /* IANA */ - "csIBM01140", /* IANA */ - ), - 1140, - ebcdic1140, - { ebcdic1140_mbtowc, nullptr }, { ebcdic1140_wctomb, nullptr }) - -DEFENCODING(( "IBM-1141", - "IBM1141", - "IBM01141", /* IANA */ - "CCSID01141", /* IANA */ - "CP01141", /* IANA */ - "EBCDIC-DE-273+EURO", /* IANA */ - "csIBM01141", /* IANA */ - ), - 1141, - ebcdic1141, - { ebcdic1141_mbtowc, nullptr }, { ebcdic1141_wctomb, nullptr }) - -DEFENCODING(( "IBM-1142", - "IBM1142", - "IBM01142", /* IANA */ - "CCSID01142", /* IANA */ - "CP01142", /* IANA */ - "EBCDIC-DK-277+EURO", /* IANA */ - "EBCDIC-NO-277+EURO", /* IANA */ - "csIBM01142", /* IANA */ - ), - 1142, - ebcdic1142, - { ebcdic1142_mbtowc, nullptr }, { ebcdic1142_wctomb, nullptr }) - -DEFENCODING(( "IBM-1143", - "IBM1143", - "IBM01143", /* IANA */ - "CCSID01143", /* IANA */ - "CP01143", /* IANA */ - "EBCDIC-FI-278+EURO", /* IANA */ - "EBCDIC-SE-278+EURO", /* IANA */ - "csIBM01143", /* IANA */ - ), - 1143, - ebcdic1143, - { ebcdic1143_mbtowc, nullptr }, { ebcdic1143_wctomb, nullptr }) - -DEFENCODING(( "IBM-1144", - "IBM1144", - "IBM01144", /* IANA */ - "CCSID01144", /* IANA */ - "CP01144", /* IANA */ - "EBCDIC-IT-280+EURO", /* IANA */ - "csPC8CodePage1144", /* IANA */ - ), - 1144, - ebcdic1144, - { ebcdic1144_mbtowc, nullptr }, { ebcdic1144_wctomb, nullptr }) - -DEFENCODING(( "IBM-1145", - "IBM1145", - "IBM01145", /* IANA */ - "CCSID01145", /* IANA */ - "CP01145", /* IANA */ - "EBCDIC-ES-284+EURO", /* IANA */ - "csIBM01145", /* IANA */ - ), - 1145, - ebcdic1145, - { ebcdic1145_mbtowc, nullptr }, { ebcdic1145_wctomb, nullptr }) - -DEFENCODING(( "IBM-1146", - "IBM1146", - "IBM01146", /* IANA */ - "CCSID01146", /* IANA */ - "CP01146", /* IANA */ - "EBCDIC-GB-285+EURO", /* IANA */ - "csPC8CodePage1146", /* IANA */ - ), - 1146, - ebcdic1146, - { ebcdic1146_mbtowc, nullptr }, { ebcdic1146_wctomb, nullptr }) - -DEFENCODING(( "IBM-1147", - "IBM1147", - "IBM01147", /* IANA */ - "CCSID01147", /* IANA */ - "CP01147", /* IANA */ - "EBCDIC-FR-297+EURO", /* IANA */ - "csIBM01147", /* IANA */ - ), - 1147, - ebcdic1147, - { ebcdic1147_mbtowc, nullptr }, { ebcdic1147_wctomb, nullptr }) - -DEFENCODING(( "IBM-1148", - "IBM1148", - "IBM01148", /* IANA */ - "CCSID01148", /* IANA */ - "CP01148", /* IANA */ - "EBCDIC-INTERNATIONAL-500+EURO", /* IANA */ - "csIBM01148", /* IANA */ - ), - 1148, - ebcdic1148, - { ebcdic1148_mbtowc, nullptr }, { ebcdic1148_wctomb, nullptr }) - -DEFENCODING(( "IBM-1149", - "IBM1149", - "IBM01149", /* IANA */ - "CCSID01149", /* IANA */ - "CP01149", /* IANA */ - "EBCDIC-IS-871+EURO", /* IANA */ - "csIBM01149", /* IANA */ - ), - 1149, - ebcdic1149, - { ebcdic1149_mbtowc, nullptr }, { ebcdic1149_wctomb, nullptr }) - -DEFENCODING(( "IBM-1153", - "IBM1153", /* glibc */ - "CP1153", /* glibc */ - ), - 1153, - ebcdic1153, - { ebcdic1153_mbtowc, nullptr }, { ebcdic1153_wctomb, nullptr }) - -DEFENCODING(( "IBM-1154", - "IBM1154", /* glibc */ - "CP1154", /* glibc */ - ), - 1154, - ebcdic1154, - { ebcdic1154_mbtowc, nullptr }, { ebcdic1154_wctomb, nullptr }) - -DEFENCODING(( "IBM-1155", - "IBM1155", /* glibc */ - "CP1155", /* glibc */ - ), - 1155, - ebcdic1155, - { ebcdic1155_mbtowc, nullptr }, { ebcdic1155_wctomb, nullptr }) - -DEFENCODING(( "IBM-1156", - "IBM1156", /* glibc */ - "CP1156", /* glibc */ - ), - 1156, - ebcdic1156, - { ebcdic1156_mbtowc, nullptr }, { ebcdic1156_wctomb, nullptr }) - -DEFENCODING(( "IBM-1157", - "IBM1157", /* glibc */ - "CP1157", /* glibc */ - ), - 1157, - ebcdic1157, - { ebcdic1157_mbtowc, nullptr }, { ebcdic1157_wctomb, nullptr }) - -DEFENCODING(( "IBM-1158", - "IBM1158", /* glibc */ - "CP1158", /* glibc */ - ), - 1158, - ebcdic1158, - { ebcdic1158_mbtowc, nullptr }, { ebcdic1158_wctomb, nullptr }) - -DEFENCODING(( "IBM-1160", - "IBM1160", /* glibc */ - "CP1160", /* glibc */ - ), - 1160, - ebcdic1160, - { ebcdic1160_mbtowc, nullptr }, { ebcdic1160_wctomb, nullptr }) - -DEFENCODING(( "IBM-1164", - "IBM1164", /* glibc */ - "CP1164", /* glibc */ - ), - 1164, - ebcdic1164, - { ebcdic1164_mbtowc, nullptr }, { ebcdic1164_wctomb, nullptr }) - -DEFENCODING(( "IBM-1165", - "IBM1165", - ), - 1165, - ebcdic1165, - { ebcdic1165_mbtowc, nullptr }, { ebcdic1165_wctomb, nullptr }) - -DEFENCODING(( "IBM-1166", - "IBM1166", /* glibc */ - "CP1166", /* glibc */ - ), - 1166, - ebcdic1166, - { ebcdic1166_mbtowc, nullptr }, { ebcdic1166_wctomb, nullptr }) - -DEFENCODING(( "IBM-4971", - "IBM4971", /* glibc */ - "CP4971", /* glibc */ - ), - 4971, - ebcdic4971, - { ebcdic4971_mbtowc, nullptr }, { ebcdic4971_wctomb, nullptr }) - -DEFENCODING(( "IBM-12712", - "IBM12712", /* glibc */ - "CP12712", /* glibc */ - ), - 12712, - ebcdic12712, - { ebcdic12712_mbtowc, nullptr }, { ebcdic12712_wctomb, nullptr }) - -DEFENCODING(( "IBM-16804", - "IBM16804", /* glibc */ - "CP16804", /* glibc */ - ), - 16804, - ebcdic16804, - { ebcdic16804_mbtowc, nullptr }, { ebcdic16804_wctomb, nullptr }) diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index 2519ec7f..a7b2f623 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -1,6 +1,6 @@ /* C++ code produced by gperf version 3.1 */ /* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases.gperf */ -/* Computed positions: -k'1,3-11,$' */ +/* Computed positions: -k'1-11,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 353 +#define TOTAL_KEYWORDS 673 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 7 -#define MAX_HASH_VALUE 953 -/* maximum key range = 947, duplicates = 0 */ +#define MIN_HASH_VALUE 22 +#define MAX_HASH_VALUE 2582 +/* maximum key range = 2561, duplicates = 0 */ class HashPool { @@ -52,26 +52,26 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 2, 52, 954, 73, 4, - 29, 66, 16, 22, 11, 179, 3, 10, 185, 954, - 954, 954, 954, 954, 954, 10, 259, 9, 14, 96, - 43, 104, 98, 63, 91, 195, 16, 84, 5, 2, - 189, 954, 2, 2, 110, 42, 186, 149, 244, 64, - 6, 954, 954, 954, 954, 3, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, - 954, 954, 954, 954, 954, 954, 954, 954 + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 251, 26, 403, 66, 9, + 4, 120, 39, 2, 1, 192, 36, 404, 279, 3, + 9, 2583, 2583, 2583, 2583, 11, 1, 26, 76, 220, + 442, 247, 91, 1, 87, 293, 18, 195, 47, 4, + 1, 206, 6, 368, 8, 165, 497, 327, 115, 23, + 24, 2, 2583, 2583, 2583, 220, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583 }; unsigned int hval = len; switch (hval) { default: - hval += asso_values[static_cast(str[10])]; + hval += asso_values[static_cast(str[10]+1)]; /*FALLTHROUGH*/ case 10: hval += asso_values[static_cast(str[9])]; @@ -80,7 +80,7 @@ HashPool::aliases_hash (const char *str, size_t len) hval += asso_values[static_cast(str[8])]; /*FALLTHROUGH*/ case 8: - hval += asso_values[static_cast(str[7])]; + hval += asso_values[static_cast(str[7]+2)]; /*FALLTHROUGH*/ case 7: hval += asso_values[static_cast(str[6])]; @@ -98,6 +98,8 @@ HashPool::aliases_hash (const char *str, size_t len) hval += asso_values[static_cast(str[2])]; /*FALLTHROUGH*/ case 2: + hval += asso_values[static_cast(str[1])]; + /*FALLTHROUGH*/ case 1: hval += asso_values[static_cast(str[0])]; break; @@ -107,1625 +109,3200 @@ HashPool::aliases_hash (const char *str, size_t len) struct stringpool_t { - char stringpool_str7[sizeof("R8")]; - char stringpool_str16[sizeof("CN")]; - char stringpool_str21[sizeof("L8")]; - char stringpool_str22[sizeof("L1")]; - char stringpool_str28[sizeof("866")]; - char stringpool_str29[sizeof("L6")]; - char stringpool_str32[sizeof("C99")]; - char stringpool_str34[sizeof("L4")]; - char stringpool_str40[sizeof("L5")]; - char stringpool_str41[sizeof("CP819")]; - char stringpool_str46[sizeof("US")]; - char stringpool_str47[sizeof("L2")]; - char stringpool_str50[sizeof("CP866")]; - char stringpool_str60[sizeof("CP949")]; - char stringpool_str63[sizeof("UHC")]; - char stringpool_str64[sizeof("862")]; - char stringpool_str72[sizeof("CP154")]; - char stringpool_str73[sizeof("SJIS")]; - char stringpool_str76[sizeof("CP1258")]; - char stringpool_str78[sizeof("CP1251")]; - char stringpool_str83[sizeof("UCS-4")]; - char stringpool_str84[sizeof("L3")]; - char stringpool_str86[sizeof("CP862")]; - char stringpool_str92[sizeof("CP1256")]; - char stringpool_str97[sizeof("CP1131")]; - char stringpool_str98[sizeof("UTF-8")]; - char stringpool_str100[sizeof("CSUCS4")]; - char stringpool_str102[sizeof("CP1254")]; - char stringpool_str104[sizeof("CP1361")]; - char stringpool_str105[sizeof("MAC")]; - char stringpool_str106[sizeof("HZ")]; - char stringpool_str107[sizeof("RK1048")]; - char stringpool_str109[sizeof("UCS-2")]; - char stringpool_str112[sizeof("CP936")]; - char stringpool_str113[sizeof("ROMAN8")]; - char stringpool_str114[sizeof("CP1255")]; - char stringpool_str119[sizeof("UTF-16")]; - char stringpool_str120[sizeof("ISO8859-8")]; - char stringpool_str122[sizeof("ISO8859-1")]; - char stringpool_str123[sizeof("ISO-8859-8")]; - char stringpool_str124[sizeof("ISO_8859-8")]; - char stringpool_str125[sizeof("ISO-8859-1")]; - char stringpool_str126[sizeof("ISO_8859-1")]; - char stringpool_str127[sizeof("ISO8859-11")]; - char stringpool_str128[sizeof("CP1252")]; - char stringpool_str129[sizeof("EUCCN")]; - char stringpool_str130[sizeof("ISO-8859-11")]; - char stringpool_str131[sizeof("ISO_8859-11")]; - char stringpool_str132[sizeof("EUC-CN")]; - char stringpool_str133[sizeof("ISO646-CN")]; - char stringpool_str134[sizeof("ISO8859-9")]; - char stringpool_str136[sizeof("ISO8859-6")]; - char stringpool_str137[sizeof("ISO-8859-9")]; - char stringpool_str138[sizeof("ISO_8859-9")]; - char stringpool_str139[sizeof("ISO-8859-6")]; - char stringpool_str140[sizeof("ISO_8859-6")]; - char stringpool_str141[sizeof("ISO8859-16")]; - char stringpool_str143[sizeof("ISO_8859-16:2001")]; - char stringpool_str144[sizeof("ISO-8859-16")]; - char stringpool_str145[sizeof("ISO_8859-16")]; - char stringpool_str146[sizeof("ISO8859-4")]; - char stringpool_str147[sizeof("ISO_8859-14:1998")]; - char stringpool_str148[sizeof("CP932")]; - char stringpool_str149[sizeof("ISO-8859-4")]; - char stringpool_str150[sizeof("ISO_8859-4")]; - char stringpool_str151[sizeof("ISO8859-14")]; - char stringpool_str152[sizeof("850")]; - char stringpool_str153[sizeof("ISO_8859-15:1998")]; - char stringpool_str154[sizeof("ISO-8859-14")]; - char stringpool_str155[sizeof("ISO_8859-14")]; - char stringpool_str158[sizeof("ISO8859-5")]; - char stringpool_str160[sizeof("ISO646-US")]; - char stringpool_str161[sizeof("ISO-8859-5")]; - char stringpool_str162[sizeof("ISO_8859-5")]; - char stringpool_str163[sizeof("ISO8859-15")]; - char stringpool_str164[sizeof("ISO-IR-6")]; - char stringpool_str165[sizeof("L10")]; - char stringpool_str166[sizeof("ISO-8859-15")]; - char stringpool_str167[sizeof("ISO_8859-15")]; - char stringpool_str170[sizeof("ISO-IR-148")]; - char stringpool_str171[sizeof("ISO-IR-58")]; - char stringpool_str172[sizeof("ISO8859-2")]; - char stringpool_str175[sizeof("ISO-8859-2")]; - char stringpool_str176[sizeof("ISO_8859-2")]; - char stringpool_str177[sizeof("CP50221")]; - char stringpool_str178[sizeof("ISO-IR-199")]; - char stringpool_str179[sizeof("ISO-IR-14")]; - char stringpool_str180[sizeof("IBM819")]; - char stringpool_str181[sizeof("ISO-IR-166")]; - char stringpool_str184[sizeof("ISO-IR-149")]; - char stringpool_str185[sizeof("CP850")]; - char stringpool_str187[sizeof("MS936")]; - char stringpool_str189[sizeof("IBM866")]; - char stringpool_str190[sizeof("ISO-IR-159")]; - char stringpool_str192[sizeof("CP950")]; - char stringpool_str195[sizeof("CYRILLIC")]; - char stringpool_str196[sizeof("ISO-IR-144")]; - char stringpool_str197[sizeof("L7")]; - char stringpool_str199[sizeof("ISO-IR-126")]; - char stringpool_str200[sizeof("MS-CYRL")]; - char stringpool_str202[sizeof("CP1253")]; - char stringpool_str203[sizeof("ISO-IR-165")]; - char stringpool_str206[sizeof("LATIN8")]; - char stringpool_str208[sizeof("LATIN1")]; - char stringpool_str209[sizeof("MACROMAN")]; - char stringpool_str211[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str213[sizeof("ASCII")]; - char stringpool_str214[sizeof("ECMA-118")]; - char stringpool_str216[sizeof("CP1250")]; - char stringpool_str217[sizeof("UTF-32")]; - char stringpool_str218[sizeof("HP-ROMAN8")]; - char stringpool_str220[sizeof("ISO-IR-138")]; - char stringpool_str221[sizeof("CP1133")]; - char stringpool_str222[sizeof("LATIN6")]; - char stringpool_str223[sizeof("LATIN-9")]; - char stringpool_str224[sizeof("ISO-IR-226")]; - char stringpool_str225[sizeof("IBM862")]; - char stringpool_str226[sizeof("CSASCII")]; - char stringpool_str228[sizeof("CP874")]; - char stringpool_str229[sizeof("ISO-IR-101")]; - char stringpool_str230[sizeof("ISO_8859-10:1992")]; - char stringpool_str232[sizeof("LATIN4")]; - char stringpool_str236[sizeof("MS-ANSI")]; - char stringpool_str240[sizeof("ECMA-114")]; - char stringpool_str241[sizeof("ISO-IR-109")]; - char stringpool_str243[sizeof("MULELAO-1")]; - char stringpool_str244[sizeof("LATIN5")]; - char stringpool_str246[sizeof("ISO8859-3")]; - char stringpool_str248[sizeof("ARMSCII-8")]; - char stringpool_str249[sizeof("ISO-8859-3")]; - char stringpool_str250[sizeof("ISO_8859-3")]; - char stringpool_str251[sizeof("ISO8859-13")]; - char stringpool_str252[sizeof("PT154")]; - char stringpool_str253[sizeof("UNICODE-1-1")]; - char stringpool_str254[sizeof("ISO-8859-13")]; - char stringpool_str255[sizeof("ISO_8859-13")]; - char stringpool_str257[sizeof("ISO-10646-UCS-4")]; - char stringpool_str258[sizeof("LATIN2")]; - char stringpool_str259[sizeof("ISO-2022-CN")]; - char stringpool_str262[sizeof("US-ASCII")]; - char stringpool_str263[sizeof("CSUNICODE11")]; - char stringpool_str264[sizeof("ELOT_928")]; - char stringpool_str265[sizeof("ISO8859-10")]; - char stringpool_str266[sizeof("CSISO2022CN")]; - char stringpool_str267[sizeof("GB2312")]; - char stringpool_str268[sizeof("ISO-8859-10")]; - char stringpool_str269[sizeof("ISO_8859-10")]; - char stringpool_str270[sizeof("ISO-10646-UCS-2")]; - char stringpool_str271[sizeof("JIS_C6226-1983")]; - char stringpool_str272[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str273[sizeof("KOI8-R")]; - char stringpool_str277[sizeof("UCS-4LE")]; - char stringpool_str280[sizeof("CSISO14JISC6220RO")]; - char stringpool_str281[sizeof("JIS0208")]; - char stringpool_str282[sizeof("JP")]; - char stringpool_str283[sizeof("CSKOI8R")]; - char stringpool_str288[sizeof("GB_1988-80")]; - char stringpool_str289[sizeof("MACROMANIA")]; - char stringpool_str290[sizeof("UCS-2LE")]; - char stringpool_str292[sizeof("DECHANYU")]; - char stringpool_str295[sizeof("DEC-HANYU")]; - char stringpool_str298[sizeof("ISO-IR-110")]; - char stringpool_str299[sizeof("CSISOLATIN1")]; - char stringpool_str301[sizeof("JAVA")]; - char stringpool_str303[sizeof("KZ-1048")]; - char stringpool_str304[sizeof("TIS620")]; - char stringpool_str307[sizeof("TIS-620")]; - char stringpool_str309[sizeof("EUCKR")]; - char stringpool_str310[sizeof("TCVN")]; - char stringpool_str312[sizeof("EUC-KR")]; - char stringpool_str313[sizeof("CSISOLATIN6")]; - char stringpool_str314[sizeof("ISO_8859-8:1988")]; - char stringpool_str315[sizeof("CSISOLATINARABIC")]; - char stringpool_str316[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str317[sizeof("CSKZ1048")]; - char stringpool_str318[sizeof("UTF-16LE")]; - char stringpool_str319[sizeof("KOREAN")]; - char stringpool_str320[sizeof("MACCROATIAN")]; - char stringpool_str323[sizeof("CSISOLATIN4")]; - char stringpool_str324[sizeof("IBM850")]; - char stringpool_str327[sizeof("ISO_8859-4:1988")]; - char stringpool_str328[sizeof("ISO_8859-9:1989")]; - char stringpool_str329[sizeof("KSC_5601")]; - char stringpool_str330[sizeof("MACICELAND")]; - char stringpool_str332[sizeof("LATIN3")]; - char stringpool_str333[sizeof("ISO_8859-5:1988")]; - char stringpool_str335[sizeof("CSISOLATIN5")]; - char stringpool_str340[sizeof("X0212")]; - char stringpool_str345[sizeof("CSUNICODE")]; - char stringpool_str347[sizeof("ISO-IR-179")]; - char stringpool_str349[sizeof("CSISOLATIN2")]; - char stringpool_str350[sizeof("KS_C_5601-1989")]; - char stringpool_str351[sizeof("LATIN10")]; - char stringpool_str353[sizeof("KOI8-U")]; - char stringpool_str355[sizeof("MACCYRILLIC")]; - char stringpool_str356[sizeof("KOI8-RU")]; - char stringpool_str357[sizeof("X0208")]; - char stringpool_str359[sizeof("X0201")]; - char stringpool_str361[sizeof("CSISO159JISX02121990")]; - char stringpool_str362[sizeof("CSEUCKR")]; - char stringpool_str364[sizeof("ASMO-708")]; - char stringpool_str366[sizeof("ARABIC")]; - char stringpool_str367[sizeof("ISO-IR-100")]; - char stringpool_str368[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str370[sizeof("UCS-4-INTERNAL")]; - char stringpool_str374[sizeof("CHINESE")]; - char stringpool_str377[sizeof("ISO_8859-3:1988")]; - char stringpool_str378[sizeof("ISO-IR-203")]; - char stringpool_str379[sizeof("MS-EE")]; - char stringpool_str381[sizeof("TIS620-0")]; - char stringpool_str383[sizeof("UCS-2-INTERNAL")]; - char stringpool_str384[sizeof("TIS620.2529-1")]; - char stringpool_str387[sizeof("SHIFT-JIS")]; - char stringpool_str388[sizeof("SHIFT_JIS")]; - char stringpool_str389[sizeof("ISO-CELTIC")]; - char stringpool_str391[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str392[sizeof("VISCII")]; - char stringpool_str393[sizeof("WINDOWS-1258")]; - char stringpool_str394[sizeof("WINDOWS-1251")]; - char stringpool_str396[sizeof("GB_2312-80")]; - char stringpool_str398[sizeof("UTF-32LE")]; - char stringpool_str401[sizeof("WINDOWS-1256")]; - char stringpool_str403[sizeof("GB18030")]; - char stringpool_str404[sizeof("VISCII1.1-1")]; - char stringpool_str406[sizeof("WINDOWS-1254")]; - char stringpool_str411[sizeof("BIG5")]; - char stringpool_str412[sizeof("WINDOWS-1255")]; - char stringpool_str414[sizeof("BIG-5")]; - char stringpool_str415[sizeof("CSHPROMAN8")]; - char stringpool_str419[sizeof("WINDOWS-1252")]; - char stringpool_str423[sizeof("CSISOLATIN3")]; - char stringpool_str428[sizeof("CP1257")]; - char stringpool_str429[sizeof("ISO_646.IRV:1991")]; - char stringpool_str432[sizeof("WINDOWS-936")]; - char stringpool_str434[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str439[sizeof("ISO-2022-KR")]; - char stringpool_str441[sizeof("STRK1048-2002")]; - char stringpool_str442[sizeof("CSUNICODE11UTF7")]; - char stringpool_str444[sizeof("MACTHAI")]; - char stringpool_str446[sizeof("CSISO2022KR")]; - char stringpool_str449[sizeof("CP367")]; - char stringpool_str450[sizeof("UTF-7")]; - char stringpool_str452[sizeof("PTCP154")]; - char stringpool_str456[sizeof("WINDOWS-1253")]; - char stringpool_str458[sizeof("DECKANJI")]; - char stringpool_str459[sizeof("CSIBM866")]; - char stringpool_str461[sizeof("DEC-KANJI")]; - char stringpool_str463[sizeof("WINDOWS-1250")]; - char stringpool_str464[sizeof("MACARABIC")]; - char stringpool_str466[sizeof("CSVISCII")]; - char stringpool_str472[sizeof("ISO8859-7")]; - char stringpool_str475[sizeof("ISO-8859-7")]; - char stringpool_str476[sizeof("ISO_8859-7")]; - char stringpool_str477[sizeof("TIS620.2533-1")]; - char stringpool_str479[sizeof("ANSI_X3.4-1968")]; - char stringpool_str480[sizeof("MACINTOSH")]; - char stringpool_str485[sizeof("CSBIG5")]; - char stringpool_str487[sizeof("ANSI_X3.4-1986")]; - char stringpool_str488[sizeof("CN-BIG5")]; - char stringpool_str489[sizeof("KOI8-T")]; - char stringpool_str491[sizeof("ISO_8859-1:1987")]; - char stringpool_str493[sizeof("CSSHIFTJIS")]; - char stringpool_str496[sizeof("GEORGIAN-PS")]; - char stringpool_str497[sizeof("GBK")]; - char stringpool_str498[sizeof("ISO_8859-6:1987")]; - char stringpool_str501[sizeof("CSMACINTOSH")]; - char stringpool_str503[sizeof("GREEK8")]; - char stringpool_str504[sizeof("ISO-IR-87")]; - char stringpool_str513[sizeof("JIS_X0212")]; - char stringpool_str516[sizeof("ISO_8859-2:1987")]; - char stringpool_str518[sizeof("EUCTW")]; - char stringpool_str519[sizeof("KS_C_5601-1987")]; - char stringpool_str520[sizeof("UCS-4BE")]; - char stringpool_str521[sizeof("EUC-TW")]; - char stringpool_str522[sizeof("MS_KANJI")]; - char stringpool_str523[sizeof("ISO-IR-57")]; - char stringpool_str525[sizeof("ISO-2022-JP-MS")]; - char stringpool_str526[sizeof("ISO-2022-JP-1")]; - char stringpool_str528[sizeof("ISO-IR-157")]; - char stringpool_str530[sizeof("JIS_X0208")]; - char stringpool_str531[sizeof("CSKSC56011987")]; - char stringpool_str532[sizeof("JIS_X0201")]; - char stringpool_str533[sizeof("UCS-2BE")]; - char stringpool_str535[sizeof("ISO-IR-127")]; - char stringpool_str537[sizeof("CSGB2312")]; - char stringpool_str543[sizeof("CSISOLATINHEBREW")]; - char stringpool_str544[sizeof("CN-GB-ISOIR165")]; - char stringpool_str546[sizeof("TIS620.2533-0")]; - char stringpool_str548[sizeof("WINDOWS-874")]; - char stringpool_str549[sizeof("MACCENTRALEUROPE")]; - char stringpool_str550[sizeof("MS-HEBR")]; - char stringpool_str551[sizeof("ISO-2022-JP-2")]; - char stringpool_str553[sizeof("ISO_8859-7:2003")]; - char stringpool_str555[sizeof("TCVN5712-1")]; - char stringpool_str556[sizeof("JISX0201-1976")]; - char stringpool_str557[sizeof("CSISO2022JP2")]; - char stringpool_str558[sizeof("LATIN7")]; - char stringpool_str561[sizeof("UTF-16BE")]; - char stringpool_str563[sizeof("IBM-CP1133")]; - char stringpool_str568[sizeof("JIS_X0212-1990")]; - char stringpool_str569[sizeof("WINDOWS-1257")]; - char stringpool_str571[sizeof("CSEUCTW")]; - char stringpool_str573[sizeof("CSPTCP154")]; - char stringpool_str575[sizeof("TCVN-5712")]; - char stringpool_str579[sizeof("EUCJP")]; - char stringpool_str582[sizeof("EUC-JP")]; - char stringpool_str583[sizeof("ISO646-JP")]; - char stringpool_str588[sizeof("IBM367")]; - char stringpool_str592[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str594[sizeof("CSISOLATINGREEK")]; - char stringpool_str604[sizeof("JIS_X0208-1983")]; - char stringpool_str611[sizeof("JIS_X0208-1990")]; - char stringpool_str612[sizeof("MACUKRAINE")]; - char stringpool_str616[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str620[sizeof("JIS_X0212.1990-0")]; - char stringpool_str622[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str630[sizeof("UCS-4-SWAPPED")]; - char stringpool_str632[sizeof("HZ-GB-2312")]; - char stringpool_str633[sizeof("MS-ARAB")]; - char stringpool_str634[sizeof("UNICODELITTLE")]; - char stringpool_str637[sizeof("MS-TURK")]; - char stringpool_str638[sizeof("CN-GB")]; - char stringpool_str639[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str641[sizeof("UTF-32BE")]; - char stringpool_str643[sizeof("UCS-2-SWAPPED")]; - char stringpool_str647[sizeof("CSISO58GB231280")]; - char stringpool_str666[sizeof("ISO_8859-7:1987")]; - char stringpool_str670[sizeof("CSISO57GB1988")]; - char stringpool_str676[sizeof("CSISO87JISX0208")]; - char stringpool_str680[sizeof("GB18030:2022")]; - char stringpool_str691[sizeof("GREEK")]; - char stringpool_str702[sizeof("BIG5HKSCS")]; - char stringpool_str705[sizeof("BIG5-HKSCS")]; - char stringpool_str709[sizeof("ISO-2022-JP")]; - char stringpool_str713[sizeof("MACTURKISH")]; - char stringpool_str716[sizeof("CSISO2022JP")]; - char stringpool_str717[sizeof("GB18030:2005")]; - char stringpool_str722[sizeof("JOHAB")]; - char stringpool_str759[sizeof("HEBREW")]; - char stringpool_str766[sizeof("UNICODEBIG")]; - char stringpool_str782[sizeof("MS-GREEK")]; - char stringpool_str789[sizeof("MACGREEK")]; - char stringpool_str792[sizeof("WINBALTRIM")]; - char stringpool_str807[sizeof("TCVN5712-1:1993")]; - char stringpool_str854[sizeof("BIGFIVE")]; - char stringpool_str857[sizeof("BIG-FIVE")]; - char stringpool_str896[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str897[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str903[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str906[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str909[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str951[sizeof("MACHEBREW")]; - char stringpool_str953[sizeof("NEXTSTEP")]; + char stringpool_str22[sizeof("L6")]; + char stringpool_str24[sizeof("L5")]; + char stringpool_str28[sizeof("L2")]; + char stringpool_str38[sizeof("L1")]; + char stringpool_str42[sizeof("866")]; + char stringpool_str43[sizeof("ATARI")]; + char stringpool_str44[sizeof("865")]; + char stringpool_str45[sizeof("855")]; + char stringpool_str48[sizeof("862")]; + char stringpool_str49[sizeof("852")]; + char stringpool_str50[sizeof("CP1256")]; + char stringpool_str52[sizeof("CP1255")]; + char stringpool_str54[sizeof("CP1166")]; + char stringpool_str55[sizeof("CP1156")]; + char stringpool_str56[sizeof("CP1252")]; + char stringpool_str57[sizeof("CP1155")]; + char stringpool_str58[sizeof("861")]; + char stringpool_str59[sizeof("CP1125")]; + char stringpool_str60[sizeof("CP1162")]; + char stringpool_str63[sizeof("CP1122")]; + char stringpool_str66[sizeof("CP1251")]; + char stringpool_str68[sizeof("CP1112")]; + char stringpool_str70[sizeof("CP1161")]; + char stringpool_str71[sizeof("CP866")]; + char stringpool_str72[sizeof("CP856")]; + char stringpool_str73[sizeof("CP865")]; + char stringpool_str74[sizeof("CP855")]; + char stringpool_str76[sizeof("CP285")]; + char stringpool_str77[sizeof("CP862")]; + char stringpool_str78[sizeof("CP852")]; + char stringpool_str80[sizeof("R8")]; + char stringpool_str87[sizeof("CP861")]; + char stringpool_str88[sizeof("ARABIC")]; + char stringpool_str91[sizeof("JP")]; + char stringpool_str92[sizeof("L8")]; + char stringpool_str93[sizeof("LATIN6")]; + char stringpool_str95[sizeof("LATIN5")]; + char stringpool_str98[sizeof("L4")]; + char stringpool_str99[sizeof("LATIN2")]; + char stringpool_str103[sizeof("PT154")]; + char stringpool_str109[sizeof("LATIN1")]; + char stringpool_str114[sizeof("CP1026")]; + char stringpool_str116[sizeof("CP1025")]; + char stringpool_str120[sizeof("CP1258")]; + char stringpool_str121[sizeof("CP154")]; + char stringpool_str122[sizeof("CN")]; + char stringpool_str125[sizeof("CP1158")]; + char stringpool_str126[sizeof("CP1254")]; + char stringpool_str128[sizeof("CP50221")]; + char stringpool_str130[sizeof("CP1164")]; + char stringpool_str131[sizeof("CP1154")]; + char stringpool_str132[sizeof("PTCP154")]; + char stringpool_str133[sizeof("CP1124")]; + char stringpool_str141[sizeof("HZ")]; + char stringpool_str142[sizeof("CP858")]; + char stringpool_str147[sizeof("CP864")]; + char stringpool_str149[sizeof("CP1046")]; + char stringpool_str150[sizeof("CP284")]; + char stringpool_str153[sizeof("CP424")]; + char stringpool_str159[sizeof("CP01146")]; + char stringpool_str161[sizeof("CP01145")]; + char stringpool_str162[sizeof("L10")]; + char stringpool_str163[sizeof("LATIN8")]; + char stringpool_str165[sizeof("CP01142")]; + char stringpool_str169[sizeof("LATIN4")]; + char stringpool_str172[sizeof("860")]; + char stringpool_str173[sizeof("850")]; + char stringpool_str175[sizeof("CP01141")]; + char stringpool_str179[sizeof("CP1132")]; + char stringpool_str180[sizeof("CP1250")]; + char stringpool_str181[sizeof("CP1361")]; + char stringpool_str184[sizeof("CP1160")]; + char stringpool_str189[sizeof("CP1131")]; + char stringpool_str200[sizeof("JOHAB")]; + char stringpool_str201[sizeof("CP860")]; + char stringpool_str202[sizeof("CP850")]; + char stringpool_str204[sizeof("CP280")]; + char stringpool_str207[sizeof("X0212")]; + char stringpool_str224[sizeof("CP16804")]; + char stringpool_str225[sizeof("IBM1166")]; + char stringpool_str226[sizeof("IBM1156")]; + char stringpool_str227[sizeof("IBM1165")]; + char stringpool_str228[sizeof("IBM1155")]; + char stringpool_str229[sizeof("CP01148")]; + char stringpool_str231[sizeof("IBM1162")]; + char stringpool_str232[sizeof("CP500")]; + char stringpool_str233[sizeof("LATIN10")]; + char stringpool_str234[sizeof("IBM1122")]; + char stringpool_str235[sizeof("CP01144")]; + char stringpool_str236[sizeof("CP880")]; + char stringpool_str239[sizeof("IBM1112")]; + char stringpool_str241[sizeof("IBM1161")]; + char stringpool_str242[sizeof("IBM866")]; + char stringpool_str244[sizeof("IBM865")]; + char stringpool_str245[sizeof("IBM855")]; + char stringpool_str247[sizeof("IBM285")]; + char stringpool_str248[sizeof("IBM862")]; + char stringpool_str249[sizeof("IBM852")]; + char stringpool_str250[sizeof("IBM425")]; + char stringpool_str251[sizeof("IBM282")]; + char stringpool_str256[sizeof("CP12712")]; + char stringpool_str257[sizeof("BIG5")]; + char stringpool_str258[sizeof("IBM861")]; + char stringpool_str260[sizeof("L3")]; + char stringpool_str261[sizeof("MAC")]; + char stringpool_str263[sizeof("IBM1146")]; + char stringpool_str264[sizeof("CP875")]; + char stringpool_str265[sizeof("IBM1145")]; + char stringpool_str269[sizeof("IBM1142")]; + char stringpool_str274[sizeof("X0201")]; + char stringpool_str278[sizeof("CP871")]; + char stringpool_str279[sizeof("IBM1141")]; + char stringpool_str280[sizeof("863")]; + char stringpool_str285[sizeof("IBM1026")]; + char stringpool_str287[sizeof("IBM1025")]; + char stringpool_str288[sizeof("CP1253")]; + char stringpool_str289[sizeof("CP01140")]; + char stringpool_str292[sizeof("CP1163")]; + char stringpool_str293[sizeof("CP1153")]; + char stringpool_str295[sizeof("CP1123")]; + char stringpool_str296[sizeof("IBM1158")]; + char stringpool_str300[sizeof("CP278")]; + char stringpool_str301[sizeof("IBM1164")]; + char stringpool_str302[sizeof("IBM1154")]; + char stringpool_str303[sizeof("CP1130")]; + char stringpool_str309[sizeof("CP863")]; + char stringpool_str310[sizeof("CP853")]; + char stringpool_str311[sizeof("UHC")]; + char stringpool_str315[sizeof("CP423")]; + char stringpool_str318[sizeof("IBM864")]; + char stringpool_str321[sizeof("IBM284")]; + char stringpool_str324[sizeof("IBM424")]; + char stringpool_str328[sizeof("X0208")]; + char stringpool_str331[sizeof("LATIN3")]; + char stringpool_str333[sizeof("IBM1148")]; + char stringpool_str338[sizeof("CP874")]; + char stringpool_str339[sizeof("IBM1144")]; + char stringpool_str341[sizeof("ROMAN8")]; + char stringpool_str347[sizeof("CYRILLIC")]; + char stringpool_str350[sizeof("IBM1132")]; + char stringpool_str351[sizeof("MACTHAI")]; + char stringpool_str355[sizeof("IBM1160")]; + char stringpool_str357[sizeof("IBM16804")]; + char stringpool_str365[sizeof("IBM01146")]; + char stringpool_str368[sizeof("IBM01144")]; + char stringpool_str371[sizeof("IBM01142")]; + char stringpool_str372[sizeof("IBM860")]; + char stringpool_str373[sizeof("IBM850")]; + char stringpool_str375[sizeof("IBM280")]; + char stringpool_str392[sizeof("CP870")]; + char stringpool_str393[sizeof("IBM1140")]; + char stringpool_str395[sizeof("GB2312")]; + char stringpool_str397[sizeof("CP01143")]; + char stringpool_str398[sizeof("IBM01140")]; + char stringpool_str403[sizeof("IBM500")]; + char stringpool_str404[sizeof("L7")]; + char stringpool_str407[sizeof("IBM880")]; + char stringpool_str411[sizeof("CP1133")]; + char stringpool_str413[sizeof("ASCII")]; + char stringpool_str420[sizeof("CP775")]; + char stringpool_str425[sizeof("857")]; + char stringpool_str428[sizeof("ATARIST")]; + char stringpool_str431[sizeof("IBM838")]; + char stringpool_str432[sizeof("CP1257")]; + char stringpool_str435[sizeof("IBM875")]; + char stringpool_str437[sizeof("CP1157")]; + char stringpool_str448[sizeof("CP922")]; + char stringpool_str449[sizeof("IBM871")]; + char stringpool_str450[sizeof("IBM01143")]; + char stringpool_str454[sizeof("CP857")]; + char stringpool_str457[sizeof("IBM01141")]; + char stringpool_str462[sizeof("IBM12712")]; + char stringpool_str463[sizeof("IBM1163")]; + char stringpool_str464[sizeof("IBM1153")]; + char stringpool_str465[sizeof("TDS565")]; + char stringpool_str466[sizeof("IBM1123")]; + char stringpool_str467[sizeof("MACCYRILLIC")]; + char stringpool_str468[sizeof("CP273")]; + char stringpool_str471[sizeof("IBM278")]; + char stringpool_str474[sizeof("IBM1130")]; + char stringpool_str475[sizeof("LATIN7")]; + char stringpool_str480[sizeof("IBM863")]; + char stringpool_str482[sizeof("MACROMANIA")]; + char stringpool_str486[sizeof("IBM423")]; + char stringpool_str491[sizeof("RK1048")]; + char stringpool_str499[sizeof("IBM-285")]; + char stringpool_str501[sizeof("IBM1143")]; + char stringpool_str502[sizeof("IBM-425")]; + char stringpool_str503[sizeof("IBM-282")]; + char stringpool_str504[sizeof("MACROMAN")]; + char stringpool_str505[sizeof("EUCJP")]; + char stringpool_str506[sizeof("CP905")]; + char stringpool_str509[sizeof("BIG-5")]; + char stringpool_str511[sizeof("CSPCP852")]; + char stringpool_str512[sizeof("IBM-1166")]; + char stringpool_str513[sizeof("IBM-1156")]; + char stringpool_str515[sizeof("IBM-1164")]; + char stringpool_str516[sizeof("IBM-1154")]; + char stringpool_str518[sizeof("IBM-1162")]; + char stringpool_str520[sizeof("TIS620")]; + char stringpool_str521[sizeof("IBM-1122")]; + char stringpool_str522[sizeof("IBM01145")]; + char stringpool_str526[sizeof("IBM-1112")]; + char stringpool_str531[sizeof("CP1047")]; + char stringpool_str536[sizeof("EUCCN")]; + char stringpool_str537[sizeof("CP367")]; + char stringpool_str541[sizeof("CP01147")]; + char stringpool_str542[sizeof("CP-GR")]; + char stringpool_str545[sizeof("IBM-1160")]; + char stringpool_str546[sizeof("437")]; + char stringpool_str550[sizeof("IBM-1146")]; + char stringpool_str553[sizeof("IBM-1144")]; + char stringpool_str555[sizeof("CP1137")]; + char stringpool_str556[sizeof("IBM-1142")]; + char stringpool_str558[sizeof("CP936")]; + char stringpool_str563[sizeof("IBM870")]; + char stringpool_str564[sizeof("CP932")]; + char stringpool_str570[sizeof("CP950")]; + char stringpool_str572[sizeof("IBM-1026")]; + char stringpool_str573[sizeof("IBM-284")]; + char stringpool_str575[sizeof("CP437")]; + char stringpool_str576[sizeof("IBM-424")]; + char stringpool_str578[sizeof("CN-GB")]; + char stringpool_str583[sizeof("IBM-1140")]; + char stringpool_str584[sizeof("CN-BIG5")]; + char stringpool_str585[sizeof("IBM-16804")]; + char stringpool_str591[sizeof("IBM775")]; + char stringpool_str597[sizeof("IBM-1163")]; + char stringpool_str598[sizeof("IBM-1153")]; + char stringpool_str600[sizeof("IBM-1123")]; + char stringpool_str602[sizeof("CP037")]; + char stringpool_str603[sizeof("KOI8-R")]; + char stringpool_str604[sizeof("IBM-1161")]; + char stringpool_str607[sizeof("KOI8-T")]; + char stringpool_str608[sizeof("IBM1157")]; + char stringpool_str615[sizeof("MACARABIC")]; + char stringpool_str618[sizeof("GB18030")]; + char stringpool_str621[sizeof("JAVA")]; + char stringpool_str625[sizeof("IBM857")]; + char stringpool_str627[sizeof("IBM-280")]; + char stringpool_str629[sizeof("TCVN")]; + char stringpool_str634[sizeof("KOREAN")]; + char stringpool_str635[sizeof("IBM-1143")]; + char stringpool_str637[sizeof("IBM-1132")]; + char stringpool_str639[sizeof("IBM273")]; + char stringpool_str641[sizeof("HP-ROMAN8")]; + char stringpool_str642[sizeof("IBM-1141")]; + char stringpool_str643[sizeof("IBM01148")]; + char stringpool_str644[sizeof("CYRILLIC-ASIAN")]; + char stringpool_str645[sizeof("IBM1147")]; + char stringpool_str647[sizeof("GB18030:2005")]; + char stringpool_str648[sizeof("MACINTOSH")]; + char stringpool_str652[sizeof("CP00924")]; + char stringpool_str653[sizeof("CSBIG5")]; + char stringpool_str655[sizeof("IBM-500")]; + char stringpool_str659[sizeof("IBM-880")]; + char stringpool_str662[sizeof("CSIBM1162")]; + char stringpool_str664[sizeof("IBM-1130")]; + char stringpool_str669[sizeof("IBM-1165")]; + char stringpool_str670[sizeof("IBM-1155")]; + char stringpool_str671[sizeof("JIS0208")]; + char stringpool_str672[sizeof("CSIBM1161")]; + char stringpool_str673[sizeof("CSIBM866")]; + char stringpool_str676[sizeof("CSIBM864")]; + char stringpool_str677[sizeof("IBM905")]; + char stringpool_str679[sizeof("CSIBM284")]; + char stringpool_str682[sizeof("CSIBM424")]; + char stringpool_str683[sizeof("IBM-838")]; + char stringpool_str686[sizeof("CP4971")]; + char stringpool_str687[sizeof("IBM-875")]; + char stringpool_str689[sizeof("IBM924")]; + char stringpool_str694[sizeof("ISO646-JP")]; + char stringpool_str696[sizeof("TIS620.2533-1")]; + char stringpool_str701[sizeof("IBM-871")]; + char stringpool_str702[sizeof("IBM1047")]; + char stringpool_str706[sizeof("CSIBM860")]; + char stringpool_str707[sizeof("IBM-1145")]; + char stringpool_str708[sizeof("IBM367")]; + char stringpool_str709[sizeof("CSIBM280")]; + char stringpool_str715[sizeof("CP943")]; + char stringpool_str716[sizeof("CSIBM1026")]; + char stringpool_str718[sizeof("CSPTCP154")]; + char stringpool_str721[sizeof("EUCKR")]; + char stringpool_str723[sizeof("IBM-278")]; + char stringpool_str724[sizeof("CCSID00924")]; + char stringpool_str726[sizeof("IBM1137")]; + char stringpool_str727[sizeof("CSIBMTHAI")]; + char stringpool_str728[sizeof("CP737")]; + char stringpool_str729[sizeof("IBM-1025")]; + char stringpool_str732[sizeof("MACICELAND")]; + char stringpool_str735[sizeof("IBM01149")]; + char stringpool_str737[sizeof("CSIBM500")]; + char stringpool_str738[sizeof("IBM-423")]; + char stringpool_str741[sizeof("CSIBM880")]; + char stringpool_str743[sizeof("CCSID01146")]; + char stringpool_str745[sizeof("CCSID01145")]; + char stringpool_str746[sizeof("IBM437")]; + char stringpool_str747[sizeof("CSKOI8R")]; + char stringpool_str749[sizeof("CCSID01142")]; + char stringpool_str753[sizeof("TIS620.2533-0")]; + char stringpool_str757[sizeof("EUC-JP")]; + char stringpool_str758[sizeof("CSIBM863")]; + char stringpool_str759[sizeof("CCSID01141")]; + char stringpool_str760[sizeof("GB18030:2022")]; + char stringpool_str761[sizeof("KZ-1048")]; + char stringpool_str764[sizeof("CSIBM423")]; + char stringpool_str765[sizeof("CSIBM861")]; + char stringpool_str769[sizeof("ECMA-114")]; + char stringpool_str772[sizeof("TIS-620")]; + char stringpool_str773[sizeof("IBM037")]; + char stringpool_str776[sizeof("EBCDIC-LATIN9-EURO")]; + char stringpool_str777[sizeof("TIS620-0")]; + char stringpool_str783[sizeof("IBM277")]; + char stringpool_str785[sizeof("IBM00924")]; + char stringpool_str788[sizeof("EUC-CN")]; + char stringpool_str790[sizeof("IBM-12712")]; + char stringpool_str791[sizeof("IBM-1158")]; + char stringpool_str809[sizeof("CSASCII")]; + char stringpool_str813[sizeof("CCSID01148")]; + char stringpool_str815[sizeof("IBM-870")]; + char stringpool_str818[sizeof("CSIBM00924")]; + char stringpool_str819[sizeof("CCSID01144")]; + char stringpool_str820[sizeof("TIS620.2529-1")]; + char stringpool_str822[sizeof("WINBALTRIM")]; + char stringpool_str823[sizeof("UCS-2")]; + char stringpool_str824[sizeof("CP297")]; + char stringpool_str825[sizeof("BIG5-2003")]; + char stringpool_str826[sizeof("CSGB2312")]; + char stringpool_str828[sizeof("IBM-1148")]; + char stringpool_str830[sizeof("CSIBM865")]; + char stringpool_str831[sizeof("CSIBM855")]; + char stringpool_str833[sizeof("CSIBM285")]; + char stringpool_str837[sizeof("GBK")]; + char stringpool_str839[sizeof("CSIBM01145")]; + char stringpool_str843[sizeof("CSIBM01142")]; + char stringpool_str846[sizeof("CSHPROMAN8")]; + char stringpool_str848[sizeof("869")]; + char stringpool_str850[sizeof("MACCROATIAN")]; + char stringpool_str851[sizeof("MS-ARAB")]; + char stringpool_str853[sizeof("CSIBM01141")]; + char stringpool_str857[sizeof("IBM4971")]; + char stringpool_str860[sizeof("IBM-THAI")]; + char stringpool_str863[sizeof("CP1129")]; + char stringpool_str873[sizeof("CCSID01140")]; + char stringpool_str877[sizeof("CP869")]; + char stringpool_str883[sizeof("UTF-16")]; + char stringpool_str885[sizeof("CP819")]; + char stringpool_str891[sizeof("IBM-273")]; + char stringpool_str892[sizeof("JIS_X0201")]; + char stringpool_str893[sizeof("UCS-4")]; + char stringpool_str894[sizeof("CSIBM1163")]; + char stringpool_str896[sizeof("CP1097")]; + char stringpool_str897[sizeof("CSIBM870")]; + char stringpool_str898[sizeof("HZ-GB-2312")]; + char stringpool_str899[sizeof("IBM737")]; + char stringpool_str901[sizeof("VISCII")]; + char stringpool_str903[sizeof("US")]; + char stringpool_str907[sizeof("CSIBM01148")]; + char stringpool_str912[sizeof("MS-CYRL")]; + char stringpool_str914[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str917[sizeof("CSIBM273")]; + char stringpool_str920[sizeof("IBM-1149")]; + char stringpool_str921[sizeof("KOI8-U")]; + char stringpool_str924[sizeof("IBM01147")]; + char stringpool_str927[sizeof("ISO-IR-6")]; + char stringpool_str928[sizeof("KOI8-RU")]; + char stringpool_str929[sizeof("IBM-905")]; + char stringpool_str931[sizeof("CSISO58GB231280")]; + char stringpool_str933[sizeof("ISO_8859-6")]; + char stringpool_str935[sizeof("ISO_8859-5")]; + char stringpool_str937[sizeof("ISO-IR-226")]; + char stringpool_str939[sizeof("ISO_8859-2")]; + char stringpool_str941[sizeof("IBM-924")]; + char stringpool_str943[sizeof("UTF-8")]; + char stringpool_str944[sizeof("ISO_8859-15")]; + char stringpool_str946[sizeof("JIS_X0208")]; + char stringpool_str949[sizeof("ISO_8859-1")]; + char stringpool_str953[sizeof("DEC-KANJI")]; + char stringpool_str954[sizeof("ISO_8859-11")]; + char stringpool_str956[sizeof("CSIBM871")]; + char stringpool_str959[sizeof("ISO_8859-10:1992")]; + char stringpool_str960[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str963[sizeof("CSISO159JISX02121990")]; + char stringpool_str964[sizeof("ISO-8859-6")]; + char stringpool_str965[sizeof("CP01149")]; + char stringpool_str966[sizeof("ISO-8859-5")]; + char stringpool_str967[sizeof("CSIBM01140")]; + char stringpool_str968[sizeof("CSISO2022CN")]; + char stringpool_str970[sizeof("ISO-8859-2")]; + char stringpool_str973[sizeof("EUC-KR")]; + char stringpool_str974[sizeof("IBM-CP1133")]; + char stringpool_str975[sizeof("ISO-8859-15")]; + char stringpool_str977[sizeof("ISO_8859-5:1988")]; + char stringpool_str978[sizeof("EBCDIC-CYRILLIC")]; + char stringpool_str980[sizeof("ISO-8859-1")]; + char stringpool_str981[sizeof("CCSID01143")]; + char stringpool_str982[sizeof("ISO_8859-14")]; + char stringpool_str983[sizeof("ISO_8859-15:1998")]; + char stringpool_str984[sizeof("ISO_8859-14:1998")]; + char stringpool_str985[sizeof("ISO-8859-11")]; + char stringpool_str988[sizeof("ISO646-CN")]; + char stringpool_str993[sizeof("UNICODELITTLE")]; + char stringpool_str994[sizeof("DECHANYU")]; + char stringpool_str995[sizeof("IBM297")]; + char stringpool_str996[sizeof("EBCDIC-GB-285+EURO")]; + char stringpool_str998[sizeof("JIS_X0212")]; + char stringpool_str999[sizeof("EBCDIC-NO-277+EURO")]; + char stringpool_str1000[sizeof("UTF-32")]; + char stringpool_str1001[sizeof("NEXTSTEP")]; + char stringpool_str1003[sizeof("ISO_8859-8")]; + char stringpool_str1009[sizeof("ISO_8859-4")]; + char stringpool_str1011[sizeof("ISO_8859-8:1988")]; + char stringpool_str1013[sizeof("ISO-8859-14")]; + char stringpool_str1014[sizeof("ISO_8859-4:1988")]; + char stringpool_str1015[sizeof("ISO-IR-166")]; + char stringpool_str1016[sizeof("ISO_8859-10")]; + char stringpool_str1017[sizeof("ISO-IR-165")]; + char stringpool_str1018[sizeof("ISO-IR-126")]; + char stringpool_str1020[sizeof("CP-IS")]; + char stringpool_str1025[sizeof("IBM-037")]; + char stringpool_str1034[sizeof("ISO-8859-8")]; + char stringpool_str1035[sizeof("IBM-277")]; + char stringpool_str1037[sizeof("CSUCS4")]; + char stringpool_str1040[sizeof("ISO-8859-4")]; + char stringpool_str1041[sizeof("ISO-2022-CN-EXT")]; + char stringpool_str1043[sizeof("CSIBM869")]; + char stringpool_str1044[sizeof("ECMA-118")]; + char stringpool_str1047[sizeof("ISO-8859-10")]; + char stringpool_str1048[sizeof("IBM869")]; + char stringpool_str1056[sizeof("IBM819")]; + char stringpool_str1059[sizeof("ISO_646.IRV:1991")]; + char stringpool_str1060[sizeof("CSIBM1047")]; + char stringpool_str1061[sizeof("MULELAO-1")]; + char stringpool_str1062[sizeof("DECKANJI")]; + char stringpool_str1063[sizeof("DEC-HANYU")]; + char stringpool_str1064[sizeof("GREEK8")]; + char stringpool_str1067[sizeof("IBM1097")]; + char stringpool_str1069[sizeof("IBM1149")]; + char stringpool_str1072[sizeof("IBM-1157")]; + char stringpool_str1075[sizeof("CSIBM01143")]; + char stringpool_str1076[sizeof("ISO-2022-CN")]; + char stringpool_str1078[sizeof("EUCTW")]; + char stringpool_str1086[sizeof("EBCDIC-FI-278+EURO")]; + char stringpool_str1088[sizeof("JIS_C6220-1969-RO")]; + char stringpool_str1089[sizeof("ISO-IR-14")]; + char stringpool_str1091[sizeof("EBCDIC-FR-297+EURO")]; + char stringpool_str1092[sizeof("ARMSCII-8")]; + char stringpool_str1093[sizeof("EBCDIC-CP-NO")]; + char stringpool_str1094[sizeof("MS936")]; + char stringpool_str1095[sizeof("ISO_8859-3:1988")]; + char stringpool_str1096[sizeof("ISO-IR-101")]; + char stringpool_str1097[sizeof("JIS_X0212.1990-0")]; + char stringpool_str1099[sizeof("TCVN5712-1")]; + char stringpool_str1100[sizeof("ISO_8859-13")]; + char stringpool_str1107[sizeof("EBCDIC-CP-NL")]; + char stringpool_str1109[sizeof("IBM-1147")]; + char stringpool_str1110[sizeof("CSIBM278")]; + char stringpool_str1113[sizeof("KSC_5601")]; + char stringpool_str1114[sizeof("GEORGIAN-ACADEMY")]; + char stringpool_str1116[sizeof("CSPC775BALTIC")]; + char stringpool_str1117[sizeof("CSEUCKR")]; + char stringpool_str1120[sizeof("UNICODEBIG")]; + char stringpool_str1123[sizeof("ISO-IR-148")]; + char stringpool_str1125[sizeof("CCSID01147")]; + char stringpool_str1129[sizeof("ISO-IR-144")]; + char stringpool_str1131[sizeof("ISO-8859-13")]; + char stringpool_str1132[sizeof("ISO_8859-6:1987")]; + char stringpool_str1134[sizeof("ISO_8859-16")]; + char stringpool_str1135[sizeof("ISO_8859-2:1987")]; + char stringpool_str1136[sizeof("JIS_C6226-1983")]; + char stringpool_str1140[sizeof("ISO_8859-1:1987")]; + char stringpool_str1145[sizeof("MS-HEBR")]; + char stringpool_str1147[sizeof("ISO_8859-16:2001")]; + char stringpool_str1148[sizeof("CSKZ1048")]; + char stringpool_str1151[sizeof("LATIN-9")]; + char stringpool_str1153[sizeof("ISO-IR-110")]; + char stringpool_str1155[sizeof("ISO-IR-58")]; + char stringpool_str1160[sizeof("TCVN-5712")]; + char stringpool_str1165[sizeof("ISO-8859-16")]; + char stringpool_str1166[sizeof("IBM-1047")]; + char stringpool_str1169[sizeof("CSPC8CODEPAGE1146")]; + char stringpool_str1171[sizeof("ISO_8859-3")]; + char stringpool_str1172[sizeof("EBCDIC-CP-CA")]; + char stringpool_str1177[sizeof("EBCDIC-CP-GB")]; + char stringpool_str1180[sizeof("EBCDIC-CP-IT")]; + char stringpool_str1182[sizeof("EBCDIC-CP-GR")]; + char stringpool_str1183[sizeof("ISO-IR-230")]; + char stringpool_str1185[sizeof("CSISO2022JP")]; + char stringpool_str1186[sizeof("GB_2312-80")]; + char stringpool_str1189[sizeof("CSISO2022JP2")]; + char stringpool_str1190[sizeof("IBM-1137")]; + char stringpool_str1196[sizeof("SJIS")]; + char stringpool_str1198[sizeof("HEBREW")]; + char stringpool_str1199[sizeof("RISCOS-LATIN1")]; + char stringpool_str1200[sizeof("CHINESE")]; + char stringpool_str1201[sizeof("ELOT_928")]; + char stringpool_str1202[sizeof("ISO-8859-3")]; + char stringpool_str1204[sizeof("ISO-IR-138")]; + char stringpool_str1207[sizeof("CSPC8CODEPAGE1144")]; + char stringpool_str1208[sizeof("EBCDIC-CP-WT")]; + char stringpool_str1210[sizeof("ISO-IR-100")]; + char stringpool_str1218[sizeof("TCVN5712-1:1993")]; + char stringpool_str1219[sizeof("CSIBM01147")]; + char stringpool_str1220[sizeof("IBM-4971")]; + char stringpool_str1226[sizeof("UNICODE-1-1")]; + char stringpool_str1233[sizeof("CSIBM857")]; + char stringpool_str1236[sizeof("JIS_X0208-1990")]; + char stringpool_str1237[sizeof("ISO-IR-203")]; + char stringpool_str1241[sizeof("C99")]; + char stringpool_str1247[sizeof("IBM-297")]; + char stringpool_str1248[sizeof("MACCENTRALEUROPE")]; + char stringpool_str1249[sizeof("MS-ANSI")]; + char stringpool_str1251[sizeof("ISO_8859-7:2003")]; + char stringpool_str1252[sizeof("EBCDIC-CP-CH")]; + char stringpool_str1253[sizeof("VISCII1.1-1")]; + char stringpool_str1255[sizeof("UTF-7")]; + char stringpool_str1256[sizeof("EBCDIC-CP-TR")]; + char stringpool_str1257[sizeof("ANSI_X3.4-1986")]; + char stringpool_str1262[sizeof("UCS-2BE")]; + char stringpool_str1263[sizeof("CSIBM905")]; + char stringpool_str1265[sizeof("ISO8859-6")]; + char stringpool_str1267[sizeof("ISO8859-5")]; + char stringpool_str1271[sizeof("ISO8859-2")]; + char stringpool_str1274[sizeof("EBCDIC-CP-YU")]; + char stringpool_str1275[sizeof("ISO8859-16")]; + char stringpool_str1277[sizeof("ISO8859-15")]; + char stringpool_str1279[sizeof("UCS-2LE")]; + char stringpool_str1281[sizeof("ISO8859-1")]; + char stringpool_str1283[sizeof("CP949")]; + char stringpool_str1284[sizeof("GREEK")]; + char stringpool_str1290[sizeof("JIS_X0208-1983")]; + char stringpool_str1291[sizeof("ISO8859-11")]; + char stringpool_str1292[sizeof("ANSI_X3.4-1968")]; + char stringpool_str1293[sizeof("ISO-2022-JP")]; + char stringpool_str1295[sizeof("EBCDIC-IT-280+EURO")]; + char stringpool_str1297[sizeof("UCS-4BE")]; + char stringpool_str1298[sizeof("ISO-2022-JP-2")]; + char stringpool_str1299[sizeof("CSISO14JISC6220RO")]; + char stringpool_str1300[sizeof("CSISO57GB1988")]; + char stringpool_str1303[sizeof("ISO-2022-JP-1")]; + char stringpool_str1306[sizeof("EBCDIC-CP-HE")]; + char stringpool_str1313[sizeof("EBCDIC-CP-SE")]; + char stringpool_str1314[sizeof("UCS-4LE")]; + char stringpool_str1315[sizeof("ISO_8859-7")]; + char stringpool_str1320[sizeof("JIS_X0212-1990")]; + char stringpool_str1323[sizeof("ISO_8859-7:1987")]; + char stringpool_str1330[sizeof("EUC-TW")]; + char stringpool_str1331[sizeof("EBCDIC-CP-BE")]; + char stringpool_str1332[sizeof("CSUNICODE11")]; + char stringpool_str1333[sizeof("EBCDIC-CP-FI")]; + char stringpool_str1335[sizeof("ISO8859-8")]; + char stringpool_str1336[sizeof("ISO-2022-JP-2004")]; + char stringpool_str1338[sizeof("EBCDIC-CP-FR")]; + char stringpool_str1341[sizeof("ISO8859-4")]; + char stringpool_str1346[sizeof("ISO-8859-7")]; + char stringpool_str1348[sizeof("EUC-JISX0213")]; + char stringpool_str1349[sizeof("STRK1048-2002")]; + char stringpool_str1351[sizeof("ISO8859-14")]; + char stringpool_str1352[sizeof("UTF-16BE")]; + char stringpool_str1355[sizeof("CSISOLATIN5")]; + char stringpool_str1359[sizeof("CSPC8CODEPAGE437")]; + char stringpool_str1365[sizeof("CSISOLATIN1")]; + char stringpool_str1369[sizeof("UTF-16LE")]; + char stringpool_str1376[sizeof("GEORGIAN-PS")]; + char stringpool_str1378[sizeof("CN-GB-ISOIR165")]; + char stringpool_str1379[sizeof("EBCDIC-SE-278+EURO")]; + char stringpool_str1380[sizeof("JISX0201-1976")]; + char stringpool_str1381[sizeof("CSIBM037")]; + char stringpool_str1384[sizeof("CSISOLATINARABIC")]; + char stringpool_str1391[sizeof("CSIBM277")]; + char stringpool_str1393[sizeof("CSISOLATIN4")]; + char stringpool_str1398[sizeof("ISO-IR-157")]; + char stringpool_str1400[sizeof("ISO-IR-127")]; + char stringpool_str1405[sizeof("ISO8859-10")]; + char stringpool_str1410[sizeof("ASMO-708")]; + char stringpool_str1414[sizeof("ISO-2022-JP-3")]; + char stringpool_str1415[sizeof("UNICODE-1-1-UTF-7")]; + char stringpool_str1421[sizeof("MACGREEK")]; + char stringpool_str1424[sizeof("EBCDIC-INTERNATIONAL-500+EURO")]; + char stringpool_str1448[sizeof("ISO-CELTIC")]; + char stringpool_str1456[sizeof("CSISO87JISX0208")]; + char stringpool_str1460[sizeof("MACHEBREW")]; + char stringpool_str1461[sizeof("CSISOLATINCYRILLIC")]; + char stringpool_str1466[sizeof("UTF-32BE")]; + char stringpool_str1467[sizeof("ISO-IR-57")]; + char stringpool_str1469[sizeof("ISO-10646-UCS-2")]; + char stringpool_str1472[sizeof("BIG5-HKSCS:2001")]; + char stringpool_str1474[sizeof("CSEUCTW")]; + char stringpool_str1476[sizeof("CSISOLATIN2")]; + char stringpool_str1479[sizeof("MS-EE")]; + char stringpool_str1483[sizeof("UTF-32LE")]; + char stringpool_str1492[sizeof("US-ASCII")]; + char stringpool_str1497[sizeof("MACUKRAINE")]; + char stringpool_str1499[sizeof("BIG5-HKSCS:2008")]; + char stringpool_str1502[sizeof("BIG5-HKSCS:2004")]; + char stringpool_str1503[sizeof("ISO8859-3")]; + char stringpool_str1504[sizeof("ISO-10646-UCS-4")]; + char stringpool_str1511[sizeof("CSISOLATIN3")]; + char stringpool_str1513[sizeof("ISO8859-13")]; + char stringpool_str1519[sizeof("CSUNICODE11UTF7")]; + char stringpool_str1523[sizeof("MS_KANJI")]; + char stringpool_str1528[sizeof("CSUNICODE")]; + char stringpool_str1531[sizeof("IBM-1097")]; + char stringpool_str1534[sizeof("GB_1988-80")]; + char stringpool_str1540[sizeof("EBCDIC-CP-IS")]; + char stringpool_str1545[sizeof("CSISOLATIN6")]; + char stringpool_str1549[sizeof("CCSID01149")]; + char stringpool_str1554[sizeof("ISO-IR-87")]; + char stringpool_str1557[sizeof("MACTURKISH")]; + char stringpool_str1558[sizeof("CSISO2022KR")]; + char stringpool_str1575[sizeof("EBCDIC-GREEK")]; + char stringpool_str1580[sizeof("WINDOWS-1256")]; + char stringpool_str1581[sizeof("WINDOWS-1255")]; + char stringpool_str1583[sizeof("WINDOWS-1252")]; + char stringpool_str1586[sizeof("MS-TURK")]; + char stringpool_str1588[sizeof("WINDOWS-1251")]; + char stringpool_str1589[sizeof("CSVISCII")]; + char stringpool_str1590[sizeof("CSKSC56011987")]; + char stringpool_str1598[sizeof("EBCDIC-CP-DK")]; + char stringpool_str1603[sizeof("CSIBM297")]; + char stringpool_str1604[sizeof("KS_C_5601-1987")]; + char stringpool_str1607[sizeof("EBCDIC-US-37+EURO")]; + char stringpool_str1609[sizeof("EBCDIC-ES-284+EURO")]; + char stringpool_str1615[sizeof("WINDOWS-1258")]; + char stringpool_str1618[sizeof("WINDOWS-1254")]; + char stringpool_str1636[sizeof("BIGFIVE")]; + char stringpool_str1643[sizeof("CSIBM01149")]; + char stringpool_str1645[sizeof("WINDOWS-1250")]; + char stringpool_str1646[sizeof("CSMACINTOSH")]; + char stringpool_str1647[sizeof("ISO8859-7")]; + char stringpool_str1651[sizeof("EUC-JIS-2004")]; + char stringpool_str1656[sizeof("EBCDIC-DE-273+EURO")]; + char stringpool_str1663[sizeof("ISO-2022-JP-MS")]; + char stringpool_str1666[sizeof("ISO-2022-KR")]; + char stringpool_str1676[sizeof("EBCDIC-CP-ROECE")]; + char stringpool_str1685[sizeof("CSISOLATINHEBREW")]; + char stringpool_str1691[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str1695[sizeof("UCS-2-INTERNAL")]; + char stringpool_str1699[sizeof("WINDOWS-1253")]; + char stringpool_str1729[sizeof("EBCDIC-DK-277+EURO")]; + char stringpool_str1730[sizeof("UCS-4-INTERNAL")]; + char stringpool_str1737[sizeof("ISO646-US")]; + char stringpool_str1739[sizeof("ISO_8859-9")]; + char stringpool_str1740[sizeof("CSISOLATINGREEK")]; + char stringpool_str1747[sizeof("ISO_8859-9:1989")]; + char stringpool_str1763[sizeof("UCS-2-SWAPPED")]; + char stringpool_str1770[sizeof("ISO-8859-9")]; + char stringpool_str1771[sizeof("WINDOWS-1257")]; + char stringpool_str1798[sizeof("UCS-4-SWAPPED")]; + char stringpool_str1816[sizeof("KS_C_5601-1989")]; + char stringpool_str1822[sizeof("ISO-IR-159")]; + char stringpool_str1823[sizeof("BIG5-HKSCS")]; + char stringpool_str1833[sizeof("WINDOWS-874")]; + char stringpool_str1859[sizeof("ISO-IR-149")]; + char stringpool_str1867[sizeof("BIG5-HKSCS:1999")]; + char stringpool_str1886[sizeof("ISO-IR-109")]; + char stringpool_str1895[sizeof("EBCDIC-CP-ES")]; + char stringpool_str1915[sizeof("BIG-FIVE")]; + char stringpool_str1939[sizeof("EBCDIC-IS-871+EURO")]; + char stringpool_str1950[sizeof("EBCDIC-CP-US")]; + char stringpool_str1968[sizeof("BIG5HKSCS")]; + char stringpool_str2002[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; + char stringpool_str2003[sizeof("MS-GREEK")]; + char stringpool_str2012[sizeof("ISO-IR-179")]; + char stringpool_str2069[sizeof("CSSHIFTJIS")]; + char stringpool_str2071[sizeof("ISO8859-9")]; + char stringpool_str2136[sizeof("SHIFT_JISX0213")]; + char stringpool_str2224[sizeof("ISO-IR-199")]; + char stringpool_str2255[sizeof("SHIFT_JIS")]; + char stringpool_str2281[sizeof("WINDOWS-936")]; + char stringpool_str2286[sizeof("SHIFT-JIS")]; + char stringpool_str2302[sizeof("SHIFT_JIS-2004")]; + char stringpool_str2582[sizeof("CSEUCPKDFMTJAPANESE")]; }; static const struct stringpool_t stringpool_contents = { - "R8", - "CN", - "L8", - "L1", - "866", "L6", - "C99", - "L4", "L5", - "CP819", - "US", "L2", - "CP866", - "CP949", - "UHC", + "L1", + "866", + "ATARI", + "865", + "855", "862", - "CP154", - "SJIS", - "CP1258", + "852", + "CP1256", + "CP1255", + "CP1166", + "CP1156", + "CP1252", + "CP1155", + "861", + "CP1125", + "CP1162", + "CP1122", "CP1251", - "UCS-4", - "L3", + "CP1112", + "CP1161", + "CP866", + "CP856", + "CP865", + "CP855", + "CP285", "CP862", - "CP1256", - "CP1131", - "UTF-8", - "CSUCS4", + "CP852", + "R8", + "CP861", + "ARABIC", + "JP", + "L8", + "LATIN6", + "LATIN5", + "L4", + "LATIN2", + "PT154", + "LATIN1", + "CP1026", + "CP1025", + "CP1258", + "CP154", + "CN", + "CP1158", "CP1254", + "CP50221", + "CP1164", + "CP1154", + "PTCP154", + "CP1124", + "HZ", + "CP858", + "CP864", + "CP1046", + "CP284", + "CP424", + "CP01146", + "CP01145", + "L10", + "LATIN8", + "CP01142", + "LATIN4", + "860", + "850", + "CP01141", + "CP1132", + "CP1250", "CP1361", + "CP1160", + "CP1131", + "JOHAB", + "CP860", + "CP850", + "CP280", + "X0212", + "CP16804", + "IBM1166", + "IBM1156", + "IBM1165", + "IBM1155", + "CP01148", + "IBM1162", + "CP500", + "LATIN10", + "IBM1122", + "CP01144", + "CP880", + "IBM1112", + "IBM1161", + "IBM866", + "IBM865", + "IBM855", + "IBM285", + "IBM862", + "IBM852", + "IBM425", + "IBM282", + "CP12712", + "BIG5", + "IBM861", + "L3", "MAC", - "HZ", + "IBM1146", + "CP875", + "IBM1145", + "IBM1142", + "X0201", + "CP871", + "IBM1141", + "863", + "IBM1026", + "IBM1025", + "CP1253", + "CP01140", + "CP1163", + "CP1153", + "CP1123", + "IBM1158", + "CP278", + "IBM1164", + "IBM1154", + "CP1130", + "CP863", + "CP853", + "UHC", + "CP423", + "IBM864", + "IBM284", + "IBM424", + "X0208", + "LATIN3", + "IBM1148", + "CP874", + "IBM1144", + "ROMAN8", + "CYRILLIC", + "IBM1132", + "MACTHAI", + "IBM1160", + "IBM16804", + "IBM01146", + "IBM01144", + "IBM01142", + "IBM860", + "IBM850", + "IBM280", + "CP870", + "IBM1140", + "GB2312", + "CP01143", + "IBM01140", + "IBM500", + "L7", + "IBM880", + "CP1133", + "ASCII", + "CP775", + "857", + "ATARIST", + "IBM838", + "CP1257", + "IBM875", + "CP1157", + "CP922", + "IBM871", + "IBM01143", + "CP857", + "IBM01141", + "IBM12712", + "IBM1163", + "IBM1153", + "TDS565", + "IBM1123", + "MACCYRILLIC", + "CP273", + "IBM278", + "IBM1130", + "LATIN7", + "IBM863", + "MACROMANIA", + "IBM423", "RK1048", - "UCS-2", + "IBM-285", + "IBM1143", + "IBM-425", + "IBM-282", + "MACROMAN", + "EUCJP", + "CP905", + "BIG-5", + "CSPCP852", + "IBM-1166", + "IBM-1156", + "IBM-1164", + "IBM-1154", + "IBM-1162", + "TIS620", + "IBM-1122", + "IBM01145", + "IBM-1112", + "CP1047", + "EUCCN", + "CP367", + "CP01147", + "CP-GR", + "IBM-1160", + "437", + "IBM-1146", + "IBM-1144", + "CP1137", + "IBM-1142", "CP936", - "ROMAN8", - "CP1255", + "IBM870", + "CP932", + "CP950", + "IBM-1026", + "IBM-284", + "CP437", + "IBM-424", + "CN-GB", + "IBM-1140", + "CN-BIG5", + "IBM-16804", + "IBM775", + "IBM-1163", + "IBM-1153", + "IBM-1123", + "CP037", + "KOI8-R", + "IBM-1161", + "KOI8-T", + "IBM1157", + "MACARABIC", + "GB18030", + "JAVA", + "IBM857", + "IBM-280", + "TCVN", + "KOREAN", + "IBM-1143", + "IBM-1132", + "IBM273", + "HP-ROMAN8", + "IBM-1141", + "IBM01148", + "CYRILLIC-ASIAN", + "IBM1147", + "GB18030:2005", + "MACINTOSH", + "CP00924", + "CSBIG5", + "IBM-500", + "IBM-880", + "CSIBM1162", + "IBM-1130", + "IBM-1165", + "IBM-1155", + "JIS0208", + "CSIBM1161", + "CSIBM866", + "CSIBM864", + "IBM905", + "CSIBM284", + "CSIBM424", + "IBM-838", + "CP4971", + "IBM-875", + "IBM924", + "ISO646-JP", + "TIS620.2533-1", + "IBM-871", + "IBM1047", + "CSIBM860", + "IBM-1145", + "IBM367", + "CSIBM280", + "CP943", + "CSIBM1026", + "CSPTCP154", + "EUCKR", + "IBM-278", + "CCSID00924", + "IBM1137", + "CSIBMTHAI", + "CP737", + "IBM-1025", + "MACICELAND", + "IBM01149", + "CSIBM500", + "IBM-423", + "CSIBM880", + "CCSID01146", + "CCSID01145", + "IBM437", + "CSKOI8R", + "CCSID01142", + "TIS620.2533-0", + "EUC-JP", + "CSIBM863", + "CCSID01141", + "GB18030:2022", + "KZ-1048", + "CSIBM423", + "CSIBM861", + "ECMA-114", + "TIS-620", + "IBM037", + "EBCDIC-LATIN9-EURO", + "TIS620-0", + "IBM277", + "IBM00924", + "EUC-CN", + "IBM-12712", + "IBM-1158", + "CSASCII", + "CCSID01148", + "IBM-870", + "CSIBM00924", + "CCSID01144", + "TIS620.2529-1", + "WINBALTRIM", + "UCS-2", + "CP297", + "BIG5-2003", + "CSGB2312", + "IBM-1148", + "CSIBM865", + "CSIBM855", + "CSIBM285", + "GBK", + "CSIBM01145", + "CSIBM01142", + "CSHPROMAN8", + "869", + "MACCROATIAN", + "MS-ARAB", + "CSIBM01141", + "IBM4971", + "IBM-THAI", + "CP1129", + "CCSID01140", + "CP869", "UTF-16", - "ISO8859-8", - "ISO8859-1", - "ISO-8859-8", - "ISO_8859-8", - "ISO-8859-1", + "CP819", + "IBM-273", + "JIS_X0201", + "UCS-4", + "CSIBM1163", + "CP1097", + "CSIBM870", + "HZ-GB-2312", + "IBM737", + "VISCII", + "US", + "CSIBM01148", + "MS-CYRL", + "CSPC850MULTILINGUAL", + "CSIBM273", + "IBM-1149", + "KOI8-U", + "IBM01147", + "ISO-IR-6", + "KOI8-RU", + "IBM-905", + "CSISO58GB231280", + "ISO_8859-6", + "ISO_8859-5", + "ISO-IR-226", + "ISO_8859-2", + "IBM-924", + "UTF-8", + "ISO_8859-15", + "JIS_X0208", "ISO_8859-1", - "ISO8859-11", - "CP1252", - "EUCCN", - "ISO-8859-11", + "DEC-KANJI", "ISO_8859-11", - "EUC-CN", - "ISO646-CN", - "ISO8859-9", - "ISO8859-6", - "ISO-8859-9", - "ISO_8859-9", + "CSIBM871", + "ISO_8859-10:1992", + "CSPC862LATINHEBREW", + "CSISO159JISX02121990", "ISO-8859-6", - "ISO_8859-6", - "ISO8859-16", - "ISO_8859-16:2001", - "ISO-8859-16", - "ISO_8859-16", - "ISO8859-4", + "CP01149", + "ISO-8859-5", + "CSIBM01140", + "CSISO2022CN", + "ISO-8859-2", + "EUC-KR", + "IBM-CP1133", + "ISO-8859-15", + "ISO_8859-5:1988", + "EBCDIC-CYRILLIC", + "ISO-8859-1", + "CCSID01143", + "ISO_8859-14", + "ISO_8859-15:1998", "ISO_8859-14:1998", - "CP932", - "ISO-8859-4", + "ISO-8859-11", + "ISO646-CN", + "UNICODELITTLE", + "DECHANYU", + "IBM297", + "EBCDIC-GB-285+EURO", + "JIS_X0212", + "EBCDIC-NO-277+EURO", + "UTF-32", + "NEXTSTEP", + "ISO_8859-8", "ISO_8859-4", - "ISO8859-14", - "850", - "ISO_8859-15:1998", + "ISO_8859-8:1988", "ISO-8859-14", - "ISO_8859-14", - "ISO8859-5", - "ISO646-US", - "ISO-8859-5", - "ISO_8859-5", - "ISO8859-15", - "ISO-IR-6", - "L10", - "ISO-8859-15", - "ISO_8859-15", - "ISO-IR-148", - "ISO-IR-58", - "ISO8859-2", - "ISO-8859-2", - "ISO_8859-2", - "CP50221", - "ISO-IR-199", - "ISO-IR-14", - "IBM819", + "ISO_8859-4:1988", "ISO-IR-166", - "ISO-IR-149", - "CP850", - "MS936", - "IBM866", - "ISO-IR-159", - "CP950", - "CYRILLIC", - "ISO-IR-144", - "L7", - "ISO-IR-126", - "MS-CYRL", - "CP1253", + "ISO_8859-10", "ISO-IR-165", - "LATIN8", - "LATIN1", - "MACROMAN", - "CYRILLIC-ASIAN", - "ASCII", + "ISO-IR-126", + "CP-IS", + "IBM-037", + "ISO-8859-8", + "IBM-277", + "CSUCS4", + "ISO-8859-4", + "ISO-2022-CN-EXT", + "CSIBM869", "ECMA-118", - "CP1250", - "UTF-32", - "HP-ROMAN8", - "ISO-IR-138", - "CP1133", - "LATIN6", - "LATIN-9", - "ISO-IR-226", - "IBM862", - "CSASCII", - "CP874", - "ISO-IR-101", - "ISO_8859-10:1992", - "LATIN4", - "MS-ANSI", - "ECMA-114", - "ISO-IR-109", - "MULELAO-1", - "LATIN5", - "ISO8859-3", + "ISO-8859-10", + "IBM869", + "IBM819", + "ISO_646.IRV:1991", + "CSIBM1047", + "MULELAO-1", + "DECKANJI", + "DEC-HANYU", + "GREEK8", + "IBM1097", + "IBM1149", + "IBM-1157", + "CSIBM01143", + "ISO-2022-CN", + "EUCTW", + "EBCDIC-FI-278+EURO", + "JIS_C6220-1969-RO", + "ISO-IR-14", + "EBCDIC-FR-297+EURO", "ARMSCII-8", - "ISO-8859-3", - "ISO_8859-3", - "ISO8859-13", - "PT154", - "UNICODE-1-1", - "ISO-8859-13", + "EBCDIC-CP-NO", + "MS936", + "ISO_8859-3:1988", + "ISO-IR-101", + "JIS_X0212.1990-0", + "TCVN5712-1", "ISO_8859-13", - "ISO-10646-UCS-4", - "LATIN2", - "ISO-2022-CN", - "US-ASCII", - "CSUNICODE11", - "ELOT_928", - "ISO8859-10", - "CSISO2022CN", - "GB2312", - "ISO-8859-10", - "ISO_8859-10", - "ISO-10646-UCS-2", + "EBCDIC-CP-NL", + "IBM-1147", + "CSIBM278", + "KSC_5601", + "GEORGIAN-ACADEMY", + "CSPC775BALTIC", + "CSEUCKR", + "UNICODEBIG", + "ISO-IR-148", + "CCSID01147", + "ISO-IR-144", + "ISO-8859-13", + "ISO_8859-6:1987", + "ISO_8859-16", + "ISO_8859-2:1987", "JIS_C6226-1983", - "JIS_C6220-1969-RO", - "KOI8-R", - "UCS-4LE", - "CSISO14JISC6220RO", - "JIS0208", - "JP", - "CSKOI8R", - "GB_1988-80", - "MACROMANIA", - "UCS-2LE", - "DECHANYU", - "DEC-HANYU", + "ISO_8859-1:1987", + "MS-HEBR", + "ISO_8859-16:2001", + "CSKZ1048", + "LATIN-9", "ISO-IR-110", + "ISO-IR-58", + "TCVN-5712", + "ISO-8859-16", + "IBM-1047", + "CSPC8CODEPAGE1146", + "ISO_8859-3", + "EBCDIC-CP-CA", + "EBCDIC-CP-GB", + "EBCDIC-CP-IT", + "EBCDIC-CP-GR", + "ISO-IR-230", + "CSISO2022JP", + "GB_2312-80", + "CSISO2022JP2", + "IBM-1137", + "SJIS", + "HEBREW", + "RISCOS-LATIN1", + "CHINESE", + "ELOT_928", + "ISO-8859-3", + "ISO-IR-138", + "CSPC8CODEPAGE1144", + "EBCDIC-CP-WT", + "ISO-IR-100", + "TCVN5712-1:1993", + "CSIBM01147", + "IBM-4971", + "UNICODE-1-1", + "CSIBM857", + "JIS_X0208-1990", + "ISO-IR-203", + "C99", + "IBM-297", + "MACCENTRALEUROPE", + "MS-ANSI", + "ISO_8859-7:2003", + "EBCDIC-CP-CH", + "VISCII1.1-1", + "UTF-7", + "EBCDIC-CP-TR", + "ANSI_X3.4-1986", + "UCS-2BE", + "CSIBM905", + "ISO8859-6", + "ISO8859-5", + "ISO8859-2", + "EBCDIC-CP-YU", + "ISO8859-16", + "ISO8859-15", + "UCS-2LE", + "ISO8859-1", + "CP949", + "GREEK", + "JIS_X0208-1983", + "ISO8859-11", + "ANSI_X3.4-1968", + "ISO-2022-JP", + "EBCDIC-IT-280+EURO", + "UCS-4BE", + "ISO-2022-JP-2", + "CSISO14JISC6220RO", + "CSISO57GB1988", + "ISO-2022-JP-1", + "EBCDIC-CP-HE", + "EBCDIC-CP-SE", + "UCS-4LE", + "ISO_8859-7", + "JIS_X0212-1990", + "ISO_8859-7:1987", + "EUC-TW", + "EBCDIC-CP-BE", + "CSUNICODE11", + "EBCDIC-CP-FI", + "ISO8859-8", + "ISO-2022-JP-2004", + "EBCDIC-CP-FR", + "ISO8859-4", + "ISO-8859-7", + "EUC-JISX0213", + "STRK1048-2002", + "ISO8859-14", + "UTF-16BE", + "CSISOLATIN5", + "CSPC8CODEPAGE437", "CSISOLATIN1", - "JAVA", - "KZ-1048", - "TIS620", - "TIS-620", - "EUCKR", - "TCVN", - "EUC-KR", - "CSISOLATIN6", - "ISO_8859-8:1988", - "CSISOLATINARABIC", - "CSISOLATINCYRILLIC", - "CSKZ1048", "UTF-16LE", - "KOREAN", - "MACCROATIAN", + "GEORGIAN-PS", + "CN-GB-ISOIR165", + "EBCDIC-SE-278+EURO", + "JISX0201-1976", + "CSIBM037", + "CSISOLATINARABIC", + "CSIBM277", "CSISOLATIN4", - "IBM850", - "ISO_8859-4:1988", - "ISO_8859-9:1989", - "KSC_5601", - "MACICELAND", - "LATIN3", - "ISO_8859-5:1988", - "CSISOLATIN5", - "X0212", - "CSUNICODE", - "ISO-IR-179", - "CSISOLATIN2", - "KS_C_5601-1989", - "LATIN10", - "KOI8-U", - "MACCYRILLIC", - "KOI8-RU", - "X0208", - "X0201", - "CSISO159JISX02121990", - "CSEUCKR", + "ISO-IR-157", + "ISO-IR-127", + "ISO8859-10", "ASMO-708", - "ARABIC", - "ISO-IR-100", - "ISO-2022-CN-EXT", - "UCS-4-INTERNAL", - "CHINESE", - "ISO_8859-3:1988", - "ISO-IR-203", - "MS-EE", - "TIS620-0", - "UCS-2-INTERNAL", - "TIS620.2529-1", - "SHIFT-JIS", - "SHIFT_JIS", + "ISO-2022-JP-3", + "UNICODE-1-1-UTF-7", + "MACGREEK", + "EBCDIC-INTERNATIONAL-500+EURO", "ISO-CELTIC", - "GEORGIAN-ACADEMY", - "VISCII", - "WINDOWS-1258", - "WINDOWS-1251", - "GB_2312-80", + "CSISO87JISX0208", + "MACHEBREW", + "CSISOLATINCYRILLIC", + "UTF-32BE", + "ISO-IR-57", + "ISO-10646-UCS-2", + "BIG5-HKSCS:2001", + "CSEUCTW", + "CSISOLATIN2", + "MS-EE", "UTF-32LE", - "WINDOWS-1256", - "GB18030", - "VISCII1.1-1", - "WINDOWS-1254", - "BIG5", - "WINDOWS-1255", - "BIG-5", - "CSHPROMAN8", - "WINDOWS-1252", + "US-ASCII", + "MACUKRAINE", + "BIG5-HKSCS:2008", + "BIG5-HKSCS:2004", + "ISO8859-3", + "ISO-10646-UCS-4", "CSISOLATIN3", - "CP1257", - "ISO_646.IRV:1991", - "WINDOWS-936", - "UNICODE-1-1-UTF-7", - "ISO-2022-KR", - "STRK1048-2002", + "ISO8859-13", "CSUNICODE11UTF7", - "MACTHAI", + "MS_KANJI", + "CSUNICODE", + "IBM-1097", + "GB_1988-80", + "EBCDIC-CP-IS", + "CSISOLATIN6", + "CCSID01149", + "ISO-IR-87", + "MACTURKISH", "CSISO2022KR", - "CP367", - "UTF-7", - "PTCP154", - "WINDOWS-1253", - "DECKANJI", - "CSIBM866", - "DEC-KANJI", - "WINDOWS-1250", - "MACARABIC", + "EBCDIC-GREEK", + "WINDOWS-1256", + "WINDOWS-1255", + "WINDOWS-1252", + "MS-TURK", + "WINDOWS-1251", "CSVISCII", - "ISO8859-7", - "ISO-8859-7", - "ISO_8859-7", - "TIS620.2533-1", - "ANSI_X3.4-1968", - "MACINTOSH", - "CSBIG5", - "ANSI_X3.4-1986", - "CN-BIG5", - "KOI8-T", - "ISO_8859-1:1987", - "CSSHIFTJIS", - "GEORGIAN-PS", - "GBK", - "ISO_8859-6:1987", - "CSMACINTOSH", - "GREEK8", - "ISO-IR-87", - "JIS_X0212", - "ISO_8859-2:1987", - "EUCTW", + "CSKSC56011987", + "EBCDIC-CP-DK", + "CSIBM297", "KS_C_5601-1987", - "UCS-4BE", - "EUC-TW", - "MS_KANJI", - "ISO-IR-57", + "EBCDIC-US-37+EURO", + "EBCDIC-ES-284+EURO", + "WINDOWS-1258", + "WINDOWS-1254", + "BIGFIVE", + "CSIBM01149", + "WINDOWS-1250", + "CSMACINTOSH", + "ISO8859-7", + "EUC-JIS-2004", + "EBCDIC-DE-273+EURO", "ISO-2022-JP-MS", - "ISO-2022-JP-1", - "ISO-IR-157", - "JIS_X0208", - "CSKSC56011987", - "JIS_X0201", - "UCS-2BE", - "ISO-IR-127", - "CSGB2312", + "ISO-2022-KR", + "EBCDIC-CP-ROECE", "CSISOLATINHEBREW", - "CN-GB-ISOIR165", - "TIS620.2533-0", - "WINDOWS-874", - "MACCENTRALEUROPE", - "MS-HEBR", - "ISO-2022-JP-2", - "ISO_8859-7:2003", - "TCVN5712-1", - "JISX0201-1976", - "CSISO2022JP2", - "LATIN7", - "UTF-16BE", - "IBM-CP1133", - "JIS_X0212-1990", - "WINDOWS-1257", - "CSEUCTW", - "CSPTCP154", - "TCVN-5712", - "EUCJP", - "EUC-JP", - "ISO646-JP", - "IBM367", - "CSPC850MULTILINGUAL", - "CSISOLATINGREEK", - "JIS_X0208-1983", - "JIS_X0208-1990", - "MACUKRAINE", - "CSPC862LATINHEBREW", - "JIS_X0212.1990-0", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "UCS-4-SWAPPED", - "HZ-GB-2312", - "MS-ARAB", - "UNICODELITTLE", - "MS-TURK", - "CN-GB", "CSHALFWIDTHKATAKANA", - "UTF-32BE", + "UCS-2-INTERNAL", + "WINDOWS-1253", + "EBCDIC-DK-277+EURO", + "UCS-4-INTERNAL", + "ISO646-US", + "ISO_8859-9", + "CSISOLATINGREEK", + "ISO_8859-9:1989", "UCS-2-SWAPPED", - "CSISO58GB231280", - "ISO_8859-7:1987", - "CSISO57GB1988", - "CSISO87JISX0208", - "GB18030:2022", - "GREEK", - "BIG5HKSCS", + "ISO-8859-9", + "WINDOWS-1257", + "UCS-4-SWAPPED", + "KS_C_5601-1989", + "ISO-IR-159", "BIG5-HKSCS", - "ISO-2022-JP", - "MACTURKISH", - "CSISO2022JP", - "GB18030:2005", - "JOHAB", - "HEBREW", - "UNICODEBIG", - "MS-GREEK", - "MACGREEK", - "WINBALTRIM", - "TCVN5712-1:1993", - "BIGFIVE", - "BIG-FIVE", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:2001", + "WINDOWS-874", + "ISO-IR-149", "BIG5-HKSCS:1999", - "CSEUCPKDFMTJAPANESE", - "BIG5-HKSCS:2004", - "MACHEBREW", - "NEXTSTEP" + "ISO-IR-109", + "EBCDIC-CP-ES", + "BIG-FIVE", + "EBCDIC-IS-871+EURO", + "EBCDIC-CP-US", + "BIG5HKSCS", + "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", + "MS-GREEK", + "ISO-IR-179", + "CSSHIFTJIS", + "ISO8859-9", + "SHIFT_JISX0213", + "ISO-IR-199", + "SHIFT_JIS", + "WINDOWS-936", + "SHIFT-JIS", + "SHIFT_JIS-2004", + "CSEUCPKDFMTJAPANESE" }; #define stringpool ((const char *) &stringpool_contents) static const struct alias aliases[] = { - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 227 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str7, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 288 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str16, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 151 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_iso8859_14}, +#line 134 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_iso8859_10}, + {-1}, +#line 126 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str24, ei_iso8859_9}, + {-1}, {-1}, {-1}, +#line 68 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_iso8859_2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 60 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_iso8859_1}, + {-1}, {-1}, {-1}, #line 207 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_cp866}, -#line 134 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str29, ei_iso8859_10}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str42, ei_cp866}, +#line 683 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str43, ei_atarist}, +#line 424 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_cp865}, +#line 399 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_cp855}, + {-1}, {-1}, +#line 203 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_cp862}, +#line 394 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_cp852}, +#line 189 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_cp1256}, + {-1}, +#line 186 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_cp1255}, + {-1}, +#line 663 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_ebcdic1166}, +#line 646 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_ebcdic1156}, +#line 177 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str56, ei_cp1252}, +#line 643 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_ebcdic1155}, +#line 412 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_cp861}, +#line 431 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_cp1125}, +#line 375 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str60, ei_cp1162}, + {-1}, {-1}, +#line 550 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_ebcdic1122}, + {-1}, {-1}, +#line 174 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_cp1251}, + {-1}, +#line 547 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_ebcdic1112}, + {-1}, +#line 371 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_cp1161}, +#line 205 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_cp866}, +#line 365 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_cp856}, +#line 422 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_cp865}, +#line 397 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, ei_cp855}, + {-1}, +#line 469 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_ebcdic285}, +#line 201 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_cp862}, +#line 392 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_cp852}, + {-1}, +#line 227 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, ei_hp_roman8}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 410 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str87, ei_cp861}, +#line 100 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, ei_iso8859_6}, {-1}, {-1}, -#line 51 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, ei_c99}, +#line 265 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str91, ei_iso646_jp}, +#line 151 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_iso8859_14}, +#line 133 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_iso8859_10}, {-1}, +#line 125 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_iso8859_9}, + {-1}, {-1}, #line 84 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str34, ei_iso8859_4}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str98, ei_iso8859_4}, +#line 67 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str99, ei_iso8859_2}, + {-1}, {-1}, {-1}, +#line 234 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_pt154}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 126 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_iso8859_9}, -#line 57 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str41, ei_iso8859_1}, +#line 59 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str109, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, -#line 21 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str46, ei_ascii}, -#line 68 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str47, ei_iso8859_2}, +#line 536 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str114, ei_ebcdic1026}, + {-1}, +#line 533 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str116, ei_ebcdic1025}, + {-1}, {-1}, {-1}, +#line 195 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_cp1258}, +#line 236 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str121, ei_pt154}, +#line 288 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, ei_iso646_cn}, {-1}, {-1}, -#line 205 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_cp866}, +#line 652 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_ebcdic1158}, +#line 183 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_cp1254}, + {-1}, +#line 317 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str128, ei_iso2022_jpms}, + {-1}, +#line 658 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_ebcdic1164}, +#line 640 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_ebcdic1154}, +#line 235 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_pt154}, +#line 369 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_cp1124}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 334 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, ei_hz}, +#line 405 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str142, ei_cp858}, + {-1}, {-1}, {-1}, {-1}, +#line 419 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str147, ei_cp864}, + {-1}, +#line 368 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str149, ei_cp1046}, +#line 464 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_ebcdic284}, + {-1}, {-1}, +#line 484 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_ebcdic424}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 611 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_ebcdic1146}, + {-1}, +#line 604 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_ebcdic1145}, +#line 165 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_16}, +#line 150 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_14}, + {-1}, +#line 581 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_ebcdic1142}, + {-1}, {-1}, {-1}, +#line 83 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_iso8859_4}, + {-1}, {-1}, +#line 408 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_cp860}, +#line 199 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_cp850}, + {-1}, +#line 574 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str175, ei_ebcdic1141}, + {-1}, {-1}, {-1}, +#line 559 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_ebcdic1132}, +#line 171 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_cp1250}, +#line 358 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_johab}, + {-1}, {-1}, +#line 655 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_ebcdic1160}, + {-1}, {-1}, {-1}, {-1}, +#line 209 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_cp1131}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 355 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str60, ei_cp949}, + {-1}, +#line 357 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_johab}, +#line 406 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_cp860}, +#line 197 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_cp850}, + {-1}, +#line 457 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_ebcdic280}, {-1}, {-1}, -#line 356 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_cp949}, -#line 203 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_cp862}, +#line 282 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 236 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_pt154}, -#line 307 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_sjis}, +#line 672 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str224, ei_ebcdic16804}, +#line 662 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_ebcdic1166}, +#line 645 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_ebcdic1156}, +#line 660 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str227, ei_ebcdic1165}, +#line 642 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_ebcdic1155}, +#line 625 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, ei_ebcdic1148}, + {-1}, +#line 376 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_cp1162}, +#line 491 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_ebcdic500}, +#line 164 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_iso8859_16}, +#line 549 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_ebcdic1122}, +#line 597 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str235, ei_ebcdic1144}, +#line 516 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_ebcdic880}, {-1}, {-1}, -#line 195 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_cp1258}, +#line 546 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_ebcdic1112}, {-1}, -#line 174 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_cp1251}, +#line 372 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_cp1161}, +#line 206 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, ei_cp866}, + {-1}, +#line 423 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_cp865}, +#line 398 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_cp855}, + {-1}, +#line 468 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_ebcdic285}, +#line 202 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_cp862}, +#line 393 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_cp852}, +#line 488 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_ebcdic425}, +#line 461 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_ebcdic282}, {-1}, {-1}, {-1}, {-1}, -#line 33 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, ei_ucs4}, +#line 669 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_ebcdic12712}, +#line 339 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_ces_big5}, +#line 411 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str258, ei_cp861}, + {-1}, #line 76 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str84, ei_iso8859_3}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_iso8859_3}, +#line 212 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_mac_roman}, + {-1}, +#line 608 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ebcdic1146}, +#line 512 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_ebcdic875}, +#line 601 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_ebcdic1145}, + {-1}, {-1}, {-1}, +#line 578 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_ebcdic1142}, + {-1}, {-1}, {-1}, {-1}, +#line 269 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_jisx0201}, + {-1}, {-1}, {-1}, +#line 507 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_ebcdic871}, +#line 571 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ebcdic1141}, +#line 417 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_cp863}, + {-1}, {-1}, {-1}, {-1}, +#line 535 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ebcdic1026}, {-1}, -#line 201 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, ei_cp862}, +#line 532 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_ebcdic1025}, +#line 180 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_cp1253}, +#line 567 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_ebcdic1140}, + {-1}, {-1}, +#line 379 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_cp1163}, +#line 637 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1153}, + {-1}, +#line 553 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_ebcdic1123}, +#line 651 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_ebcdic1158}, + {-1}, {-1}, {-1}, +#line 451 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_ebcdic278}, +#line 657 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_ebcdic1164}, +#line 639 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ebcdic1154}, +#line 556 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_ebcdic1130}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 189 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_cp1256}, +#line 415 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_cp863}, +#line 396 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp853}, +#line 356 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_cp949}, + {-1}, {-1}, {-1}, +#line 479 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_ebcdic423}, + {-1}, {-1}, +#line 420 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_cp864}, + {-1}, {-1}, +#line 463 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ebcdic284}, + {-1}, {-1}, +#line 483 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_ebcdic424}, + {-1}, {-1}, {-1}, +#line 275 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_jisx0208}, + {-1}, {-1}, +#line 75 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_iso8859_3}, + {-1}, +#line 622 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_ebcdic1148}, {-1}, {-1}, {-1}, {-1}, -#line 209 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str97, ei_cp1131}, -#line 23 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str98, ei_utf8}, +#line 253 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_cp874}, +#line 594 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str339, ei_ebcdic1144}, {-1}, -#line 35 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str100, ei_ucs4}, +#line 226 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_hp_roman8}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 91 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_iso8859_5}, + {-1}, {-1}, +#line 558 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_ebcdic1132}, +#line 224 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_mac_thai}, + {-1}, {-1}, {-1}, +#line 654 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic1160}, {-1}, -#line 183 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp1254}, +#line 671 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_ebcdic16804}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 609 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_ebcdic1146}, + {-1}, {-1}, +#line 595 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_ebcdic1144}, + {-1}, {-1}, +#line 579 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str371, ei_ebcdic1142}, +#line 407 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_cp860}, +#line 198 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_cp850}, {-1}, -#line 358 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, ei_johab}, -#line 212 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_mac_roman}, -#line 334 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_hz}, -#line 239 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, ei_rk1048}, +#line 456 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_ebcdic280}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 501 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ebcdic870}, +#line 564 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_ebcdic1140}, {-1}, -#line 24 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str109, ei_ucs2}, +#line 320 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_euc_cn}, + {-1}, +#line 589 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_ebcdic1143}, +#line 565 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ebcdic1140}, + {-1}, {-1}, {-1}, {-1}, +#line 490 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_ebcdic500}, +#line 144 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_iso8859_13}, {-1}, {-1}, -#line 325 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str112, ei_cp936}, -#line 226 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_hp_roman8}, -#line 186 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str114, ei_cp1255}, +#line 515 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_ebcdic880}, + {-1}, {-1}, {-1}, +#line 244 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_cp1133}, + {-1}, +#line 13 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 389 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_cp775}, {-1}, {-1}, {-1}, {-1}, -#line 38 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str119, ei_utf16}, -#line 120 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_iso8859_8}, +#line 403 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_cp857}, + {-1}, {-1}, +#line 682 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_atarist}, + {-1}, {-1}, +#line 496 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_ebcdic838}, +#line 192 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_cp1257}, + {-1}, {-1}, +#line 511 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ebcdic875}, {-1}, -#line 62 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, ei_iso8859_1}, -#line 114 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str123, ei_iso8859_8}, -#line 115 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_iso8859_8}, -#line 53 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso8859_1}, -#line 54 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_iso8859_1}, -#line 139 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, ei_iso8859_11}, -#line 177 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str128, ei_cp1252}, +#line 649 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_ebcdic1157}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 366 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_cp922}, +#line 506 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic871}, +#line 587 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_ebcdic1143}, + {-1}, {-1}, {-1}, +#line 401 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str454, ei_cp857}, + {-1}, {-1}, +#line 572 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, +#line 668 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_ebcdic12712}, +#line 380 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp1163}, +#line 636 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_ebcdic1153}, +#line 680 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str465, ei_tds565}, +#line 552 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_ebcdic1123}, +#line 218 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_mac_cyrillic}, +#line 442 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_ebcdic273}, + {-1}, {-1}, +#line 450 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_ebcdic278}, + {-1}, {-1}, +#line 555 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str474, ei_ebcdic1130}, +#line 143 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, +#line 416 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_cp863}, + {-1}, +#line 217 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_mac_romania}, + {-1}, {-1}, {-1}, +#line 478 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_ebcdic423}, + {-1}, {-1}, {-1}, {-1}, +#line 239 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_rk1048}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 467 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str499, ei_ebcdic285}, + {-1}, +#line 586 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_ebcdic1143}, +#line 487 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_ebcdic425}, +#line 460 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_ebcdic282}, +#line 210 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_mac_roman}, +#line 302 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_euc_jp}, +#line 521 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_ebcdic905}, + {-1}, {-1}, +#line 340 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_ces_big5}, + {-1}, +#line 395 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_cp852}, +#line 661 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_ebcdic1166}, +#line 644 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ebcdic1156}, + {-1}, +#line 656 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_ebcdic1164}, +#line 638 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str516, ei_ebcdic1154}, + {-1}, +#line 377 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_cp1162}, + {-1}, +#line 247 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_tis620}, +#line 548 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_ebcdic1122}, +#line 602 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_ebcdic1145}, + {-1}, {-1}, {-1}, +#line 545 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_ebcdic1112}, + {-1}, {-1}, {-1}, {-1}, +#line 540 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_ebcdic1047}, + {-1}, {-1}, {-1}, {-1}, #line 319 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str129, ei_euc_cn}, -#line 137 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_iso8859_11}, -#line 138 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_iso8859_11}, -#line 318 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_euc_cn}, -#line 286 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_iso646_cn}, -#line 128 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str134, ei_iso8859_9}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_euc_cn}, +#line 19 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_ascii}, + {-1}, {-1}, {-1}, +#line 618 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_ebcdic1147}, +#line 429 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_cp869}, + {-1}, {-1}, +#line 653 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_ebcdic1160}, +#line 385 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp437}, + {-1}, {-1}, {-1}, +#line 607 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_ebcdic1146}, + {-1}, {-1}, +#line 593 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_ebcdic1144}, {-1}, -#line 102 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, ei_iso8859_6}, -#line 121 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, ei_iso8859_9}, -#line 122 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, ei_iso8859_9}, -#line 94 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_iso8859_6}, -#line 95 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, ei_iso8859_6}, -#line 166 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, ei_iso8859_16}, +#line 562 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_ebcdic1137}, +#line 577 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_ebcdic1142}, {-1}, -#line 162 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_iso8859_16}, -#line 160 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, ei_iso8859_16}, -#line 161 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str145, ei_iso8859_16}, -#line 86 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str146, ei_iso8859_4}, -#line 148 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str147, ei_iso8859_14}, +#line 325 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_cp936}, + {-1}, {-1}, {-1}, {-1}, +#line 500 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_ebcdic870}, #line 310 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str148, ei_cp932}, -#line 79 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str149, ei_iso8859_4}, -#line 80 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_iso8859_4}, -#line 153 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_14}, -#line 199 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_cp850}, -#line 156 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_iso8859_15}, -#line 146 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_iso8859_14}, -#line 147 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_iso8859_14}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_cp932}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 345 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_cp950}, + {-1}, +#line 534 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str572, ei_ebcdic1026}, +#line 462 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str573, ei_ebcdic284}, + {-1}, +#line 383 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_cp437}, +#line 482 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_ebcdic424}, + {-1}, +#line 321 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str578, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, +#line 563 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_ebcdic1140}, +#line 343 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str584, ei_ces_big5}, +#line 670 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str585, ei_ebcdic16804}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 390 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_cp775}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 381 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str597, ei_cp1163}, +#line 635 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_ebcdic1153}, + {-1}, +#line 551 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_ebcdic1123}, + {-1}, +#line 434 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str602, ei_ebcdic037}, +#line 167 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_koi8_r}, +#line 373 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str604, ei_cp1161}, {-1}, {-1}, -#line 93 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_5}, +#line 233 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_koi8_t}, +#line 648 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_ebcdic1157}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 223 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_mac_arabic}, + {-1}, {-1}, +#line 328 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_gb18030_2005}, + {-1}, {-1}, +#line 52 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_java}, + {-1}, {-1}, {-1}, +#line 402 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_cp857}, {-1}, -#line 14 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_ascii}, -#line 87 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_iso8859_5}, -#line 88 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_5}, -#line 159 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_15}, -#line 16 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_ascii}, -#line 165 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_iso8859_16}, -#line 154 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_iso8859_15}, -#line 155 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_15}, +#line 455 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_ebcdic280}, + {-1}, +#line 258 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, +#line 300 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str634, ei_ksc5601}, +#line 585 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str635, ei_ebcdic1143}, + {-1}, +#line 557 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_ebcdic1132}, + {-1}, +#line 441 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_ebcdic273}, + {-1}, +#line 225 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_hp_roman8}, +#line 570 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_ebcdic1141}, +#line 623 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_ebcdic1148}, +#line 237 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_pt154}, +#line 615 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_ebcdic1147}, + {-1}, +#line 329 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_gb18030_2005}, +#line 211 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str648, ei_mac_roman}, + {-1}, {-1}, {-1}, +#line 528 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str652, ei_ebcdic924}, +#line 344 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_ces_big5}, + {-1}, +#line 489 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_ebcdic500}, + {-1}, {-1}, {-1}, +#line 514 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_ebcdic880}, + {-1}, {-1}, +#line 378 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_cp1162}, + {-1}, +#line 554 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_ebcdic1130}, + {-1}, {-1}, {-1}, {-1}, +#line 659 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_ebcdic1165}, +#line 641 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_ebcdic1155}, +#line 274 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_jisx0208}, +#line 374 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str672, ei_cp1161}, +#line 208 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_cp866}, + {-1}, {-1}, +#line 421 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_cp864}, +#line 520 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_ebcdic905}, + {-1}, +#line 466 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_ebcdic284}, + {-1}, {-1}, +#line 486 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_ebcdic424}, +#line 495 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_ebcdic838}, + {-1}, {-1}, +#line 666 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_ebcdic4971}, +#line 510 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_ebcdic875}, + {-1}, +#line 525 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_ebcdic924}, + {-1}, {-1}, {-1}, {-1}, +#line 263 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str694, ei_iso646_jp}, + {-1}, +#line 251 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, +#line 505 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_ebcdic871}, +#line 539 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str702, ei_ebcdic1047}, + {-1}, {-1}, {-1}, +#line 409 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_cp860}, +#line 600 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str707, ei_ebcdic1145}, +#line 20 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_ascii}, +#line 459 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_ebcdic280}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 367 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str715, ei_cp943}, +#line 537 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_ebcdic1026}, + {-1}, +#line 238 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str718, ei_pt154}, {-1}, {-1}, -#line 124 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_iso8859_9}, -#line 291 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, ei_gb2312}, -#line 70 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_iso8859_2}, +#line 353 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_euc_kr}, + {-1}, +#line 449 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_ebcdic278}, +#line 527 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str724, ei_ebcdic924}, + {-1}, +#line 561 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str726, ei_ebcdic1137}, +#line 498 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str727, ei_ebcdic838}, +#line 387 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str728, ei_cp737}, +#line 531 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str729, ei_ebcdic1025}, {-1}, {-1}, -#line 63 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str175, ei_iso8859_2}, -#line 64 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, ei_iso8859_2}, -#line 317 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str177, ei_iso2022_jpms}, -#line 149 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str178, ei_iso8859_14}, -#line 264 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_iso646_jp}, -#line 58 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_iso8859_1}, -#line 252 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_tis620}, +#line 215 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str732, ei_mac_iceland}, {-1}, {-1}, -#line 298 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_ksc5601}, -#line 197 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str185, ei_cp850}, +#line 630 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str735, ei_ebcdic1149}, {-1}, -#line 326 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str187, ei_cp936}, +#line 494 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str737, ei_ebcdic500}, +#line 477 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str738, ei_ebcdic423}, + {-1}, {-1}, +#line 518 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str741, ei_ebcdic880}, {-1}, -#line 206 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_cp866}, -#line 283 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_jisx0212}, +#line 610 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str743, ei_ebcdic1146}, {-1}, -#line 345 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_cp950}, +#line 603 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_ebcdic1145}, +#line 384 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_cp437}, +#line 168 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_koi8_r}, + {-1}, +#line 580 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_ebcdic1142}, + {-1}, {-1}, {-1}, +#line 250 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str753, ei_tis620}, + {-1}, {-1}, {-1}, +#line 301 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_euc_jp}, +#line 418 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_cp863}, +#line 573 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_ebcdic1141}, +#line 330 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_gb18030_2022}, +#line 241 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str761, ei_rk1048}, {-1}, {-1}, -#line 91 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str195, ei_iso8859_5}, -#line 90 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_iso8859_5}, -#line 144 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_iso8859_13}, +#line 481 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_ebcdic423}, +#line 414 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str765, ei_cp861}, + {-1}, {-1}, {-1}, +#line 98 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_iso8859_6}, + {-1}, {-1}, +#line 246 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str772, ei_tis620}, +#line 433 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str773, ei_ebcdic037}, + {-1}, {-1}, +#line 529 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str776, ei_ebcdic924}, +#line 248 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str777, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 445 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_ebcdic277}, {-1}, -#line 107 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_iso8859_7}, -#line 176 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_cp1251}, +#line 526 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_ebcdic924}, + {-1}, {-1}, +#line 318 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str788, ei_euc_cn}, {-1}, -#line 180 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_cp1253}, -#line 293 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_isoir165}, +#line 667 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_ebcdic12712}, +#line 650 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str791, ei_ebcdic1158}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 22 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str809, ei_ascii}, + {-1}, {-1}, {-1}, +#line 624 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_ebcdic1148}, + {-1}, +#line 499 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str815, ei_ebcdic870}, {-1}, {-1}, -#line 150 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, ei_iso8859_14}, +#line 530 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_ebcdic924}, +#line 596 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_ebcdic1144}, +#line 249 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_tis620}, {-1}, -#line 59 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_iso8859_1}, -#line 210 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_mac_roman}, +#line 194 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str822, ei_cp1257}, +#line 24 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_ucs2}, +#line 474 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str824, ei_ebcdic297}, +#line 679 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_big5_2003}, +#line 322 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str826, ei_euc_cn}, {-1}, -#line 237 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str211, ei_pt154}, +#line 621 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str828, ei_ebcdic1148}, {-1}, -#line 13 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_ascii}, -#line 108 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_iso8859_7}, +#line 425 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_cp865}, +#line 400 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str831, ei_cp855}, {-1}, -#line 171 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_cp1250}, -#line 41 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_utf32}, -#line 225 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str218, ei_hp_roman8}, +#line 471 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str833, ei_ebcdic285}, + {-1}, {-1}, {-1}, +#line 324 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str837, ei_ces_gbk}, {-1}, -#line 117 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_iso8859_8}, -#line 244 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_cp1133}, -#line 133 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str222, ei_iso8859_10}, -#line 158 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str223, ei_iso8859_15}, -#line 163 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str224, ei_iso8859_16}, -#line 202 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_cp862}, -#line 22 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_ascii}, +#line 606 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str839, ei_ebcdic1145}, + {-1}, {-1}, {-1}, +#line 584 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_ebcdic1142}, + {-1}, {-1}, +#line 228 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str846, ei_hp_roman8}, {-1}, -#line 253 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_cp874}, -#line 66 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, ei_iso8859_2}, -#line 131 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str230, ei_iso8859_10}, +#line 428 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str848, ei_cp869}, {-1}, -#line 83 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_iso8859_4}, +#line 216 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str850, ei_mac_croatian}, +#line 191 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str851, ei_cp1256}, + {-1}, +#line 576 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str853, ei_ebcdic1141}, {-1}, {-1}, {-1}, -#line 179 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_cp1252}, +#line 665 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ebcdic4971}, + {-1}, {-1}, +#line 497 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str860, ei_ebcdic838}, + {-1}, {-1}, +#line 370 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str863, ei_cp1129}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 566 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_ebcdic1140}, {-1}, {-1}, {-1}, -#line 98 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_iso8859_6}, -#line 74 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_iso8859_3}, - {-1}, -#line 243 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_mulelao}, -#line 125 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_iso8859_9}, +#line 426 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str877, ei_cp869}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 38 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_utf16}, {-1}, -#line 78 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_iso8859_3}, +#line 57 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str885, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 440 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_ebcdic273}, +#line 267 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str892, ei_jisx0201}, +#line 33 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str893, ei_ucs4}, +#line 382 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp1163}, + {-1}, +#line 544 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str896, ei_ebcdic1097}, +#line 504 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_ebcdic870}, +#line 335 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str898, ei_hz}, +#line 388 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str899, ei_cp737}, {-1}, -#line 230 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_armscii_8}, -#line 71 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_iso8859_3}, -#line 72 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_iso8859_3}, -#line 145 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_iso8859_13}, -#line 234 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str252, ei_pt154}, -#line 29 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_ucs2be}, -#line 140 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_iso8859_13}, -#line 141 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_iso8859_13}, +#line 255 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str901, ei_viscii}, {-1}, -#line 34 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_ucs4}, -#line 67 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str258, ei_iso8859_2}, -#line 331 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_iso2022_cn}, - {-1}, {-1}, -#line 12 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_ascii}, -#line 30 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ucs2be}, -#line 109 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_iso8859_7}, -#line 136 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_10}, -#line 332 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_iso2022_cn}, -#line 320 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_euc_cn}, -#line 129 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_iso8859_10}, -#line 130 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_iso8859_10}, -#line 25 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_ucs2}, -#line 277 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_jisx0208}, -#line 262 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_iso646_jp}, -#line 167 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_koi8_r}, +#line 21 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str903, ei_ascii}, {-1}, {-1}, {-1}, -#line 37 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_ucs4le}, - {-1}, {-1}, -#line 266 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso646_jp}, -#line 274 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_jisx0208}, -#line 265 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_iso646_jp}, -#line 168 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str283, ei_koi8_r}, +#line 627 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_ebcdic1148}, {-1}, {-1}, {-1}, {-1}, -#line 285 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_iso646_cn}, -#line 217 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_mac_romania}, -#line 31 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_ucs2le}, +#line 176 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str912, ei_cp1251}, {-1}, -#line 364 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_dec_hanyu}, +#line 200 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_cp850}, {-1}, {-1}, -#line 363 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_dec_hanyu}, +#line 443 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_ebcdic273}, {-1}, {-1}, -#line 82 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str298, ei_iso8859_4}, -#line 61 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_iso8859_1}, +#line 628 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str920, ei_ebcdic1149}, +#line 169 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str921, ei_koi8_u}, + {-1}, {-1}, +#line 616 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str924, ei_ebcdic1147}, + {-1}, {-1}, +#line 16 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str927, ei_ascii}, +#line 170 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str928, ei_koi8_ru}, +#line 519 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str929, ei_ebcdic905}, {-1}, -#line 52 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_java}, +#line 292 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str931, ei_gb2312}, {-1}, -#line 241 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_rk1048}, -#line 247 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_tis620}, - {-1}, {-1}, -#line 246 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_tis620}, +#line 95 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str933, ei_iso8859_6}, {-1}, -#line 353 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_euc_kr}, -#line 258 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_tcvn}, +#line 88 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_iso8859_5}, {-1}, -#line 352 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_euc_kr}, -#line 135 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_iso8859_10}, -#line 116 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_iso8859_8}, -#line 101 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_iso8859_6}, -#line 92 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_iso8859_5}, -#line 242 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_rk1048}, -#line 40 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_utf16le}, -#line 300 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ksc5601}, -#line 216 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_mac_croatian}, +#line 163 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str937, ei_iso8859_16}, + {-1}, +#line 64 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str939, ei_iso8859_2}, + {-1}, +#line 524 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str941, ei_ebcdic924}, + {-1}, +#line 23 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str943, ei_utf8}, +#line 155 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_iso8859_15}, + {-1}, +#line 271 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str946, ei_jisx0208}, {-1}, {-1}, -#line 85 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_iso8859_4}, -#line 198 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp850}, +#line 54 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str949, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 361 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_dec_kanji}, +#line 138 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str954, ei_iso8859_11}, + {-1}, +#line 509 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str956, ei_ebcdic871}, {-1}, {-1}, -#line 81 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_iso8859_4}, -#line 123 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_iso8859_9}, -#line 295 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str329, ei_ksc5601}, -#line 215 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str330, ei_mac_iceland}, +#line 131 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str959, ei_iso8859_10}, +#line 204 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str960, ei_cp862}, + {-1}, {-1}, +#line 284 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_jisx0212}, +#line 94 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str964, ei_iso8859_6}, +#line 632 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str965, ei_ebcdic1149}, +#line 87 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_iso8859_5}, +#line 569 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str967, ei_ebcdic1140}, +#line 332 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str968, ei_iso2022_cn}, + {-1}, +#line 63 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str970, ei_iso8859_2}, + {-1}, {-1}, +#line 352 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_euc_kr}, +#line 245 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_cp1133}, +#line 154 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str975, ei_iso8859_15}, {-1}, -#line 75 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_iso8859_3}, #line 89 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_iso8859_5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str977, ei_iso8859_5}, +#line 517 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str978, ei_ebcdic880}, {-1}, -#line 127 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_iso8859_9}, - {-1}, {-1}, {-1}, {-1}, -#line 282 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_jisx0212}, +#line 53 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str980, ei_iso8859_1}, +#line 588 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_ebcdic1143}, +#line 147 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str982, ei_iso8859_14}, +#line 156 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str983, ei_iso8859_15}, +#line 148 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str984, ei_iso8859_14}, +#line 137 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_iso8859_11}, + {-1}, {-1}, +#line 286 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str988, ei_iso646_cn}, {-1}, {-1}, {-1}, {-1}, -#line 26 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_ucs2}, +#line 32 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_ucs2le}, +#line 364 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_dec_hanyu}, +#line 473 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_ebcdic297}, +#line 612 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_ebcdic1146}, {-1}, -#line 142 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_iso8859_13}, +#line 279 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str998, ei_jisx0212}, +#line 583 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str999, ei_ebcdic1142}, +#line 41 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_utf32}, +#line 229 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1001, ei_nextstep}, {-1}, -#line 69 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_iso8859_2}, -#line 297 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_ksc5601}, -#line 164 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_iso8859_16}, +#line 115 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1003, ei_iso8859_8}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 80 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_iso8859_4}, {-1}, -#line 169 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_koi8_u}, +#line 116 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1011, ei_iso8859_8}, + {-1}, +#line 146 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_iso8859_14}, +#line 81 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1014, ei_iso8859_4}, +#line 252 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1015, ei_tis620}, +#line 130 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1016, ei_iso8859_10}, +#line 293 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1017, ei_isoir165}, +#line 107 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1018, ei_iso8859_7}, + {-1}, +#line 413 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_cp861}, + {-1}, {-1}, {-1}, {-1}, +#line 432 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1025, ei_ebcdic037}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 114 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1034, ei_iso8859_8}, +#line 444 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_ebcdic277}, + {-1}, +#line 35 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1037, ei_ucs4}, + {-1}, {-1}, +#line 79 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1040, ei_iso8859_4}, +#line 333 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1041, ei_iso2022_cn_ext}, + {-1}, +#line 430 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1043, ei_cp869}, +#line 108 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1044, ei_iso8859_7}, + {-1}, {-1}, +#line 129 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1047, ei_iso8859_10}, +#line 427 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1048, ei_cp869}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 58 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1056, ei_iso8859_1}, + {-1}, {-1}, +#line 15 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1059, ei_ascii}, +#line 541 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1060, ei_ebcdic1047}, +#line 243 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1061, ei_mulelao}, +#line 362 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1062, ei_dec_kanji}, +#line 363 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1063, ei_dec_hanyu}, +#line 110 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1064, ei_iso8859_7}, + {-1}, {-1}, +#line 543 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1067, ei_ebcdic1097}, {-1}, -#line 218 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_mac_cyrillic}, -#line 170 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_koi8_ru}, -#line 275 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_jisx0208}, +#line 629 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1069, ei_ebcdic1149}, + {-1}, {-1}, +#line 647 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_ebcdic1157}, + {-1}, {-1}, +#line 592 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1075, ei_ebcdic1143}, +#line 331 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1076, ei_iso2022_cn}, {-1}, -#line 269 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_jisx0201}, +#line 337 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1078, ei_euc_tw}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 590 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1086, ei_ebcdic1143}, {-1}, -#line 284 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_jisx0212}, -#line 354 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_euc_kr}, +#line 262 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1088, ei_iso646_jp}, +#line 264 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1089, ei_iso646_jp}, {-1}, -#line 99 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_iso8859_6}, +#line 619 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1091, ei_ebcdic1147}, +#line 230 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1092, ei_armscii_8}, +#line 447 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1093, ei_ebcdic277}, +#line 326 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_cp936}, +#line 73 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1095, ei_iso8859_3}, +#line 66 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_iso8859_2}, +#line 280 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_jisx0212}, {-1}, -#line 100 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_iso8859_6}, -#line 56 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_iso8859_1}, -#line 333 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_iso2022_cn_ext}, +#line 260 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1099, ei_tcvn}, +#line 141 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1100, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 438 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1107, ei_ebcdic037}, {-1}, -#line 49 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_ucs4internal}, - {-1}, {-1}, {-1}, -#line 323 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_euc_cn}, +#line 614 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1109, ei_ebcdic1147}, +#line 454 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1110, ei_ebcdic278}, {-1}, {-1}, -#line 73 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_iso8859_3}, -#line 157 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_iso8859_15}, -#line 173 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str379, ei_cp1250}, - {-1}, -#line 248 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_tis620}, +#line 295 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1113, ei_ksc5601}, +#line 231 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1114, ei_georgian_academy}, {-1}, -#line 47 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_ucs2internal}, -#line 249 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_tis620}, +#line 391 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1116, ei_cp775}, +#line 354 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1117, ei_euc_kr}, {-1}, {-1}, -#line 306 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_sjis}, -#line 305 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_sjis}, -#line 152 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_iso8859_14}, +#line 28 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1120, ei_ucs2be}, + {-1}, {-1}, +#line 124 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1123, ei_iso8859_9}, {-1}, -#line 231 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_georgian_academy}, -#line 255 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_viscii}, -#line 196 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_cp1258}, -#line 175 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_cp1251}, +#line 617 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1125, ei_ebcdic1147}, + {-1}, {-1}, {-1}, +#line 90 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1129, ei_iso8859_5}, {-1}, -#line 290 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_gb2312}, +#line 140 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1131, ei_iso8859_13}, +#line 96 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1132, ei_iso8859_6}, {-1}, -#line 43 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_utf32le}, +#line 161 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1134, ei_iso8859_16}, +#line 65 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1135, ei_iso8859_2}, +#line 277 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1136, ei_jisx0208}, + {-1}, {-1}, {-1}, +#line 55 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1140, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, +#line 188 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1145, ei_cp1255}, + {-1}, +#line 162 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1147, ei_iso8859_16}, +#line 242 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1148, ei_rk1048}, {-1}, {-1}, -#line 190 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_cp1256}, +#line 158 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1151, ei_iso8859_15}, {-1}, -#line 328 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_gb18030_2005}, -#line 256 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_viscii}, +#line 82 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1153, ei_iso8859_4}, {-1}, -#line 184 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_cp1254}, +#line 291 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1155, ei_gb2312}, {-1}, {-1}, {-1}, {-1}, -#line 339 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_ces_big5}, -#line 187 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1255}, - {-1}, -#line 340 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_ces_big5}, -#line 228 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_hp_roman8}, - {-1}, {-1}, {-1}, -#line 178 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp1252}, - {-1}, {-1}, {-1}, -#line 77 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_iso8859_3}, +#line 259 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1160, ei_tcvn}, {-1}, {-1}, {-1}, {-1}, -#line 192 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_cp1257}, -#line 15 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_ascii}, +#line 160 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1165, ei_iso8859_16}, +#line 538 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1166, ei_ebcdic1047}, {-1}, {-1}, -#line 327 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_cp936}, +#line 613 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1169, ei_ebcdic1146}, {-1}, -#line 45 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_utf7}, +#line 72 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1171, ei_iso8859_3}, +#line 436 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1172, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, -#line 359 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso2022_kr}, +#line 470 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1177, ei_ebcdic285}, + {-1}, {-1}, +#line 458 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1180, ei_ebcdic280}, {-1}, -#line 240 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_rk1048}, -#line 46 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_utf7}, +#line 480 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1182, ei_ebcdic423}, +#line 681 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1183, ei_tds565}, {-1}, -#line 224 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_mac_thai}, +#line 312 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1185, ei_iso2022_jp}, +#line 290 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1186, ei_gb2312}, + {-1}, {-1}, +#line 315 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1189, ei_iso2022_jp2}, +#line 560 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1190, ei_ebcdic1137}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 307 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1196, ei_sjis}, {-1}, -#line 360 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str446, ei_iso2022_kr}, +#line 118 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1198, ei_iso8859_8}, +#line 684 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1199, ei_riscos1}, +#line 323 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1200, ei_euc_cn}, +#line 109 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1201, ei_iso8859_7}, +#line 71 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1202, ei_iso8859_3}, + {-1}, +#line 117 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1204, ei_iso8859_8}, {-1}, {-1}, -#line 19 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ascii}, -#line 44 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_utf7}, +#line 599 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_ebcdic1144}, +#line 437 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1208, ei_ebcdic037}, {-1}, -#line 235 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_pt154}, +#line 56 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1210, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 261 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1218, ei_tcvn}, +#line 620 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1219, ei_ebcdic1147}, +#line 664 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1220, ei_ebcdic4971}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 29 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1226, ei_ucs2be}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 404 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1233, ei_cp857}, + {-1}, {-1}, +#line 273 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1236, ei_jisx0208}, +#line 157 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1237, ei_iso8859_15}, {-1}, {-1}, {-1}, -#line 181 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_cp1253}, +#line 51 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1241, ei_c99}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 472 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1247, ei_ebcdic297}, +#line 214 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_mac_centraleurope}, +#line 179 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1249, ei_cp1252}, {-1}, -#line 362 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_dec_kanji}, -#line 208 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_cp866}, +#line 106 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1251, ei_iso8859_7}, +#line 493 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1252, ei_ebcdic500}, +#line 256 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1253, ei_viscii}, {-1}, -#line 361 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_dec_kanji}, +#line 44 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1255, ei_utf7}, +#line 522 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1256, ei_ebcdic905}, +#line 18 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1257, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, +#line 27 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1262, ei_ucs2be}, +#line 523 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1263, ei_ebcdic905}, {-1}, -#line 172 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp1250}, -#line 223 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_mac_arabic}, +#line 102 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1265, ei_iso8859_6}, {-1}, -#line 257 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_viscii}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 113 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_iso8859_7}, +#line 93 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1267, ei_iso8859_5}, + {-1}, {-1}, {-1}, +#line 70 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1271, ei_iso8859_2}, {-1}, {-1}, -#line 103 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_iso8859_7}, -#line 104 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_iso8859_7}, -#line 251 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_tis620}, +#line 503 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1274, ei_ebcdic870}, +#line 166 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1275, ei_iso8859_16}, {-1}, -#line 17 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_ascii}, -#line 211 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_mac_roman}, - {-1}, {-1}, {-1}, {-1}, -#line 344 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_ces_big5}, +#line 159 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1277, ei_iso8859_15}, {-1}, -#line 18 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_ascii}, -#line 343 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_ces_big5}, -#line 233 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_koi8_t}, +#line 31 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_ucs2le}, {-1}, -#line 55 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_iso8859_1}, +#line 62 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1281, ei_iso8859_1}, {-1}, -#line 309 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_sjis}, - {-1}, {-1}, -#line 232 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_georgian_ps}, -#line 324 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_ces_gbk}, -#line 96 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_iso8859_6}, - {-1}, {-1}, -#line 213 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_mac_roman}, +#line 355 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1283, ei_cp949}, +#line 111 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1284, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 272 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1290, ei_jisx0208}, +#line 139 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1291, ei_iso8859_11}, +#line 17 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1292, ei_ascii}, +#line 311 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1293, ei_iso2022_jp}, {-1}, -#line 110 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_iso8859_7}, -#line 276 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 279 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_jisx0212}, - {-1}, {-1}, -#line 65 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str516, ei_iso8859_2}, +#line 598 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1295, ei_ebcdic1144}, {-1}, -#line 337 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_euc_tw}, -#line 296 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_ksc5601}, #line 36 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_ucs4be}, -#line 336 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_euc_tw}, -#line 308 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_sjis}, -#line 287 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_iso646_cn}, - {-1}, -#line 316 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_iso2022_jpms}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1297, ei_ucs4be}, +#line 314 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1298, ei_iso2022_jp2}, +#line 266 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1299, ei_iso646_jp}, +#line 289 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1300, ei_iso646_cn}, + {-1}, {-1}, #line 313 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_iso2022_jp1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1303, ei_iso2022_jp1}, + {-1}, {-1}, +#line 485 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1306, ei_ebcdic424}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 453 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1313, ei_ebcdic278}, +#line 37 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_ucs4le}, +#line 104 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1315, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, +#line 281 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1320, ei_jisx0212}, + {-1}, {-1}, +#line 105 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1323, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 336 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1330, ei_euc_tw}, +#line 492 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1331, ei_ebcdic500}, +#line 30 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1332, ei_ucs2be}, +#line 452 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1333, ei_ebcdic278}, {-1}, -#line 132 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_iso8859_10}, +#line 120 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1335, ei_iso8859_8}, +#line 678 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1336, ei_iso2022_jp3}, {-1}, -#line 271 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_jisx0208}, -#line 299 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_ksc5601}, -#line 267 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_jisx0201}, -#line 27 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_ucs2be}, +#line 475 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1338, ei_ebcdic297}, + {-1}, {-1}, +#line 86 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_iso8859_4}, + {-1}, {-1}, {-1}, {-1}, +#line 103 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1346, ei_iso8859_7}, {-1}, -#line 97 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_iso8859_6}, +#line 673 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1348, ei_euc_jisx0213}, +#line 240 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1349, ei_rk1048}, {-1}, -#line 322 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_euc_cn}, +#line 153 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1351, ei_iso8859_14}, +#line 39 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1352, ei_utf16be}, + {-1}, {-1}, +#line 127 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1355, ei_iso8859_9}, + {-1}, {-1}, {-1}, +#line 386 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1359, ei_cp437}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 119 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str543, ei_iso8859_8}, -#line 294 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_isoir165}, +#line 61 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1365, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 40 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1369, ei_utf16le}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 232 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_georgian_ps}, {-1}, -#line 250 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_tis620}, +#line 294 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1378, ei_isoir165}, +#line 591 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1379, ei_ebcdic1143}, +#line 268 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1380, ei_jisx0201}, +#line 439 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1381, ei_ebcdic037}, + {-1}, {-1}, +#line 101 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1384, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 448 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1391, ei_ebcdic277}, {-1}, -#line 254 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_cp874}, -#line 214 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str549, ei_mac_centraleurope}, -#line 188 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_cp1255}, -#line 314 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_iso2022_jp2}, +#line 85 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1393, ei_iso8859_4}, + {-1}, {-1}, {-1}, {-1}, +#line 132 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_iso8859_10}, {-1}, -#line 106 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_iso8859_7}, +#line 97 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1400, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, +#line 136 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1405, ei_iso8859_10}, + {-1}, {-1}, {-1}, {-1}, +#line 99 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1410, ei_iso8859_6}, + {-1}, {-1}, {-1}, +#line 677 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1414, ei_iso2022_jp3}, +#line 45 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1415, ei_utf7}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 220 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1421, ei_mac_greek}, + {-1}, {-1}, +#line 626 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1424, ei_ebcdic1148}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 152 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1448, ei_iso8859_14}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 278 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1456, ei_jisx0208}, + {-1}, {-1}, {-1}, +#line 222 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1460, ei_mac_hebrew}, +#line 92 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1461, ei_iso8859_5}, + {-1}, {-1}, {-1}, {-1}, +#line 42 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1466, ei_utf32be}, +#line 287 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1467, ei_iso646_cn}, {-1}, -#line 260 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_tcvn}, -#line 268 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_jisx0201}, -#line 315 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_iso2022_jp2}, -#line 143 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_iso8859_13}, +#line 25 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1469, ei_ucs2}, {-1}, {-1}, -#line 39 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_utf16be}, - {-1}, -#line 245 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_cp1133}, - {-1}, {-1}, {-1}, {-1}, -#line 281 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_jisx0212}, -#line 193 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_cp1257}, +#line 347 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1472, ei_big5hkscs2001}, {-1}, #line 338 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_euc_tw}, - {-1}, -#line 238 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str573, ei_pt154}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1474, ei_euc_tw}, {-1}, -#line 259 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_tcvn}, - {-1}, {-1}, {-1}, -#line 302 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str579, ei_euc_jp}, +#line 69 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1476, ei_iso8859_2}, {-1}, {-1}, -#line 301 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_euc_jp}, -#line 263 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_iso646_jp}, - {-1}, {-1}, {-1}, {-1}, -#line 20 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_ascii}, +#line 173 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1479, ei_cp1250}, {-1}, {-1}, {-1}, -#line 200 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_cp850}, +#line 43 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1483, ei_utf32le}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 12 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1492, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, +#line 219 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1497, ei_mac_ukraine}, {-1}, -#line 112 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 272 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str604, ei_jisx0208}, +#line 351 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1499, ei_big5hkscs2008}, + {-1}, {-1}, +#line 348 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1502, ei_big5hkscs2004}, +#line 78 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1503, ei_iso8859_3}, +#line 34 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1504, ei_ucs4}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 273 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_jisx0208}, -#line 219 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_mac_ukraine}, +#line 77 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_iso8859_3}, + {-1}, +#line 145 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1513, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 46 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1519, ei_utf7}, {-1}, {-1}, {-1}, -#line 204 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str616, ei_cp862}, +#line 308 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1523, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, +#line 26 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1528, ei_ucs2}, + {-1}, {-1}, +#line 542 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1531, ei_ebcdic1097}, + {-1}, {-1}, +#line 285 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1534, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 508 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1540, ei_ebcdic871}, + {-1}, {-1}, {-1}, {-1}, +#line 135 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1545, ei_iso8859_10}, {-1}, {-1}, {-1}, -#line 280 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_jisx0212}, - {-1}, -#line 303 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str622, ei_euc_jp}, +#line 631 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1549, ei_ebcdic1149}, + {-1}, {-1}, {-1}, {-1}, +#line 276 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1554, ei_jisx0208}, + {-1}, {-1}, +#line 221 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1557, ei_mac_turkish}, +#line 360 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1558, ei_iso2022_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 50 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_ucs4swapped}, +#line 513 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1575, ei_ebcdic875}, + {-1}, {-1}, {-1}, {-1}, +#line 190 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1580, ei_cp1256}, +#line 187 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1581, ei_cp1255}, {-1}, -#line 335 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_hz}, -#line 191 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_cp1256}, -#line 32 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str634, ei_ucs2le}, +#line 178 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1583, ei_cp1252}, {-1}, {-1}, #line 185 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp1254}, -#line 321 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_euc_cn}, -#line 270 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_jisx0201}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1586, ei_cp1254}, {-1}, -#line 42 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_utf32be}, +#line 175 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1588, ei_cp1251}, +#line 257 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1589, ei_viscii}, +#line 299 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1590, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 446 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1598, ei_ebcdic277}, + {-1}, {-1}, {-1}, {-1}, +#line 476 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1603, ei_ebcdic297}, +#line 296 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1604, ei_ksc5601}, + {-1}, {-1}, +#line 568 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1607, ei_ebcdic1140}, {-1}, -#line 48 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_ucs2swapped}, - {-1}, {-1}, {-1}, -#line 292 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_gb2312}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 105 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_iso8859_7}, - {-1}, {-1}, {-1}, -#line 289 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_iso646_cn}, +#line 605 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1609, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 278 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_jisx0208}, - {-1}, {-1}, {-1}, -#line 330 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str680, ei_gb18030_2022}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 111 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_iso8859_7}, +#line 196 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_cp1258}, + {-1}, {-1}, +#line 184 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1618, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 342 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1636, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 634 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1643, ei_ebcdic1149}, {-1}, -#line 350 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str702, ei_big5hkscs2008}, - {-1}, {-1}, -#line 349 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str705, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, -#line 311 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_iso2022_jp}, +#line 172 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1645, ei_cp1250}, +#line 213 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1646, ei_mac_roman}, +#line 113 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1647, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 221 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_mac_turkish}, - {-1}, {-1}, -#line 312 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_iso2022_jp}, -#line 329 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_gb18030_2005}, +#line 674 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1651, ei_euc_jisx0213}, {-1}, {-1}, {-1}, {-1}, -#line 357 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str722, ei_johab}, +#line 575 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1656, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 316 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1663, ei_iso2022_jpms}, + {-1}, {-1}, +#line 359 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1666, ei_iso2022_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 502 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1676, ei_ebcdic870}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 119 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1685, ei_iso8859_8}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 270 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1691, ei_jisx0201}, + {-1}, {-1}, {-1}, +#line 47 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1695, ei_ucs2internal}, + {-1}, {-1}, {-1}, +#line 181 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1699, ei_cp1253}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_iso8859_8}, + {-1}, {-1}, +#line 582 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1729, ei_ebcdic1142}, +#line 49 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1730, ei_ucs4internal}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 28 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str766, ei_ucs2be}, +#line 14 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1737, ei_ascii}, + {-1}, +#line 122 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1739, ei_iso8859_9}, +#line 112 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1740, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 123 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1747, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 182 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_cp1253}, +#line 48 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1763, ei_ucs2swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 220 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str789, ei_mac_greek}, - {-1}, {-1}, -#line 194 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str792, ei_cp1257}, +#line 121 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1770, ei_iso8859_9}, +#line 193 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1771, ei_cp1257}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 50 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1798, ei_ucs4swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 297 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1816, ei_ksc5601}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 261 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_tcvn}, +#line 283 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1822, ei_jisx0212}, +#line 349 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1823, ei_big5hkscs2008}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 254 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1833, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 298 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1859, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 346 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1867, ei_big5hkscs1999}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 74 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1886, ei_iso8859_3}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 465 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1895, ei_ebcdic284}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 342 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str854, ei_ces_big5}, - {-1}, {-1}, #line 341 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ces_big5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1915, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 633 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1939, ei_ebcdic1149}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 435 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1950, ei_ebcdic037}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 350 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1968, ei_big5hkscs2008}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 303 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2002, ei_euc_jp}, +#line 182 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2003, ei_cp1253}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 142 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2012, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 351 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str896, ei_big5hkscs2008}, -#line 347 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 346 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str903, ei_big5hkscs1999}, - {-1}, {-1}, -#line 304 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_euc_jp}, - {-1}, {-1}, -#line 348 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_big5hkscs2004}, +#line 309 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2069, ei_sjis}, + {-1}, +#line 128 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2071, ei_iso8859_9}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 222 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str951, ei_mac_hebrew}, {-1}, -#line 229 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_nextstep} +#line 675 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2136, ei_shift_jisx0213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 149 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2224, ei_iso8859_14}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 305 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2255, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 327 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2281, ei_cp936}, + {-1}, {-1}, {-1}, {-1}, +#line 306 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2286, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 676 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2302, ei_shift_jisx0213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 304 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2582, ei_euc_jp} }; const struct alias * diff --git a/lib/generated/aliases_aix.h b/lib/generated/aliases_aix.h deleted file mode 100644 index 5cbc77fd..00000000 --- a/lib/generated/aliases_aix.h +++ /dev/null @@ -1,18 +0,0 @@ - S(aix_0, "CP856", ei_cp856 ) - S(aix_1, "CP922", ei_cp922 ) - S(aix_2, "CP943", ei_cp943 ) - S(aix_3, "CP1046", ei_cp1046 ) - S(aix_4, "CP1124", ei_cp1124 ) - S(aix_5, "CP1129", ei_cp1129 ) - S(aix_6, "CP1161", ei_cp1161 ) - S(aix_7, "IBM1161", ei_cp1161 ) - S(aix_8, "IBM-1161", ei_cp1161 ) - S(aix_9, "CSIBM1161", ei_cp1161 ) - S(aix_10, "CP1162", ei_cp1162 ) - S(aix_11, "IBM1162", ei_cp1162 ) - S(aix_12, "IBM-1162", ei_cp1162 ) - S(aix_13, "CSIBM1162", ei_cp1162 ) - S(aix_14, "CP1163", ei_cp1163 ) - S(aix_15, "IBM1163", ei_cp1163 ) - S(aix_16, "IBM-1163", ei_cp1163 ) - S(aix_17, "CSIBM1163", ei_cp1163 ) diff --git a/lib/generated/aliases_aix_sysaix.h b/lib/generated/aliases_aix_sysaix.h deleted file mode 100644 index b7dc5841..00000000 --- a/lib/generated/aliases_aix_sysaix.h +++ /dev/null @@ -1,24 +0,0 @@ - S(aix_0, "CP856", ei_cp856 ) - S(aix_1, "IBM-856", ei_cp856 ) - S(aix_2, "CP922", ei_cp922 ) - S(aix_3, "IBM-922", ei_cp922 ) - S(aix_4, "CP943", ei_cp943 ) - S(aix_5, "IBM-943", ei_cp943 ) - S(aix_6, "CP1046", ei_cp1046 ) - S(aix_7, "IBM-1046", ei_cp1046 ) - S(aix_8, "CP1124", ei_cp1124 ) - S(aix_9, "IBM-1124", ei_cp1124 ) - S(aix_10, "CP1129", ei_cp1129 ) - S(aix_11, "IBM-1129", ei_cp1129 ) - S(aix_12, "CP1161", ei_cp1161 ) - S(aix_13, "IBM1161", ei_cp1161 ) - S(aix_14, "IBM-1161", ei_cp1161 ) - S(aix_15, "CSIBM1161", ei_cp1161 ) - S(aix_16, "CP1162", ei_cp1162 ) - S(aix_17, "IBM1162", ei_cp1162 ) - S(aix_18, "IBM-1162", ei_cp1162 ) - S(aix_19, "CSIBM1162", ei_cp1162 ) - S(aix_20, "CP1163", ei_cp1163 ) - S(aix_21, "IBM1163", ei_cp1163 ) - S(aix_22, "IBM-1163", ei_cp1163 ) - S(aix_23, "CSIBM1163", ei_cp1163 ) diff --git a/lib/generated/aliases_dos.h b/lib/generated/aliases_dos.h deleted file mode 100644 index bdff437c..00000000 --- a/lib/generated/aliases_dos.h +++ /dev/null @@ -1,49 +0,0 @@ - S(dos_0, "CP437", ei_cp437 ) - S(dos_1, "IBM437", ei_cp437 ) - S(dos_2, "437", ei_cp437 ) - S(dos_3, "CSPC8CODEPAGE437", ei_cp437 ) - S(dos_4, "CP737", ei_cp737 ) - S(dos_5, "IBM737", ei_cp737 ) - S(dos_6, "CP775", ei_cp775 ) - S(dos_7, "IBM775", ei_cp775 ) - S(dos_8, "CSPC775BALTIC", ei_cp775 ) - S(dos_9, "CP852", ei_cp852 ) - S(dos_10, "IBM852", ei_cp852 ) - S(dos_11, "852", ei_cp852 ) - S(dos_12, "CSPCP852", ei_cp852 ) - S(dos_13, "CP853", ei_cp853 ) - S(dos_14, "CP855", ei_cp855 ) - S(dos_15, "IBM855", ei_cp855 ) - S(dos_16, "855", ei_cp855 ) - S(dos_17, "CSIBM855", ei_cp855 ) - S(dos_18, "CP857", ei_cp857 ) - S(dos_19, "IBM857", ei_cp857 ) - S(dos_20, "857", ei_cp857 ) - S(dos_21, "CSIBM857", ei_cp857 ) - S(dos_22, "CP858", ei_cp858 ) - S(dos_23, "CP860", ei_cp860 ) - S(dos_24, "IBM860", ei_cp860 ) - S(dos_25, "860", ei_cp860 ) - S(dos_26, "CSIBM860", ei_cp860 ) - S(dos_27, "CP861", ei_cp861 ) - S(dos_28, "IBM861", ei_cp861 ) - S(dos_29, "861", ei_cp861 ) - S(dos_30, "CP-IS", ei_cp861 ) - S(dos_31, "CSIBM861", ei_cp861 ) - S(dos_32, "CP863", ei_cp863 ) - S(dos_33, "IBM863", ei_cp863 ) - S(dos_34, "863", ei_cp863 ) - S(dos_35, "CSIBM863", ei_cp863 ) - S(dos_36, "CP864", ei_cp864 ) - S(dos_37, "IBM864", ei_cp864 ) - S(dos_38, "CSIBM864", ei_cp864 ) - S(dos_39, "CP865", ei_cp865 ) - S(dos_40, "IBM865", ei_cp865 ) - S(dos_41, "865", ei_cp865 ) - S(dos_42, "CSIBM865", ei_cp865 ) - S(dos_43, "CP869", ei_cp869 ) - S(dos_44, "IBM869", ei_cp869 ) - S(dos_45, "869", ei_cp869 ) - S(dos_46, "CP-GR", ei_cp869 ) - S(dos_47, "CSIBM869", ei_cp869 ) - S(dos_48, "CP1125", ei_cp1125 ) diff --git a/lib/generated/aliases_extra.h b/lib/generated/aliases_extra.h deleted file mode 100644 index 9a54e16a..00000000 --- a/lib/generated/aliases_extra.h +++ /dev/null @@ -1,12 +0,0 @@ - S(extra_0, "EUC-JISX0213", ei_euc_jisx0213 ) - S(extra_1, "EUC-JIS-2004", ei_euc_jisx0213 ) - S(extra_2, "SHIFT_JISX0213", ei_shift_jisx0213 ) - S(extra_3, "SHIFT_JIS-2004", ei_shift_jisx0213 ) - S(extra_4, "ISO-2022-JP-3", ei_iso2022_jp3 ) - S(extra_5, "ISO-2022-JP-2004", ei_iso2022_jp3 ) - S(extra_6, "BIG5-2003", ei_big5_2003 ) - S(extra_7, "TDS565", ei_tds565 ) - S(extra_8, "ISO-IR-230", ei_tds565 ) - S(extra_9, "ATARIST", ei_atarist ) - S(extra_10, "ATARI", ei_atarist ) - S(extra_11, "RISCOS-LATIN1", ei_riscos1 ) diff --git a/lib/generated/aliases_sysaix.h b/lib/generated/aliases_sysaix.h deleted file mode 100644 index ccca8c6c..00000000 --- a/lib/generated/aliases_sysaix.h +++ /dev/null @@ -1,1810 +0,0 @@ -/* C++ code produced by gperf version 3.1 */ -/* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases_sysaix.gperf */ -/* Computed positions: -k'1,3-11,$' */ - -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -/* The character set is not based on ISO-646. */ -#error "gperf generated tables don't work with this execution character set. Please report a bug to ." -#endif - -#line 1 "lib/generated/aliases_sysaix.gperf" -struct alias { int name; unsigned int encoding_index; }; - -#define TOTAL_KEYWORDS 362 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 16 -#define MAX_HASH_VALUE 1090 -/* maximum key range = 1075, duplicates = 0 */ - -class HashPool -{ -private: - static inline unsigned int aliases_hash (const char *str, size_t len); -public: - static const struct alias *aliases_lookup (const char *str, size_t len); -}; - -inline unsigned int -HashPool::aliases_hash (const char *str, size_t len) -{ - static const unsigned short asso_values[] = - { - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 5, 12, 1091, 97, 7, - 33, 130, 15, 17, 5, 205, 23, 25, 226, 1091, - 1091, 1091, 1091, 1091, 1091, 165, 145, 11, 14, 135, - 109, 136, 118, 6, 88, 31, 9, 154, 8, 6, - 129, 1091, 5, 5, 28, 218, 18, 189, 237, 5, - 6, 1091, 1091, 1091, 1091, 6, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091 - }; - unsigned int hval = len; - - switch (hval) - { - default: - hval += asso_values[static_cast(str[10])]; - /*FALLTHROUGH*/ - case 10: - hval += asso_values[static_cast(str[9])]; - /*FALLTHROUGH*/ - case 9: - hval += asso_values[static_cast(str[8])]; - /*FALLTHROUGH*/ - case 8: - hval += asso_values[static_cast(str[7])]; - /*FALLTHROUGH*/ - case 7: - hval += asso_values[static_cast(str[6])]; - /*FALLTHROUGH*/ - case 6: - hval += asso_values[static_cast(str[5])]; - /*FALLTHROUGH*/ - case 5: - hval += asso_values[static_cast(str[4])]; - /*FALLTHROUGH*/ - case 4: - hval += asso_values[static_cast(str[3])]; - /*FALLTHROUGH*/ - case 3: - hval += asso_values[static_cast(str[2])]; - /*FALLTHROUGH*/ - case 2: - case 1: - hval += asso_values[static_cast(str[0])]; - break; - } - return hval + asso_values[static_cast(str[len - 1])]; -} - -struct stringpool_t - { - char stringpool_str16[sizeof("L6")]; - char stringpool_str18[sizeof("L1")]; - char stringpool_str21[sizeof("CN")]; - char stringpool_str25[sizeof("SJIS")]; - char stringpool_str26[sizeof("L4")]; - char stringpool_str28[sizeof("L5")]; - char stringpool_str30[sizeof("R8")]; - char stringpool_str34[sizeof("L8")]; - char stringpool_str36[sizeof("866")]; - char stringpool_str44[sizeof("L2")]; - char stringpool_str51[sizeof("ISO-IR-6")]; - char stringpool_str54[sizeof("CP866")]; - char stringpool_str58[sizeof("VISCII")]; - char stringpool_str64[sizeof("C99")]; - char stringpool_str65[sizeof("ISO-IR-166")]; - char stringpool_str66[sizeof("TCVN")]; - char stringpool_str67[sizeof("LATIN6")]; - char stringpool_str70[sizeof("CP154")]; - char stringpool_str71[sizeof("LATIN1")]; - char stringpool_str76[sizeof("CYRILLIC")]; - char stringpool_str77[sizeof("CSVISCII")]; - char stringpool_str78[sizeof("ISO646-CN")]; - char stringpool_str79[sizeof("ISO-IR-14")]; - char stringpool_str81[sizeof("KOI8-R")]; - char stringpool_str84[sizeof("CP1256")]; - char stringpool_str87[sizeof("LATIN4")]; - char stringpool_str88[sizeof("CP1251")]; - char stringpool_str89[sizeof("ISO-IR-165")]; - char stringpool_str91[sizeof("LATIN5")]; - char stringpool_str92[sizeof("862")]; - char stringpool_str93[sizeof("ISO-IR-126")]; - char stringpool_str94[sizeof("CSKOI8R")]; - char stringpool_str95[sizeof("ISO-IR-144")]; - char stringpool_str96[sizeof("CP819")]; - char stringpool_str102[sizeof("VISCII1.1-1")]; - char stringpool_str103[sizeof("LATIN8")]; - char stringpool_str104[sizeof("CP1254")]; - char stringpool_str105[sizeof("ISO-IR-58")]; - char stringpool_str106[sizeof("CP949")]; - char stringpool_str107[sizeof("ISO_646.IRV:1991")]; - char stringpool_str108[sizeof("CP1255")]; - char stringpool_str110[sizeof("CP862")]; - char stringpool_str111[sizeof("ISO-IR-148")]; - char stringpool_str113[sizeof("LATIN-9")]; - char stringpool_str115[sizeof("ISO-IR-149")]; - char stringpool_str117[sizeof("ISO-IR-159")]; - char stringpool_str119[sizeof("ISO-IR-226")]; - char stringpool_str120[sizeof("CP1258")]; - char stringpool_str123[sizeof("LATIN2")]; - char stringpool_str124[sizeof("ISO8859-6")]; - char stringpool_str125[sizeof("ISO-IR-199")]; - char stringpool_str126[sizeof("HZ")]; - char stringpool_str127[sizeof("KOI8-T")]; - char stringpool_str128[sizeof("ISO8859-1")]; - char stringpool_str130[sizeof("ISO-8859-6")]; - char stringpool_str131[sizeof("ISO_8859-6")]; - char stringpool_str132[sizeof("ISO8859-16")]; - char stringpool_str134[sizeof("ISO-8859-1")]; - char stringpool_str135[sizeof("ISO_8859-1")]; - char stringpool_str136[sizeof("ISO8859-11")]; - char stringpool_str138[sizeof("ISO-8859-16")]; - char stringpool_str139[sizeof("ISO_8859-16")]; - char stringpool_str140[sizeof("CP1252")]; - char stringpool_str141[sizeof("L3")]; - char stringpool_str142[sizeof("ISO-8859-11")]; - char stringpool_str143[sizeof("ISO_8859-11")]; - char stringpool_str144[sizeof("ISO8859-4")]; - char stringpool_str146[sizeof("ISO_8859-16:2001")]; - char stringpool_str148[sizeof("ISO8859-5")]; - char stringpool_str150[sizeof("ISO-8859-4")]; - char stringpool_str151[sizeof("ISO_8859-4")]; - char stringpool_str152[sizeof("ISO8859-14")]; - char stringpool_str154[sizeof("ISO-8859-5")]; - char stringpool_str155[sizeof("ISO_8859-5")]; - char stringpool_str156[sizeof("ISO8859-15")]; - char stringpool_str158[sizeof("ISO-8859-14")]; - char stringpool_str159[sizeof("ISO_8859-14")]; - char stringpool_str160[sizeof("ISO8859-8")]; - char stringpool_str161[sizeof("ISO-IR-101")]; - char stringpool_str162[sizeof("ISO-8859-15")]; - char stringpool_str163[sizeof("ISO_8859-15")]; - char stringpool_str164[sizeof("ISO8859-9")]; - char stringpool_str166[sizeof("ISO-8859-8")]; - char stringpool_str167[sizeof("ISO_8859-8")]; - char stringpool_str170[sizeof("ISO-8859-9")]; - char stringpool_str171[sizeof("ISO_8859-9")]; - char stringpool_str172[sizeof("ISO_8859-14:1998")]; - char stringpool_str173[sizeof("CP1361")]; - char stringpool_str174[sizeof("ISO_8859-15:1998")]; - char stringpool_str175[sizeof("CP1131")]; - char stringpool_str176[sizeof("RK1048")]; - char stringpool_str178[sizeof("EUCCN")]; - char stringpool_str179[sizeof("MAC")]; - char stringpool_str180[sizeof("ISO8859-2")]; - char stringpool_str181[sizeof("CP936")]; - char stringpool_str183[sizeof("CSISO14JISC6220RO")]; - char stringpool_str184[sizeof("EUC-CN")]; - char stringpool_str186[sizeof("ISO-8859-2")]; - char stringpool_str187[sizeof("ISO_8859-2")]; - char stringpool_str188[sizeof("PT154")]; - char stringpool_str189[sizeof("KSC_5601")]; - char stringpool_str192[sizeof("EUCKR")]; - char stringpool_str197[sizeof("ISO-IR-109")]; - char stringpool_str198[sizeof("EUC-KR")]; - char stringpool_str199[sizeof("ASCII")]; - char stringpool_str201[sizeof("GBK")]; - char stringpool_str204[sizeof("IBM866")]; - char stringpool_str205[sizeof("MS-CYRL")]; - char stringpool_str206[sizeof("L10")]; - char stringpool_str208[sizeof("KZ-1048")]; - char stringpool_str212[sizeof("CP50221")]; - char stringpool_str216[sizeof("L7")]; - char stringpool_str217[sizeof("CSASCII")]; - char stringpool_str219[sizeof("JP")]; - char stringpool_str220[sizeof("850")]; - char stringpool_str221[sizeof("CSKZ1048")]; - char stringpool_str225[sizeof("US")]; - char stringpool_str226[sizeof("ISO-IR-138")]; - char stringpool_str231[sizeof("KS_C_5601-1989")]; - char stringpool_str237[sizeof("CP932")]; - char stringpool_str238[sizeof("ISO-CELTIC")]; - char stringpool_str243[sizeof("UHC")]; - char stringpool_str244[sizeof("IBM-921")]; - char stringpool_str246[sizeof("IBM819")]; - char stringpool_str249[sizeof("MACCYRILLIC")]; - char stringpool_str250[sizeof("CP850")]; - char stringpool_str251[sizeof("ISO-IR-110")]; - char stringpool_str252[sizeof("CP950")]; - char stringpool_str254[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str256[sizeof("ISO-2022-CN")]; - char stringpool_str259[sizeof("LATIN10")]; - char stringpool_str260[sizeof("IBM862")]; - char stringpool_str262[sizeof("CSISO2022CN")]; - char stringpool_str263[sizeof("UCS-4")]; - char stringpool_str264[sizeof("ISO_8859-10:1992")]; - char stringpool_str265[sizeof("CSISOLATIN6")]; - char stringpool_str266[sizeof("SHIFT-JIS")]; - char stringpool_str267[sizeof("SHIFT_JIS")]; - char stringpool_str268[sizeof("CP1250")]; - char stringpool_str269[sizeof("CSISOLATIN1")]; - char stringpool_str270[sizeof("ISO-2022-KR")]; - char stringpool_str271[sizeof("TIS620")]; - char stringpool_str274[sizeof("CP874")]; - char stringpool_str276[sizeof("CSISO2022KR")]; - char stringpool_str277[sizeof("TIS-620")]; - char stringpool_str279[sizeof("ISO646-US")]; - char stringpool_str280[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str281[sizeof("CSUCS4")]; - char stringpool_str284[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str285[sizeof("CSISOLATIN4")]; - char stringpool_str287[sizeof("ELOT_928")]; - char stringpool_str289[sizeof("CSISOLATIN5")]; - char stringpool_str293[sizeof("CSISO159JISX02121990")]; - char stringpool_str296[sizeof("IBM-1252")]; - char stringpool_str299[sizeof("UCS-2")]; - char stringpool_str305[sizeof("ISO-IR-179")]; - char stringpool_str308[sizeof("TIS620.2529-1")]; - char stringpool_str313[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str316[sizeof("ISO8859-10")]; - char stringpool_str317[sizeof("LATIN3")]; - char stringpool_str319[sizeof("BIG5")]; - char stringpool_str321[sizeof("CSISOLATIN2")]; - char stringpool_str322[sizeof("ISO-8859-10")]; - char stringpool_str323[sizeof("ISO_8859-10")]; - char stringpool_str324[sizeof("MS936")]; - char stringpool_str325[sizeof("BIG-5")]; - char stringpool_str330[sizeof("PTCP154")]; - char stringpool_str331[sizeof("IBM-1131")]; - char stringpool_str334[sizeof("CP1253")]; - char stringpool_str337[sizeof("DECKANJI")]; - char stringpool_str338[sizeof("CSBIG5")]; - char stringpool_str341[sizeof("ISO-IR-100")]; - char stringpool_str342[sizeof("JIS_C6226-1983")]; - char stringpool_str343[sizeof("DEC-KANJI")]; - char stringpool_str344[sizeof("CN-BIG5")]; - char stringpool_str345[sizeof("TCVN5712-1")]; - char stringpool_str348[sizeof("X0212")]; - char stringpool_str355[sizeof("UTF-16")]; - char stringpool_str356[sizeof("MS-ANSI")]; - char stringpool_str358[sizeof("KOREAN")]; - char stringpool_str361[sizeof("CN-GB-ISOIR165")]; - char stringpool_str362[sizeof("CSIBM866")]; - char stringpool_str363[sizeof("TCVN-5712")]; - char stringpool_str364[sizeof("STRK1048-2002")]; - char stringpool_str371[sizeof("CSPTCP154")]; - char stringpool_str373[sizeof("JIS0208")]; - char stringpool_str374[sizeof("ISO8859-3")]; - char stringpool_str375[sizeof("TIS620-0")]; - char stringpool_str378[sizeof("GB2312")]; - char stringpool_str380[sizeof("ISO-8859-3")]; - char stringpool_str381[sizeof("ISO_8859-3")]; - char stringpool_str382[sizeof("ISO8859-13")]; - char stringpool_str383[sizeof("UTF-8")]; - char stringpool_str384[sizeof("ROMAN8")]; - char stringpool_str386[sizeof("X0201")]; - char stringpool_str388[sizeof("ISO-8859-13")]; - char stringpool_str389[sizeof("ISO_8859-13")]; - char stringpool_str390[sizeof("ISO_8859-4:1988")]; - char stringpool_str391[sizeof("CSSHIFTJIS")]; - char stringpool_str392[sizeof("ISO_8859-5:1988")]; - char stringpool_str393[sizeof("IBM-932")]; - char stringpool_str397[sizeof("ISO646-JP")]; - char stringpool_str398[sizeof("ISO_8859-8:1988")]; - char stringpool_str399[sizeof("ISO-10646-UCS-4")]; - char stringpool_str400[sizeof("IBM850")]; - char stringpool_str402[sizeof("ISO_8859-9:1989")]; - char stringpool_str406[sizeof("IBM-850")]; - char stringpool_str407[sizeof("ARMSCII-8")]; - char stringpool_str411[sizeof("KS_C_5601-1987")]; - char stringpool_str417[sizeof("ISO-10646-UCS-2")]; - char stringpool_str418[sizeof("X0208")]; - char stringpool_str421[sizeof("CP1133")]; - char stringpool_str423[sizeof("CSEUCKR")]; - char stringpool_str426[sizeof("CSISOLATINGREEK")]; - char stringpool_str430[sizeof("US-ASCII")]; - char stringpool_str432[sizeof("UNICODE-1-1")]; - char stringpool_str433[sizeof("ISO-IR-203")]; - char stringpool_str434[sizeof("CSKSC56011987")]; - char stringpool_str436[sizeof("CSISOLATINARABIC")]; - char stringpool_str440[sizeof("JAVA")]; - char stringpool_str441[sizeof("CSUNICODE11")]; - char stringpool_str442[sizeof("CHINESE")]; - char stringpool_str447[sizeof("CN-GB")]; - char stringpool_str452[sizeof("GB_1988-80")]; - char stringpool_str453[sizeof("UCS-4-INTERNAL")]; - char stringpool_str454[sizeof("ISO-2022-JP-MS")]; - char stringpool_str455[sizeof("ISO-2022-JP-1")]; - char stringpool_str463[sizeof("MACINTOSH")]; - char stringpool_str467[sizeof("LATIN7")]; - char stringpool_str469[sizeof("ISO-IR-57")]; - char stringpool_str471[sizeof("UCS-2-INTERNAL")]; - char stringpool_str472[sizeof("MS_KANJI")]; - char stringpool_str473[sizeof("GREEK")]; - char stringpool_str475[sizeof("ISO-IR-87")]; - char stringpool_str477[sizeof("ISO-IR-157")]; - char stringpool_str479[sizeof("MS-TURK")]; - char stringpool_str481[sizeof("ISO-2022-JP-2")]; - char stringpool_str482[sizeof("BIG5HKSCS")]; - char stringpool_str484[sizeof("CP1257")]; - char stringpool_str486[sizeof("CSISO2022JP2")]; - char stringpool_str488[sizeof("BIG5-HKSCS")]; - char stringpool_str489[sizeof("GREEK8")]; - char stringpool_str490[sizeof("WINDOWS-1256")]; - char stringpool_str492[sizeof("WINDOWS-1251")]; - char stringpool_str493[sizeof("ISO-IR-127")]; - char stringpool_str495[sizeof("MACTHAI")]; - char stringpool_str497[sizeof("EUCJP")]; - char stringpool_str500[sizeof("WINDOWS-1254")]; - char stringpool_str502[sizeof("WINDOWS-1255")]; - char stringpool_str503[sizeof("EUC-JP")]; - char stringpool_str505[sizeof("ISO_8859-3:1988")]; - char stringpool_str506[sizeof("MULELAO-1")]; - char stringpool_str507[sizeof("KOI8-U")]; - char stringpool_str508[sizeof("WINDOWS-1258")]; - char stringpool_str509[sizeof("ARABIC")]; - char stringpool_str510[sizeof("TIS620.2533-1")]; - char stringpool_str511[sizeof("ECMA-114")]; - char stringpool_str513[sizeof("KOI8-RU")]; - char stringpool_str515[sizeof("CSISOLATIN3")]; - char stringpool_str516[sizeof("HP-ROMAN8")]; - char stringpool_str518[sizeof("WINDOWS-1252")]; - char stringpool_str519[sizeof("MACROMAN")]; - char stringpool_str524[sizeof("ISO8859-7")]; - char stringpool_str527[sizeof("ECMA-118")]; - char stringpool_str529[sizeof("UCS-4LE")]; - char stringpool_str530[sizeof("ISO-8859-7")]; - char stringpool_str531[sizeof("ISO_8859-7")]; - char stringpool_str534[sizeof("UTF-32")]; - char stringpool_str536[sizeof("CSGB2312")]; - char stringpool_str537[sizeof("MACICELAND")]; - char stringpool_str547[sizeof("UCS-2LE")]; - char stringpool_str548[sizeof("JIS_X0212")]; - char stringpool_str553[sizeof("CSUNICODE")]; - char stringpool_str557[sizeof("EUCTW")]; - char stringpool_str561[sizeof("CP367")]; - char stringpool_str562[sizeof("ISO_8859-6:1987")]; - char stringpool_str563[sizeof("EUC-TW")]; - char stringpool_str564[sizeof("ISO_8859-1:1987")]; - char stringpool_str565[sizeof("IBM-EUCCN")]; - char stringpool_str567[sizeof("CSISOLATINHEBREW")]; - char stringpool_str569[sizeof("MS-EE")]; - char stringpool_str574[sizeof("MS-HEBR")]; - char stringpool_str575[sizeof("ISO-2022-JP")]; - char stringpool_str577[sizeof("GB_2312-80")]; - char stringpool_str578[sizeof("MACCROATIAN")]; - char stringpool_str579[sizeof("IBM-EUCKR")]; - char stringpool_str581[sizeof("CSISO2022JP")]; - char stringpool_str582[sizeof("WINDOWS-1250")]; - char stringpool_str586[sizeof("JIS_X0201")]; - char stringpool_str590[sizeof("ISO_8859-2:1987")]; - char stringpool_str592[sizeof("WINDOWS-936")]; - char stringpool_str594[sizeof("GB18030")]; - char stringpool_str599[sizeof("CSISO57GB1988")]; - char stringpool_str600[sizeof("TIS620.2533-0")]; - char stringpool_str607[sizeof("ANSI_X3.4-1986")]; - char stringpool_str609[sizeof("UNICODELITTLE")]; - char stringpool_str615[sizeof("WINDOWS-1253")]; - char stringpool_str617[sizeof("GEORGIAN-PS")]; - char stringpool_str618[sizeof("JIS_X0208")]; - char stringpool_str619[sizeof("JISX0201-1976")]; - char stringpool_str624[sizeof("CSISO58GB231280")]; - char stringpool_str625[sizeof("ANSI_X3.4-1968")]; - char stringpool_str627[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str629[sizeof("JIS_X0212-1990")]; - char stringpool_str630[sizeof("CSISO87JISX0208")]; - char stringpool_str631[sizeof("UTF-16LE")]; - char stringpool_str636[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str638[sizeof("JIS_X0212.1990-0")]; - char stringpool_str640[sizeof("MS-GREEK")]; - char stringpool_str641[sizeof("CSMACINTOSH")]; - char stringpool_str643[sizeof("CSUNICODE11UTF7")]; - char stringpool_str646[sizeof("MACGREEK")]; - char stringpool_str652[sizeof("CSHPROMAN8")]; - char stringpool_str655[sizeof("HZ-GB-2312")]; - char stringpool_str664[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str665[sizeof("UCS-4BE")]; - char stringpool_str666[sizeof("JOHAB")]; - char stringpool_str682[sizeof("MACARABIC")]; - char stringpool_str683[sizeof("UCS-2BE")]; - char stringpool_str685[sizeof("WINDOWS-874")]; - char stringpool_str686[sizeof("ASMO-708")]; - char stringpool_str687[sizeof("ISO_8859-7:2003")]; - char stringpool_str690[sizeof("WINDOWS-1257")]; - char stringpool_str691[sizeof("BIGFIVE")]; - char stringpool_str697[sizeof("BIG-FIVE")]; - char stringpool_str699[sizeof("TCVN5712-1:1993")]; - char stringpool_str704[sizeof("MACTURKISH")]; - char stringpool_str707[sizeof("NEXTSTEP")]; - char stringpool_str709[sizeof("JIS_X0208-1990")]; - char stringpool_str711[sizeof("IBM367")]; - char stringpool_str719[sizeof("IBM-CP1133")]; - char stringpool_str721[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str725[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str729[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str737[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str739[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str742[sizeof("JIS_X0208-1983")]; - char stringpool_str747[sizeof("UTF-7")]; - char stringpool_str762[sizeof("ISO_8859-7:1987")]; - char stringpool_str765[sizeof("DECHANYU")]; - char stringpool_str767[sizeof("UTF-16BE")]; - char stringpool_str771[sizeof("DEC-HANYU")]; - char stringpool_str782[sizeof("UTF-32LE")]; - char stringpool_str787[sizeof("HEBREW")]; - char stringpool_str788[sizeof("CSEUCTW")]; - char stringpool_str791[sizeof("MS-ARAB")]; - char stringpool_str812[sizeof("MACCENTRALEUROPE")]; - char stringpool_str823[sizeof("UNICODEBIG")]; - char stringpool_str849[sizeof("MACROMANIA")]; - char stringpool_str873[sizeof("WINBALTRIM")]; - char stringpool_str878[sizeof("MACUKRAINE")]; - char stringpool_str881[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str884[sizeof("IBM-EUCJP")]; - char stringpool_str892[sizeof("UCS-4-SWAPPED")]; - char stringpool_str910[sizeof("UCS-2-SWAPPED")]; - char stringpool_str918[sizeof("UTF-32BE")]; - char stringpool_str924[sizeof("GB18030:2022")]; - char stringpool_str944[sizeof("IBM-EUCTW")]; - char stringpool_str951[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str972[sizeof("GB18030:2005")]; - char stringpool_str994[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str1090[sizeof("MACHEBREW")]; - }; -static const struct stringpool_t stringpool_contents = - { - "L6", - "L1", - "CN", - "SJIS", - "L4", - "L5", - "R8", - "L8", - "866", - "L2", - "ISO-IR-6", - "CP866", - "VISCII", - "C99", - "ISO-IR-166", - "TCVN", - "LATIN6", - "CP154", - "LATIN1", - "CYRILLIC", - "CSVISCII", - "ISO646-CN", - "ISO-IR-14", - "KOI8-R", - "CP1256", - "LATIN4", - "CP1251", - "ISO-IR-165", - "LATIN5", - "862", - "ISO-IR-126", - "CSKOI8R", - "ISO-IR-144", - "CP819", - "VISCII1.1-1", - "LATIN8", - "CP1254", - "ISO-IR-58", - "CP949", - "ISO_646.IRV:1991", - "CP1255", - "CP862", - "ISO-IR-148", - "LATIN-9", - "ISO-IR-149", - "ISO-IR-159", - "ISO-IR-226", - "CP1258", - "LATIN2", - "ISO8859-6", - "ISO-IR-199", - "HZ", - "KOI8-T", - "ISO8859-1", - "ISO-8859-6", - "ISO_8859-6", - "ISO8859-16", - "ISO-8859-1", - "ISO_8859-1", - "ISO8859-11", - "ISO-8859-16", - "ISO_8859-16", - "CP1252", - "L3", - "ISO-8859-11", - "ISO_8859-11", - "ISO8859-4", - "ISO_8859-16:2001", - "ISO8859-5", - "ISO-8859-4", - "ISO_8859-4", - "ISO8859-14", - "ISO-8859-5", - "ISO_8859-5", - "ISO8859-15", - "ISO-8859-14", - "ISO_8859-14", - "ISO8859-8", - "ISO-IR-101", - "ISO-8859-15", - "ISO_8859-15", - "ISO8859-9", - "ISO-8859-8", - "ISO_8859-8", - "ISO-8859-9", - "ISO_8859-9", - "ISO_8859-14:1998", - "CP1361", - "ISO_8859-15:1998", - "CP1131", - "RK1048", - "EUCCN", - "MAC", - "ISO8859-2", - "CP936", - "CSISO14JISC6220RO", - "EUC-CN", - "ISO-8859-2", - "ISO_8859-2", - "PT154", - "KSC_5601", - "EUCKR", - "ISO-IR-109", - "EUC-KR", - "ASCII", - "GBK", - "IBM866", - "MS-CYRL", - "L10", - "KZ-1048", - "CP50221", - "L7", - "CSASCII", - "JP", - "850", - "CSKZ1048", - "US", - "ISO-IR-138", - "KS_C_5601-1989", - "CP932", - "ISO-CELTIC", - "UHC", - "IBM-921", - "IBM819", - "MACCYRILLIC", - "CP850", - "ISO-IR-110", - "CP950", - "CYRILLIC-ASIAN", - "ISO-2022-CN", - "LATIN10", - "IBM862", - "CSISO2022CN", - "UCS-4", - "ISO_8859-10:1992", - "CSISOLATIN6", - "SHIFT-JIS", - "SHIFT_JIS", - "CP1250", - "CSISOLATIN1", - "ISO-2022-KR", - "TIS620", - "CP874", - "CSISO2022KR", - "TIS-620", - "ISO646-US", - "ISO-2022-CN-EXT", - "CSUCS4", - "CSISOLATINCYRILLIC", - "CSISOLATIN4", - "ELOT_928", - "CSISOLATIN5", - "CSISO159JISX02121990", - "IBM-1252", - "UCS-2", - "ISO-IR-179", - "TIS620.2529-1", - "JIS_C6220-1969-RO", - "ISO8859-10", - "LATIN3", - "BIG5", - "CSISOLATIN2", - "ISO-8859-10", - "ISO_8859-10", - "MS936", - "BIG-5", - "PTCP154", - "IBM-1131", - "CP1253", - "DECKANJI", - "CSBIG5", - "ISO-IR-100", - "JIS_C6226-1983", - "DEC-KANJI", - "CN-BIG5", - "TCVN5712-1", - "X0212", - "UTF-16", - "MS-ANSI", - "KOREAN", - "CN-GB-ISOIR165", - "CSIBM866", - "TCVN-5712", - "STRK1048-2002", - "CSPTCP154", - "JIS0208", - "ISO8859-3", - "TIS620-0", - "GB2312", - "ISO-8859-3", - "ISO_8859-3", - "ISO8859-13", - "UTF-8", - "ROMAN8", - "X0201", - "ISO-8859-13", - "ISO_8859-13", - "ISO_8859-4:1988", - "CSSHIFTJIS", - "ISO_8859-5:1988", - "IBM-932", - "ISO646-JP", - "ISO_8859-8:1988", - "ISO-10646-UCS-4", - "IBM850", - "ISO_8859-9:1989", - "IBM-850", - "ARMSCII-8", - "KS_C_5601-1987", - "ISO-10646-UCS-2", - "X0208", - "CP1133", - "CSEUCKR", - "CSISOLATINGREEK", - "US-ASCII", - "UNICODE-1-1", - "ISO-IR-203", - "CSKSC56011987", - "CSISOLATINARABIC", - "JAVA", - "CSUNICODE11", - "CHINESE", - "CN-GB", - "GB_1988-80", - "UCS-4-INTERNAL", - "ISO-2022-JP-MS", - "ISO-2022-JP-1", - "MACINTOSH", - "LATIN7", - "ISO-IR-57", - "UCS-2-INTERNAL", - "MS_KANJI", - "GREEK", - "ISO-IR-87", - "ISO-IR-157", - "MS-TURK", - "ISO-2022-JP-2", - "BIG5HKSCS", - "CP1257", - "CSISO2022JP2", - "BIG5-HKSCS", - "GREEK8", - "WINDOWS-1256", - "WINDOWS-1251", - "ISO-IR-127", - "MACTHAI", - "EUCJP", - "WINDOWS-1254", - "WINDOWS-1255", - "EUC-JP", - "ISO_8859-3:1988", - "MULELAO-1", - "KOI8-U", - "WINDOWS-1258", - "ARABIC", - "TIS620.2533-1", - "ECMA-114", - "KOI8-RU", - "CSISOLATIN3", - "HP-ROMAN8", - "WINDOWS-1252", - "MACROMAN", - "ISO8859-7", - "ECMA-118", - "UCS-4LE", - "ISO-8859-7", - "ISO_8859-7", - "UTF-32", - "CSGB2312", - "MACICELAND", - "UCS-2LE", - "JIS_X0212", - "CSUNICODE", - "EUCTW", - "CP367", - "ISO_8859-6:1987", - "EUC-TW", - "ISO_8859-1:1987", - "IBM-EUCCN", - "CSISOLATINHEBREW", - "MS-EE", - "MS-HEBR", - "ISO-2022-JP", - "GB_2312-80", - "MACCROATIAN", - "IBM-EUCKR", - "CSISO2022JP", - "WINDOWS-1250", - "JIS_X0201", - "ISO_8859-2:1987", - "WINDOWS-936", - "GB18030", - "CSISO57GB1988", - "TIS620.2533-0", - "ANSI_X3.4-1986", - "UNICODELITTLE", - "WINDOWS-1253", - "GEORGIAN-PS", - "JIS_X0208", - "JISX0201-1976", - "CSISO58GB231280", - "ANSI_X3.4-1968", - "CSPC862LATINHEBREW", - "JIS_X0212-1990", - "CSISO87JISX0208", - "UTF-16LE", - "UNICODE-1-1-UTF-7", - "JIS_X0212.1990-0", - "MS-GREEK", - "CSMACINTOSH", - "CSUNICODE11UTF7", - "MACGREEK", - "CSHPROMAN8", - "HZ-GB-2312", - "GEORGIAN-ACADEMY", - "UCS-4BE", - "JOHAB", - "MACARABIC", - "UCS-2BE", - "WINDOWS-874", - "ASMO-708", - "ISO_8859-7:2003", - "WINDOWS-1257", - "BIGFIVE", - "BIG-FIVE", - "TCVN5712-1:1993", - "MACTURKISH", - "NEXTSTEP", - "JIS_X0208-1990", - "IBM367", - "IBM-CP1133", - "BIG5-HKSCS:2001", - "CSPC850MULTILINGUAL", - "BIG5-HKSCS:2004", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:1999", - "JIS_X0208-1983", - "UTF-7", - "ISO_8859-7:1987", - "DECHANYU", - "UTF-16BE", - "DEC-HANYU", - "UTF-32LE", - "HEBREW", - "CSEUCTW", - "MS-ARAB", - "MACCENTRALEUROPE", - "UNICODEBIG", - "MACROMANIA", - "WINBALTRIM", - "MACUKRAINE", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "IBM-EUCJP", - "UCS-4-SWAPPED", - "UCS-2-SWAPPED", - "UTF-32BE", - "GB18030:2022", - "IBM-EUCTW", - "CSHALFWIDTHKATAKANA", - "GB18030:2005", - "CSEUCPKDFMTJAPANESE", - "MACHEBREW" - }; -#define stringpool ((const char *) &stringpool_contents) - -static const struct alias aliases[] = - { - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 134 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str16, ei_iso8859_10}, - {-1}, -#line 60 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str18, ei_iso8859_1}, - {-1}, {-1}, -#line 292 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_iso646_cn}, - {-1}, {-1}, {-1}, -#line 312 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str25, ei_sjis}, -#line 84 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, ei_iso8859_4}, - {-1}, -#line 126 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_iso8859_9}, - {-1}, -#line 231 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str30, ei_hp_roman8}, - {-1}, {-1}, {-1}, -#line 152 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str34, ei_iso8859_14}, - {-1}, -#line 210 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_cp866}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 68 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 16 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_ascii}, - {-1}, {-1}, -#line 208 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_cp866}, - {-1}, {-1}, {-1}, -#line 259 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_viscii}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 51 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_c99}, -#line 256 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_tis620}, -#line 262 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_tcvn}, -#line 133 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_iso8859_10}, - {-1}, {-1}, -#line 240 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_pt154}, -#line 59 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, -#line 91 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_iso8859_5}, -#line 261 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_viscii}, -#line 290 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_iso646_cn}, -#line 268 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_iso646_jp}, - {-1}, -#line 168 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str81, ei_koi8_r}, - {-1}, {-1}, -#line 191 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str84, ei_cp1256}, - {-1}, {-1}, -#line 83 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str87, ei_iso8859_4}, -#line 175 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, ei_cp1251}, -#line 297 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, ei_isoir165}, - {-1}, -#line 125 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str91, ei_iso8859_9}, -#line 206 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_cp862}, -#line 107 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_iso8859_7}, -#line 169 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str94, ei_koi8_r}, -#line 90 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_iso8859_5}, -#line 57 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 260 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_viscii}, -#line 151 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_iso8859_14}, -#line 185 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, ei_cp1254}, -#line 295 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_gb2312}, -#line 364 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_cp949}, -#line 15 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, ei_ascii}, -#line 188 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_cp1255}, - {-1}, -#line 204 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str110, ei_cp862}, -#line 124 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str111, ei_iso8859_9}, - {-1}, -#line 159 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_iso8859_15}, - {-1}, -#line 302 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str115, ei_ksc5601}, - {-1}, -#line 287 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str117, ei_jisx0212}, - {-1}, -#line 164 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str119, ei_iso8859_16}, -#line 197 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_cp1258}, - {-1}, {-1}, -#line 67 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str123, ei_iso8859_2}, -#line 102 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_iso8859_6}, -#line 150 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso8859_14}, -#line 341 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_hz}, -#line 237 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, ei_koi8_t}, -#line 62 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str128, ei_iso8859_1}, - {-1}, -#line 94 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_iso8859_6}, -#line 95 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_iso8859_6}, -#line 167 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_iso8859_16}, - {-1}, -#line 53 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str134, ei_iso8859_1}, -#line 54 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str135, ei_iso8859_1}, -#line 139 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, ei_iso8859_11}, - {-1}, -#line 161 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, ei_iso8859_16}, -#line 162 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_iso8859_16}, -#line 178 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, ei_cp1252}, -#line 76 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, ei_iso8859_3}, -#line 137 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str142, ei_iso8859_11}, -#line 138 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_iso8859_11}, -#line 86 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, ei_iso8859_4}, - {-1}, -#line 163 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str146, ei_iso8859_16}, - {-1}, -#line 93 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str148, ei_iso8859_5}, - {-1}, -#line 79 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_iso8859_4}, -#line 80 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_4}, -#line 154 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_iso8859_14}, - {-1}, -#line 87 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_iso8859_5}, -#line 88 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_iso8859_5}, -#line 160 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_iso8859_15}, - {-1}, -#line 147 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_14}, -#line 148 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_iso8859_14}, -#line 120 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_iso8859_8}, -#line 66 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_iso8859_2}, -#line 155 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_15}, -#line 156 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_15}, -#line 128 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_iso8859_9}, - {-1}, -#line 114 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_iso8859_8}, -#line 115 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_8}, - {-1}, {-1}, -#line 121 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_iso8859_9}, -#line 122 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, ei_iso8859_9}, -#line 149 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_iso8859_14}, -#line 367 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_johab}, -#line 157 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, ei_iso8859_15}, -#line 212 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str175, ei_cp1131}, -#line 243 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, ei_rk1048}, - {-1}, -#line 325 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str178, ei_euc_cn}, -#line 216 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_mac_roman}, -#line 70 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_iso8859_2}, -#line 332 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_cp936}, - {-1}, -#line 270 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_iso646_jp}, -#line 324 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_euc_cn}, - {-1}, -#line 63 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str186, ei_iso8859_2}, -#line 64 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str187, ei_iso8859_2}, -#line 238 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_pt154}, -#line 299 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_ksc5601}, - {-1}, {-1}, -#line 361 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, -#line 74 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_iso8859_3}, -#line 360 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_euc_kr}, -#line 13 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_ascii}, - {-1}, -#line 331 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ces_gbk}, - {-1}, {-1}, -#line 209 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_cp866}, -#line 177 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str205, ei_cp1251}, -#line 166 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, ei_iso8859_16}, - {-1}, -#line 245 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_rk1048}, - {-1}, {-1}, {-1}, -#line 323 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_iso2022_jpms}, - {-1}, {-1}, {-1}, -#line 144 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_iso8859_13}, -#line 22 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_ascii}, - {-1}, -#line 269 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_iso646_jp}, -#line 201 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_cp850}, -#line 246 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_rk1048}, - {-1}, {-1}, {-1}, -#line 21 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_ascii}, -#line 117 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, -#line 301 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 315 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_cp932}, -#line 153 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_iso8859_14}, - {-1}, {-1}, {-1}, {-1}, -#line 365 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_cp949}, -#line 146 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_iso8859_13}, - {-1}, -#line 58 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_iso8859_1}, - {-1}, {-1}, -#line 222 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_mac_cyrillic}, -#line 199 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_cp850}, -#line 82 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_iso8859_4}, -#line 353 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str252, ei_cp950}, - {-1}, -#line 241 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_pt154}, - {-1}, -#line 338 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_iso2022_cn}, - {-1}, {-1}, -#line 165 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_iso8859_16}, -#line 205 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_cp862}, - {-1}, -#line 339 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_iso2022_cn}, -#line 33 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ucs4}, -#line 131 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_iso8859_10}, -#line 135 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_10}, -#line 311 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_sjis}, -#line 310 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_sjis}, -#line 172 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_cp1250}, -#line 61 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_iso8859_1}, -#line 368 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_iso2022_kr}, -#line 251 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_tis620}, - {-1}, {-1}, -#line 257 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_cp874}, - {-1}, -#line 369 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_iso2022_kr}, -#line 250 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_tis620}, - {-1}, -#line 14 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ascii}, -#line 340 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso2022_cn_ext}, -#line 35 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_ucs4}, - {-1}, {-1}, -#line 92 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_iso8859_5}, -#line 85 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_iso8859_4}, - {-1}, -#line 109 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_iso8859_7}, - {-1}, -#line 127 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_iso8859_9}, - {-1}, {-1}, {-1}, -#line 288 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_jisx0212}, - {-1}, {-1}, -#line 181 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_cp1252}, - {-1}, {-1}, -#line 24 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_ucs2}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 142 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_iso8859_13}, - {-1}, {-1}, -#line 253 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, -#line 266 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_iso646_jp}, - {-1}, {-1}, -#line 136 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_iso8859_10}, -#line 75 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_iso8859_3}, - {-1}, -#line 347 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ces_big5}, - {-1}, -#line 69 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_iso8859_2}, -#line 129 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_iso8859_10}, -#line 130 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_iso8859_10}, -#line 333 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp936}, -#line 348 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, -#line 239 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str330, ei_pt154}, -#line 213 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_cp1131}, - {-1}, {-1}, -#line 182 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_cp1253}, - {-1}, {-1}, -#line 371 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_dec_kanji}, -#line 352 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_ces_big5}, - {-1}, {-1}, -#line 56 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_iso8859_1}, -#line 281 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_jisx0208}, -#line 370 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_dec_kanji}, -#line 351 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_ces_big5}, -#line 264 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_tcvn}, - {-1}, {-1}, -#line 286 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 38 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_utf16}, -#line 180 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_cp1252}, - {-1}, -#line 304 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_ksc5601}, - {-1}, {-1}, -#line 298 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_isoir165}, -#line 211 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_cp866}, -#line 263 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_tcvn}, -#line 244 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_rk1048}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 242 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str371, ei_pt154}, - {-1}, -#line 278 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_jisx0208}, -#line 78 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_iso8859_3}, -#line 252 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_tis620}, - {-1}, {-1}, -#line 326 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_euc_cn}, - {-1}, -#line 71 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str380, ei_iso8859_3}, -#line 72 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_iso8859_3}, -#line 145 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str382, ei_iso8859_13}, -#line 23 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_utf8}, -#line 230 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_hp_roman8}, - {-1}, -#line 273 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_jisx0201}, - {-1}, -#line 140 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_iso8859_13}, -#line 141 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_iso8859_13}, -#line 81 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_iso8859_4}, -#line 314 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_sjis}, -#line 89 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_iso8859_5}, -#line 316 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_cp932}, - {-1}, {-1}, {-1}, -#line 267 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_iso646_jp}, -#line 116 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_iso8859_8}, -#line 34 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_ucs4}, -#line 200 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str400, ei_cp850}, - {-1}, -#line 123 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_iso8859_9}, - {-1}, {-1}, {-1}, -#line 203 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_cp850}, -#line 234 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_armscii_8}, - {-1}, {-1}, {-1}, -#line 300 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 25 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_ucs2}, -#line 279 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_jisx0208}, - {-1}, {-1}, -#line 248 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_cp1133}, - {-1}, -#line 362 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_euc_kr}, - {-1}, {-1}, -#line 112 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_iso8859_7}, - {-1}, {-1}, {-1}, -#line 12 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_ascii}, - {-1}, -#line 29 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_ucs2be}, -#line 158 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_iso8859_15}, -#line 303 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_ksc5601}, - {-1}, -#line 101 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str436, ei_iso8859_6}, - {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_java}, -#line 30 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_ucs2be}, -#line 329 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, -#line 327 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, -#line 289 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_iso646_cn}, -#line 49 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_ucs4internal}, -#line 322 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str454, ei_iso2022_jpms}, -#line 319 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_iso2022_jp1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 215 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_mac_roman}, - {-1}, {-1}, {-1}, -#line 143 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_iso8859_13}, - {-1}, -#line 291 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_iso646_cn}, - {-1}, -#line 47 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_ucs2internal}, -#line 313 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_sjis}, -#line 111 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_iso8859_7}, - {-1}, -#line 280 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_jisx0208}, - {-1}, -#line 132 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_iso8859_10}, - {-1}, -#line 187 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_cp1254}, - {-1}, -#line 320 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_iso2022_jp2}, -#line 358 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_big5hkscs2008}, - {-1}, -#line 194 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_cp1257}, - {-1}, -#line 321 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_iso2022_jp2}, - {-1}, -#line 357 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_big5hkscs2008}, -#line 110 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_iso8859_7}, -#line 192 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_cp1256}, - {-1}, -#line 176 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_cp1251}, -#line 97 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_iso8859_6}, - {-1}, -#line 228 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_mac_thai}, - {-1}, -#line 306 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_euc_jp}, - {-1}, {-1}, -#line 186 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_cp1254}, - {-1}, -#line 189 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_cp1255}, -#line 305 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_euc_jp}, - {-1}, -#line 73 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_iso8859_3}, -#line 247 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_mulelao}, -#line 170 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_koi8_u}, -#line 198 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_cp1258}, -#line 100 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_iso8859_6}, -#line 255 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_tis620}, -#line 98 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_iso8859_6}, - {-1}, -#line 171 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_koi8_ru}, - {-1}, -#line 77 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_iso8859_3}, -#line 229 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str516, ei_hp_roman8}, - {-1}, -#line 179 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_cp1252}, -#line 214 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_mac_roman}, - {-1}, {-1}, {-1}, {-1}, -#line 113 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str524, ei_iso8859_7}, - {-1}, {-1}, -#line 108 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_iso8859_7}, - {-1}, -#line 37 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_ucs4le}, -#line 103 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_iso8859_7}, -#line 104 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_iso8859_7}, - {-1}, {-1}, -#line 41 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_utf32}, - {-1}, -#line 328 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_euc_cn}, -#line 219 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_mac_iceland}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 31 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_ucs2le}, -#line 283 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, -#line 26 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_ucs2}, - {-1}, {-1}, {-1}, -#line 344 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_euc_tw}, - {-1}, {-1}, {-1}, -#line 19 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_ascii}, -#line 96 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_iso8859_6}, -#line 343 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_euc_tw}, -#line 55 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_iso8859_1}, -#line 330 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_euc_cn}, - {-1}, -#line 119 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_iso8859_8}, - {-1}, -#line 174 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_cp1250}, - {-1}, {-1}, {-1}, {-1}, -#line 190 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str574, ei_cp1255}, -#line 317 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_iso2022_jp}, - {-1}, -#line 294 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_gb2312}, -#line 220 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str578, ei_mac_croatian}, -#line 363 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str579, ei_euc_kr}, - {-1}, -#line 318 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str581, ei_iso2022_jp}, -#line 173 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_cp1250}, - {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str586, ei_jisx0201}, - {-1}, {-1}, {-1}, -#line 65 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_iso8859_2}, - {-1}, -#line 334 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_cp936}, - {-1}, -#line 335 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_gb18030_2005}, - {-1}, {-1}, {-1}, {-1}, -#line 293 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_iso646_cn}, -#line 254 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 18 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_ascii}, - {-1}, -#line 32 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str609, ei_ucs2le}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 183 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_cp1253}, - {-1}, -#line 236 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_georgian_ps}, -#line 275 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_jisx0208}, -#line 272 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str619, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, -#line 296 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_gb2312}, -#line 17 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_ascii}, - {-1}, -#line 207 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_cp862}, - {-1}, -#line 285 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_jisx0212}, -#line 282 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_jisx0208}, -#line 40 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_utf16le}, - {-1}, {-1}, {-1}, {-1}, -#line 45 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_utf7}, - {-1}, -#line 284 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_jisx0212}, - {-1}, -#line 184 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_cp1253}, -#line 217 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_mac_roman}, - {-1}, -#line 46 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_utf7}, - {-1}, {-1}, -#line 224 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_mac_greek}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 232 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str652, ei_hp_roman8}, - {-1}, {-1}, -#line 342 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_hz}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 235 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_georgian_academy}, -#line 36 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str665, ei_ucs4be}, -#line 366 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_johab}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 227 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_mac_arabic}, -#line 27 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_ucs2be}, - {-1}, -#line 258 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_cp874}, -#line 99 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_iso8859_6}, -#line 106 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_iso8859_7}, - {-1}, {-1}, -#line 195 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str690, ei_cp1257}, -#line 350 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 349 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_ces_big5}, - {-1}, -#line 265 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, -#line 225 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_mac_turkish}, - {-1}, {-1}, -#line 233 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str707, ei_nextstep}, - {-1}, -#line 277 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_jisx0208}, - {-1}, -#line 20 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 249 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str719, ei_cp1133}, - {-1}, -#line 355 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, -#line 202 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str725, ei_cp850}, - {-1}, {-1}, {-1}, -#line 356 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str729, ei_big5hkscs2004}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 359 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str737, ei_big5hkscs2008}, - {-1}, -#line 354 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_big5hkscs1999}, - {-1}, {-1}, -#line 276 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, -#line 44 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 105 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str762, ei_iso8859_7}, - {-1}, {-1}, -#line 373 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str765, ei_dec_hanyu}, - {-1}, -#line 39 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_utf16be}, - {-1}, {-1}, {-1}, -#line 372 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str771, ei_dec_hanyu}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 43 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_utf32le}, - {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_iso8859_8}, -#line 345 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str788, ei_euc_tw}, - {-1}, {-1}, -#line 193 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str791, ei_cp1256}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 218 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str812, ei_mac_centraleurope}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 28 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 221 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_mac_romania}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 196 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, -#line 223 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str878, ei_mac_ukraine}, - {-1}, {-1}, -#line 307 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str881, ei_euc_jp}, - {-1}, {-1}, -#line 309 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 50 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str892, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 48 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str910, ei_ucs2swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 42 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str918, ei_utf32be}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 337 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str924, ei_gb18030_2022}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 346 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 274 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str951, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 336 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str972, ei_gb18030_2005}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 226 "lib/generated/aliases_sysaix.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_mac_hebrew} - }; - -const struct alias * -HashPool::aliases_lookup (const char *str, size_t len) -{ - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - unsigned int key = aliases_hash (str, len); - - if (key <= MAX_HASH_VALUE) - { - int o = aliases[key].name; - if (o >= 0) - { - const char *s = o + stringpool; - - if (*str == *s && !strcmp (str + 1, s + 1)) - return &aliases[key]; - } - } - } - return 0; -} diff --git a/lib/generated/aliases_syshpux.h b/lib/generated/aliases_syshpux.h deleted file mode 100644 index 27ca8fe2..00000000 --- a/lib/generated/aliases_syshpux.h +++ /dev/null @@ -1,1800 +0,0 @@ -/* C++ code produced by gperf version 3.1 */ -/* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases_syshpux.gperf */ -/* Computed positions: -k'1,3-11,$' */ - -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -/* The character set is not based on ISO-646. */ -#error "gperf generated tables don't work with this execution character set. Please report a bug to ." -#endif - -#line 1 "lib/generated/aliases_syshpux.gperf" -struct alias { int name; unsigned int encoding_index; }; - -#define TOTAL_KEYWORDS 363 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 23 -#define MAX_HASH_VALUE 1164 -/* maximum key range = 1142, duplicates = 0 */ - -class HashPool -{ -private: - static inline unsigned int aliases_hash (const char *str, size_t len); -public: - static const struct alias *aliases_lookup (const char *str, size_t len); -}; - -inline unsigned int -HashPool::aliases_hash (const char *str, size_t len) -{ - static const unsigned short asso_values[] = - { - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 5, 157, 1165, 39, 7, - 37, 146, 20, 18, 5, 90, 29, 33, 142, 1165, - 1165, 1165, 1165, 1165, 1165, 11, 205, 14, 10, 121, - 95, 97, 123, 5, 63, 161, 208, 218, 7, 5, - 176, 1165, 5, 50, 14, 201, 20, 118, 353, 5, - 9, 1165, 1165, 1165, 1165, 6, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165 - }; - unsigned int hval = len; - - switch (hval) - { - default: - hval += asso_values[static_cast(str[10])]; - /*FALLTHROUGH*/ - case 10: - hval += asso_values[static_cast(str[9])]; - /*FALLTHROUGH*/ - case 9: - hval += asso_values[static_cast(str[8])]; - /*FALLTHROUGH*/ - case 8: - hval += asso_values[static_cast(str[7])]; - /*FALLTHROUGH*/ - case 7: - hval += asso_values[static_cast(str[6])]; - /*FALLTHROUGH*/ - case 6: - hval += asso_values[static_cast(str[5])]; - /*FALLTHROUGH*/ - case 5: - hval += asso_values[static_cast(str[4])]; - /*FALLTHROUGH*/ - case 4: - hval += asso_values[static_cast(str[3])]; - /*FALLTHROUGH*/ - case 3: - hval += asso_values[static_cast(str[2])]; - /*FALLTHROUGH*/ - case 2: - case 1: - hval += asso_values[static_cast(str[0])]; - break; - } - return hval + asso_values[static_cast(str[len - 1])]; -} - -struct stringpool_t - { - char stringpool_str23[sizeof("CN")]; - char stringpool_str36[sizeof("R8")]; - char stringpool_str42[sizeof("866")]; - char stringpool_str45[sizeof("ASCII")]; - char stringpool_str48[sizeof("ISO-IR-6")]; - char stringpool_str52[sizeof("TCVN")]; - char stringpool_str62[sizeof("ISO-IR-166")]; - char stringpool_str63[sizeof("CP866")]; - char stringpool_str82[sizeof("ISO646-CN")]; - char stringpool_str83[sizeof("C99")]; - char stringpool_str84[sizeof("CP154")]; - char stringpool_str86[sizeof("ISO-IR-14")]; - char stringpool_str88[sizeof("ISO-IR-165")]; - char stringpool_str92[sizeof("CP1256")]; - char stringpool_str94[sizeof("ISO-IR-126")]; - char stringpool_str96[sizeof("CP1251")]; - char stringpool_str100[sizeof("ISO-IR-101")]; - char stringpool_str105[sizeof("VISCII")]; - char stringpool_str106[sizeof("862")]; - char stringpool_str107[sizeof("ISO-IR-144")]; - char stringpool_str109[sizeof("JAVA")]; - char stringpool_str110[sizeof("850")]; - char stringpool_str111[sizeof("CSASCII")]; - char stringpool_str115[sizeof("ISO-IR-58")]; - char stringpool_str118[sizeof("CP1255")]; - char stringpool_str121[sizeof("CP819")]; - char stringpool_str122[sizeof("CP1254")]; - char stringpool_str124[sizeof("ISO-IR-226")]; - char stringpool_str125[sizeof("ISO-IR-148")]; - char stringpool_str126[sizeof("CSVISCII")]; - char stringpool_str127[sizeof("CP862")]; - char stringpool_str131[sizeof("ISO-IR-159")]; - char stringpool_str132[sizeof("ISO-IR-110")]; - char stringpool_str133[sizeof("ISO-IR-149")]; - char stringpool_str134[sizeof("HZ")]; - char stringpool_str135[sizeof("RK1048")]; - char stringpool_str137[sizeof("ISO88596")]; - char stringpool_str138[sizeof("CP949")]; - char stringpool_str140[sizeof("CP1258")]; - char stringpool_str141[sizeof("ISO88591")]; - char stringpool_str143[sizeof("ISO8859-6")]; - char stringpool_str144[sizeof("CP850")]; - char stringpool_str146[sizeof("ISO-IR-199")]; - char stringpool_str147[sizeof("ISO8859-1")]; - char stringpool_str148[sizeof("CP950")]; - char stringpool_str149[sizeof("ISO-8859-6")]; - char stringpool_str150[sizeof("ISO_8859-6")]; - char stringpool_str151[sizeof("ISO8859-16")]; - char stringpool_str152[sizeof("ISO-IR-109")]; - char stringpool_str153[sizeof("ISO-8859-1")]; - char stringpool_str154[sizeof("ISO_8859-1")]; - char stringpool_str155[sizeof("ISO8859-11")]; - char stringpool_str156[sizeof("CP1252")]; - char stringpool_str157[sizeof("ISO-8859-16")]; - char stringpool_str158[sizeof("ISO_8859-16")]; - char stringpool_str159[sizeof("SJIS")]; - char stringpool_str160[sizeof("CP1250")]; - char stringpool_str161[sizeof("ISO-8859-11")]; - char stringpool_str162[sizeof("ISO_8859-11")]; - char stringpool_str163[sizeof("ISO88595")]; - char stringpool_str164[sizeof("ISO-IR-100")]; - char stringpool_str165[sizeof("ISO_8859-16:2001")]; - char stringpool_str166[sizeof("CP50221")]; - char stringpool_str168[sizeof("EUCCN")]; - char stringpool_str169[sizeof("ISO8859-5")]; - char stringpool_str171[sizeof("ISO885915")]; - char stringpool_str173[sizeof("ISO8859-4")]; - char stringpool_str174[sizeof("EUC-CN")]; - char stringpool_str175[sizeof("ISO-8859-5")]; - char stringpool_str176[sizeof("ISO_8859-5")]; - char stringpool_str177[sizeof("ISO8859-15")]; - char stringpool_str178[sizeof("CP874")]; - char stringpool_str179[sizeof("ISO-8859-4")]; - char stringpool_str180[sizeof("ISO_8859-4")]; - char stringpool_str181[sizeof("ISO8859-14")]; - char stringpool_str182[sizeof("HP15CN")]; - char stringpool_str183[sizeof("ISO-8859-15")]; - char stringpool_str184[sizeof("ISO_8859-15")]; - char stringpool_str185[sizeof("ISO88598")]; - char stringpool_str187[sizeof("ISO-8859-14")]; - char stringpool_str188[sizeof("ISO_8859-14")]; - char stringpool_str190[sizeof("TIS620")]; - char stringpool_str191[sizeof("ISO8859-8")]; - char stringpool_str192[sizeof("CP1361")]; - char stringpool_str193[sizeof("ISO88599")]; - char stringpool_str194[sizeof("CP1131")]; - char stringpool_str196[sizeof("TIS-620")]; - char stringpool_str197[sizeof("ISO-8859-8")]; - char stringpool_str198[sizeof("ISO_8859-8")]; - char stringpool_str199[sizeof("ISO8859-9")]; - char stringpool_str200[sizeof("ISO_8859-15:1998")]; - char stringpool_str201[sizeof("ISO88592")]; - char stringpool_str202[sizeof("ISO_8859-14:1998")]; - char stringpool_str203[sizeof("ISO-IR-179")]; - char stringpool_str205[sizeof("ISO-8859-9")]; - char stringpool_str206[sizeof("ISO_8859-9")]; - char stringpool_str207[sizeof("ISO8859-2")]; - char stringpool_str208[sizeof("CP936")]; - char stringpool_str209[sizeof("ISO-2022-CN")]; - char stringpool_str213[sizeof("ISO-8859-2")]; - char stringpool_str214[sizeof("ISO_8859-2")]; - char stringpool_str215[sizeof("L6")]; - char stringpool_str216[sizeof("KOI8-R")]; - char stringpool_str217[sizeof("L1")]; - char stringpool_str219[sizeof("ISO8859-10")]; - char stringpool_str220[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str222[sizeof("TCVN5712-1")]; - char stringpool_str225[sizeof("ISO-8859-10")]; - char stringpool_str226[sizeof("ISO_8859-10")]; - char stringpool_str228[sizeof("L5")]; - char stringpool_str229[sizeof("ISO_8859-10:1992")]; - char stringpool_str230[sizeof("L4")]; - char stringpool_str231[sizeof("CSKOI8R")]; - char stringpool_str232[sizeof("UHC")]; - char stringpool_str234[sizeof("KOI8-T")]; - char stringpool_str236[sizeof("TIS620-0")]; - char stringpool_str237[sizeof("ISO-IR-57")]; - char stringpool_str239[sizeof("L8")]; - char stringpool_str241[sizeof("JP")]; - char stringpool_str244[sizeof("TCVN-5712")]; - char stringpool_str245[sizeof("ISO-IR-157")]; - char stringpool_str246[sizeof("PT154")]; - char stringpool_str247[sizeof("L2")]; - char stringpool_str248[sizeof("ISO-IR-87")]; - char stringpool_str249[sizeof("MAC")]; - char stringpool_str250[sizeof("LATIN6")]; - char stringpool_str251[sizeof("ISO-IR-138")]; - char stringpool_str253[sizeof("US")]; - char stringpool_str254[sizeof("LATIN1")]; - char stringpool_str255[sizeof("CSISO14JISC6220RO")]; - char stringpool_str256[sizeof("ISO_646.IRV:1991")]; - char stringpool_str262[sizeof("CP1257")]; - char stringpool_str263[sizeof("CSISO2022CN")]; - char stringpool_str264[sizeof("ISO-IR-127")]; - char stringpool_str265[sizeof("KSC_5601")]; - char stringpool_str266[sizeof("ARABIC")]; - char stringpool_str272[sizeof("CP932")]; - char stringpool_str273[sizeof("IBM866")]; - char stringpool_str276[sizeof("LATIN5")]; - char stringpool_str278[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str280[sizeof("LATIN4")]; - char stringpool_str282[sizeof("ELOT_928")]; - char stringpool_str284[sizeof("DECKANJI")]; - char stringpool_str285[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str289[sizeof("L10")]; - char stringpool_str290[sizeof("DEC-KANJI")]; - char stringpool_str293[sizeof("JIS0208")]; - char stringpool_str295[sizeof("VISCII1.1-1")]; - char stringpool_str297[sizeof("KZ-1048")]; - char stringpool_str298[sizeof("LATIN8")]; - char stringpool_str300[sizeof("L7")]; - char stringpool_str301[sizeof("UCS-4")]; - char stringpool_str304[sizeof("US-ASCII")]; - char stringpool_str305[sizeof("ROMAN8")]; - char stringpool_str307[sizeof("ISO88597")]; - char stringpool_str308[sizeof("MS-ANSI")]; - char stringpool_str309[sizeof("CSISO159JISX02121990")]; - char stringpool_str311[sizeof("EUCKR")]; - char stringpool_str312[sizeof("LATIN-9")]; - char stringpool_str313[sizeof("ISO8859-7")]; - char stringpool_str314[sizeof("LATIN2")]; - char stringpool_str315[sizeof("KS_C_5601-1989")]; - char stringpool_str316[sizeof("CSKZ1048")]; - char stringpool_str317[sizeof("EUC-KR")]; - char stringpool_str318[sizeof("KOREAN")]; - char stringpool_str319[sizeof("ISO-8859-7")]; - char stringpool_str320[sizeof("ISO_8859-7")]; - char stringpool_str322[sizeof("MACCROATIAN")]; - char stringpool_str323[sizeof("GB_1988-80")]; - char stringpool_str324[sizeof("UTF-16")]; - char stringpool_str325[sizeof("CSUCS4")]; - char stringpool_str326[sizeof("LATIN10")]; - char stringpool_str331[sizeof("IBM819")]; - char stringpool_str332[sizeof("ISO-10646-UCS-4")]; - char stringpool_str334[sizeof("ISO_8859-5:1988")]; - char stringpool_str335[sizeof("UCS-2")]; - char stringpool_str336[sizeof("ISO_8859-4:1988")]; - char stringpool_str337[sizeof("IBM862")]; - char stringpool_str340[sizeof("CSISOLATIN6")]; - char stringpool_str342[sizeof("BIG5")]; - char stringpool_str344[sizeof("CSISOLATIN1")]; - char stringpool_str345[sizeof("ISO_8859-8:1988")]; - char stringpool_str346[sizeof("SHIFT-JIS")]; - char stringpool_str347[sizeof("SHIFT_JIS")]; - char stringpool_str348[sizeof("BIG-5")]; - char stringpool_str349[sizeof("ISO-10646-UCS-2")]; - char stringpool_str350[sizeof("CP367")]; - char stringpool_str352[sizeof("ISO-2022-KR")]; - char stringpool_str353[sizeof("ISO_8859-9:1989")]; - char stringpool_str354[sizeof("IBM850")]; - char stringpool_str355[sizeof("ISO646-US")]; - char stringpool_str356[sizeof("L3")]; - char stringpool_str358[sizeof("UTF8")]; - char stringpool_str360[sizeof("CSISOLATINARABIC")]; - char stringpool_str363[sizeof("CSBIG5")]; - char stringpool_str364[sizeof("UTF-8")]; - char stringpool_str365[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str366[sizeof("CSISOLATIN5")]; - char stringpool_str367[sizeof("GB2312")]; - char stringpool_str369[sizeof("CN-BIG5")]; - char stringpool_str370[sizeof("CSISOLATIN4")]; - char stringpool_str372[sizeof("KS_C_5601-1987")]; - char stringpool_str374[sizeof("CP1253")]; - char stringpool_str375[sizeof("ARMSCII-8")]; - char stringpool_str382[sizeof("ISO_8859-6:1987")]; - char stringpool_str384[sizeof("ISO_8859-1:1987")]; - char stringpool_str389[sizeof("JIS_C6226-1983")]; - char stringpool_str390[sizeof("EUCTW")]; - char stringpool_str392[sizeof("WINDOWS-1256")]; - char stringpool_str394[sizeof("WINDOWS-1251")]; - char stringpool_str396[sizeof("EUC-TW")]; - char stringpool_str397[sizeof("MACTHAI")]; - char stringpool_str398[sizeof("UNICODE-1-1")]; - char stringpool_str403[sizeof("GB18030")]; - char stringpool_str404[sizeof("CSISOLATIN2")]; - char stringpool_str405[sizeof("WINDOWS-1255")]; - char stringpool_str406[sizeof("CSISO2022KR")]; - char stringpool_str407[sizeof("WINDOWS-1254")]; - char stringpool_str408[sizeof("ISO-IR-203")]; - char stringpool_str409[sizeof("CSUNICODE11")]; - char stringpool_str412[sizeof("MS936")]; - char stringpool_str414[sizeof("ISO_8859-2:1987")]; - char stringpool_str415[sizeof("ISO-CELTIC")]; - char stringpool_str416[sizeof("WINDOWS-1258")]; - char stringpool_str417[sizeof("ECMA-114")]; - char stringpool_str420[sizeof("LATIN7")]; - char stringpool_str422[sizeof("GBK")]; - char stringpool_str424[sizeof("WINDOWS-1252")]; - char stringpool_str425[sizeof("ISO8859-3")]; - char stringpool_str426[sizeof("WINDOWS-1250")]; - char stringpool_str428[sizeof("CN-GB-ISOIR165")]; - char stringpool_str429[sizeof("ISO-2022-JP-1")]; - char stringpool_str431[sizeof("ISO-8859-3")]; - char stringpool_str432[sizeof("ISO_8859-3")]; - char stringpool_str433[sizeof("ISO8859-13")]; - char stringpool_str434[sizeof("ASMO-708")]; - char stringpool_str435[sizeof("ECMA-118")]; - char stringpool_str438[sizeof("PTCP154")]; - char stringpool_str439[sizeof("ISO-8859-13")]; - char stringpool_str440[sizeof("ISO_8859-13")]; - char stringpool_str441[sizeof("HP-ROMAN8")]; - char stringpool_str442[sizeof("STRK1048-2002")]; - char stringpool_str446[sizeof("CHINESE")]; - char stringpool_str447[sizeof("TIS620.2529-1")]; - char stringpool_str448[sizeof("X0201")]; - char stringpool_str451[sizeof("CSKSC56011987")]; - char stringpool_str452[sizeof("GB_2312-80")]; - char stringpool_str459[sizeof("ISO-2022-JP-2")]; - char stringpool_str462[sizeof("ISO_8859-3:1988")]; - char stringpool_str467[sizeof("ISO_8859-7:1987")]; - char stringpool_str468[sizeof("CSPTCP154")]; - char stringpool_str469[sizeof("ISO646-JP")]; - char stringpool_str472[sizeof("CP1133")]; - char stringpool_str473[sizeof("ISO-2022-JP-MS")]; - char stringpool_str476[sizeof("X0212")]; - char stringpool_str477[sizeof("WINDOWS-1257")]; - char stringpool_str479[sizeof("CSSHIFTJIS")]; - char stringpool_str481[sizeof("CYRILLIC")]; - char stringpool_str483[sizeof("WINDOWS-874")]; - char stringpool_str484[sizeof("MS_KANJI")]; - char stringpool_str486[sizeof("UTF-7")]; - char stringpool_str487[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str492[sizeof("X0208")]; - char stringpool_str493[sizeof("MACROMAN")]; - char stringpool_str494[sizeof("CSIBM866")]; - char stringpool_str496[sizeof("CSUNICODE11UTF7")]; - char stringpool_str506[sizeof("MACARABIC")]; - char stringpool_str507[sizeof("CSUNICODE")]; - char stringpool_str508[sizeof("TCVN5712-1:1993")]; - char stringpool_str512[sizeof("CSISO2022JP2")]; - char stringpool_str513[sizeof("WINDOWS-936")]; - char stringpool_str515[sizeof("MACROMANIA")]; - char stringpool_str519[sizeof("GEORGIAN-PS")]; - char stringpool_str523[sizeof("ISO_8859-7:2003")]; - char stringpool_str527[sizeof("UTF-32")]; - char stringpool_str528[sizeof("CSEUCKR")]; - char stringpool_str531[sizeof("CN-GB")]; - char stringpool_str532[sizeof("LATIN3")]; - char stringpool_str533[sizeof("WINDOWS-1253")]; - char stringpool_str546[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str555[sizeof("EUCJP")]; - char stringpool_str560[sizeof("IBM367")]; - char stringpool_str561[sizeof("EUC-JP")]; - char stringpool_str564[sizeof("GREEK8")]; - char stringpool_str566[sizeof("CSISO57GB1988")]; - char stringpool_str568[sizeof("MACINTOSH")]; - char stringpool_str576[sizeof("CSISOLATINHEBREW")]; - char stringpool_str580[sizeof("DECHANYU")]; - char stringpool_str586[sizeof("DEC-HANYU")]; - char stringpool_str588[sizeof("CSGB2312")]; - char stringpool_str591[sizeof("MS-EE")]; - char stringpool_str592[sizeof("CSISOLATINGREEK")]; - char stringpool_str595[sizeof("CSMACINTOSH")]; - char stringpool_str596[sizeof("ISO-2022-JP")]; - char stringpool_str607[sizeof("CSEUCTW")]; - char stringpool_str608[sizeof("KOI8-U")]; - char stringpool_str610[sizeof("JIS_X0201")]; - char stringpool_str612[sizeof("JOHAB")]; - char stringpool_str614[sizeof("KOI8-RU")]; - char stringpool_str622[sizeof("CSISOLATIN3")]; - char stringpool_str627[sizeof("CSHPROMAN8")]; - char stringpool_str628[sizeof("MACICELAND")]; - char stringpool_str638[sizeof("JIS_X0212")]; - char stringpool_str644[sizeof("GB18030:2005")]; - char stringpool_str649[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str650[sizeof("CSISO2022JP")]; - char stringpool_str651[sizeof("JISX0201-1976")]; - char stringpool_str654[sizeof("JIS_X0208")]; - char stringpool_str655[sizeof("UCS-4-INTERNAL")]; - char stringpool_str657[sizeof("JIS_X0212-1990")]; - char stringpool_str660[sizeof("CSISO58GB231280")]; - char stringpool_str661[sizeof("GB18030:2022")]; - char stringpool_str666[sizeof("GREEK")]; - char stringpool_str667[sizeof("MS-ARAB")]; - char stringpool_str669[sizeof("TIS620.2533-1")]; - char stringpool_str670[sizeof("MS-CYRL")]; - char stringpool_str671[sizeof("BIGFIVE")]; - char stringpool_str672[sizeof("UCS-2-INTERNAL")]; - char stringpool_str677[sizeof("BIG-FIVE")]; - char stringpool_str681[sizeof("JIS_X0208-1990")]; - char stringpool_str689[sizeof("MS-HEBR")]; - char stringpool_str696[sizeof("HEBREW")]; - char stringpool_str701[sizeof("TIS620.2533-0")]; - char stringpool_str708[sizeof("CSISO87JISX0208")]; - char stringpool_str709[sizeof("HZ-GB-2312")]; - char stringpool_str721[sizeof("MACCYRILLIC")]; - char stringpool_str730[sizeof("UCS-4BE")]; - char stringpool_str731[sizeof("UNICODELITTLE")]; - char stringpool_str733[sizeof("UCS-4LE")]; - char stringpool_str747[sizeof("UCS-2BE")]; - char stringpool_str750[sizeof("UCS-2LE")]; - char stringpool_str751[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str768[sizeof("UTF-16BE")]; - char stringpool_str770[sizeof("UNICODEBIG")]; - char stringpool_str771[sizeof("UTF-16LE")]; - char stringpool_str772[sizeof("MS-TURK")]; - char stringpool_str777[sizeof("BIG5HKSCS")]; - char stringpool_str779[sizeof("ANSI_X3.4-1986")]; - char stringpool_str783[sizeof("BIG5-HKSCS")]; - char stringpool_str784[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str788[sizeof("JIS_X0208-1983")]; - char stringpool_str799[sizeof("MULELAO-1")]; - char stringpool_str803[sizeof("ANSI_X3.4-1968")]; - char stringpool_str811[sizeof("JIS_X0212.1990-0")]; - char stringpool_str835[sizeof("UCS-4-SWAPPED")]; - char stringpool_str852[sizeof("UCS-2-SWAPPED")]; - char stringpool_str870[sizeof("MACCENTRALEUROPE")]; - char stringpool_str874[sizeof("MACUKRAINE")]; - char stringpool_str880[sizeof("IBM-CP1133")]; - char stringpool_str887[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str897[sizeof("MS-GREEK")]; - char stringpool_str900[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str906[sizeof("MACGREEK")]; - char stringpool_str909[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str913[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str919[sizeof("NEXTSTEP")]; - char stringpool_str924[sizeof("MACTURKISH")]; - char stringpool_str939[sizeof("UTF-32BE")]; - char stringpool_str942[sizeof("UTF-32LE")]; - char stringpool_str1019[sizeof("WINBALTRIM")]; - char stringpool_str1052[sizeof("MACHEBREW")]; - char stringpool_str1158[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str1164[sizeof("CSEUCPKDFMTJAPANESE")]; - }; -static const struct stringpool_t stringpool_contents = - { - "CN", - "R8", - "866", - "ASCII", - "ISO-IR-6", - "TCVN", - "ISO-IR-166", - "CP866", - "ISO646-CN", - "C99", - "CP154", - "ISO-IR-14", - "ISO-IR-165", - "CP1256", - "ISO-IR-126", - "CP1251", - "ISO-IR-101", - "VISCII", - "862", - "ISO-IR-144", - "JAVA", - "850", - "CSASCII", - "ISO-IR-58", - "CP1255", - "CP819", - "CP1254", - "ISO-IR-226", - "ISO-IR-148", - "CSVISCII", - "CP862", - "ISO-IR-159", - "ISO-IR-110", - "ISO-IR-149", - "HZ", - "RK1048", - "ISO88596", - "CP949", - "CP1258", - "ISO88591", - "ISO8859-6", - "CP850", - "ISO-IR-199", - "ISO8859-1", - "CP950", - "ISO-8859-6", - "ISO_8859-6", - "ISO8859-16", - "ISO-IR-109", - "ISO-8859-1", - "ISO_8859-1", - "ISO8859-11", - "CP1252", - "ISO-8859-16", - "ISO_8859-16", - "SJIS", - "CP1250", - "ISO-8859-11", - "ISO_8859-11", - "ISO88595", - "ISO-IR-100", - "ISO_8859-16:2001", - "CP50221", - "EUCCN", - "ISO8859-5", - "ISO885915", - "ISO8859-4", - "EUC-CN", - "ISO-8859-5", - "ISO_8859-5", - "ISO8859-15", - "CP874", - "ISO-8859-4", - "ISO_8859-4", - "ISO8859-14", - "HP15CN", - "ISO-8859-15", - "ISO_8859-15", - "ISO88598", - "ISO-8859-14", - "ISO_8859-14", - "TIS620", - "ISO8859-8", - "CP1361", - "ISO88599", - "CP1131", - "TIS-620", - "ISO-8859-8", - "ISO_8859-8", - "ISO8859-9", - "ISO_8859-15:1998", - "ISO88592", - "ISO_8859-14:1998", - "ISO-IR-179", - "ISO-8859-9", - "ISO_8859-9", - "ISO8859-2", - "CP936", - "ISO-2022-CN", - "ISO-8859-2", - "ISO_8859-2", - "L6", - "KOI8-R", - "L1", - "ISO8859-10", - "ISO-2022-CN-EXT", - "TCVN5712-1", - "ISO-8859-10", - "ISO_8859-10", - "L5", - "ISO_8859-10:1992", - "L4", - "CSKOI8R", - "UHC", - "KOI8-T", - "TIS620-0", - "ISO-IR-57", - "L8", - "JP", - "TCVN-5712", - "ISO-IR-157", - "PT154", - "L2", - "ISO-IR-87", - "MAC", - "LATIN6", - "ISO-IR-138", - "US", - "LATIN1", - "CSISO14JISC6220RO", - "ISO_646.IRV:1991", - "CP1257", - "CSISO2022CN", - "ISO-IR-127", - "KSC_5601", - "ARABIC", - "CP932", - "IBM866", - "LATIN5", - "GEORGIAN-ACADEMY", - "LATIN4", - "ELOT_928", - "DECKANJI", - "JIS_C6220-1969-RO", - "L10", - "DEC-KANJI", - "JIS0208", - "VISCII1.1-1", - "KZ-1048", - "LATIN8", - "L7", - "UCS-4", - "US-ASCII", - "ROMAN8", - "ISO88597", - "MS-ANSI", - "CSISO159JISX02121990", - "EUCKR", - "LATIN-9", - "ISO8859-7", - "LATIN2", - "KS_C_5601-1989", - "CSKZ1048", - "EUC-KR", - "KOREAN", - "ISO-8859-7", - "ISO_8859-7", - "MACCROATIAN", - "GB_1988-80", - "UTF-16", - "CSUCS4", - "LATIN10", - "IBM819", - "ISO-10646-UCS-4", - "ISO_8859-5:1988", - "UCS-2", - "ISO_8859-4:1988", - "IBM862", - "CSISOLATIN6", - "BIG5", - "CSISOLATIN1", - "ISO_8859-8:1988", - "SHIFT-JIS", - "SHIFT_JIS", - "BIG-5", - "ISO-10646-UCS-2", - "CP367", - "ISO-2022-KR", - "ISO_8859-9:1989", - "IBM850", - "ISO646-US", - "L3", - "UTF8", - "CSISOLATINARABIC", - "CSBIG5", - "UTF-8", - "CSISOLATINCYRILLIC", - "CSISOLATIN5", - "GB2312", - "CN-BIG5", - "CSISOLATIN4", - "KS_C_5601-1987", - "CP1253", - "ARMSCII-8", - "ISO_8859-6:1987", - "ISO_8859-1:1987", - "JIS_C6226-1983", - "EUCTW", - "WINDOWS-1256", - "WINDOWS-1251", - "EUC-TW", - "MACTHAI", - "UNICODE-1-1", - "GB18030", - "CSISOLATIN2", - "WINDOWS-1255", - "CSISO2022KR", - "WINDOWS-1254", - "ISO-IR-203", - "CSUNICODE11", - "MS936", - "ISO_8859-2:1987", - "ISO-CELTIC", - "WINDOWS-1258", - "ECMA-114", - "LATIN7", - "GBK", - "WINDOWS-1252", - "ISO8859-3", - "WINDOWS-1250", - "CN-GB-ISOIR165", - "ISO-2022-JP-1", - "ISO-8859-3", - "ISO_8859-3", - "ISO8859-13", - "ASMO-708", - "ECMA-118", - "PTCP154", - "ISO-8859-13", - "ISO_8859-13", - "HP-ROMAN8", - "STRK1048-2002", - "CHINESE", - "TIS620.2529-1", - "X0201", - "CSKSC56011987", - "GB_2312-80", - "ISO-2022-JP-2", - "ISO_8859-3:1988", - "ISO_8859-7:1987", - "CSPTCP154", - "ISO646-JP", - "CP1133", - "ISO-2022-JP-MS", - "X0212", - "WINDOWS-1257", - "CSSHIFTJIS", - "CYRILLIC", - "WINDOWS-874", - "MS_KANJI", - "UTF-7", - "UNICODE-1-1-UTF-7", - "X0208", - "MACROMAN", - "CSIBM866", - "CSUNICODE11UTF7", - "MACARABIC", - "CSUNICODE", - "TCVN5712-1:1993", - "CSISO2022JP2", - "WINDOWS-936", - "MACROMANIA", - "GEORGIAN-PS", - "ISO_8859-7:2003", - "UTF-32", - "CSEUCKR", - "CN-GB", - "LATIN3", - "WINDOWS-1253", - "CYRILLIC-ASIAN", - "EUCJP", - "IBM367", - "EUC-JP", - "GREEK8", - "CSISO57GB1988", - "MACINTOSH", - "CSISOLATINHEBREW", - "DECHANYU", - "DEC-HANYU", - "CSGB2312", - "MS-EE", - "CSISOLATINGREEK", - "CSMACINTOSH", - "ISO-2022-JP", - "CSEUCTW", - "KOI8-U", - "JIS_X0201", - "JOHAB", - "KOI8-RU", - "CSISOLATIN3", - "CSHPROMAN8", - "MACICELAND", - "JIS_X0212", - "GB18030:2005", - "CSPC862LATINHEBREW", - "CSISO2022JP", - "JISX0201-1976", - "JIS_X0208", - "UCS-4-INTERNAL", - "JIS_X0212-1990", - "CSISO58GB231280", - "GB18030:2022", - "GREEK", - "MS-ARAB", - "TIS620.2533-1", - "MS-CYRL", - "BIGFIVE", - "UCS-2-INTERNAL", - "BIG-FIVE", - "JIS_X0208-1990", - "MS-HEBR", - "HEBREW", - "TIS620.2533-0", - "CSISO87JISX0208", - "HZ-GB-2312", - "MACCYRILLIC", - "UCS-4BE", - "UNICODELITTLE", - "UCS-4LE", - "UCS-2BE", - "UCS-2LE", - "CSHALFWIDTHKATAKANA", - "UTF-16BE", - "UNICODEBIG", - "UTF-16LE", - "MS-TURK", - "BIG5HKSCS", - "ANSI_X3.4-1986", - "BIG5-HKSCS", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "JIS_X0208-1983", - "MULELAO-1", - "ANSI_X3.4-1968", - "JIS_X0212.1990-0", - "UCS-4-SWAPPED", - "UCS-2-SWAPPED", - "MACCENTRALEUROPE", - "MACUKRAINE", - "IBM-CP1133", - "BIG5-HKSCS:2001", - "MS-GREEK", - "BIG5-HKSCS:2004", - "MACGREEK", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:1999", - "NEXTSTEP", - "MACTURKISH", - "UTF-32BE", - "UTF-32LE", - "WINBALTRIM", - "MACHEBREW", - "CSPC850MULTILINGUAL", - "CSEUCPKDFMTJAPANESE" - }; -#define stringpool ((const char *) &stringpool_contents) - -static const struct alias aliases[] = - { - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 297 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str23, ei_iso646_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 236 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 216 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str42, ei_cp866}, - {-1}, {-1}, -#line 13 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_ascii}, - {-1}, {-1}, -#line 16 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_ascii}, - {-1}, {-1}, {-1}, -#line 267 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 261 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str62, ei_tis620}, -#line 214 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_cp866}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 295 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str82, ei_iso646_cn}, -#line 52 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, ei_c99}, -#line 245 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str84, ei_pt154}, - {-1}, -#line 273 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, ei_iso646_jp}, - {-1}, -#line 302 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, ei_isoir165}, - {-1}, {-1}, {-1}, -#line 198 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_cp1256}, - {-1}, -#line 112 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str94, ei_iso8859_7}, - {-1}, -#line 183 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_cp1251}, - {-1}, {-1}, {-1}, -#line 68 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str100, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, -#line 264 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_viscii}, -#line 212 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_cp862}, -#line 93 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str107, ei_iso8859_5}, - {-1}, -#line 53 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str109, ei_java}, -#line 208 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str110, ei_cp850}, -#line 22 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str111, ei_ascii}, - {-1}, {-1}, {-1}, -#line 300 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str115, ei_gb2312}, - {-1}, {-1}, -#line 195 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_cp1255}, - {-1}, {-1}, -#line 58 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str121, ei_iso8859_1}, -#line 192 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, ei_cp1254}, - {-1}, -#line 172 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_iso8859_16}, -#line 131 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso8859_9}, -#line 266 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_viscii}, -#line 210 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str127, ei_cp862}, - {-1}, {-1}, {-1}, -#line 292 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_jisx0212}, -#line 85 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_iso8859_4}, -#line 307 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_ksc5601}, -#line 344 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str134, ei_hz}, -#line 248 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str135, ei_rk1048}, - {-1}, -#line 107 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, ei_iso8859_6}, -#line 365 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, ei_cp949}, - {-1}, -#line 204 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, ei_cp1258}, -#line 64 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, ei_iso8859_1}, - {-1}, -#line 106 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_iso8859_6}, -#line 206 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, ei_cp850}, - {-1}, -#line 157 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str146, ei_iso8859_14}, -#line 63 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str147, ei_iso8859_1}, -#line 355 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str148, ei_cp950}, -#line 98 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str149, ei_iso8859_6}, -#line 99 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_iso8859_6}, -#line 175 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_16}, -#line 77 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_iso8859_3}, -#line 54 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_iso8859_1}, -#line 55 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_iso8859_1}, -#line 147 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_iso8859_11}, -#line 186 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_cp1252}, -#line 169 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str157, ei_iso8859_16}, -#line 170 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_16}, -#line 316 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_sjis}, -#line 180 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_cp1250}, -#line 145 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_iso8859_11}, -#line 146 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_11}, -#line 97 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_5}, -#line 57 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_iso8859_1}, -#line 171 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_iso8859_16}, -#line 326 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_iso2022_jpms}, - {-1}, -#line 328 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_euc_cn}, -#line 96 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_iso8859_5}, - {-1}, -#line 168 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, ei_iso8859_15}, - {-1}, -#line 89 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_iso8859_4}, -#line 327 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, ei_euc_cn}, -#line 90 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str175, ei_iso8859_5}, -#line 91 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, ei_iso8859_5}, -#line 167 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str177, ei_iso8859_15}, -#line 262 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str178, ei_cp874}, -#line 82 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_iso8859_4}, -#line 83 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_iso8859_4}, -#line 161 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_iso8859_14}, -#line 333 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str182, ei_euc_cn}, -#line 162 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_iso8859_15}, -#line 163 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_iso8859_15}, -#line 127 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str185, ei_iso8859_8}, - {-1}, -#line 154 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str187, ei_iso8859_14}, -#line 155 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso8859_14}, - {-1}, -#line 256 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_tis620}, -#line 126 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str191, ei_iso8859_8}, -#line 368 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_johab}, -#line 136 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str193, ei_iso8859_9}, -#line 218 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_cp1131}, - {-1}, -#line 255 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_tis620}, -#line 120 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_iso8859_8}, -#line 121 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_iso8859_8}, -#line 135 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_iso8859_9}, -#line 164 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_iso8859_15}, -#line 73 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_iso8859_2}, -#line 156 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_iso8859_14}, -#line 150 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_iso8859_13}, - {-1}, -#line 128 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str205, ei_iso8859_9}, -#line 129 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, ei_iso8859_9}, -#line 72 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_iso8859_2}, -#line 335 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_cp936}, -#line 341 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_iso2022_cn}, - {-1}, {-1}, {-1}, -#line 65 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_iso8859_2}, -#line 66 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_iso8859_2}, -#line 142 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, ei_iso8859_10}, -#line 176 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_koi8_r}, -#line 61 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_iso8859_1}, - {-1}, -#line 144 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_iso8859_10}, -#line 343 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str220, ei_iso2022_cn_ext}, - {-1}, -#line 269 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str222, ei_tcvn}, - {-1}, {-1}, -#line 137 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_iso8859_10}, -#line 138 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_iso8859_10}, - {-1}, -#line 133 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_iso8859_9}, -#line 139 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, ei_iso8859_10}, -#line 87 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str230, ei_iso8859_4}, -#line 177 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_koi8_r}, -#line 366 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_cp949}, - {-1}, -#line 242 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_koi8_t}, - {-1}, -#line 257 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_tis620}, -#line 296 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_iso646_cn}, - {-1}, -#line 159 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_iso8859_14}, - {-1}, -#line 274 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_iso646_jp}, - {-1}, {-1}, -#line 268 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_tcvn}, -#line 140 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_iso8859_10}, -#line 243 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_pt154}, -#line 70 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_iso8859_2}, -#line 285 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_jisx0208}, -#line 221 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_mac_roman}, -#line 141 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_iso8859_10}, -#line 123 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_iso8859_8}, - {-1}, -#line 21 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_ascii}, -#line 60 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_iso8859_1}, -#line 275 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_iso646_jp}, -#line 15 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 201 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_cp1257}, -#line 342 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_iso2022_cn}, -#line 101 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_iso8859_6}, -#line 304 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_ksc5601}, -#line 104 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 319 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_cp932}, -#line 215 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_cp866}, - {-1}, {-1}, -#line 132 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_iso8859_9}, - {-1}, -#line 240 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_georgian_academy}, - {-1}, -#line 86 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso8859_4}, - {-1}, -#line 114 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_iso8859_7}, - {-1}, -#line 372 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_dec_kanji}, -#line 271 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_iso646_jp}, - {-1}, {-1}, {-1}, -#line 174 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_iso8859_16}, -#line 371 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_dec_kanji}, - {-1}, {-1}, -#line 283 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_jisx0208}, - {-1}, -#line 265 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_viscii}, - {-1}, -#line 250 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str297, ei_rk1048}, -#line 158 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str298, ei_iso8859_14}, - {-1}, -#line 152 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_iso8859_13}, -#line 34 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_ucs4}, - {-1}, {-1}, -#line 12 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_ascii}, -#line 235 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_hp_roman8}, - {-1}, -#line 119 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_iso8859_7}, -#line 188 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_cp1252}, -#line 293 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_jisx0212}, - {-1}, -#line 363 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_euc_kr}, -#line 166 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_iso8859_15}, -#line 118 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_iso8859_7}, -#line 69 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_iso8859_2}, -#line 306 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_ksc5601}, -#line 251 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_rk1048}, -#line 362 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_euc_kr}, -#line 309 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_ksc5601}, -#line 108 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_iso8859_7}, -#line 109 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_iso8859_7}, - {-1}, -#line 225 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_mac_croatian}, -#line 294 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_iso646_cn}, -#line 39 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_utf16}, -#line 36 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ucs4}, -#line 173 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str326, ei_iso8859_16}, - {-1}, {-1}, {-1}, {-1}, -#line 59 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_iso8859_1}, -#line 35 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_ucs4}, - {-1}, -#line 92 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_iso8859_5}, -#line 25 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_ucs2}, -#line 84 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_iso8859_4}, -#line 211 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_cp862}, - {-1}, {-1}, -#line 143 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_iso8859_10}, - {-1}, -#line 349 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_ces_big5}, - {-1}, -#line 62 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_iso8859_1}, -#line 122 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_iso8859_8}, -#line 315 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_sjis}, -#line 314 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_sjis}, -#line 350 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_ces_big5}, -#line 26 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_ucs2}, -#line 19 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_ascii}, - {-1}, -#line 369 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_iso2022_kr}, -#line 130 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_iso8859_9}, -#line 207 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_cp850}, -#line 14 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ascii}, -#line 79 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_iso8859_3}, - {-1}, -#line 24 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_utf8}, - {-1}, -#line 105 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_iso8859_6}, - {-1}, {-1}, -#line 354 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_ces_big5}, -#line 23 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_utf8}, -#line 95 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_iso8859_5}, -#line 134 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_iso8859_9}, -#line 329 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_euc_cn}, - {-1}, -#line 353 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str369, ei_ces_big5}, -#line 88 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_iso8859_4}, - {-1}, -#line 305 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_ksc5601}, - {-1}, -#line 189 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_cp1253}, -#line 239 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_armscii_8}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 100 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str382, ei_iso8859_6}, - {-1}, -#line 56 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, -#line 286 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_jisx0208}, -#line 347 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_euc_tw}, - {-1}, -#line 199 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_cp1256}, - {-1}, -#line 184 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_cp1251}, - {-1}, -#line 346 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_euc_tw}, -#line 233 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_mac_thai}, -#line 30 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, -#line 338 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_gb18030_2005}, -#line 71 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_iso8859_2}, -#line 196 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_cp1255}, -#line 370 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_iso2022_kr}, -#line 193 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_cp1254}, -#line 165 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str408, ei_iso8859_15}, -#line 31 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_ucs2be}, - {-1}, {-1}, -#line 336 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp936}, - {-1}, -#line 67 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_iso8859_2}, -#line 160 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_iso8859_14}, -#line 205 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_cp1258}, -#line 102 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_iso8859_6}, - {-1}, {-1}, -#line 151 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_iso8859_13}, - {-1}, -#line 334 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_ces_gbk}, - {-1}, -#line 187 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_cp1252}, -#line 81 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_iso8859_3}, -#line 181 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_cp1250}, - {-1}, -#line 303 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_isoir165}, -#line 322 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str429, ei_iso2022_jp1}, - {-1}, -#line 74 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_iso8859_3}, -#line 75 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_iso8859_3}, -#line 153 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_iso8859_13}, -#line 103 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_iso8859_6}, -#line 113 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_iso8859_7}, - {-1}, {-1}, -#line 244 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_pt154}, -#line 148 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso8859_13}, -#line 149 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_iso8859_13}, -#line 234 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_hp_roman8}, -#line 249 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_rk1048}, - {-1}, {-1}, {-1}, -#line 332 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str446, ei_euc_cn}, -#line 258 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_tis620}, -#line 278 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_jisx0201}, - {-1}, {-1}, -#line 308 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_ksc5601}, -#line 299 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_gb2312}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 323 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_iso2022_jp2}, - {-1}, {-1}, -#line 76 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, -#line 110 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_iso8859_7}, -#line 247 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_pt154}, -#line 272 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_iso646_jp}, - {-1}, {-1}, -#line 253 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str472, ei_cp1133}, -#line 325 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_iso2022_jpms}, - {-1}, {-1}, -#line 291 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_jisx0212}, -#line 202 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_cp1257}, - {-1}, -#line 318 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_sjis}, - {-1}, -#line 94 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_iso8859_5}, - {-1}, -#line 263 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_cp874}, -#line 317 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_sjis}, - {-1}, -#line 45 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_utf7}, -#line 46 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, -#line 284 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_jisx0208}, -#line 219 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_mac_roman}, -#line 217 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_cp866}, - {-1}, -#line 47 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 232 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_mac_arabic}, -#line 27 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_ucs2}, -#line 270 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_tcvn}, - {-1}, {-1}, {-1}, -#line 324 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_iso2022_jp2}, -#line 337 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_cp936}, - {-1}, -#line 226 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_mac_romania}, - {-1}, {-1}, {-1}, -#line 241 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_georgian_ps}, - {-1}, {-1}, {-1}, -#line 111 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_iso8859_7}, - {-1}, {-1}, {-1}, -#line 42 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_utf32}, -#line 364 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_euc_kr}, - {-1}, {-1}, -#line 330 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_euc_cn}, -#line 78 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_iso8859_3}, -#line 190 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_cp1253}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 246 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_pt154}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 311 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, -#line 20 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str560, ei_ascii}, -#line 310 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_euc_jp}, - {-1}, {-1}, -#line 115 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_iso8859_7}, - {-1}, -#line 298 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_iso646_cn}, - {-1}, -#line 220 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_mac_roman}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 125 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso8859_8}, - {-1}, {-1}, {-1}, -#line 374 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_dec_hanyu}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 373 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str586, ei_dec_hanyu}, - {-1}, -#line 331 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_euc_cn}, - {-1}, {-1}, -#line 182 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_cp1250}, -#line 117 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_iso8859_7}, - {-1}, {-1}, -#line 222 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_mac_roman}, -#line 320 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str596, ei_iso2022_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 348 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_euc_tw}, -#line 178 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_koi8_u}, - {-1}, -#line 276 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_jisx0201}, - {-1}, -#line 367 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_johab}, - {-1}, -#line 179 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_koi8_ru}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 80 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str622, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, -#line 237 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_hp_roman8}, -#line 224 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str628, ei_mac_iceland}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 288 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 339 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_gb18030_2005}, - {-1}, {-1}, {-1}, {-1}, -#line 213 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str649, ei_cp862}, -#line 321 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_iso2022_jp}, -#line 277 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str651, ei_jisx0201}, - {-1}, {-1}, -#line 280 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str654, ei_jisx0208}, -#line 50 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_ucs4internal}, - {-1}, -#line 290 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_jisx0212}, - {-1}, {-1}, -#line 301 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str660, ei_gb2312}, -#line 340 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_gb18030_2022}, - {-1}, {-1}, {-1}, {-1}, -#line 116 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_iso8859_7}, -#line 200 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_cp1256}, - {-1}, -#line 260 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_tis620}, -#line 185 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_cp1251}, -#line 352 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_ces_big5}, -#line 48 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str672, ei_ucs2internal}, - {-1}, {-1}, {-1}, {-1}, -#line 351 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_ces_big5}, - {-1}, {-1}, {-1}, -#line 282 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 197 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_cp1255}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 124 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, -#line 259 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 287 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_jisx0208}, -#line 345 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_hz}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 227 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_mac_cyrillic}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 37 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str730, ei_ucs4be}, -#line 33 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str731, ei_ucs2le}, - {-1}, -#line 38 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str733, ei_ucs4le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 28 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_ucs2be}, - {-1}, {-1}, -#line 32 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_ucs2le}, -#line 279 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 40 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_utf16be}, - {-1}, -#line 29 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str770, ei_ucs2be}, -#line 41 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str771, ei_utf16le}, -#line 194 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str772, ei_cp1254}, - {-1}, {-1}, {-1}, {-1}, -#line 360 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str777, ei_big5hkscs2008}, - {-1}, -#line 18 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str779, ei_ascii}, - {-1}, {-1}, {-1}, -#line 359 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_big5hkscs2008}, -#line 312 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str784, ei_euc_jp}, - {-1}, {-1}, {-1}, -#line 281 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str788, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 252 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_mulelao}, - {-1}, {-1}, {-1}, -#line 17 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 289 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str811, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 51 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str835, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_ucs2swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 223 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str870, ei_mac_centraleurope}, - {-1}, {-1}, {-1}, -#line 228 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str874, ei_mac_ukraine}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 254 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str880, ei_cp1133}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 357 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 191 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_cp1253}, - {-1}, {-1}, -#line 358 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_big5hkscs2004}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 229 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_mac_greek}, - {-1}, {-1}, -#line 361 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, -#line 356 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str913, ei_big5hkscs1999}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 238 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str919, ei_nextstep}, - {-1}, {-1}, {-1}, {-1}, -#line 230 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str924, ei_mac_turkish}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str939, ei_utf32be}, - {-1}, {-1}, -#line 44 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str942, ei_utf32le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 203 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 231 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1052, ei_mac_hebrew}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 209 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1158, ei_cp850}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 313 "lib/generated/aliases_syshpux.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1164, ei_euc_jp} - }; - -const struct alias * -HashPool::aliases_lookup (const char *str, size_t len) -{ - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - unsigned int key = aliases_hash (str, len); - - if (key <= MAX_HASH_VALUE) - { - int o = aliases[key].name; - if (o >= 0) - { - const char *s = o + stringpool; - - if (*str == *s && !strcmp (str + 1, s + 1)) - return &aliases[key]; - } - } - } - return 0; -} diff --git a/lib/generated/aliases_syssolaris.h b/lib/generated/aliases_syssolaris.h deleted file mode 100644 index 940bbc8e..00000000 --- a/lib/generated/aliases_syssolaris.h +++ /dev/null @@ -1,1769 +0,0 @@ -/* C++ code produced by gperf version 3.1 */ -/* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases_syssolaris.gperf */ -/* Computed positions: -k'1,3-11,$' */ - -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) -/* The character set is not based on ISO-646. */ -#error "gperf generated tables don't work with this execution character set. Please report a bug to ." -#endif - -#line 1 "lib/generated/aliases_syssolaris.gperf" -struct alias { int name; unsigned int encoding_index; }; - -#define TOTAL_KEYWORDS 360 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 6 -#define MAX_HASH_VALUE 942 -/* maximum key range = 937, duplicates = 0 */ - -class HashPool -{ -private: - static inline unsigned int aliases_hash (const char *str, size_t len); -public: - static const struct alias *aliases_lookup (const char *str, size_t len); -}; - -inline unsigned int -HashPool::aliases_hash (const char *str, size_t len) -{ - static const unsigned short asso_values[] = - { - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 10, 139, 943, 29, 0, - 5, 74, 47, 2, 1, 150, 4, 11, 193, 943, - 943, 943, 943, 943, 943, 60, 226, 1, 3, 71, - 106, 122, 70, 0, 216, 108, 135, 85, 8, 0, - 55, 943, 41, 74, 8, 74, 205, 160, 174, 66, - 3, 943, 943, 943, 943, 70, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 943, 943 - }; - unsigned int hval = len; - - switch (hval) - { - default: - hval += asso_values[static_cast(str[10])]; - /*FALLTHROUGH*/ - case 10: - hval += asso_values[static_cast(str[9])]; - /*FALLTHROUGH*/ - case 9: - hval += asso_values[static_cast(str[8])]; - /*FALLTHROUGH*/ - case 8: - hval += asso_values[static_cast(str[7])]; - /*FALLTHROUGH*/ - case 7: - hval += asso_values[static_cast(str[6])]; - /*FALLTHROUGH*/ - case 6: - hval += asso_values[static_cast(str[5])]; - /*FALLTHROUGH*/ - case 5: - hval += asso_values[static_cast(str[4])]; - /*FALLTHROUGH*/ - case 4: - hval += asso_values[static_cast(str[3])]; - /*FALLTHROUGH*/ - case 3: - hval += asso_values[static_cast(str[2])]; - /*FALLTHROUGH*/ - case 2: - case 1: - hval += asso_values[static_cast(str[0])]; - break; - } - return hval + asso_values[static_cast(str[len - 1])]; -} - -struct stringpool_t - { - char stringpool_str6[sizeof("646")]; - char stringpool_str9[sizeof("866")]; - char stringpool_str11[sizeof("CN")]; - char stringpool_str13[sizeof("CP866")]; - char stringpool_str14[sizeof("CP1251")]; - char stringpool_str16[sizeof("CP1256")]; - char stringpool_str17[sizeof("862")]; - char stringpool_str18[sizeof("CP1255")]; - char stringpool_str21[sizeof("CP862")]; - char stringpool_str22[sizeof("CP1258")]; - char stringpool_str24[sizeof("CP1252")]; - char stringpool_str26[sizeof("C99")]; - char stringpool_str32[sizeof("CP819")]; - char stringpool_str35[sizeof("5601")]; - char stringpool_str40[sizeof("ISO8859-1")]; - char stringpool_str41[sizeof("ISO8859-11")]; - char stringpool_str42[sizeof("ISO8859-6")]; - char stringpool_str43[sizeof("ISO8859-16")]; - char stringpool_str44[sizeof("ISO8859-5")]; - char stringpool_str45[sizeof("ISO8859-15")]; - char stringpool_str47[sizeof("R8")]; - char stringpool_str48[sizeof("ISO8859-8")]; - char stringpool_str49[sizeof("CP50221")]; - char stringpool_str50[sizeof("ISO8859-2")]; - char stringpool_str51[sizeof("ISO-8859-1")]; - char stringpool_str52[sizeof("ISO-8859-11")]; - char stringpool_str53[sizeof("ISO-8859-6")]; - char stringpool_str54[sizeof("ISO-8859-16")]; - char stringpool_str55[sizeof("ISO-8859-5")]; - char stringpool_str56[sizeof("ISO-8859-15")]; - char stringpool_str59[sizeof("ISO-8859-8")]; - char stringpool_str61[sizeof("ISO-8859-2")]; - char stringpool_str62[sizeof("ISO8859-9")]; - char stringpool_str65[sizeof("850")]; - char stringpool_str66[sizeof("ASCII")]; - char stringpool_str70[sizeof("CP850")]; - char stringpool_str71[sizeof("ISO-IR-6")]; - char stringpool_str72[sizeof("CP1250")]; - char stringpool_str73[sizeof("ISO-8859-9")]; - char stringpool_str74[sizeof("ISO-IR-166")]; - char stringpool_str75[sizeof("HZ")]; - char stringpool_str76[sizeof("ISO-IR-165")]; - char stringpool_str77[sizeof("CP950")]; - char stringpool_str78[sizeof("ISO-IR-126")]; - char stringpool_str79[sizeof("UHC")]; - char stringpool_str80[sizeof("ISO-IR-58")]; - char stringpool_str81[sizeof("CP1131")]; - char stringpool_str82[sizeof("CP1361")]; - char stringpool_str83[sizeof("ISO-IR-226")]; - char stringpool_str85[sizeof("ISO646-CN")]; - char stringpool_str86[sizeof("CP949")]; - char stringpool_str90[sizeof("MAC")]; - char stringpool_str92[sizeof("ISO-2022-CN")]; - char stringpool_str93[sizeof("CP936")]; - char stringpool_str94[sizeof("EUCCN")]; - char stringpool_str95[sizeof("ISO-IR-159")]; - char stringpool_str96[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str98[sizeof("IBM866")]; - char stringpool_str99[sizeof("ISO8859-10")]; - char stringpool_str100[sizeof("ISO-IR-101")]; - char stringpool_str101[sizeof("CP932")]; - char stringpool_str102[sizeof("CP154")]; - char stringpool_str104[sizeof("ISO-IR-199")]; - char stringpool_str105[sizeof("EUC-CN")]; - char stringpool_str106[sizeof("IBM862")]; - char stringpool_str108[sizeof("CP1254")]; - char stringpool_str110[sizeof("ISO-8859-10")]; - char stringpool_str111[sizeof("ISO_8859-1")]; - char stringpool_str112[sizeof("ISO_8859-11")]; - char stringpool_str113[sizeof("ISO_8859-6")]; - char stringpool_str114[sizeof("ISO_8859-16")]; - char stringpool_str115[sizeof("ISO_8859-5")]; - char stringpool_str116[sizeof("ISO_8859-15")]; - char stringpool_str117[sizeof("IBM819")]; - char stringpool_str118[sizeof("ISO_8859-16:2001")]; - char stringpool_str119[sizeof("ISO_8859-8")]; - char stringpool_str121[sizeof("ISO_8859-2")]; - char stringpool_str122[sizeof("ISO-IR-109")]; - char stringpool_str123[sizeof("ISO_8859-15:1998")]; - char stringpool_str126[sizeof("ISO-IR-148")]; - char stringpool_str129[sizeof("ISO-IR-110")]; - char stringpool_str131[sizeof("RK1048")]; - char stringpool_str133[sizeof("ISO_8859-9")]; - char stringpool_str134[sizeof("ISO8859-4")]; - char stringpool_str135[sizeof("ISO8859-14")]; - char stringpool_str137[sizeof("L1")]; - char stringpool_str138[sizeof("L6")]; - char stringpool_str139[sizeof("L5")]; - char stringpool_str140[sizeof("ISO-IR-149")]; - char stringpool_str141[sizeof("L8")]; - char stringpool_str142[sizeof("L2")]; - char stringpool_str143[sizeof("CSASCII")]; - char stringpool_str144[sizeof("KOI8-T")]; - char stringpool_str145[sizeof("ISO-8859-4")]; - char stringpool_str146[sizeof("ISO-8859-14")]; - char stringpool_str147[sizeof("CSISO2022CN")]; - char stringpool_str150[sizeof("US")]; - char stringpool_str151[sizeof("ISO_8859-10:1992")]; - char stringpool_str152[sizeof("TIS620")]; - char stringpool_str153[sizeof("ISO-IR-138")]; - char stringpool_str155[sizeof("IBM850")]; - char stringpool_str156[sizeof("PT154")]; - char stringpool_str157[sizeof("LATIN1")]; - char stringpool_str158[sizeof("ISO-IR-100")]; - char stringpool_str159[sizeof("LATIN6")]; - char stringpool_str160[sizeof("ANSI-1251")]; - char stringpool_str161[sizeof("LATIN5")]; - char stringpool_str162[sizeof("CP1253")]; - char stringpool_str163[sizeof("TIS-620")]; - char stringpool_str164[sizeof("ISO-IR-14")]; - char stringpool_str165[sizeof("LATIN8")]; - char stringpool_str167[sizeof("LATIN2")]; - char stringpool_str168[sizeof("ISO_8859-14:1998")]; - char stringpool_str169[sizeof("CSUNICODE11")]; - char stringpool_str170[sizeof("ISO_8859-10")]; - char stringpool_str173[sizeof("UCS-2")]; - char stringpool_str177[sizeof("MS936")]; - char stringpool_str180[sizeof("UNICODE-1-1")]; - char stringpool_str181[sizeof("ELOT_928")]; - char stringpool_str184[sizeof("L4")]; - char stringpool_str188[sizeof("ISO8859-3")]; - char stringpool_str189[sizeof("ISO8859-13")]; - char stringpool_str190[sizeof("LATIN-9")]; - char stringpool_str192[sizeof("ISO-10646-UCS-2")]; - char stringpool_str193[sizeof("TIS620-0")]; - char stringpool_str194[sizeof("X0212")]; - char stringpool_str196[sizeof("L10")]; - char stringpool_str198[sizeof("UTF-16")]; - char stringpool_str199[sizeof("ISO-8859-3")]; - char stringpool_str200[sizeof("ISO-8859-13")]; - char stringpool_str202[sizeof("CSKOI8R")]; - char stringpool_str203[sizeof("UTF-8")]; - char stringpool_str204[sizeof("CSKZ1048")]; - char stringpool_str205[sizeof("ISO_8859-4")]; - char stringpool_str206[sizeof("ISO_8859-14")]; - char stringpool_str208[sizeof("ROMAN8")]; - char stringpool_str209[sizeof("KZ-1048")]; - char stringpool_str210[sizeof("KOI8-R")]; - char stringpool_str211[sizeof("L3")]; - char stringpool_str212[sizeof("ISO-IR-144")]; - char stringpool_str213[sizeof("X0201")]; - char stringpool_str214[sizeof("PTCP154")]; - char stringpool_str216[sizeof("LATIN10")]; - char stringpool_str217[sizeof("GB2312")]; - char stringpool_str219[sizeof("KSC_5601")]; - char stringpool_str221[sizeof("X0208")]; - char stringpool_str225[sizeof("CSPTCP154")]; - char stringpool_str226[sizeof("SJIS")]; - char stringpool_str227[sizeof("US-ASCII")]; - char stringpool_str229[sizeof("CP1133")]; - char stringpool_str231[sizeof("MACTHAI")]; - char stringpool_str233[sizeof("TCVN")]; - char stringpool_str234[sizeof("ISO-10646-UCS-4")]; - char stringpool_str237[sizeof("ISO-CELTIC")]; - char stringpool_str238[sizeof("CSUNICODE")]; - char stringpool_str242[sizeof("ECMA-118")]; - char stringpool_str243[sizeof("ISO-IR-179")]; - char stringpool_str244[sizeof("MS-ANSI")]; - char stringpool_str247[sizeof("ARMSCII-8")]; - char stringpool_str250[sizeof("CSUCS4")]; - char stringpool_str251[sizeof("LATIN4")]; - char stringpool_str253[sizeof("ISO-IR-203")]; - char stringpool_str254[sizeof("CP874")]; - char stringpool_str257[sizeof("UCS-4")]; - char stringpool_str259[sizeof("ISO_8859-3")]; - char stringpool_str260[sizeof("ISO_8859-13")]; - char stringpool_str265[sizeof("ISO-2022-KR")]; - char stringpool_str267[sizeof("EUCKR")]; - char stringpool_str273[sizeof("JP")]; - char stringpool_str274[sizeof("PCK")]; - char stringpool_str276[sizeof("KOI8-U")]; - char stringpool_str278[sizeof("EUC-KR")]; - char stringpool_str279[sizeof("CNS11643")]; - char stringpool_str280[sizeof("UTF-32")]; - char stringpool_str283[sizeof("MACCROATIAN")]; - char stringpool_str286[sizeof("VISCII")]; - char stringpool_str287[sizeof("L7")]; - char stringpool_str289[sizeof("CSVISCII")]; - char stringpool_str290[sizeof("ISO646-US")]; - char stringpool_str291[sizeof("HP-ROMAN8")]; - char stringpool_str292[sizeof("TIS620.2529-1")]; - char stringpool_str293[sizeof("GB_1988-80")]; - char stringpool_str294[sizeof("GB18030")]; - char stringpool_str296[sizeof("MACROMAN")]; - char stringpool_str297[sizeof("CSISOLATIN1")]; - char stringpool_str299[sizeof("CSISOLATIN6")]; - char stringpool_str301[sizeof("CSISOLATIN5")]; - char stringpool_str302[sizeof("KOREAN")]; - char stringpool_str303[sizeof("CHINESE")]; - char stringpool_str305[sizeof("LATIN3")]; - char stringpool_str306[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str307[sizeof("CSISOLATIN2")]; - char stringpool_str313[sizeof("MS-EE")]; - char stringpool_str314[sizeof("CP1257")]; - char stringpool_str315[sizeof("ISO_8859-5:1988")]; - char stringpool_str316[sizeof("KS_C_5601-1989")]; - char stringpool_str317[sizeof("ISO_8859-8:1988")]; - char stringpool_str318[sizeof("KOI8-RU")]; - char stringpool_str320[sizeof("CSISO2022KR")]; - char stringpool_str322[sizeof("CYRILLIC")]; - char stringpool_str323[sizeof("CSUNICODE11UTF7")]; - char stringpool_str325[sizeof("MACINTOSH")]; - char stringpool_str327[sizeof("CSIBM866")]; - char stringpool_str328[sizeof("ECMA-114")]; - char stringpool_str331[sizeof("ISO_8859-9:1989")]; - char stringpool_str336[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str338[sizeof("CSHPROMAN8")]; - char stringpool_str340[sizeof("ISO8859-7")]; - char stringpool_str341[sizeof("GBK")]; - char stringpool_str344[sizeof("CSEUCKR")]; - char stringpool_str348[sizeof("ISO-2022-JP-1")]; - char stringpool_str350[sizeof("ASMO-708")]; - char stringpool_str351[sizeof("ISO-8859-7")]; - char stringpool_str353[sizeof("ISO-2022-JP-2")]; - char stringpool_str354[sizeof("ARABIC")]; - char stringpool_str356[sizeof("BIG5")]; - char stringpool_str358[sizeof("GB_2312-80")]; - char stringpool_str359[sizeof("CSBIG5")]; - char stringpool_str360[sizeof("ISO_8859-4:1988")]; - char stringpool_str363[sizeof("CSISOLATINARABIC")]; - char stringpool_str364[sizeof("DECHANYU")]; - char stringpool_str365[sizeof("STRK1048-2002")]; - char stringpool_str367[sizeof("BIG-5")]; - char stringpool_str368[sizeof("JIS0208")]; - char stringpool_str370[sizeof("CN-BIG5")]; - char stringpool_str372[sizeof("ISO-IR-57")]; - char stringpool_str373[sizeof("ISO-IR-157")]; - char stringpool_str374[sizeof("ISO-IR-87")]; - char stringpool_str375[sizeof("DEC-HANYU")]; - char stringpool_str376[sizeof("ISO-IR-127")]; - char stringpool_str377[sizeof("MACICELAND")]; - char stringpool_str381[sizeof("CP367")]; - char stringpool_str383[sizeof("IBM-CP1133")]; - char stringpool_str384[sizeof("UNICODELITTLE")]; - char stringpool_str386[sizeof("GREEK8")]; - char stringpool_str387[sizeof("ISO_8859-3:1988")]; - char stringpool_str388[sizeof("CSMACINTOSH")]; - char stringpool_str390[sizeof("CSKSC56011987")]; - char stringpool_str391[sizeof("CSISOLATIN4")]; - char stringpool_str394[sizeof("ISO646-JP")]; - char stringpool_str398[sizeof("TCVN5712-1")]; - char stringpool_str401[sizeof("ISO-2022-JP")]; - char stringpool_str402[sizeof("TCVN-5712")]; - char stringpool_str403[sizeof("EUCJP")]; - char stringpool_str404[sizeof("DECKANJI")]; - char stringpool_str405[sizeof("EUCTW")]; - char stringpool_str407[sizeof("CSISO2022JP2")]; - char stringpool_str410[sizeof("MACROMANIA")]; - char stringpool_str411[sizeof("ISO_8859-7")]; - char stringpool_str414[sizeof("EUC-JP")]; - char stringpool_str415[sizeof("DEC-KANJI")]; - char stringpool_str416[sizeof("EUC-TW")]; - char stringpool_str423[sizeof("ISO-2022-JP-MS")]; - char stringpool_str424[sizeof("TIS620.2533-1")]; - char stringpool_str427[sizeof("CSISO159JISX02121990")]; - char stringpool_str428[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str430[sizeof("CSISO14JISC6220RO")]; - char stringpool_str434[sizeof("WINDOWS-1251")]; - char stringpool_str435[sizeof("WINDOWS-1256")]; - char stringpool_str436[sizeof("WINDOWS-1255")]; - char stringpool_str438[sizeof("WINDOWS-1258")]; - char stringpool_str439[sizeof("WINDOWS-1252")]; - char stringpool_str440[sizeof("VISCII1.1-1")]; - char stringpool_str441[sizeof("MS-TURK")]; - char stringpool_str445[sizeof("CSISOLATIN3")]; - char stringpool_str446[sizeof("CSGB2312")]; - char stringpool_str447[sizeof("UCS-2LE")]; - char stringpool_str448[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str450[sizeof("UCS-2-INTERNAL")]; - char stringpool_str453[sizeof("TIS620.2533-0")]; - char stringpool_str455[sizeof("KS_C_5601-1987")]; - char stringpool_str456[sizeof("CSISO2022JP")]; - char stringpool_str457[sizeof("LATIN7")]; - char stringpool_str459[sizeof("ISO_8859-1:1987")]; - char stringpool_str460[sizeof("ISO_8859-6:1987")]; - char stringpool_str461[sizeof("NEXTSTEP")]; - char stringpool_str463[sizeof("WINDOWS-1250")]; - char stringpool_str464[sizeof("ISO_8859-2:1987")]; - char stringpool_str466[sizeof("IBM367")]; - char stringpool_str471[sizeof("JIS_C6226-1983")]; - char stringpool_str476[sizeof("UTF-16LE")]; - char stringpool_str477[sizeof("MACCYRILLIC")]; - char stringpool_str479[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str480[sizeof("MS-CYRL")]; - char stringpool_str481[sizeof("WINDOWS-1254")]; - char stringpool_str482[sizeof("CSEUCTW")]; - char stringpool_str484[sizeof("MACARABIC")]; - char stringpool_str485[sizeof("GREEK")]; - char stringpool_str489[sizeof("UCS-4LE")]; - char stringpool_str492[sizeof("UCS-4-INTERNAL")]; - char stringpool_str495[sizeof("UTF-7")]; - char stringpool_str496[sizeof("TIS620.2533")]; - char stringpool_str500[sizeof("CN-GB-ISOIR165")]; - char stringpool_str503[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str505[sizeof("MULELAO-1")]; - char stringpool_str506[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str507[sizeof("GB18030:2022")]; - char stringpool_str508[sizeof("WINDOWS-1253")]; - char stringpool_str513[sizeof("WINDOWS-936")]; - char stringpool_str520[sizeof("ISO_646.IRV:1991")]; - char stringpool_str528[sizeof("GB18030:2005")]; - char stringpool_str529[sizeof("MACUKRAINE")]; - char stringpool_str531[sizeof("CSISOLATINGREEK")]; - char stringpool_str532[sizeof("CSISOLATINHEBREW")]; - char stringpool_str533[sizeof("ISO_8859-7:2003")]; - char stringpool_str537[sizeof("HZ-GB-2312")]; - char stringpool_str538[sizeof("UCS-2BE")]; - char stringpool_str541[sizeof("MACTURKISH")]; - char stringpool_str545[sizeof("JAVA")]; - char stringpool_str548[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str551[sizeof("MS-HEBR")]; - char stringpool_str552[sizeof("CSISO58GB231280")]; - char stringpool_str554[sizeof("UTF-32LE")]; - char stringpool_str555[sizeof("MS_KANJI")]; - char stringpool_str562[sizeof("JISX0201-1976")]; - char stringpool_str567[sizeof("UTF-16BE")]; - char stringpool_str568[sizeof("MACCENTRALEUROPE")]; - char stringpool_str571[sizeof("SHIFT-JIS")]; - char stringpool_str577[sizeof("GEORGIAN-PS")]; - char stringpool_str580[sizeof("UCS-4BE")]; - char stringpool_str584[sizeof("WINDOWS-1257")]; - char stringpool_str587[sizeof("JIS_X0212")]; - char stringpool_str590[sizeof("CN-GB")]; - char stringpool_str593[sizeof("UCS-2-SWAPPED")]; - char stringpool_str602[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str603[sizeof("CSISO57GB1988")]; - char stringpool_str606[sizeof("JIS_X0201")]; - char stringpool_str609[sizeof("ISO_8859-7:1987")]; - char stringpool_str614[sizeof("JIS_X0208")]; - char stringpool_str615[sizeof("MACGREEK")]; - char stringpool_str624[sizeof("MS-GREEK")]; - char stringpool_str626[sizeof("JIS_X0212-1990")]; - char stringpool_str629[sizeof("UNICODEBIG")]; - char stringpool_str631[sizeof("SHIFT_JIS")]; - char stringpool_str633[sizeof("CSSHIFTJIS")]; - char stringpool_str635[sizeof("UCS-4-SWAPPED")]; - char stringpool_str645[sizeof("UTF-32BE")]; - char stringpool_str654[sizeof("JIS_X0208-1990")]; - char stringpool_str663[sizeof("ANSI_X3.4-1986")]; - char stringpool_str666[sizeof("ANSI_X3.4-1968")]; - char stringpool_str670[sizeof("TCVN5712-1:1993")]; - char stringpool_str674[sizeof("WINDOWS-874")]; - char stringpool_str692[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str699[sizeof("JIS_X0208-1983")]; - char stringpool_str712[sizeof("CSISO87JISX0208")]; - char stringpool_str715[sizeof("MS-ARAB")]; - char stringpool_str734[sizeof("HEBREW")]; - char stringpool_str757[sizeof("JIS_X0212.1990-0")]; - char stringpool_str760[sizeof("BIG5HKSCS")]; - char stringpool_str771[sizeof("BIG5-HKSCS")]; - char stringpool_str803[sizeof("JOHAB")]; - char stringpool_str808[sizeof("BIGFIVE")]; - char stringpool_str818[sizeof("WINBALTRIM")]; - char stringpool_str819[sizeof("BIG-FIVE")]; - char stringpool_str885[sizeof("KO_KR.JOHAP92")]; - char stringpool_str894[sizeof("MACHEBREW")]; - char stringpool_str895[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str899[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str906[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str942[sizeof("BIG5-HKSCS:2004")]; - }; -static const struct stringpool_t stringpool_contents = - { - "646", - "866", - "CN", - "CP866", - "CP1251", - "CP1256", - "862", - "CP1255", - "CP862", - "CP1258", - "CP1252", - "C99", - "CP819", - "5601", - "ISO8859-1", - "ISO8859-11", - "ISO8859-6", - "ISO8859-16", - "ISO8859-5", - "ISO8859-15", - "R8", - "ISO8859-8", - "CP50221", - "ISO8859-2", - "ISO-8859-1", - "ISO-8859-11", - "ISO-8859-6", - "ISO-8859-16", - "ISO-8859-5", - "ISO-8859-15", - "ISO-8859-8", - "ISO-8859-2", - "ISO8859-9", - "850", - "ASCII", - "CP850", - "ISO-IR-6", - "CP1250", - "ISO-8859-9", - "ISO-IR-166", - "HZ", - "ISO-IR-165", - "CP950", - "ISO-IR-126", - "UHC", - "ISO-IR-58", - "CP1131", - "CP1361", - "ISO-IR-226", - "ISO646-CN", - "CP949", - "MAC", - "ISO-2022-CN", - "CP936", - "EUCCN", - "ISO-IR-159", - "ISO-2022-CN-EXT", - "IBM866", - "ISO8859-10", - "ISO-IR-101", - "CP932", - "CP154", - "ISO-IR-199", - "EUC-CN", - "IBM862", - "CP1254", - "ISO-8859-10", - "ISO_8859-1", - "ISO_8859-11", - "ISO_8859-6", - "ISO_8859-16", - "ISO_8859-5", - "ISO_8859-15", - "IBM819", - "ISO_8859-16:2001", - "ISO_8859-8", - "ISO_8859-2", - "ISO-IR-109", - "ISO_8859-15:1998", - "ISO-IR-148", - "ISO-IR-110", - "RK1048", - "ISO_8859-9", - "ISO8859-4", - "ISO8859-14", - "L1", - "L6", - "L5", - "ISO-IR-149", - "L8", - "L2", - "CSASCII", - "KOI8-T", - "ISO-8859-4", - "ISO-8859-14", - "CSISO2022CN", - "US", - "ISO_8859-10:1992", - "TIS620", - "ISO-IR-138", - "IBM850", - "PT154", - "LATIN1", - "ISO-IR-100", - "LATIN6", - "ANSI-1251", - "LATIN5", - "CP1253", - "TIS-620", - "ISO-IR-14", - "LATIN8", - "LATIN2", - "ISO_8859-14:1998", - "CSUNICODE11", - "ISO_8859-10", - "UCS-2", - "MS936", - "UNICODE-1-1", - "ELOT_928", - "L4", - "ISO8859-3", - "ISO8859-13", - "LATIN-9", - "ISO-10646-UCS-2", - "TIS620-0", - "X0212", - "L10", - "UTF-16", - "ISO-8859-3", - "ISO-8859-13", - "CSKOI8R", - "UTF-8", - "CSKZ1048", - "ISO_8859-4", - "ISO_8859-14", - "ROMAN8", - "KZ-1048", - "KOI8-R", - "L3", - "ISO-IR-144", - "X0201", - "PTCP154", - "LATIN10", - "GB2312", - "KSC_5601", - "X0208", - "CSPTCP154", - "SJIS", - "US-ASCII", - "CP1133", - "MACTHAI", - "TCVN", - "ISO-10646-UCS-4", - "ISO-CELTIC", - "CSUNICODE", - "ECMA-118", - "ISO-IR-179", - "MS-ANSI", - "ARMSCII-8", - "CSUCS4", - "LATIN4", - "ISO-IR-203", - "CP874", - "UCS-4", - "ISO_8859-3", - "ISO_8859-13", - "ISO-2022-KR", - "EUCKR", - "JP", - "PCK", - "KOI8-U", - "EUC-KR", - "CNS11643", - "UTF-32", - "MACCROATIAN", - "VISCII", - "L7", - "CSVISCII", - "ISO646-US", - "HP-ROMAN8", - "TIS620.2529-1", - "GB_1988-80", - "GB18030", - "MACROMAN", - "CSISOLATIN1", - "CSISOLATIN6", - "CSISOLATIN5", - "KOREAN", - "CHINESE", - "LATIN3", - "CSISOLATINCYRILLIC", - "CSISOLATIN2", - "MS-EE", - "CP1257", - "ISO_8859-5:1988", - "KS_C_5601-1989", - "ISO_8859-8:1988", - "KOI8-RU", - "CSISO2022KR", - "CYRILLIC", - "CSUNICODE11UTF7", - "MACINTOSH", - "CSIBM866", - "ECMA-114", - "ISO_8859-9:1989", - "UNICODE-1-1-UTF-7", - "CSHPROMAN8", - "ISO8859-7", - "GBK", - "CSEUCKR", - "ISO-2022-JP-1", - "ASMO-708", - "ISO-8859-7", - "ISO-2022-JP-2", - "ARABIC", - "BIG5", - "GB_2312-80", - "CSBIG5", - "ISO_8859-4:1988", - "CSISOLATINARABIC", - "DECHANYU", - "STRK1048-2002", - "BIG-5", - "JIS0208", - "CN-BIG5", - "ISO-IR-57", - "ISO-IR-157", - "ISO-IR-87", - "DEC-HANYU", - "ISO-IR-127", - "MACICELAND", - "CP367", - "IBM-CP1133", - "UNICODELITTLE", - "GREEK8", - "ISO_8859-3:1988", - "CSMACINTOSH", - "CSKSC56011987", - "CSISOLATIN4", - "ISO646-JP", - "TCVN5712-1", - "ISO-2022-JP", - "TCVN-5712", - "EUCJP", - "DECKANJI", - "EUCTW", - "CSISO2022JP2", - "MACROMANIA", - "ISO_8859-7", - "EUC-JP", - "DEC-KANJI", - "EUC-TW", - "ISO-2022-JP-MS", - "TIS620.2533-1", - "CSISO159JISX02121990", - "JIS_C6220-1969-RO", - "CSISO14JISC6220RO", - "WINDOWS-1251", - "WINDOWS-1256", - "WINDOWS-1255", - "WINDOWS-1258", - "WINDOWS-1252", - "VISCII1.1-1", - "MS-TURK", - "CSISOLATIN3", - "CSGB2312", - "UCS-2LE", - "CSPC862LATINHEBREW", - "UCS-2-INTERNAL", - "TIS620.2533-0", - "KS_C_5601-1987", - "CSISO2022JP", - "LATIN7", - "ISO_8859-1:1987", - "ISO_8859-6:1987", - "NEXTSTEP", - "WINDOWS-1250", - "ISO_8859-2:1987", - "IBM367", - "JIS_C6226-1983", - "UTF-16LE", - "MACCYRILLIC", - "CYRILLIC-ASIAN", - "MS-CYRL", - "WINDOWS-1254", - "CSEUCTW", - "MACARABIC", - "GREEK", - "UCS-4LE", - "UCS-4-INTERNAL", - "UTF-7", - "TIS620.2533", - "CN-GB-ISOIR165", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "MULELAO-1", - "GEORGIAN-ACADEMY", - "GB18030:2022", - "WINDOWS-1253", - "WINDOWS-936", - "ISO_646.IRV:1991", - "GB18030:2005", - "MACUKRAINE", - "CSISOLATINGREEK", - "CSISOLATINHEBREW", - "ISO_8859-7:2003", - "HZ-GB-2312", - "UCS-2BE", - "MACTURKISH", - "JAVA", - "CSPC850MULTILINGUAL", - "MS-HEBR", - "CSISO58GB231280", - "UTF-32LE", - "MS_KANJI", - "JISX0201-1976", - "UTF-16BE", - "MACCENTRALEUROPE", - "SHIFT-JIS", - "GEORGIAN-PS", - "UCS-4BE", - "WINDOWS-1257", - "JIS_X0212", - "CN-GB", - "UCS-2-SWAPPED", - "CSEUCPKDFMTJAPANESE", - "CSISO57GB1988", - "JIS_X0201", - "ISO_8859-7:1987", - "JIS_X0208", - "MACGREEK", - "MS-GREEK", - "JIS_X0212-1990", - "UNICODEBIG", - "SHIFT_JIS", - "CSSHIFTJIS", - "UCS-4-SWAPPED", - "UTF-32BE", - "JIS_X0208-1990", - "ANSI_X3.4-1986", - "ANSI_X3.4-1968", - "TCVN5712-1:1993", - "WINDOWS-874", - "CSHALFWIDTHKATAKANA", - "JIS_X0208-1983", - "CSISO87JISX0208", - "MS-ARAB", - "HEBREW", - "JIS_X0212.1990-0", - "BIG5HKSCS", - "BIG5-HKSCS", - "JOHAB", - "BIGFIVE", - "WINBALTRIM", - "BIG-FIVE", - "KO_KR.JOHAP92", - "MACHEBREW", - "BIG5-HKSCS:2001", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:1999", - "BIG5-HKSCS:2004" - }; -#define stringpool ((const char *) &stringpool_contents) - -static const struct alias aliases[] = - { - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 23 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str6, ei_ascii}, - {-1}, {-1}, -#line 209 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str9, ei_cp866}, - {-1}, -#line 291 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str11, ei_iso646_cn}, - {-1}, -#line 207 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str13, ei_cp866}, -#line 175 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str14, ei_cp1251}, - {-1}, -#line 191 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str16, ei_cp1256}, -#line 205 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str17, ei_cp862}, -#line 188 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str18, ei_cp1255}, - {-1}, {-1}, -#line 203 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_cp862}, -#line 197 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_cp1258}, - {-1}, -#line 179 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str24, ei_cp1252}, - {-1}, -#line 52 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, ei_c99}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 58 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, ei_iso8859_1}, - {-1}, {-1}, -#line 360 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str35, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, -#line 63 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_iso8859_1}, -#line 140 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str41, ei_iso8859_11}, -#line 103 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str42, ei_iso8859_6}, -#line 167 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str43, ei_iso8859_16}, -#line 94 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_iso8859_5}, -#line 160 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_iso8859_15}, - {-1}, -#line 229 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str47, ei_hp_roman8}, -#line 121 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_iso8859_8}, -#line 321 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_iso2022_jpms}, -#line 71 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_iso8859_2}, -#line 54 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_iso8859_1}, -#line 138 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_iso8859_11}, -#line 95 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str53, ei_iso8859_6}, -#line 161 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_iso8859_16}, -#line 88 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_iso8859_5}, -#line 155 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str56, ei_iso8859_15}, - {-1}, {-1}, -#line 115 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_iso8859_8}, - {-1}, -#line 64 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str61, ei_iso8859_2}, -#line 129 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str62, ei_iso8859_9}, - {-1}, {-1}, -#line 201 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_cp850}, -#line 13 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_ascii}, - {-1}, {-1}, {-1}, -#line 199 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_cp850}, -#line 16 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_ascii}, -#line 172 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_cp1250}, -#line 122 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_iso8859_9}, -#line 254 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, ei_tis620}, -#line 338 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_hz}, -#line 296 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_isoir165}, -#line 350 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_cp950}, -#line 108 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_iso8859_7}, -#line 362 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_cp949}, -#line 294 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, ei_gb2312}, -#line 211 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str81, ei_cp1131}, -#line 364 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str82, ei_johab}, -#line 164 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, ei_iso8859_16}, - {-1}, -#line 289 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str85, ei_iso646_cn}, -#line 361 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, ei_cp949}, - {-1}, {-1}, {-1}, -#line 214 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str90, ei_mac_roman}, - {-1}, -#line 335 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_iso2022_cn}, -#line 329 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_cp936}, -#line 323 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str94, ei_euc_cn}, -#line 286 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_jisx0212}, -#line 337 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_iso2022_cn_ext}, - {-1}, -#line 208 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str98, ei_cp866}, -#line 137 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str99, ei_iso8859_10}, -#line 67 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str100, ei_iso8859_2}, -#line 314 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str101, ei_cp932}, -#line 238 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_pt154}, - {-1}, -#line 150 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, ei_iso8859_14}, -#line 322 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_euc_cn}, -#line 204 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_cp862}, - {-1}, -#line 185 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_cp1254}, - {-1}, -#line 130 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str110, ei_iso8859_10}, -#line 55 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str111, ei_iso8859_1}, -#line 139 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str112, ei_iso8859_11}, -#line 96 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_iso8859_6}, -#line 162 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str114, ei_iso8859_16}, -#line 89 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str115, ei_iso8859_5}, -#line 156 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str116, ei_iso8859_15}, -#line 59 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str117, ei_iso8859_1}, -#line 163 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_iso8859_16}, -#line 116 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str119, ei_iso8859_8}, - {-1}, -#line 65 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str121, ei_iso8859_2}, -#line 75 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, ei_iso8859_3}, -#line 157 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str123, ei_iso8859_15}, - {-1}, {-1}, -#line 125 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_iso8859_9}, - {-1}, {-1}, -#line 83 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str129, ei_iso8859_4}, - {-1}, -#line 241 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_rk1048}, - {-1}, -#line 123 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_iso8859_9}, -#line 87 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str134, ei_iso8859_4}, -#line 154 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str135, ei_iso8859_14}, - {-1}, -#line 61 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, ei_iso8859_1}, -#line 135 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, ei_iso8859_10}, -#line 127 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_iso8859_9}, -#line 301 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, ei_ksc5601}, -#line 152 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, ei_iso8859_14}, -#line 69 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str142, ei_iso8859_2}, -#line 22 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_ascii}, -#line 235 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, ei_koi8_t}, -#line 80 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str145, ei_iso8859_4}, -#line 147 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str146, ei_iso8859_14}, -#line 336 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str147, ei_iso2022_cn}, - {-1}, {-1}, -#line 21 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_ascii}, -#line 132 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_10}, -#line 249 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_tis620}, -#line 118 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_iso8859_8}, - {-1}, -#line 200 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_cp850}, -#line 236 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_pt154}, -#line 60 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str157, ei_iso8859_1}, -#line 57 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_iso8859_1}, -#line 134 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_iso8859_10}, -#line 178 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_cp1251}, -#line 126 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_iso8859_9}, -#line 182 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_cp1253}, -#line 248 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_tis620}, -#line 267 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_iso646_jp}, -#line 151 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_iso8859_14}, - {-1}, -#line 68 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_2}, -#line 149 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_iso8859_14}, -#line 31 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_ucs2be}, -#line 131 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_iso8859_10}, - {-1}, {-1}, -#line 25 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_ucs2}, - {-1}, {-1}, {-1}, -#line 330 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str177, ei_cp936}, - {-1}, {-1}, -#line 30 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_ucs2be}, -#line 110 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_iso8859_7}, - {-1}, {-1}, -#line 85 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_iso8859_4}, - {-1}, {-1}, {-1}, -#line 79 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso8859_3}, -#line 146 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_iso8859_13}, -#line 159 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_iso8859_15}, - {-1}, -#line 26 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_ucs2}, -#line 250 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str193, ei_tis620}, -#line 285 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_jisx0212}, - {-1}, -#line 166 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_iso8859_16}, - {-1}, -#line 39 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_utf16}, -#line 72 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_iso8859_3}, -#line 141 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_iso8859_13}, - {-1}, -#line 169 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_koi8_r}, -#line 24 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_utf8}, -#line 244 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_rk1048}, -#line 81 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str205, ei_iso8859_4}, -#line 148 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str206, ei_iso8859_14}, - {-1}, -#line 228 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_hp_roman8}, -#line 243 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_rk1048}, -#line 168 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_koi8_r}, -#line 77 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str211, ei_iso8859_3}, -#line 91 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_iso8859_5}, -#line 272 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_jisx0201}, -#line 237 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_pt154}, - {-1}, -#line 165 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_iso8859_16}, -#line 324 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_euc_cn}, - {-1}, -#line 298 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_ksc5601}, - {-1}, -#line 278 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_jisx0208}, - {-1}, {-1}, {-1}, -#line 240 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_pt154}, -#line 310 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_sjis}, -#line 12 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str227, ei_ascii}, - {-1}, -#line 246 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, ei_cp1133}, - {-1}, -#line 226 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_mac_thai}, - {-1}, -#line 261 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_tcvn}, -#line 35 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_ucs4}, - {-1}, {-1}, -#line 153 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_iso8859_14}, -#line 27 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_ucs2}, - {-1}, {-1}, {-1}, -#line 109 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, ei_iso8859_7}, -#line 143 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_iso8859_13}, -#line 181 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_cp1252}, - {-1}, {-1}, -#line 232 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_armscii_8}, - {-1}, {-1}, -#line 36 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_ucs4}, -#line 84 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_iso8859_4}, - {-1}, -#line 158 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_iso8859_15}, -#line 256 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_cp874}, - {-1}, {-1}, -#line 34 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_ucs4}, - {-1}, -#line 73 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_iso8859_3}, -#line 142 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_iso8859_13}, - {-1}, {-1}, {-1}, {-1}, -#line 366 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso2022_kr}, - {-1}, -#line 358 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 268 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_iso646_jp}, -#line 313 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_sjis}, - {-1}, -#line 170 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_koi8_u}, - {-1}, -#line 357 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_euc_kr}, -#line 343 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_euc_tw}, -#line 42 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_utf32}, - {-1}, {-1}, -#line 218 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str283, ei_mac_croatian}, - {-1}, {-1}, -#line 258 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_viscii}, -#line 145 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_iso8859_13}, - {-1}, -#line 260 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_viscii}, -#line 14 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_ascii}, -#line 227 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str291, ei_hp_roman8}, -#line 251 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_tis620}, -#line 288 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_iso646_cn}, -#line 332 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str294, ei_gb18030_2005}, - {-1}, -#line 212 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_mac_roman}, -#line 62 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str297, ei_iso8859_1}, - {-1}, -#line 136 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_iso8859_10}, - {-1}, -#line 128 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_iso8859_9}, -#line 303 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ksc5601}, -#line 327 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_euc_cn}, - {-1}, -#line 76 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_iso8859_3}, -#line 93 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str306, ei_iso8859_5}, -#line 70 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 174 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_cp1250}, -#line 194 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_cp1257}, -#line 90 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_iso8859_5}, -#line 300 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_ksc5601}, -#line 117 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_iso8859_8}, -#line 171 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_koi8_ru}, - {-1}, -#line 367 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str320, ei_iso2022_kr}, - {-1}, -#line 92 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_iso8859_5}, -#line 47 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_utf7}, - {-1}, -#line 213 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_mac_roman}, - {-1}, -#line 210 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_cp866}, -#line 99 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_iso8859_6}, - {-1}, {-1}, -#line 124 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_iso8859_9}, - {-1}, {-1}, {-1}, {-1}, -#line 46 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_utf7}, - {-1}, -#line 230 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_hp_roman8}, - {-1}, -#line 114 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_iso8859_7}, -#line 328 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_ces_gbk}, - {-1}, {-1}, -#line 359 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_euc_kr}, - {-1}, {-1}, {-1}, -#line 317 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_iso2022_jp1}, - {-1}, -#line 100 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_iso8859_6}, -#line 104 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_iso8859_7}, - {-1}, -#line 318 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_iso2022_jp2}, -#line 101 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_iso8859_6}, - {-1}, -#line 344 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str356, ei_ces_big5}, - {-1}, -#line 293 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_gb2312}, -#line 349 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_ces_big5}, -#line 82 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_iso8859_4}, - {-1}, {-1}, -#line 102 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_iso8859_6}, -#line 371 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_dec_hanyu}, -#line 242 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_rk1048}, - {-1}, -#line 345 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_ces_big5}, -#line 277 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_jisx0208}, - {-1}, -#line 348 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_ces_big5}, - {-1}, -#line 290 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_iso646_cn}, -#line 133 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_iso8859_10}, -#line 279 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_jisx0208}, -#line 370 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_dec_hanyu}, -#line 98 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str376, ei_iso8859_6}, -#line 217 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_mac_iceland}, - {-1}, {-1}, {-1}, -#line 19 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str381, ei_ascii}, - {-1}, -#line 247 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_cp1133}, -#line 33 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ucs2le}, - {-1}, -#line 111 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_iso8859_7}, -#line 74 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_iso8859_3}, -#line 215 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_mac_roman}, - {-1}, -#line 302 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_ksc5601}, -#line 86 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_iso8859_4}, - {-1}, {-1}, -#line 266 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_iso646_jp}, - {-1}, {-1}, {-1}, -#line 263 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_tcvn}, - {-1}, {-1}, -#line 315 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_iso2022_jp}, -#line 262 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_tcvn}, -#line 305 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_euc_jp}, -#line 369 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_dec_kanji}, -#line 341 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_euc_tw}, - {-1}, -#line 319 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_iso2022_jp2}, - {-1}, {-1}, -#line 219 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str410, ei_mac_romania}, -#line 105 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_iso8859_7}, - {-1}, {-1}, -#line 304 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_euc_jp}, -#line 368 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_dec_kanji}, -#line 340 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 320 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_iso2022_jpms}, -#line 253 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_tis620}, - {-1}, {-1}, -#line 287 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str427, ei_jisx0212}, -#line 265 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_iso646_jp}, - {-1}, -#line 269 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_iso646_jp}, - {-1}, {-1}, {-1}, -#line 176 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_cp1251}, -#line 192 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_cp1256}, -#line 189 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str436, ei_cp1255}, - {-1}, -#line 198 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_cp1258}, -#line 180 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_cp1252}, -#line 259 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_viscii}, -#line 187 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_cp1254}, - {-1}, {-1}, {-1}, -#line 78 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str445, ei_iso8859_3}, -#line 326 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str446, ei_euc_cn}, -#line 32 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_ucs2le}, -#line 206 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_cp862}, - {-1}, -#line 48 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_ucs2internal}, - {-1}, {-1}, -#line 252 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_tis620}, - {-1}, -#line 299 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_ksc5601}, -#line 316 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_iso2022_jp}, -#line 144 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_iso8859_13}, - {-1}, -#line 56 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_iso8859_1}, -#line 97 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str460, ei_iso8859_6}, -#line 231 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_nextstep}, - {-1}, -#line 173 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp1250}, -#line 66 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_iso8859_2}, - {-1}, -#line 20 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, -#line 280 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, -#line 41 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_utf16le}, -#line 220 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str477, ei_mac_cyrillic}, - {-1}, -#line 239 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_pt154}, -#line 177 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_cp1251}, -#line 186 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_cp1254}, -#line 342 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_euc_tw}, - {-1}, -#line 225 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_mac_arabic}, -#line 112 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_iso8859_7}, - {-1}, {-1}, {-1}, -#line 38 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ucs4le}, - {-1}, {-1}, -#line 50 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_ucs4internal}, - {-1}, {-1}, -#line 45 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_utf7}, -#line 255 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_tis620}, - {-1}, {-1}, {-1}, -#line 297 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_isoir165}, - {-1}, {-1}, -#line 306 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_euc_jp}, - {-1}, -#line 245 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_mulelao}, -#line 233 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_georgian_academy}, -#line 334 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_gb18030_2022}, -#line 183 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_cp1253}, - {-1}, {-1}, {-1}, {-1}, -#line 331 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_cp936}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 15 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 333 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_gb18030_2005}, -#line 221 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_mac_ukraine}, - {-1}, -#line 113 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_iso8859_7}, -#line 120 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_iso8859_8}, -#line 107 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_iso8859_7}, - {-1}, {-1}, {-1}, -#line 339 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_hz}, -#line 28 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_ucs2be}, - {-1}, {-1}, -#line 223 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_mac_turkish}, - {-1}, {-1}, {-1}, -#line 53 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_java}, - {-1}, {-1}, -#line 202 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_cp850}, - {-1}, {-1}, -#line 190 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_cp1255}, -#line 295 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_gb2312}, - {-1}, -#line 44 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_utf32le}, -#line 311 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, -#line 40 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_utf16be}, -#line 216 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_mac_centraleurope}, - {-1}, {-1}, -#line 309 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 234 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_georgian_ps}, - {-1}, {-1}, -#line 37 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_ucs4be}, - {-1}, {-1}, {-1}, -#line 195 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str584, ei_cp1257}, - {-1}, {-1}, -#line 282 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str587, ei_jisx0212}, - {-1}, {-1}, -#line 325 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_euc_cn}, - {-1}, {-1}, -#line 49 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_ucs2swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 307 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str602, ei_euc_jp}, -#line 292 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_iso646_cn}, - {-1}, {-1}, -#line 270 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str606, ei_jisx0201}, - {-1}, {-1}, -#line 106 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str609, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, -#line 274 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_jisx0208}, -#line 222 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_mac_greek}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 184 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_cp1253}, - {-1}, -#line 284 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_jisx0212}, - {-1}, {-1}, -#line 29 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_ucs2be}, - {-1}, -#line 308 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_sjis}, - {-1}, -#line 312 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_sjis}, - {-1}, -#line 51 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str635, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_utf32be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 276 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str654, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 18 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_ascii}, - {-1}, {-1}, -#line 17 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_ascii}, - {-1}, {-1}, {-1}, -#line 264 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_tcvn}, - {-1}, {-1}, {-1}, -#line 257 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str674, ei_cp874}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 273 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 275 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 281 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_jisx0208}, - {-1}, {-1}, -#line 193 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str715, ei_cp1256}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 119 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str734, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 283 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_jisx0212}, - {-1}, {-1}, -#line 355 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 354 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str771, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 363 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_johab}, - {-1}, {-1}, {-1}, {-1}, -#line 347 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str808, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 196 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_cp1257}, -#line 346 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 365 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str885, ei_johab}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 224 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_mac_hebrew}, -#line 352 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str895, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, -#line 356 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str899, ei_big5hkscs2008}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 351 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_big5hkscs1999}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 353 "lib/generated/aliases_syssolaris.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str942, ei_big5hkscs2004} - }; - -const struct alias * -HashPool::aliases_lookup (const char *str, size_t len) -{ - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - unsigned int key = aliases_hash (str, len); - - if (key <= MAX_HASH_VALUE) - { - int o = aliases[key].name; - if (o >= 0) - { - const char *s = o + stringpool; - - if (*str == *s && !strcmp (str + 1, s + 1)) - return &aliases[key]; - } - } - } - return 0; -} diff --git a/lib/generated/aliases_zos.h b/lib/generated/aliases_zos.h deleted file mode 100644 index 9143ea16..00000000 --- a/lib/generated/aliases_zos.h +++ /dev/null @@ -1,241 +0,0 @@ - S(zos_0, "IBM-037", ei_ebcdic037 ) - S(zos_1, "IBM037", ei_ebcdic037 ) - S(zos_2, "CP037", ei_ebcdic037 ) - S(zos_3, "EBCDIC-CP-US", ei_ebcdic037 ) - S(zos_4, "EBCDIC-CP-CA", ei_ebcdic037 ) - S(zos_5, "EBCDIC-CP-WT", ei_ebcdic037 ) - S(zos_6, "EBCDIC-CP-NL", ei_ebcdic037 ) - S(zos_7, "CSIBM037", ei_ebcdic037 ) - S(zos_8, "IBM-273", ei_ebcdic273 ) - S(zos_9, "IBM273", ei_ebcdic273 ) - S(zos_10, "CP273", ei_ebcdic273 ) - S(zos_11, "CSIBM273", ei_ebcdic273 ) - S(zos_12, "IBM-277", ei_ebcdic277 ) - S(zos_13, "IBM277", ei_ebcdic277 ) - S(zos_14, "EBCDIC-CP-DK", ei_ebcdic277 ) - S(zos_15, "EBCDIC-CP-NO", ei_ebcdic277 ) - S(zos_16, "CSIBM277", ei_ebcdic277 ) - S(zos_17, "IBM-278", ei_ebcdic278 ) - S(zos_18, "IBM278", ei_ebcdic278 ) - S(zos_19, "CP278", ei_ebcdic278 ) - S(zos_20, "EBCDIC-CP-FI", ei_ebcdic278 ) - S(zos_21, "EBCDIC-CP-SE", ei_ebcdic278 ) - S(zos_22, "CSIBM278", ei_ebcdic278 ) - S(zos_23, "IBM-280", ei_ebcdic280 ) - S(zos_24, "IBM280", ei_ebcdic280 ) - S(zos_25, "CP280", ei_ebcdic280 ) - S(zos_26, "EBCDIC-CP-IT", ei_ebcdic280 ) - S(zos_27, "CSIBM280", ei_ebcdic280 ) - S(zos_28, "IBM-282", ei_ebcdic282 ) - S(zos_29, "IBM282", ei_ebcdic282 ) - S(zos_30, "IBM-284", ei_ebcdic284 ) - S(zos_31, "IBM284", ei_ebcdic284 ) - S(zos_32, "CP284", ei_ebcdic284 ) - S(zos_33, "EBCDIC-CP-ES", ei_ebcdic284 ) - S(zos_34, "CSIBM284", ei_ebcdic284 ) - S(zos_35, "IBM-285", ei_ebcdic285 ) - S(zos_36, "IBM285", ei_ebcdic285 ) - S(zos_37, "CP285", ei_ebcdic285 ) - S(zos_38, "EBCDIC-CP-GB", ei_ebcdic285 ) - S(zos_39, "CSIBM285", ei_ebcdic285 ) - S(zos_40, "IBM-297", ei_ebcdic297 ) - S(zos_41, "IBM297", ei_ebcdic297 ) - S(zos_42, "CP297", ei_ebcdic297 ) - S(zos_43, "EBCDIC-CP-FR", ei_ebcdic297 ) - S(zos_44, "CSIBM297", ei_ebcdic297 ) - S(zos_45, "IBM-423", ei_ebcdic423 ) - S(zos_46, "IBM423", ei_ebcdic423 ) - S(zos_47, "CP423", ei_ebcdic423 ) - S(zos_48, "EBCDIC-CP-GR", ei_ebcdic423 ) - S(zos_49, "CSIBM423", ei_ebcdic423 ) - S(zos_50, "IBM-424", ei_ebcdic424 ) - S(zos_51, "IBM424", ei_ebcdic424 ) - S(zos_52, "CP424", ei_ebcdic424 ) - S(zos_53, "EBCDIC-CP-HE", ei_ebcdic424 ) - S(zos_54, "CSIBM424", ei_ebcdic424 ) - S(zos_55, "IBM-425", ei_ebcdic425 ) - S(zos_56, "IBM425", ei_ebcdic425 ) - S(zos_57, "IBM-500", ei_ebcdic500 ) - S(zos_58, "IBM500", ei_ebcdic500 ) - S(zos_59, "CP500", ei_ebcdic500 ) - S(zos_60, "EBCDIC-CP-BE", ei_ebcdic500 ) - S(zos_61, "EBCDIC-CP-CH", ei_ebcdic500 ) - S(zos_62, "CSIBM500", ei_ebcdic500 ) - S(zos_63, "IBM-838", ei_ebcdic838 ) - S(zos_64, "IBM838", ei_ebcdic838 ) - S(zos_65, "IBM-THAI", ei_ebcdic838 ) - S(zos_66, "CSIBMTHAI", ei_ebcdic838 ) - S(zos_67, "IBM-870", ei_ebcdic870 ) - S(zos_68, "IBM870", ei_ebcdic870 ) - S(zos_69, "CP870", ei_ebcdic870 ) - S(zos_70, "EBCDIC-CP-ROECE", ei_ebcdic870 ) - S(zos_71, "EBCDIC-CP-YU", ei_ebcdic870 ) - S(zos_72, "CSIBM870", ei_ebcdic870 ) - S(zos_73, "IBM-871", ei_ebcdic871 ) - S(zos_74, "IBM871", ei_ebcdic871 ) - S(zos_75, "CP871", ei_ebcdic871 ) - S(zos_76, "EBCDIC-CP-IS", ei_ebcdic871 ) - S(zos_77, "CSIBM871", ei_ebcdic871 ) - S(zos_78, "IBM-875", ei_ebcdic875 ) - S(zos_79, "IBM875", ei_ebcdic875 ) - S(zos_80, "CP875", ei_ebcdic875 ) - S(zos_81, "EBCDIC-GREEK", ei_ebcdic875 ) - S(zos_82, "IBM-880", ei_ebcdic880 ) - S(zos_83, "IBM880", ei_ebcdic880 ) - S(zos_84, "CP880", ei_ebcdic880 ) - S(zos_85, "EBCDIC-CYRILLIC", ei_ebcdic880 ) - S(zos_86, "CSIBM880", ei_ebcdic880 ) - S(zos_87, "IBM-905", ei_ebcdic905 ) - S(zos_88, "IBM905", ei_ebcdic905 ) - S(zos_89, "CP905", ei_ebcdic905 ) - S(zos_90, "EBCDIC-CP-TR", ei_ebcdic905 ) - S(zos_91, "CSIBM905", ei_ebcdic905 ) - S(zos_92, "IBM-924", ei_ebcdic924 ) - S(zos_93, "IBM924", ei_ebcdic924 ) - S(zos_94, "IBM00924", ei_ebcdic924 ) - S(zos_95, "CCSID00924", ei_ebcdic924 ) - S(zos_96, "CP00924", ei_ebcdic924 ) - S(zos_97, "EBCDIC-LATIN9-EURO", ei_ebcdic924 ) - S(zos_98, "CSIBM00924", ei_ebcdic924 ) - S(zos_99, "IBM-1025", ei_ebcdic1025 ) - S(zos_100, "IBM1025", ei_ebcdic1025 ) - S(zos_101, "CP1025", ei_ebcdic1025 ) - S(zos_102, "IBM-1026", ei_ebcdic1026 ) - S(zos_103, "IBM1026", ei_ebcdic1026 ) - S(zos_104, "CP1026", ei_ebcdic1026 ) - S(zos_105, "CSIBM1026", ei_ebcdic1026 ) - S(zos_106, "IBM-1047", ei_ebcdic1047 ) - S(zos_107, "IBM1047", ei_ebcdic1047 ) - S(zos_108, "CP1047", ei_ebcdic1047 ) - S(zos_109, "CSIBM1047", ei_ebcdic1047 ) - S(zos_110, "IBM-1097", ei_ebcdic1097 ) - S(zos_111, "IBM1097", ei_ebcdic1097 ) - S(zos_112, "CP1097", ei_ebcdic1097 ) - S(zos_113, "IBM-1112", ei_ebcdic1112 ) - S(zos_114, "IBM1112", ei_ebcdic1112 ) - S(zos_115, "CP1112", ei_ebcdic1112 ) - S(zos_116, "IBM-1122", ei_ebcdic1122 ) - S(zos_117, "IBM1122", ei_ebcdic1122 ) - S(zos_118, "CP1122", ei_ebcdic1122 ) - S(zos_119, "IBM-1123", ei_ebcdic1123 ) - S(zos_120, "IBM1123", ei_ebcdic1123 ) - S(zos_121, "CP1123", ei_ebcdic1123 ) - S(zos_122, "IBM-1130", ei_ebcdic1130 ) - S(zos_123, "IBM1130", ei_ebcdic1130 ) - S(zos_124, "CP1130", ei_ebcdic1130 ) - S(zos_125, "IBM-1132", ei_ebcdic1132 ) - S(zos_126, "IBM1132", ei_ebcdic1132 ) - S(zos_127, "CP1132", ei_ebcdic1132 ) - S(zos_128, "IBM-1137", ei_ebcdic1137 ) - S(zos_129, "IBM1137", ei_ebcdic1137 ) - S(zos_130, "CP1137", ei_ebcdic1137 ) - S(zos_131, "IBM-1140", ei_ebcdic1140 ) - S(zos_132, "IBM1140", ei_ebcdic1140 ) - S(zos_133, "IBM01140", ei_ebcdic1140 ) - S(zos_134, "CCSID01140", ei_ebcdic1140 ) - S(zos_135, "CP01140", ei_ebcdic1140 ) - S(zos_136, "EBCDIC-US-37+EURO", ei_ebcdic1140 ) - S(zos_137, "CSIBM01140", ei_ebcdic1140 ) - S(zos_138, "IBM-1141", ei_ebcdic1141 ) - S(zos_139, "IBM1141", ei_ebcdic1141 ) - S(zos_140, "IBM01141", ei_ebcdic1141 ) - S(zos_141, "CCSID01141", ei_ebcdic1141 ) - S(zos_142, "CP01141", ei_ebcdic1141 ) - S(zos_143, "EBCDIC-DE-273+EURO", ei_ebcdic1141 ) - S(zos_144, "CSIBM01141", ei_ebcdic1141 ) - S(zos_145, "IBM-1142", ei_ebcdic1142 ) - S(zos_146, "IBM1142", ei_ebcdic1142 ) - S(zos_147, "IBM01142", ei_ebcdic1142 ) - S(zos_148, "CCSID01142", ei_ebcdic1142 ) - S(zos_149, "CP01142", ei_ebcdic1142 ) - S(zos_150, "EBCDIC-DK-277+EURO", ei_ebcdic1142 ) - S(zos_151, "EBCDIC-NO-277+EURO", ei_ebcdic1142 ) - S(zos_152, "CSIBM01142", ei_ebcdic1142 ) - S(zos_153, "IBM-1143", ei_ebcdic1143 ) - S(zos_154, "IBM1143", ei_ebcdic1143 ) - S(zos_155, "IBM01143", ei_ebcdic1143 ) - S(zos_156, "CCSID01143", ei_ebcdic1143 ) - S(zos_157, "CP01143", ei_ebcdic1143 ) - S(zos_158, "EBCDIC-FI-278+EURO", ei_ebcdic1143 ) - S(zos_159, "EBCDIC-SE-278+EURO", ei_ebcdic1143 ) - S(zos_160, "CSIBM01143", ei_ebcdic1143 ) - S(zos_161, "IBM-1144", ei_ebcdic1144 ) - S(zos_162, "IBM1144", ei_ebcdic1144 ) - S(zos_163, "IBM01144", ei_ebcdic1144 ) - S(zos_164, "CCSID01144", ei_ebcdic1144 ) - S(zos_165, "CP01144", ei_ebcdic1144 ) - S(zos_166, "EBCDIC-IT-280+EURO", ei_ebcdic1144 ) - S(zos_167, "CSPC8CODEPAGE1144", ei_ebcdic1144 ) - S(zos_168, "IBM-1145", ei_ebcdic1145 ) - S(zos_169, "IBM1145", ei_ebcdic1145 ) - S(zos_170, "IBM01145", ei_ebcdic1145 ) - S(zos_171, "CCSID01145", ei_ebcdic1145 ) - S(zos_172, "CP01145", ei_ebcdic1145 ) - S(zos_173, "EBCDIC-ES-284+EURO", ei_ebcdic1145 ) - S(zos_174, "CSIBM01145", ei_ebcdic1145 ) - S(zos_175, "IBM-1146", ei_ebcdic1146 ) - S(zos_176, "IBM1146", ei_ebcdic1146 ) - S(zos_177, "IBM01146", ei_ebcdic1146 ) - S(zos_178, "CCSID01146", ei_ebcdic1146 ) - S(zos_179, "CP01146", ei_ebcdic1146 ) - S(zos_180, "EBCDIC-GB-285+EURO", ei_ebcdic1146 ) - S(zos_181, "CSPC8CODEPAGE1146", ei_ebcdic1146 ) - S(zos_182, "IBM-1147", ei_ebcdic1147 ) - S(zos_183, "IBM1147", ei_ebcdic1147 ) - S(zos_184, "IBM01147", ei_ebcdic1147 ) - S(zos_185, "CCSID01147", ei_ebcdic1147 ) - S(zos_186, "CP01147", ei_ebcdic1147 ) - S(zos_187, "EBCDIC-FR-297+EURO", ei_ebcdic1147 ) - S(zos_188, "CSIBM01147", ei_ebcdic1147 ) - S(zos_189, "IBM-1148", ei_ebcdic1148 ) - S(zos_190, "IBM1148", ei_ebcdic1148 ) - S(zos_191, "IBM01148", ei_ebcdic1148 ) - S(zos_192, "CCSID01148", ei_ebcdic1148 ) - S(zos_193, "CP01148", ei_ebcdic1148 ) - S(zos_194, "EBCDIC-INTERNATIONAL-500+EURO", ei_ebcdic1148 ) - S(zos_195, "CSIBM01148", ei_ebcdic1148 ) - S(zos_196, "IBM-1149", ei_ebcdic1149 ) - S(zos_197, "IBM1149", ei_ebcdic1149 ) - S(zos_198, "IBM01149", ei_ebcdic1149 ) - S(zos_199, "CCSID01149", ei_ebcdic1149 ) - S(zos_200, "CP01149", ei_ebcdic1149 ) - S(zos_201, "EBCDIC-IS-871+EURO", ei_ebcdic1149 ) - S(zos_202, "CSIBM01149", ei_ebcdic1149 ) - S(zos_203, "IBM-1153", ei_ebcdic1153 ) - S(zos_204, "IBM1153", ei_ebcdic1153 ) - S(zos_205, "CP1153", ei_ebcdic1153 ) - S(zos_206, "IBM-1154", ei_ebcdic1154 ) - S(zos_207, "IBM1154", ei_ebcdic1154 ) - S(zos_208, "CP1154", ei_ebcdic1154 ) - S(zos_209, "IBM-1155", ei_ebcdic1155 ) - S(zos_210, "IBM1155", ei_ebcdic1155 ) - S(zos_211, "CP1155", ei_ebcdic1155 ) - S(zos_212, "IBM-1156", ei_ebcdic1156 ) - S(zos_213, "IBM1156", ei_ebcdic1156 ) - S(zos_214, "CP1156", ei_ebcdic1156 ) - S(zos_215, "IBM-1157", ei_ebcdic1157 ) - S(zos_216, "IBM1157", ei_ebcdic1157 ) - S(zos_217, "CP1157", ei_ebcdic1157 ) - S(zos_218, "IBM-1158", ei_ebcdic1158 ) - S(zos_219, "IBM1158", ei_ebcdic1158 ) - S(zos_220, "CP1158", ei_ebcdic1158 ) - S(zos_221, "IBM-1160", ei_ebcdic1160 ) - S(zos_222, "IBM1160", ei_ebcdic1160 ) - S(zos_223, "CP1160", ei_ebcdic1160 ) - S(zos_224, "IBM-1164", ei_ebcdic1164 ) - S(zos_225, "IBM1164", ei_ebcdic1164 ) - S(zos_226, "CP1164", ei_ebcdic1164 ) - S(zos_227, "IBM-1165", ei_ebcdic1165 ) - S(zos_228, "IBM1165", ei_ebcdic1165 ) - S(zos_229, "IBM-1166", ei_ebcdic1166 ) - S(zos_230, "IBM1166", ei_ebcdic1166 ) - S(zos_231, "CP1166", ei_ebcdic1166 ) - S(zos_232, "IBM-4971", ei_ebcdic4971 ) - S(zos_233, "IBM4971", ei_ebcdic4971 ) - S(zos_234, "CP4971", ei_ebcdic4971 ) - S(zos_235, "IBM-12712", ei_ebcdic12712 ) - S(zos_236, "IBM12712", ei_ebcdic12712 ) - S(zos_237, "CP12712", ei_ebcdic12712 ) - S(zos_238, "IBM-16804", ei_ebcdic16804 ) - S(zos_239, "IBM16804", ei_ebcdic16804 ) - S(zos_240, "CP16804", ei_ebcdic16804 ) diff --git a/lib/generated/flags.h b/lib/generated/flags.h index 158ec9da..ce36f62e 100644 --- a/lib/generated/flags.h +++ b/lib/generated/flags.h @@ -150,13 +150,6 @@ #define ei_cp865_oflags (0) #define ei_cp869_oflags (HAVE_QUOTATION_MARKS) #define ei_cp1125_oflags (0) -#define ei_euc_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_shift_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_iso2022_jp3_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_big5_2003_oflags (HAVE_QUOTATION_MARKS) -#define ei_tds565_oflags (0) -#define ei_atarist_oflags (HAVE_ACCENTS) -#define ei_riscos1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_ebcdic037_oflags (HAVE_ACCENTS) #define ei_ebcdic273_oflags (HAVE_ACCENTS) #define ei_ebcdic277_oflags (HAVE_ACCENTS) @@ -210,3 +203,10 @@ #define ei_ebcdic4971_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_ebcdic12712_oflags (HAVE_ACCENTS) #define ei_ebcdic16804_oflags (0) +#define ei_euc_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_shift_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_iso2022_jp3_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) +#define ei_big5_2003_oflags (HAVE_QUOTATION_MARKS) +#define ei_tds565_oflags (0) +#define ei_atarist_oflags (HAVE_ACCENTS) +#define ei_riscos1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 7109c4a3..fade8936 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -24,10 +24,6 @@ #include #include -#ifndef DLL_VARIABLE -#error Macro "DLL_VARIABLE" is not defined, you should define it for export symbols. -#endif - namespace cppp { namespace base @@ -38,33 +34,6 @@ namespace reiconv /* Iconv handle. */ typedef void* iconv_t; -#if ENABLE_EXTRA -/* - * Consider all system dependent encodings, for any system, - * and the extra encodings. - */ -#define USE_AIX -#define USE_DOS -#define USE_ZOS -#define USE_EXTRA -#else -/* - * Consider those system dependent encodings that are needed for the - * current system. - */ -#ifdef _AIX -#define USE_AIX -#endif -#if defined(__DJGPP__) || (defined(_WIN32) && (defined(_MSC_VER) || defined(__MINGW32__))) -#define USE_DOS -#endif -/* Enable the EBCDIC encodings not only on z/OS but also on Linux/s390, for - easier interoperability between z/OS and Linux/s390. */ -#if defined(__MVS__) || (defined(__linux__) && (defined(__s390__) || defined(__s390x__))) -#define USE_ZOS -#endif -#endif - /* * Data type for general conversion loop. */ @@ -93,19 +62,8 @@ struct encoding enum { #define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, -#include "encodings.def" -#ifdef USE_AIX -#include "encodings_aix.def" -#endif -#ifdef USE_DOS -#include "encodings_dos.def" -#endif -#ifdef USE_ZOS -#include "encodings_zos.def" -#endif -#ifdef USE_EXTRA -#include "encodings_extra.def" -#endif +#include "encodings.h.snippet" + #undef DEFENCODING ei_for_broken_compilers_that_dont_like_trailing_commas }; @@ -113,19 +71,7 @@ enum static struct encoding const all_encodings[] = { #define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2, ei_##xxx##_oflags, codepage}, -#include "encodings.def" -#ifdef USE_AIX -#include "encodings_aix.def" -#endif -#ifdef USE_DOS -#include "encodings_dos.def" -#endif -#ifdef USE_ZOS -#include "encodings_zos.def" -#endif -#ifdef USE_EXTRA -#include "encodings_extra.def" -#endif +#include "encodings.h.snippet" #undef DEFENCODING }; #undef DEFALIAS @@ -154,58 +100,27 @@ static inline int lookup_by_codepage(int codepage) * const struct alias * HashPool::aliases_lookup (const char *str, unsigned int len); * #define MAX_WORD_LENGTH ... */ -#if defined _AIX -#include "aliases_sysaix.h" -#elif defined hpux || defined __hpux -#include "aliases_syshpux.h" -#elif defined __sun -#include "aliases_syssolaris.h" -#else #include "aliases.h" -#endif -/* - * System dependent alias lookup function. - * Defines - * inline static const struct alias* aliases2_lookup (const char *str); - */ -#if defined(USE_AIX) || defined(USE_DOS) || defined(USE_ZOS) || defined(USE_EXTRA) /* || ... */ -struct stringpool2_t -{ -#define S(tag, name, encoding_index) char stringpool_##tag[sizeof(name)]; -#include "aliases2.h" -#undef S -}; -static const struct stringpool2_t stringpool2_contents = { -#define S(tag, name, encoding_index) name, -#include "aliases2.h" -#undef S -}; -#define stringpool2 ((const char *)&stringpool2_contents) -static const struct alias sysdep_aliases[] = { -#define S(tag, name, encoding_index) {(int)(size_t)(void*)&((struct stringpool2_t *)0)->stringpool_##tag, encoding_index}, -#include "aliases2.h" -#undef S -}; -inline static const struct alias* aliases2_lookup(const char* str) -{ - const struct alias *ptr; - unsigned int count; - for (ptr = sysdep_aliases, count = sizeof(sysdep_aliases) / sizeof(sysdep_aliases[0]); count > 0; ptr++, count--) - if (!strcmp(str, stringpool2 + ptr->name)) - return ptr; - return nullptr; -} -#else #define aliases2_lookup(str) nullptr #define stringpool2 nullptr -#endif extern "C++" { #pragma region hidden-api - DLL_VARIABLE iconv_t iconv_open(const char* tocode, const char* fromcode) + + void cddump(struct conv_struct* cd) + { + std::cerr << "cd->iindex: " << cd->iindex << std::endl; + std::cerr << "cd->istate: " << cd->istate << std::endl; + std::cerr << "cd->oindex: " << cd->oindex << std::endl; + std::cerr << "cd->oflags: " << cd->oflags << std::endl; + std::cerr << "cd->ostate: " << cd->ostate << std::endl; + std::cerr << "cd->discard_ilseq: " << cd->discard_ilseq << std::endl; + } + + _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode) { struct conv_struct* cd; unsigned int from_index; @@ -223,13 +138,15 @@ extern "C++" #include "iconv_open2.h" + cddump(cd); + return (iconv_t)cd; invalid: errno = EINVAL; return (iconv_t)(-1); } - DLL_VARIABLE iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) + _CPPP_API iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) { struct conv_struct *cd; unsigned int from_index; @@ -257,7 +174,7 @@ extern "C++" return (iconv_t)cd; } - DLL_VARIABLE size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) + _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { conv_t cd = (conv_t)icd; if (inbuf == nullptr || *inbuf == nullptr) @@ -266,7 +183,7 @@ extern "C++" return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); } - DLL_VARIABLE int iconv_close(iconv_t icd) + _CPPP_API int iconv_close(iconv_t icd) { conv_t cd = (conv_t)icd; free(cd); @@ -276,11 +193,11 @@ extern "C++" #pragma endregion /* version number: (major<<8) + minor */ - DLL_VARIABLE int reiconv_version = (3 << 8) + 0; + _CPPP_API int reiconv_version = (3 << 8) + 0; constexpr const size_t tmpbufsize = 4096; - DLL_VARIABLE int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, + _CPPP_API int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, size_t *lengthp) { size_t length; @@ -370,7 +287,7 @@ extern "C++" return 0; } - DLL_VARIABLE int convert(const char* tocode, const char* fromcode, const char* start, + _CPPP_API int convert(const char* tocode, const char* fromcode, const char* start, size_t inlength, char** resultp, size_t* lengthp) { iconv_t cd = iconv_open(tocode, fromcode); @@ -438,7 +355,7 @@ extern "C++" return ret; } - DLL_VARIABLE int convert(int tocode_cp, int fromcode_cp, const char* start, + _CPPP_API int convert(int tocode_cp, int fromcode_cp, const char* start, size_t inlength, char** resultp, size_t* lengthp, bool strict) { iconv_t cd = iconv_open(tocode_cp, fromcode_cp, strict); @@ -452,7 +369,7 @@ extern "C++" return ret; } - DLL_VARIABLE bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp) + _CPPP_API bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp) { if (resultp == nullptr || lengthp == nullptr) { @@ -478,7 +395,7 @@ extern "C++" return true; } - DLL_VARIABLE bool ascii_mbtou32(const char* str, size_t length, char32_t** resultp, size_t* lengthp) + _CPPP_API bool ascii_mbtou32(const char* str, size_t length, char32_t** resultp, size_t* lengthp) { if (resultp == nullptr || lengthp == nullptr) { diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index 1a30deac..435ce18e 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -31,20 +31,11 @@ #pragma execution_character_set("utf-8") #endif -extern "C++" +namespace cppp::base::reiconv { - namespace cppp - { - namespace base - { - namespace reiconv - { - typedef void* iconv_t; - - extern DLL_VARIABLE iconv_t iconv_open(const char* tocode, const char* fromcode); - extern DLL_VARIABLE size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - extern DLL_VARIABLE int iconv_close(iconv_t cd); - } // namespace reiconv - } // namespace base - } // namespace cppp -} + typedef void* iconv_t; + + extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode); + extern _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + extern _CPPP_API int iconv_close(iconv_t cd); +} // namespace cppp::base::reiconv \ No newline at end of file diff --git a/tests/tests.cmake b/tests/tests.cmake index 94be7937..688d58fd 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -71,14 +71,12 @@ add_custom_command(TARGET data-generator POST_BUILD COMMENT "Sorting GB18030:2022 test data ... " ) -# Start test +# Test ascii converters. +add_test(NAME check-ascii-converters + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$") -# Test ascii converters -add_test( NAME check-ascii-converters - WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" ) - -# General multi-byte encodings +# General multi-byte encodings. test("stateless" "UTF-8") test("stateful" "UTF-16") test("stateful" "UCS-2BE") @@ -92,7 +90,7 @@ test("stateful" "UTF-32BE") test("stateful" "UTF-32LE") test("stateful" "UTF-7") -# 8-bit encodings +# 8-bit encodings. test("stateless" "ISO-8859-1") test("stateless" "ISO-8859-2") test("stateless" "ISO-8859-3") @@ -154,13 +152,13 @@ test("stateless" "VISCII") test("stateless" "TCVN") test("stateful" "TCVN") -# CJK character sets +# CJK character sets. test("stateless" "ISO646-JP") test("stateless" "JIS_X0201") test("stateless" "ISO646-CN") test("stateless" "ISO-IR-165") -# CJK encodings +# CJK encodings. test("stateless" "EUC-JP") test("stateless" "SHIFT_JIS") test("stateless" "CP932") @@ -192,77 +190,42 @@ test("stateless" "CP949") test("stateless" "JOHAB") test("stateful" "ISO-2022-KR") -if(NOT LESS_BUILD OR CMAKE_SYSTEM_NAME STREQUAL "AIX") - message(STATUS "'${PROJECT_NAME}': Use AIX encodings.") - set(USE_AIX ON) -else() - message(STATUS "'${PROJECT_NAME}': AIX encodings disabled.") - set(USE_AIX OFF) -endif() - -if(NOT LESS_BUILD - OR CMAKE_SYSTEM_NAME STREQUAL "Windows" - OR CMAKE_SYSTEM_NAME STREQUAL "Windows3x" - OR CMAKE_SYSTEM_NAME STREQUAL "DOS") - message(STATUS "'${PROJECT_NAME}': Use DOS encodings.") - set(USE_DOS ON) -else() - message(STATUS "'${PROJECT_NAME}': DOS encodings disabled.") - set(USE_DOS OFF) -endif() - -if(NOT LESS_BUILD) - message(STATUS "'${PROJECT_NAME}': Use extra encodings.") - set(USE_EXTRA ON) -else() - message(STATUS "'${PROJECT_NAME}': Extra encodings disabled.") - set(USE_EXTRA OFF) -endif() - - -if(USE_AIX) - # AIX specific encodings - test("stateless" "CP856") - test("stateless" "CP922") - test("stateless" "CP1046") - test("stateless" "CP1124") - test("stateless" "CP1129") - test("stateless" "CP1161") - test("stateless" "CP1162") - test("stateless" "CP1163") -endif() - -# OSF/1 encodings -# We use OSF/1 encodings for general encodings. +# AIX specific encodings. +test("stateless" "CP856") +test("stateless" "CP922") +test("stateless" "CP1046") +test("stateless" "CP1124") +test("stateless" "CP1129") +test("stateless" "CP1161") +test("stateless" "CP1162") +test("stateless" "CP1163") + +# OSF/1 encodings. test("stateless" "DEC-KANJI") test("stateless" "DEC-HANYU") -# DOS specific encodings -if(USE_DOS) - test("stateless" "CP437") - test("stateless" "CP737") - test("stateless" "CP775") - test("stateless" "CP852") - test("stateless" "CP853") - test("stateless" "CP855") - test("stateless" "CP857") - test("stateless" "CP858") - test("stateless" "CP860") - test("stateless" "CP861") - test("stateless" "CP863") - test("stateless" "CP864") - test("stateless" "CP865") - test("stateless" "CP869") - test("stateless" "CP1125") -endif() - -# Extra encodings -if(USE_EXTRA) - test("stateless" "EUC-JISX0213") - test("stateless" "SHIFT_JISX0213") - test("stateful" "ISO-2022-JP-3") - test("stateless" "BIG5-2003") - test("stateless" "TDS565") - test("stateless" "ATARIST") - test("stateless" "RISCOS-LATIN1") -endif() +# DOS specific encodings. +test("stateless" "CP437") +test("stateless" "CP737") +test("stateless" "CP775") +test("stateless" "CP852") +test("stateless" "CP853") +test("stateless" "CP855") +test("stateless" "CP857") +test("stateless" "CP858") +test("stateless" "CP860") +test("stateless" "CP861") +test("stateless" "CP863") +test("stateless" "CP864") +test("stateless" "CP865") +test("stateless" "CP869") +test("stateless" "CP1125") + +# Extra encodings. +test("stateless" "EUC-JISX0213") +test("stateless" "SHIFT_JISX0213") +test("stateful" "ISO-2022-JP-3") +test("stateless" "BIG5-2003") +test("stateless" "TDS565") +test("stateless" "ATARIST") +test("stateless" "RISCOS-LATIN1") diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index 2bde2c7b..10d723d1 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -100,7 +100,7 @@ int main(int argc, char* argv[]) } #define DEFALIAS(xxx_alias, xxx) emit_alias(aliases_file, xxx_alias, #xxx); -#include "encodings.def" +#include "encodings.h.snippet" #undef DEFALIAS #undef BRACIFY diff --git a/tools/genaliases2.cpp b/tools/genaliases2.cpp deleted file mode 100644 index d29aff23..00000000 --- a/tools/genaliases2.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2023 The C++ Plus Project. - * This file is part of the cppp-reiconv Library. - * - * The cppp-reiconv Library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv Library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file LICENSE. - * If not, see . - */ - -/* Creates the aliases2.h table. */ - -#include - -static unsigned int counter = 0; - -static void emit_alias(FILE* out, const char* tag, const char* alias, const char* c_name) -{ - fprintf(out, " S(%s_%u, \"", tag, counter); - /* Output alias in upper case. */ - { - const char* s = alias; - for (; *s; s++) - { - unsigned char c = *(unsigned char*)s; - if (c >= 0x80) - exit(1); - if (c >= 'a' && c <= 'z') - c -= 'a' - 'A'; - putc(c, out); - } - } - fprintf(out, "\", ei_%s )\n", c_name); - counter++; -} - -static void emit_encoding(FILE* out, const char* tag, const char* const* names, size_t n, const char* c_name) -{ - for (; n > 0; names++, n--) - emit_alias(out, tag, *names, c_name); -} - -int main(int argc, char* argv[]) -{ - const char* tag; - char* aliases_file_name; - FILE* aliases_file; - - if (argc != 3) - { - fprintf(stderr, "Usage: genaliases2 tag aliases.h\n"); - return 1; - } - - tag = argv[1]; - aliases_file_name = argv[2]; - - aliases_file = fopen(aliases_file_name, "w"); - if (aliases_file == nullptr) - { - fprintf(stderr, "Could not open '%s' for writing\n", aliases_file_name); - return 1; - } - -#define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - { \ - static const char* const names[] = BRACIFY xxx_names; \ - emit_encoding(aliases_file, tag, names, sizeof(names) / sizeof(names[0]), #xxx); \ - } -#define BRACIFY(...) \ - { \ - __VA_ARGS__ \ - } -#define DEFALIAS(xxx_alias, xxx) emit_alias(aliases_file, tag, xxx_alias, #xxx); -#ifdef USE_AIX -#include "encodings_aix.def" -#endif -#ifdef USE_DOS -#include "encodings_dos.def" -#endif -#ifdef USE_ZOS -#include "encodings_zos.def" -#endif -#ifdef USE_EXTRA -#include "encodings_extra.def" -#endif -#undef DEFALIAS -#undef BRACIFY -#undef DEFENCODING - if (ferror(aliases_file) || fclose(aliases_file)) - return 1; - return 0; -} diff --git a/tools/genflags.cpp b/tools/genflags.cpp index 7252965c..c12adc70 100644 --- a/tools/genflags.cpp +++ b/tools/genflags.cpp @@ -22,13 +22,6 @@ #include #include #include - -/* Consider all encodings, including the system dependent ones. */ -#define USE_AIX -#define USE_DOS -#define USE_ZOS -#define USE_EXTRA - struct loop_funcs { }; @@ -111,11 +104,7 @@ int main() } #define DEFALIAS(xxx_alias, xxx) /* nothing */ /* Consider all encodings, including the system dependent ones. */ -#include "encodings.def" -#include "encodings_aix.def" -#include "encodings_dos.def" -#include "encodings_extra.def" -#include "encodings_zos.def" +#include "encodings.h.snippet" #undef DEFALIAS #undef DEFENCODING From 72988b57ba24f6d53ba030c227fcfaff2da6a2b1 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 27 Jul 2024 23:18:51 +0800 Subject: [PATCH 28/77] Remove codepage support. --- lib/encodings.h.snippet | 265 +- lib/generated/aliases.h | 5438 ++++++++++++++++++++------------------- lib/iconv.cpp | 48 +- lib/iconv_open1.h | 12 +- tools/genaliases.cpp | 8 +- tools/genflags.cpp | 6 +- 6 files changed, 2782 insertions(+), 2995 deletions(-) diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index 8d1042d3..82f4e26e 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -46,35 +46,25 @@ DEFENCODING(( "US-ASCII", /* IANA */ "IBM367", /* IANA */ "US", /* IANA */ "csASCII", /* IANA */ - /*"ISO646.1991-IRV", X11R6.4 */ + "646" ), - 367, ascii, { ascii_mbtowc, nullptr }, { ascii_wctomb, nullptr }) -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "646", /* Solaris */ - ascii) -#endif /* General multi-byte encodings */ DEFENCODING(( "UTF-8", /* IANA, RFC 2279 */ + "UTF8" /*"UTF8", JDK 1.1 */ /*"CP65001", Windows */ ), - 65001, utf8, { utf8_mbtowc, nullptr }, { utf8_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "UTF8", /* HP-UX */ - utf8) -#endif DEFENCODING(( "UCS-2", /* glibc */ "ISO-10646-UCS-2", /* IANA */ "csUnicode", /* IANA */ ), - -1, ucs2, { ucs2_mbtowc, nullptr }, { ucs2_wctomb, nullptr }) @@ -84,7 +74,6 @@ DEFENCODING(( "UCS-2BE", /* glibc */ "csUnicode11", /* IANA */ /*"CP1201", Windows */ ), - -1, ucs2be, { ucs2be_mbtowc, nullptr }, { ucs2be_wctomb, nullptr }) @@ -92,7 +81,6 @@ DEFENCODING(( "UCS-2LE", /* glibc */ "UNICODELITTLE", /* glibc */ /*"CP1200", Windows */ ), - -1, ucs2le, { ucs2le_mbtowc, nullptr }, { ucs2le_wctomb, nullptr }) @@ -100,57 +88,48 @@ DEFENCODING(( "UCS-4", /* glibc */ "ISO-10646-UCS-4", /* IANA */ "csUCS4", /* IANA */ ), - -1, ucs4, { ucs4_mbtowc, nullptr }, { ucs4_wctomb, nullptr }) DEFENCODING(( "UCS-4BE", /* glibc */ /*"CP12001", Windows */ ), - -1, ucs4be, { ucs4be_mbtowc, nullptr }, { ucs4be_wctomb, nullptr }) DEFENCODING(( "UCS-4LE", /* glibc */ /*"CP12000", Windows */ ), - -1, ucs4le, { ucs4le_mbtowc, nullptr }, { ucs4le_wctomb, nullptr }) DEFENCODING(( "UTF-16", /* IANA, RFC 2781 */ - ), - -1, /* MS-Windows Use little endian, so CP1200 means UTF-16LE */ + ), /* MS-Windows Use little endian, so CP1200 means UTF-16LE */ utf16, { utf16_mbtowc, nullptr }, { utf16_wctomb, nullptr }) DEFENCODING(( "UTF-16BE", /* IANA, RFC 2781 */ ), - 1201, utf16be, { utf16be_mbtowc, nullptr }, { utf16be_wctomb, nullptr }) DEFENCODING(( "UTF-16LE", /* IANA, RFC 2781 */ ), - 1200, utf16le, { utf16le_mbtowc, nullptr }, { utf16le_wctomb, nullptr }) DEFENCODING(( "UTF-32", /* IANA, Unicode 3.1 */ ), - -1, utf32, { utf32_mbtowc, nullptr }, { utf32_wctomb, nullptr }) DEFENCODING(( "UTF-32BE", /* IANA, Unicode 3.1 */ ), - 12001, utf32be, { utf32be_mbtowc, nullptr }, { utf32be_wctomb, nullptr }) DEFENCODING(( "UTF-32LE", /* IANA, Unicode 3.1 */ ), - 12000, utf32le, { utf32le_mbtowc, nullptr }, { utf32le_wctomb, nullptr }) @@ -159,43 +138,36 @@ DEFENCODING(( "UTF-7", /* IANA, RFC 2152 */ "csUnicode11UTF7", /* IANA */ /*"CP65000", Windows */ ), - 65000, utf7, { utf7_mbtowc, nullptr }, { utf7_wctomb, utf7_reset }) DEFENCODING(( "UCS-2-INTERNAL", /* libiconv */ ), - -1, ucs2internal, { ucs2internal_mbtowc, nullptr }, { ucs2internal_wctomb, nullptr }) DEFENCODING(( "UCS-2-SWAPPED", /* libiconv */ ), - -1, ucs2swapped, { ucs2swapped_mbtowc, nullptr }, { ucs2swapped_wctomb, nullptr }) DEFENCODING(( "UCS-4-INTERNAL", /* libiconv */ ), - -1, ucs4internal, { ucs4internal_mbtowc, nullptr },{ ucs4internal_wctomb, nullptr }) DEFENCODING(( "UCS-4-SWAPPED", /* libiconv */ ), - -1, ucs4swapped, { ucs4swapped_mbtowc, nullptr }, { ucs4swapped_wctomb, nullptr }) DEFENCODING(( "C99", ), - -1, c99, { c99_mbtowc, nullptr }, { c99_wctomb, nullptr }) DEFENCODING(( "JAVA", ), - -1, java, { java_mbtowc, nullptr }, { java_wctomb, nullptr }) @@ -214,7 +186,6 @@ DEFENCODING(( "ISO-8859-1", /* IANA */ /*"ISO8859_1", JDK 1.1 */ /*"CP28591", Windows */ ), - 28591, iso8859_1, { iso8859_1_mbtowc, nullptr }, { iso8859_1_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -233,7 +204,6 @@ DEFENCODING(( "ISO-8859-2", /* IANA */ /*"ISO8859_2", JDK 1.1 */ /*"CP28592", Windows */ ), - 28592, iso8859_2, { iso8859_2_mbtowc, nullptr }, { iso8859_2_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -252,7 +222,6 @@ DEFENCODING(( "ISO-8859-3", /* IANA */ /*"ISO8859_3", JDK 1.1 */ /*"CP28593", Windows */ ), - 28593, iso8859_3, { iso8859_3_mbtowc, nullptr }, { iso8859_3_wctomb, nullptr }) @@ -267,7 +236,6 @@ DEFENCODING(( "ISO-8859-4", /* IANA */ /*"ISO8859_4", JDK 1.1 */ /*"CP28594", Windows */ ), - 28594, iso8859_4, { iso8859_4_mbtowc, nullptr }, { iso8859_4_wctomb, nullptr }) @@ -281,7 +249,6 @@ DEFENCODING(( "ISO-8859-5", /* IANA */ /*"ISO8859_5", JDK 1.1 */ /*"CP28595", Windows */ ), - 28595, iso8859_5, { iso8859_5_mbtowc, nullptr }, { iso8859_5_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -301,7 +268,6 @@ DEFENCODING(( "ISO-8859-6", /* IANA */ /*"ISO8859_6", JDK 1.1 */ /*"CP28596", Windows */ ), - 28596, iso8859_6, { iso8859_6_mbtowc, nullptr }, { iso8859_6_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -323,7 +289,6 @@ DEFENCODING(( "ISO-8859-7", /* IANA, RFC 1947 */ /*"ISO8859_7", JDK 1.1 */ /*"CP28597", Windows */ ), - 28597, iso8859_7, { iso8859_7_mbtowc, nullptr }, { iso8859_7_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -342,7 +307,6 @@ DEFENCODING(( "ISO-8859-8", /* IANA */ /*"CP28598", Windows */ /*"CP38598", Windows */ ), - 28598, iso8859_8, { iso8859_8_mbtowc, nullptr }, { iso8859_8_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -361,7 +325,6 @@ DEFENCODING(( "ISO-8859-9", /* IANA */ /*"ISO8859_9", JDK 1.1 */ /*"CP28599", Windows */ ), - 28599, iso8859_9, { iso8859_9_mbtowc, nullptr }, { iso8859_9_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -378,7 +341,6 @@ DEFENCODING(( "ISO-8859-10", /* IANA */ "csISOLatin6", /* IANA */ "ISO8859-10", /* X11R6.4, glibc, FreeBSD */ ), - -1, iso8859_10, { iso8859_10_mbtowc, nullptr }, { iso8859_10_wctomb, nullptr }) @@ -386,7 +348,6 @@ DEFENCODING(( "ISO-8859-11", /* glibc */ "ISO_8859-11", "ISO8859-11", /* X11R6.7, glibc */ ), - -1, iso8859_11, { iso8859_11_mbtowc, nullptr }, { iso8859_11_wctomb, nullptr }) @@ -398,7 +359,6 @@ DEFENCODING(( "ISO-8859-13", /* IANA, glibc */ "ISO8859-13", /* glibc, FreeBSD */ /*"CP28603", Windows */ ), - 28603, iso8859_13, { iso8859_13_mbtowc, nullptr }, { iso8859_13_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -415,7 +375,6 @@ DEFENCODING(( "ISO-8859-14", /* IANA, glibc */ "ISO-CELTIC", /* IANA */ "ISO8859-14", /* glibc, FreeBSD */ ), - -1, iso8859_14, { iso8859_14_mbtowc, nullptr }, { iso8859_14_wctomb, nullptr }) @@ -427,7 +386,6 @@ DEFENCODING(( "ISO-8859-15", /* IANA, glibc */ "ISO8859-15", /* glibc, FreeBSD, AIX, OSF/1, Solaris */ /*"CP28605", Windows */ ), - 28605, iso8859_15, { iso8859_15_mbtowc, nullptr }, { iso8859_15_wctomb, nullptr }) #ifdef USE_HPUX_ALIASES @@ -443,7 +401,6 @@ DEFENCODING(( "ISO-8859-16", /* IANA */ "L10", /* IANA */ "ISO8859-16", /* glibc, FreeBSD */ ), - -1, iso8859_16, { iso8859_16_mbtowc, nullptr }, { iso8859_16_wctomb, nullptr }) @@ -451,20 +408,17 @@ DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ "csKOI8R", /* IANA */ /*"CP20866", Windows */ ), - 20866, koi8_r, { koi8_r_mbtowc, nullptr }, { koi8_r_wctomb, nullptr }) DEFENCODING(( "KOI8-U", /* IANA, RFC 2319 */ ), - -1, koi8_u, { koi8_u_mbtowc, nullptr }, { koi8_u_wctomb, nullptr }) DEFENCODING(( "KOI8-RU", /*"CP21866", Windows */ ), - 21866, koi8_ru, { koi8_ru_mbtowc, nullptr }, { koi8_ru_wctomb, nullptr }) @@ -474,7 +428,6 @@ DEFENCODING(( "CP1250", /* JDK 1.1 */ "WINDOWS-1250", /* IANA */ "MS-EE", ), - 1250, cp1250, { cp1250_mbtowc, nullptr }, { cp1250_wctomb, nullptr }) @@ -482,7 +435,6 @@ DEFENCODING(( "CP1251", /* JDK 1.1 */ "WINDOWS-1251", /* IANA */ "MS-CYRL", ), - 1251, cp1251, { cp1251_mbtowc, nullptr }, { cp1251_wctomb, nullptr }) #ifdef USE_SOLARIS_ALIASES @@ -494,7 +446,6 @@ DEFENCODING(( "CP1252", /* JDK 1.1 */ "WINDOWS-1252", /* IANA */ "MS-ANSI", ), - 1252, cp1252, { cp1252_mbtowc, nullptr }, { cp1252_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -506,7 +457,6 @@ DEFENCODING(( "CP1253", /* JDK 1.1 */ "WINDOWS-1253", /* IANA */ "MS-GREEK", ), - 1253, cp1253, { cp1253_mbtowc, nullptr }, { cp1253_wctomb, nullptr }) @@ -514,7 +464,6 @@ DEFENCODING(( "CP1254", /* JDK 1.1 */ "WINDOWS-1254", /* IANA */ "MS-TURK", ), - 1254, cp1254, { cp1254_mbtowc, nullptr }, { cp1254_wctomb, nullptr }) @@ -522,7 +471,6 @@ DEFENCODING(( "CP1255", /* JDK 1.1 */ "WINDOWS-1255", /* IANA */ "MS-HEBR", ), - 1255, cp1255, { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, nullptr }) @@ -530,7 +478,6 @@ DEFENCODING(( "CP1256", /* JDK 1.1 */ "WINDOWS-1256", /* IANA */ "MS-ARAB", ), - 1256, cp1256, { cp1256_mbtowc, nullptr }, { cp1256_wctomb, nullptr }) @@ -538,14 +485,12 @@ DEFENCODING(( "CP1257", /* JDK 1.1 */ "WINDOWS-1257", /* IANA */ "WINBALTRIM", ), - 1257, cp1257, { cp1257_mbtowc, nullptr }, { cp1257_wctomb, nullptr }) DEFENCODING(( "CP1258", /* JDK 1.1 */ "WINDOWS-1258", /* IANA */ ), - 1258, cp1258, { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, nullptr }) @@ -556,7 +501,6 @@ DEFENCODING(( "CP850", /* IANA, JDK 1.1 */ "850", /* IANA */ "csPC850Multilingual", /* IANA */ ), - 850, cp850, { cp850_mbtowc, nullptr }, { cp850_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -569,7 +513,6 @@ DEFENCODING(( "CP862", /* IANA, JDK 1.1 */ "862", /* IANA */ "csPC862LatinHebrew", /* IANA */ ), - 862, cp862, { cp862_mbtowc, nullptr }, { cp862_wctomb, nullptr }) @@ -578,13 +521,11 @@ DEFENCODING(( "CP866", /* IANA, JDK 1.1 */ "866", /* IANA */ "csIBM866", /* IANA */ ), - 866, cp866, { cp866_mbtowc, nullptr }, { cp866_wctomb, nullptr }) DEFENCODING(( "CP1131", /* FreeBSD, MacOS X */ ), - 1131, cp1131, { cp1131_mbtowc, nullptr }, { cp1131_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -602,84 +543,72 @@ DEFENCODING(( "MacRoman", /* JDK 1.1 */ "csMacintosh", /* IANA */ /*"CP10000", Windows */ ), - 10000, mac_roman, { mac_roman_mbtowc, nullptr }, { mac_roman_wctomb, nullptr }) DEFENCODING(( "MacCentralEurope", /* JDK 1.1 */ /*"CP10029", Windows */ ), - 10029, mac_centraleurope, { mac_centraleurope_mbtowc, nullptr }, { mac_centraleurope_wctomb, nullptr }) DEFENCODING(( "MacIceland", /* JDK 1.1 */ /*"CP10079", Windows */ ), - 10079, mac_iceland, { mac_iceland_mbtowc, nullptr }, { mac_iceland_wctomb, nullptr }) DEFENCODING(( "MacCroatian", /* JDK 1.1 */ /*"CP10082", Windows */ ), - 10082, mac_croatian, { mac_croatian_mbtowc, nullptr }, { mac_croatian_wctomb, nullptr }) DEFENCODING(( "MacRomania", /* JDK 1.1 */ /*"CP10010", Windows */ ), - 10010, mac_romania, { mac_romania_mbtowc, nullptr }, { mac_romania_wctomb, nullptr }) DEFENCODING(( "MacCyrillic", /* JDK 1.1 */ /*"CP10007", Windows */ ), - 10007, mac_cyrillic, { mac_cyrillic_mbtowc, nullptr }, { mac_cyrillic_wctomb, nullptr }) DEFENCODING(( "MacUkraine", /* JDK 1.1 */ /*"CP10017", Windows */ ), - 10017, mac_ukraine, { mac_ukraine_mbtowc, nullptr }, { mac_ukraine_wctomb, nullptr }) DEFENCODING(( "MacGreek", /* JDK 1.1 */ /*"CP10006", Windows */ ), - 10006, mac_greek, { mac_greek_mbtowc, nullptr }, { mac_greek_wctomb, nullptr }) DEFENCODING(( "MacTurkish", /* JDK 1.1 */ /*"CP10081", Windows */ ), - 10081, mac_turkish, { mac_turkish_mbtowc, nullptr }, { mac_turkish_wctomb, nullptr }) DEFENCODING(( "MacHebrew", /* JDK 1.1 */ /*"CP10005", Windows */ ), - 10005, mac_hebrew, { mac_hebrew_mbtowc, nullptr }, { mac_hebrew_wctomb, nullptr }) DEFENCODING(( "MacArabic", /* JDK 1.1 */ /*"CP10004", Windows */ ), - 10004, mac_arabic, { mac_arabic_mbtowc, nullptr }, { mac_arabic_wctomb, nullptr }) DEFENCODING(( "MacThai", /* JDK 1.1 */ /*"CP10021", Windows */ ), - 10021, mac_thai, { mac_thai_mbtowc, nullptr }, { mac_thai_wctomb, nullptr }) @@ -690,13 +619,11 @@ DEFENCODING(( "HP-ROMAN8", /* IANA, X11R6.4 */ "R8", /* IANA */ "csHPRoman8", /* IANA */ ), - -1, hp_roman8, { hp_roman8_mbtowc, nullptr }, { hp_roman8_wctomb, nullptr }) DEFENCODING(( "NEXTSTEP", ), - -1, nextstep, { nextstep_mbtowc, nullptr }, { nextstep_wctomb, nullptr }) @@ -704,25 +631,21 @@ DEFENCODING(( "NEXTSTEP", DEFENCODING(( "ARMSCII-8", ), - -1, armscii_8, { armscii_8_mbtowc, nullptr }, { armscii_8_wctomb, nullptr }) DEFENCODING(( "GEORGIAN-ACADEMY", ), - -1, georgian_academy, { georgian_academy_mbtowc, nullptr }, { georgian_academy_wctomb, nullptr }) DEFENCODING(( "GEORGIAN-PS", ), - -1, georgian_ps, { georgian_ps_mbtowc, nullptr }, { georgian_ps_wctomb, nullptr }) DEFENCODING(( "KOI8-T", ), - -1, koi8_t, { koi8_t_mbtowc, nullptr }, { koi8_t_wctomb, nullptr }) @@ -732,7 +655,6 @@ DEFENCODING(( "PT154", /* IANA, glibc */ "CYRILLIC-ASIAN", /* IANA */ "csPTCP154", /* IANA */ ), - 154, pt154, { pt154_mbtowc, nullptr }, { pt154_wctomb, nullptr }) @@ -741,20 +663,17 @@ DEFENCODING(( "RK1048", /* IANA, glibc */ "KZ-1048", /* IANA */ "csKZ1048", /* IANA */ ), - -1, rk1048, { rk1048_mbtowc, nullptr }, { rk1048_wctomb, nullptr }) DEFENCODING(( "MULELAO-1", ), - -1, mulelao, { mulelao_mbtowc, nullptr }, { mulelao_wctomb, nullptr }) DEFENCODING(( "CP1133", "IBM-CP1133", ), - 1133, cp1133, { cp1133_mbtowc, nullptr }, { cp1133_wctomb, nullptr }) @@ -766,7 +685,6 @@ DEFENCODING(( "TIS-620", /* IANA */ "TIS620.2533-1", "ISO-IR-166", /* glibc */ ), - -1, tis620, { tis620_mbtowc, nullptr }, { tis620_wctomb, nullptr }) #ifdef USE_OSF1_ALIASES @@ -781,7 +699,6 @@ DEFALIAS( "TIS620.2533", /* Solaris */ DEFENCODING(( "CP874", /* JDK 1.1 */ "WINDOWS-874", ), - 874, cp874, { cp874_mbtowc, nullptr }, { cp874_wctomb, nullptr }) @@ -789,7 +706,6 @@ DEFENCODING(( "VISCII", /* IANA, RFC 1456 */ "VISCII1.1-1", "csVISCII", /* IANA */ ), - -1, viscii, { viscii_mbtowc, nullptr }, { viscii_wctomb, nullptr }) @@ -798,7 +714,6 @@ DEFENCODING(( "TCVN", "TCVN5712-1", "TCVN5712-1:1993", ), - -1, tcvn, { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, nullptr }) @@ -810,7 +725,6 @@ DEFENCODING(( "JIS_C6220-1969-RO", /* IANA */ "JP", /* IANA */ "csISO14JISC6220ro", /* IANA */ ), - -1, iso646_jp, { iso646_jp_mbtowc, nullptr }, { iso646_jp_wctomb, nullptr }) @@ -821,7 +735,6 @@ DEFENCODING(( "JIS_X0201", /* IANA */ /*"JISX0201.1976-0", X11R6.4 */ /*"JIS0201", JDK 1.1 */ ), - -1, jisx0201, { jisx0201_mbtowc, nullptr }, { jisx0201_wctomb, nullptr }) @@ -837,7 +750,6 @@ DEFENCODING(( "JIS_X0208", /*"JISX0208.1990-0", X11R6.4 */ /*"JIS0208", JDK 1.1 */ ), - -1, jisx0208, { jisx0208_mbtowc, nullptr }, { jisx0208_wctomb, nullptr }) @@ -850,7 +762,6 @@ DEFENCODING(( "JIS_X0212", /*"JISX0212.1990-0", X11R6.4 */ /*"JIS0212", JDK 1.1 */ ), - -1, jisx0212, { jisx0212_mbtowc, nullptr }, { jisx0212_wctomb, nullptr }) @@ -860,7 +771,6 @@ DEFENCODING(( "GB_1988-80", /* IANA */ "CN", /* IANA */ "csISO57GB1988", /* IANA */ ), - -1, iso646_cn, { iso646_cn_mbtowc, nullptr }, { iso646_cn_wctomb, nullptr }) @@ -869,14 +779,12 @@ DEFENCODING(( "GB_2312-80", /* IANA */ "csISO58GB231280", /* IANA */ /*"GB2312.1980-0", X11R6.4 */ ), - -1, gb2312, { gb2312_mbtowc, nullptr }, { gb2312_wctomb, nullptr }) DEFENCODING(( "ISO-IR-165", "CN-GB-ISOIR165", /* RFC 1922 */ ), - -1, isoir165, { isoir165_mbtowc, nullptr }, { isoir165_wctomb, nullptr }) @@ -889,7 +797,6 @@ DEFENCODING(( "KSC_5601", /* IANA */ /*"KSC5601.1987-0", X11R6.4 */ /*"KSX1001:1992", Ken Lunde */ ), - -1, ksc5601, { ksc5601_mbtowc, nullptr }, { ksc5601_wctomb, nullptr }) @@ -899,63 +806,45 @@ DEFENCODING(( "EUC-JP", /* IANA */ "EUCJP", /* glibc, HP-UX, IRIX, OSF/1, Solaris */ "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */ "csEUCPkdFmtJapanese", /* IANA */ + "IBM-EUCJP", + "SDECKANJI" /*"EUC_JP", JDK 1.1 */ /*"CP51932", Windows */ ), - 51932, euc_jp, { euc_jp_mbtowc, nullptr }, { euc_jp_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-EUCJP", /* AIX */ - euc_jp) -#endif -#ifdef USE_OSF1_ALIASES -DEFALIAS( "SDECKANJI", /* OSF/1 */ - euc_jp) -#endif DEFENCODING(( "SHIFT_JIS", /* IANA */ "SHIFT-JIS", /* glibc */ "SJIS", /* JDK 1.1, HP-UX, OSF/1 */ "MS_KANJI", /* IANA */ "csShiftJIS", /* IANA */ + "PCK" ), - -1, sjis, { sjis_mbtowc, nullptr }, { sjis_wctomb, nullptr }) -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "PCK", /* Solaris */ - sjis) -#endif DEFENCODING(( "CP932", /* glibc */ + "IBM-932" ), - 932, cp932, { cp932_mbtowc, nullptr }, { cp932_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-932", /* AIX */ - cp932) -#endif DEFENCODING(( "ISO-2022-JP", /* IANA, RFC 1468 */ "csISO2022JP", /* IANA */ /*"ISO2022JP", JDK 1.1 */ ), - -1, iso2022_jp, { iso2022_jp_mbtowc, nullptr }, { iso2022_jp_wctomb, iso2022_jp_reset }) DEFENCODING(( "ISO-2022-JP-1", /* RFC 2237 */ ), - -1, iso2022_jp1, { iso2022_jp1_mbtowc, nullptr }, { iso2022_jp1_wctomb, iso2022_jp1_reset }) DEFENCODING(( "ISO-2022-JP-2", /* IANA, RFC 1554 */ "csISO2022JP2", /* IANA */ ), - -1, iso2022_jp2, { iso2022_jp2_mbtowc, nullptr }, { iso2022_jp2_wctomb, iso2022_jp2_reset }) @@ -963,7 +852,6 @@ DEFENCODING(( "ISO-2022-JP-MS", "CP50221", /*"ISO-2022-JP-ESC", Windows */ ), - 50221, iso2022_jpms, { iso2022_jpms_mbtowc, nullptr }, { iso2022_jpms_wctomb, iso2022_jpms_reset }) @@ -973,28 +861,15 @@ DEFENCODING(( "EUC-CN", /* glibc */ "CN-GB", /* RFC 1922 */ "csGB2312", /* IANA */ "CHINESE", /* IANA */ + "IBM-EUCCN","HP15CN","DECHANZI" /*"EUC_CN", JDK 1.1 */ /*"CP51936", Windows */ ), - 51936, euc_cn, { euc_cn_mbtowc, nullptr }, { euc_cn_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-EUCCN", /* AIX */ - euc_cn) -#endif -#ifdef USE_HPUX_ALIASES -DEFALIAS( "HP15CN", /* HP-UX */ - euc_cn) -#endif -#ifdef USE_OSF1_ALIASES -DEFALIAS( "DECHANZI", /* OSF/1 */ - euc_cn) -#endif DEFENCODING(( "GBK", /* IANA, JDK 1.1 */ - ), - -1, /* See CP936 */ + ), /* See CP936 */ ces_gbk, { ces_gbk_mbtowc, nullptr }, { ces_gbk_wctomb, nullptr }) @@ -1002,7 +877,6 @@ DEFENCODING(( "CP936", /* IANA */ "MS936", /* IANA */ "WINDOWS-936", /* IANA */ ), - 936, cp936, { cp936_mbtowc, nullptr }, { cp936_wctomb, nullptr }) @@ -1010,13 +884,11 @@ DEFENCODING(( "GB18030", /* IANA, glibc */ /*"CP54936", Windows */ "GB18030:2005", ), - 54936, gb18030_2005, { gb18030_2005_mbtowc, nullptr },{ gb18030_2005_wctomb, nullptr }) DEFENCODING(( "GB18030:2022", ), - -1, gb18030_2022, { gb18030_2022_mbtowc, nullptr },{ gb18030_2022_wctomb, nullptr }) @@ -1024,13 +896,11 @@ DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */ "csISO2022CN", /*"ISO2022CN", JDK 1.1 */ ), - -1, iso2022_cn, { iso2022_cn_mbtowc, nullptr }, { iso2022_cn_wctomb, iso2022_cn_reset }) DEFENCODING(( "ISO-2022-CN-EXT", /* IANA, RFC 1922 */ ), - -1, iso2022_cn_ext, { iso2022_cn_ext_mbtowc, nullptr }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset }) @@ -1038,27 +908,17 @@ DEFENCODING(( "HZ", /* RFC 1843 */ "HZ-GB-2312", /* IANA, RFC 1842 */ /*"CP52936", Windows */ ), - 52936, hz, { hz_mbtowc, nullptr }, { hz_wctomb, hz_reset }) DEFENCODING(( "EUC-TW", /* glibc */ "EUCTW", /* glibc, HP-UX, IRIX, OSF/1 */ - "csEUCTW", + "csEUCTW","IBM-EUCTW","CNS11643" /*"EUC_TW", JDK 1.1 */ /*"CP51950", Windows */ ), - 51950, euc_tw, { euc_tw_mbtowc, nullptr }, { euc_tw_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-EUCTW", /* AIX */ - euc_tw) -#endif -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "CNS11643", /* Solaris */ - euc_tw) -#endif DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */ "BIG-5", /* glibc */ @@ -1066,32 +926,27 @@ DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */ "BIGFIVE", /* glibc */ "CN-BIG5", /* RFC 1922 */ "csBig5", /* IANA */ - ), - -1, /* See CP950 */ + ), /* See CP950 */ ces_big5, { ces_big5_mbtowc, nullptr }, { ces_big5_wctomb, nullptr }) DEFENCODING(( "CP950", /* JDK 1.1 */ ), - 950, cp950, { cp950_mbtowc, nullptr }, { cp950_wctomb, nullptr }) DEFENCODING(( "BIG5-HKSCS:1999", ), - -1, big5hkscs1999, { big5hkscs1999_mbtowc, big5hkscs1999_flushwc }, { big5hkscs1999_wctomb, big5hkscs1999_reset }) DEFENCODING(( "BIG5-HKSCS:2001", ), - -1, big5hkscs2001, { big5hkscs2001_mbtowc, big5hkscs2001_flushwc }, { big5hkscs2001_wctomb, big5hkscs2001_reset }) DEFENCODING(( "BIG5-HKSCS:2004", ), - -1, big5hkscs2004, { big5hkscs2004_mbtowc, big5hkscs2004_flushwc }, { big5hkscs2004_wctomb, big5hkscs2004_reset }) @@ -1099,7 +954,6 @@ DEFENCODING(( "BIG5-HKSCS", /* IANA */ "BIG5HKSCS", /* glibc */ "BIG5-HKSCS:2008", ), - -1, big5hkscs2008, { big5hkscs2008_mbtowc, big5hkscs2008_flushwc }, { big5hkscs2008_wctomb, big5hkscs2008_reset }) @@ -1109,7 +963,6 @@ DEFENCODING(( "EUC-KR", /* IANA, RFC 1557 */ /*"EUC_KR", JDK 1.1 */ /*"CP51949", Windows */ ), - 51949, euc_kr, { euc_kr_mbtowc, nullptr }, { euc_kr_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1128,7 +981,6 @@ DEFALIAS( "5601", /* Solaris */ DEFENCODING(( "CP949", /* JDK 1.1 */ "UHC", /* glibc */ ), - 949, cp949, { cp949_mbtowc, nullptr }, { cp949_wctomb, nullptr }) #ifdef USE_OSF1_ALIASES @@ -1139,7 +991,6 @@ DEFALIAS( "KSC5601", /* OSF/1 */ DEFENCODING(( "JOHAB", /* glibc */ "CP1361", /* glibc */ ), - 1361, johab, { johab_mbtowc, nullptr }, { johab_wctomb, nullptr }) #ifdef USE_SOLARIS_ALIASES @@ -1152,25 +1003,19 @@ DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */ /*"ISO2022KR", JDK 1.1 */ /*"CP50225", Windows */ ), - 50225, iso2022_kr, { iso2022_kr_mbtowc, nullptr }, { iso2022_kr_wctomb, iso2022_kr_reset }) DEFENCODING(( "DEC-KANJI", + "DECKANJI" ), - -1, dec_kanji, { dec_kanji_mbtowc, nullptr }, { dec_kanji_wctomb, nullptr }) -DEFALIAS( "DECKANJI", /* OSF/1 */ - dec_kanji) -DEFENCODING(( "DEC-HANYU", +DEFENCODING(( "DEC-HANYU","DECHANYU" ), - -1, dec_hanyu, { dec_hanyu_mbtowc, nullptr }, { dec_hanyu_wctomb, nullptr }) -DEFALIAS( "DECHANYU", /* OSF/1 */ - dec_hanyu) /* Copyright (C) 2000-2002, 2008 Free Software Foundation, Inc. @@ -1194,7 +1039,6 @@ DEFALIAS( "DECHANYU", /* OSF/1 */ DEFENCODING(( "CP856", ), - 856, cp856, { cp856_mbtowc, nullptr }, { cp856_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1204,7 +1048,6 @@ DEFALIAS( "IBM-856", /* AIX */ DEFENCODING(( "CP922", ), - 922, cp922, { cp922_mbtowc, nullptr }, { cp922_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1214,7 +1057,6 @@ DEFALIAS( "IBM-922", /* AIX */ DEFENCODING(( "CP943", ), - 943, cp943, { cp943_mbtowc, nullptr }, { cp943_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1224,7 +1066,6 @@ DEFALIAS( "IBM-943", /* AIX */ DEFENCODING(( "CP1046", ), - 1046, cp1046, { cp1046_mbtowc, nullptr }, { cp1046_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1234,7 +1075,6 @@ DEFALIAS( "IBM-1046", /* AIX */ DEFENCODING(( "CP1124", ), - 1124, cp1124, { cp1124_mbtowc, nullptr }, { cp1124_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1244,7 +1084,6 @@ DEFALIAS( "IBM-1124", /* AIX */ DEFENCODING(( "CP1129", ), - 1129, cp1129, { cp1129_mbtowc, nullptr }, { cp1129_wctomb, nullptr }) #ifdef USE_AIX_ALIASES @@ -1257,7 +1096,6 @@ DEFENCODING(( "CP1161", "IBM-1161", /* glibc */ "csIBM1161", /* glibc */ ), - 1161, cp1161, { cp1161_mbtowc, nullptr }, { cp1161_wctomb, nullptr }) @@ -1266,7 +1104,6 @@ DEFENCODING(( "CP1162", "IBM-1162", /* glibc */ "csIBM1162", /* glibc */ ), - 1162, cp1162, { cp1162_mbtowc, nullptr }, { cp1162_wctomb, nullptr }) @@ -1275,7 +1112,6 @@ DEFENCODING(( "CP1163", "IBM-1163", /* glibc */ "csIBM1163", /* glibc */ ), - 1163, cp1163, { cp1163_mbtowc, nullptr }, { cp1163_wctomb, nullptr }) @@ -1304,14 +1140,12 @@ DEFENCODING(( "CP437", /* IANA, JDK 1.1 */ "437", /* IANA */ "csPC8CodePage437", /* IANA */ ), - 437, cp437, { cp437_mbtowc, nullptr }, { cp437_wctomb, nullptr }) DEFENCODING(( "CP737", /* JDK 1.1 */ "IBM737", /* Windows */ ), - 737, cp737, { cp737_mbtowc, nullptr }, { cp737_wctomb, nullptr }) @@ -1319,7 +1153,6 @@ DEFENCODING(( "CP775", /* IANA, JDK 1.1 */ "IBM775", /* IANA */ "csPC775Baltic", /* IANA */ ), - 775, cp775, { cp775_mbtowc, nullptr }, { cp775_wctomb, nullptr }) @@ -1328,13 +1161,11 @@ DEFENCODING(( "CP852", /* IANA, JDK 1.1 */ "852", /* IANA */ "csPCp852", /* IANA */ ), - 852, cp852, { cp852_mbtowc, nullptr }, { cp852_wctomb, nullptr }) DEFENCODING(( "CP853", ), - 853, cp853, { cp853_mbtowc, nullptr }, { cp853_wctomb, nullptr }) @@ -1343,7 +1174,6 @@ DEFENCODING(( "CP855", /* IANA, JDK 1.1 */ "855", /* IANA */ "csIBM855", /* IANA */ ), - 855, cp855, { cp855_mbtowc, nullptr }, { cp855_wctomb, nullptr }) @@ -1352,13 +1182,11 @@ DEFENCODING(( "CP857", /* IANA, JDK 1.1 */ "857", /* IANA */ "csIBM857", /* IANA */ ), - 857, cp857, { cp857_mbtowc, nullptr }, { cp857_wctomb, nullptr }) DEFENCODING(( "CP858", /* JDK 1.1.7 */ ), - 858, cp858, { cp858_mbtowc, nullptr }, { cp858_wctomb, nullptr }) @@ -1367,7 +1195,6 @@ DEFENCODING(( "CP860", /* IANA, JDK 1.1 */ "860", /* IANA */ "csIBM860", /* IANA */ ), - 860, cp860, { cp860_mbtowc, nullptr }, { cp860_wctomb, nullptr }) @@ -1377,7 +1204,6 @@ DEFENCODING(( "CP861", /* IANA, JDK 1.1 */ "CP-IS", /* IANA */ "csIBM861", /* IANA */ ), - 861, cp861, { cp861_mbtowc, nullptr }, { cp861_wctomb, nullptr }) @@ -1386,7 +1212,6 @@ DEFENCODING(( "CP863", /* IANA, JDK 1.1 */ "863", /* IANA */ "csIBM863", /* IANA */ ), - 863, cp863, { cp863_mbtowc, nullptr }, { cp863_wctomb, nullptr }) @@ -1394,7 +1219,6 @@ DEFENCODING(( "CP864", /* IANA, JDK 1.1 */ "IBM864", /* IANA */ "csIBM864", /* IANA */ ), - 864, cp864, { cp864_mbtowc, nullptr }, { cp864_wctomb, nullptr }) @@ -1403,7 +1227,6 @@ DEFENCODING(( "CP865", /* IANA, JDK 1.1 */ "865", /* IANA */ "csIBM865", /* IANA */ ), - 865, cp865, { cp865_mbtowc, nullptr }, { cp865_wctomb, nullptr }) @@ -1413,13 +1236,11 @@ DEFENCODING(( "CP869", /* IANA, JDK 1.1 */ "CP-GR", /* IANA */ "csIBM869", /* IANA */ ), - 869, cp869, { cp869_mbtowc, nullptr }, { cp869_wctomb, nullptr }) DEFENCODING(( "CP1125", /* ICU */ ), - 1125, cp1125, { cp1125_mbtowc, nullptr }, { cp1125_wctomb, nullptr }) @@ -1453,7 +1274,6 @@ DEFENCODING(( "IBM-037", "EBCDIC-CP-NL", /* IANA */ "csIBM037", /* IANA */ ), - 037, ebcdic037, { ebcdic037_mbtowc, nullptr }, { ebcdic037_wctomb, nullptr }) @@ -1462,7 +1282,6 @@ DEFENCODING(( "IBM-273", "CP273", /* IANA */ "csIBM273", /* IANA */ ), - 273, ebcdic273, { ebcdic273_mbtowc, nullptr }, { ebcdic273_wctomb, nullptr }) @@ -1472,7 +1291,6 @@ DEFENCODING(( "IBM-277", "EBCDIC-CP-NO", /* IANA */ "csIBM277", /* IANA */ ), - 277, ebcdic277, { ebcdic277_mbtowc, nullptr }, { ebcdic277_wctomb, nullptr }) @@ -1483,7 +1301,6 @@ DEFENCODING(( "IBM-278", "EBCDIC-CP-SE", /* IANA */ "csIBM278", /* IANA */ ), - 278, ebcdic278, { ebcdic278_mbtowc, nullptr }, { ebcdic278_wctomb, nullptr }) @@ -1493,14 +1310,12 @@ DEFENCODING(( "IBM-280", "EBCDIC-CP-IT", /* IANA */ "csIBM280", /* IANA */ ), - 280, ebcdic280, { ebcdic280_mbtowc, nullptr }, { ebcdic280_wctomb, nullptr }) DEFENCODING(( "IBM-282", "IBM282", ), - 282, ebcdic282, { ebcdic282_mbtowc, nullptr }, { ebcdic282_wctomb, nullptr }) @@ -1510,7 +1325,6 @@ DEFENCODING(( "IBM-284", "EBCDIC-CP-ES", /* IANA */ "csIBM284", /* IANA */ ), - 284, ebcdic284, { ebcdic284_mbtowc, nullptr }, { ebcdic284_wctomb, nullptr }) @@ -1520,7 +1334,6 @@ DEFENCODING(( "IBM-285", "EBCDIC-CP-GB", /* IANA */ "csIBM285", /* IANA */ ), - 285, ebcdic285, { ebcdic285_mbtowc, nullptr }, { ebcdic285_wctomb, nullptr }) @@ -1530,7 +1343,6 @@ DEFENCODING(( "IBM-297", "EBCDIC-CP-FR", /* IANA */ "csIBM297", /* IANA */ ), - 297, ebcdic297, { ebcdic297_mbtowc, nullptr }, { ebcdic297_wctomb, nullptr }) @@ -1540,7 +1352,6 @@ DEFENCODING(( "IBM-423", "EBCDIC-CP-GR", /* IANA */ "csIBM423", /* IANA */ ), - 423, ebcdic423, { ebcdic423_mbtowc, nullptr }, { ebcdic423_wctomb, nullptr }) @@ -1550,14 +1361,12 @@ DEFENCODING(( "IBM-424", "EBCDIC-CP-HE", /* IANA */ "csIBM424", /* IANA */ ), - 424, ebcdic424, { ebcdic424_mbtowc, nullptr }, { ebcdic424_wctomb, nullptr }) DEFENCODING(( "IBM-425", "IBM425", ), - 425, ebcdic425, { ebcdic425_mbtowc, nullptr }, { ebcdic425_wctomb, nullptr }) @@ -1568,7 +1377,6 @@ DEFENCODING(( "IBM-500", "EBCDIC-CP-CH", /* IANA */ "csIBM500", /* IANA */ ), - 500, ebcdic500, { ebcdic500_mbtowc, nullptr }, { ebcdic500_wctomb, nullptr }) @@ -1577,7 +1385,6 @@ DEFENCODING(( "IBM-838", "IBM-THAI", /* IANA */ "csIBMThai", /* IANA */ ), - 838, ebcdic838, { ebcdic838_mbtowc, nullptr }, { ebcdic838_wctomb, nullptr }) @@ -1588,7 +1395,6 @@ DEFENCODING(( "IBM-870", "EBCDIC-CP-YU", /* IANA */ "csIBM870", /* IANA */ ), - 870, ebcdic870, { ebcdic870_mbtowc, nullptr }, { ebcdic870_wctomb, nullptr }) @@ -1598,7 +1404,6 @@ DEFENCODING(( "IBM-871", "EBCDIC-CP-IS", /* IANA */ "csIBM871", /* IANA */ ), - 871, ebcdic871, { ebcdic871_mbtowc, nullptr }, { ebcdic871_wctomb, nullptr }) @@ -1607,7 +1412,6 @@ DEFENCODING(( "IBM-875", "CP875", /* glibc */ "EBCDIC-GREEK", /* glibc */ ), - 875, ebcdic875, { ebcdic875_mbtowc, nullptr }, { ebcdic875_wctomb, nullptr }) @@ -1617,7 +1421,6 @@ DEFENCODING(( "IBM-880", "EBCDIC-CYRILLIC", /* IANA */ "csIBM880", /* IANA */ ), - 880, ebcdic880, { ebcdic880_mbtowc, nullptr }, { ebcdic880_wctomb, nullptr }) @@ -1627,7 +1430,6 @@ DEFENCODING(( "IBM-905", "EBCDIC-CP-TR", /* IANA */ "csIBM905", /* IANA */ ), - 905, ebcdic905, { ebcdic905_mbtowc, nullptr }, { ebcdic905_wctomb, nullptr }) @@ -1639,7 +1441,6 @@ DEFENCODING(( "IBM-924", "EBCDIC-LATIN9-EURO", /* IANA */ "csIBM00924", /* IANA */ ), - 924, ebcdic924, { ebcdic924_mbtowc, nullptr }, { ebcdic924_wctomb, nullptr }) @@ -1647,7 +1448,6 @@ DEFENCODING(( "IBM-1025", "IBM1025", /* glibc */ "CP1025", /* glibc */ ), - 1025, ebcdic1025, { ebcdic1025_mbtowc, nullptr }, { ebcdic1025_wctomb, nullptr }) @@ -1656,7 +1456,6 @@ DEFENCODING(( "IBM-1026", "CP1026", /* IANA */ "csIBM1026", /* IANA */ ), - 1026, ebcdic1026, { ebcdic1026_mbtowc, nullptr }, { ebcdic1026_wctomb, nullptr }) @@ -1665,7 +1464,6 @@ DEFENCODING(( "IBM-1047", /* IANA */ "CP1047", /* glibc */ "csIBM1047", /* IANA */ ), - 1047, ebcdic1047, { ebcdic1047_mbtowc, nullptr }, { ebcdic1047_wctomb, nullptr }) @@ -1673,7 +1471,6 @@ DEFENCODING(( "IBM-1097", "IBM1097", /* glibc */ "CP1097", /* glibc */ ), - 1097, ebcdic1097, { ebcdic1097_mbtowc, nullptr }, { ebcdic1097_wctomb, nullptr }) @@ -1681,7 +1478,6 @@ DEFENCODING(( "IBM-1112", "IBM1112", /* glibc */ "CP1112", /* glibc */ ), - 1112, ebcdic1112, { ebcdic1112_mbtowc, nullptr }, { ebcdic1112_wctomb, nullptr }) @@ -1689,7 +1485,6 @@ DEFENCODING(( "IBM-1122", "IBM1122", /* glibc */ "CP1122", /* glibc */ ), - 1122, ebcdic1122, { ebcdic1122_mbtowc, nullptr }, { ebcdic1122_wctomb, nullptr }) @@ -1697,7 +1492,6 @@ DEFENCODING(( "IBM-1123", "IBM1123", /* glibc */ "CP1123", /* glibc */ ), - 1123, ebcdic1123, { ebcdic1123_mbtowc, nullptr }, { ebcdic1123_wctomb, nullptr }) @@ -1705,7 +1499,6 @@ DEFENCODING(( "IBM-1130", "IBM1130", /* glibc */ "CP1130", /* glibc */ ), - 1130, ebcdic1130, { ebcdic1130_mbtowc, nullptr }, { ebcdic1130_wctomb, nullptr }) @@ -1713,7 +1506,6 @@ DEFENCODING(( "IBM-1132", "IBM1132", /* glibc */ "CP1132", /* glibc */ ), - 1132, ebcdic1132, { ebcdic1132_mbtowc, nullptr }, { ebcdic1132_wctomb, nullptr }) @@ -1721,7 +1513,6 @@ DEFENCODING(( "IBM-1137", "IBM1137", /* glibc */ "CP1137", /* glibc */ ), - 1137, ebcdic1137, { ebcdic1137_mbtowc, nullptr }, { ebcdic1137_wctomb, nullptr }) @@ -1733,7 +1524,6 @@ DEFENCODING(( "IBM-1140", "EBCDIC-US-37+EURO", /* IANA */ "csIBM01140", /* IANA */ ), - 1140, ebcdic1140, { ebcdic1140_mbtowc, nullptr }, { ebcdic1140_wctomb, nullptr }) @@ -1745,7 +1535,6 @@ DEFENCODING(( "IBM-1141", "EBCDIC-DE-273+EURO", /* IANA */ "csIBM01141", /* IANA */ ), - 1141, ebcdic1141, { ebcdic1141_mbtowc, nullptr }, { ebcdic1141_wctomb, nullptr }) @@ -1758,7 +1547,6 @@ DEFENCODING(( "IBM-1142", "EBCDIC-NO-277+EURO", /* IANA */ "csIBM01142", /* IANA */ ), - 1142, ebcdic1142, { ebcdic1142_mbtowc, nullptr }, { ebcdic1142_wctomb, nullptr }) @@ -1771,7 +1559,6 @@ DEFENCODING(( "IBM-1143", "EBCDIC-SE-278+EURO", /* IANA */ "csIBM01143", /* IANA */ ), - 1143, ebcdic1143, { ebcdic1143_mbtowc, nullptr }, { ebcdic1143_wctomb, nullptr }) @@ -1783,7 +1570,6 @@ DEFENCODING(( "IBM-1144", "EBCDIC-IT-280+EURO", /* IANA */ "csPC8CodePage1144", /* IANA */ ), - 1144, ebcdic1144, { ebcdic1144_mbtowc, nullptr }, { ebcdic1144_wctomb, nullptr }) @@ -1795,7 +1581,6 @@ DEFENCODING(( "IBM-1145", "EBCDIC-ES-284+EURO", /* IANA */ "csIBM01145", /* IANA */ ), - 1145, ebcdic1145, { ebcdic1145_mbtowc, nullptr }, { ebcdic1145_wctomb, nullptr }) @@ -1807,7 +1592,6 @@ DEFENCODING(( "IBM-1146", "EBCDIC-GB-285+EURO", /* IANA */ "csPC8CodePage1146", /* IANA */ ), - 1146, ebcdic1146, { ebcdic1146_mbtowc, nullptr }, { ebcdic1146_wctomb, nullptr }) @@ -1819,7 +1603,6 @@ DEFENCODING(( "IBM-1147", "EBCDIC-FR-297+EURO", /* IANA */ "csIBM01147", /* IANA */ ), - 1147, ebcdic1147, { ebcdic1147_mbtowc, nullptr }, { ebcdic1147_wctomb, nullptr }) @@ -1831,7 +1614,6 @@ DEFENCODING(( "IBM-1148", "EBCDIC-INTERNATIONAL-500+EURO", /* IANA */ "csIBM01148", /* IANA */ ), - 1148, ebcdic1148, { ebcdic1148_mbtowc, nullptr }, { ebcdic1148_wctomb, nullptr }) @@ -1843,7 +1625,6 @@ DEFENCODING(( "IBM-1149", "EBCDIC-IS-871+EURO", /* IANA */ "csIBM01149", /* IANA */ ), - 1149, ebcdic1149, { ebcdic1149_mbtowc, nullptr }, { ebcdic1149_wctomb, nullptr }) @@ -1851,7 +1632,6 @@ DEFENCODING(( "IBM-1153", "IBM1153", /* glibc */ "CP1153", /* glibc */ ), - 1153, ebcdic1153, { ebcdic1153_mbtowc, nullptr }, { ebcdic1153_wctomb, nullptr }) @@ -1859,7 +1639,6 @@ DEFENCODING(( "IBM-1154", "IBM1154", /* glibc */ "CP1154", /* glibc */ ), - 1154, ebcdic1154, { ebcdic1154_mbtowc, nullptr }, { ebcdic1154_wctomb, nullptr }) @@ -1867,7 +1646,6 @@ DEFENCODING(( "IBM-1155", "IBM1155", /* glibc */ "CP1155", /* glibc */ ), - 1155, ebcdic1155, { ebcdic1155_mbtowc, nullptr }, { ebcdic1155_wctomb, nullptr }) @@ -1875,7 +1653,6 @@ DEFENCODING(( "IBM-1156", "IBM1156", /* glibc */ "CP1156", /* glibc */ ), - 1156, ebcdic1156, { ebcdic1156_mbtowc, nullptr }, { ebcdic1156_wctomb, nullptr }) @@ -1883,7 +1660,6 @@ DEFENCODING(( "IBM-1157", "IBM1157", /* glibc */ "CP1157", /* glibc */ ), - 1157, ebcdic1157, { ebcdic1157_mbtowc, nullptr }, { ebcdic1157_wctomb, nullptr }) @@ -1891,7 +1667,6 @@ DEFENCODING(( "IBM-1158", "IBM1158", /* glibc */ "CP1158", /* glibc */ ), - 1158, ebcdic1158, { ebcdic1158_mbtowc, nullptr }, { ebcdic1158_wctomb, nullptr }) @@ -1899,7 +1674,6 @@ DEFENCODING(( "IBM-1160", "IBM1160", /* glibc */ "CP1160", /* glibc */ ), - 1160, ebcdic1160, { ebcdic1160_mbtowc, nullptr }, { ebcdic1160_wctomb, nullptr }) @@ -1907,14 +1681,12 @@ DEFENCODING(( "IBM-1164", "IBM1164", /* glibc */ "CP1164", /* glibc */ ), - 1164, ebcdic1164, { ebcdic1164_mbtowc, nullptr }, { ebcdic1164_wctomb, nullptr }) DEFENCODING(( "IBM-1165", "IBM1165", ), - 1165, ebcdic1165, { ebcdic1165_mbtowc, nullptr }, { ebcdic1165_wctomb, nullptr }) @@ -1922,7 +1694,6 @@ DEFENCODING(( "IBM-1166", "IBM1166", /* glibc */ "CP1166", /* glibc */ ), - 1166, ebcdic1166, { ebcdic1166_mbtowc, nullptr }, { ebcdic1166_wctomb, nullptr }) @@ -1930,7 +1701,6 @@ DEFENCODING(( "IBM-4971", "IBM4971", /* glibc */ "CP4971", /* glibc */ ), - 4971, ebcdic4971, { ebcdic4971_mbtowc, nullptr }, { ebcdic4971_wctomb, nullptr }) @@ -1938,7 +1708,6 @@ DEFENCODING(( "IBM-12712", "IBM12712", /* glibc */ "CP12712", /* glibc */ ), - 12712, ebcdic12712, { ebcdic12712_mbtowc, nullptr }, { ebcdic12712_wctomb, nullptr }) @@ -1946,7 +1715,6 @@ DEFENCODING(( "IBM-16804", "IBM16804", /* glibc */ "CP16804", /* glibc */ ), - 16804, ebcdic16804, { ebcdic16804_mbtowc, nullptr }, { ebcdic16804_wctomb, nullptr }) @@ -1972,47 +1740,40 @@ DEFENCODING(( "IBM-16804", DEFENCODING(( "EUC-JISX0213", "EUC-JIS-2004", /* x0213.org */ ), - -1, euc_jisx0213, { euc_jisx0213_mbtowc, euc_jisx0213_flushwc }, { euc_jisx0213_wctomb, euc_jisx0213_reset }) DEFENCODING(( "SHIFT_JISX0213", "SHIFT_JIS-2004", /* x0213.org */ ), - -1, shift_jisx0213, { shift_jisx0213_mbtowc, shift_jisx0213_flushwc }, { shift_jisx0213_wctomb, shift_jisx0213_reset }) DEFENCODING(( "ISO-2022-JP-3", "ISO-2022-JP-2004", /* x0213.org */ ), - -1, iso2022_jp3, { iso2022_jp3_mbtowc, iso2022_jp3_flushwc }, { iso2022_jp3_wctomb, iso2022_jp3_reset }) DEFENCODING(( "BIG5-2003", ), - -1, big5_2003, { big5_2003_mbtowc, nullptr }, { big5_2003_wctomb, nullptr }) DEFENCODING(( "TDS565", "ISO-IR-230", ), - -1, tds565, { tds565_mbtowc, nullptr }, { tds565_wctomb, nullptr }) DEFENCODING(( "ATARIST", "ATARI", ), - -1, atarist, { atarist_mbtowc, nullptr }, { atarist_wctomb, nullptr }) DEFENCODING(( "RISCOS-LATIN1", ), - -1, riscos1, { riscos1_mbtowc, nullptr }, { riscos1_wctomb, nullptr }) diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index a7b2f623..6dfa551e 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 673 +#define TOTAL_KEYWORDS 684 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 22 -#define MAX_HASH_VALUE 2582 -/* maximum key range = 2561, duplicates = 0 */ +#define MIN_HASH_VALUE 20 +#define MAX_HASH_VALUE 2630 +/* maximum key range = 2611, duplicates = 0 */ class HashPool { @@ -52,19 +52,19 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 251, 26, 403, 66, 9, - 4, 120, 39, 2, 1, 192, 36, 404, 279, 3, - 9, 2583, 2583, 2583, 2583, 11, 1, 26, 76, 220, - 442, 247, 91, 1, 87, 293, 18, 195, 47, 4, - 1, 206, 6, 368, 8, 165, 497, 327, 115, 23, - 24, 2, 2583, 2583, 2583, 220, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583 + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 272, 9, 402, 82, 11, + 6, 122, 52, 4, 3, 238, 40, 347, 13, 3, + 4, 2631, 2631, 2631, 2631, 18, 3, 29, 8, 87, + 347, 609, 169, 3, 180, 217, 12, 193, 313, 5, + 3, 7, 14, 476, 5, 59, 109, 318, 291, 80, + 30, 7, 2631, 2631, 2631, 146, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631 }; unsigned int hval = len; @@ -109,679 +109,690 @@ HashPool::aliases_hash (const char *str, size_t len) struct stringpool_t { - char stringpool_str22[sizeof("L6")]; - char stringpool_str24[sizeof("L5")]; - char stringpool_str28[sizeof("L2")]; - char stringpool_str38[sizeof("L1")]; - char stringpool_str42[sizeof("866")]; - char stringpool_str43[sizeof("ATARI")]; - char stringpool_str44[sizeof("865")]; - char stringpool_str45[sizeof("855")]; - char stringpool_str48[sizeof("862")]; - char stringpool_str49[sizeof("852")]; - char stringpool_str50[sizeof("CP1256")]; - char stringpool_str52[sizeof("CP1255")]; - char stringpool_str54[sizeof("CP1166")]; - char stringpool_str55[sizeof("CP1156")]; - char stringpool_str56[sizeof("CP1252")]; - char stringpool_str57[sizeof("CP1155")]; - char stringpool_str58[sizeof("861")]; - char stringpool_str59[sizeof("CP1125")]; - char stringpool_str60[sizeof("CP1162")]; - char stringpool_str63[sizeof("CP1122")]; - char stringpool_str66[sizeof("CP1251")]; - char stringpool_str68[sizeof("CP1112")]; - char stringpool_str70[sizeof("CP1161")]; - char stringpool_str71[sizeof("CP866")]; - char stringpool_str72[sizeof("CP856")]; - char stringpool_str73[sizeof("CP865")]; - char stringpool_str74[sizeof("CP855")]; - char stringpool_str76[sizeof("CP285")]; - char stringpool_str77[sizeof("CP862")]; - char stringpool_str78[sizeof("CP852")]; - char stringpool_str80[sizeof("R8")]; - char stringpool_str87[sizeof("CP861")]; - char stringpool_str88[sizeof("ARABIC")]; - char stringpool_str91[sizeof("JP")]; - char stringpool_str92[sizeof("L8")]; - char stringpool_str93[sizeof("LATIN6")]; - char stringpool_str95[sizeof("LATIN5")]; - char stringpool_str98[sizeof("L4")]; - char stringpool_str99[sizeof("LATIN2")]; - char stringpool_str103[sizeof("PT154")]; - char stringpool_str109[sizeof("LATIN1")]; - char stringpool_str114[sizeof("CP1026")]; - char stringpool_str116[sizeof("CP1025")]; - char stringpool_str120[sizeof("CP1258")]; - char stringpool_str121[sizeof("CP154")]; - char stringpool_str122[sizeof("CN")]; - char stringpool_str125[sizeof("CP1158")]; - char stringpool_str126[sizeof("CP1254")]; - char stringpool_str128[sizeof("CP50221")]; - char stringpool_str130[sizeof("CP1164")]; - char stringpool_str131[sizeof("CP1154")]; - char stringpool_str132[sizeof("PTCP154")]; - char stringpool_str133[sizeof("CP1124")]; - char stringpool_str141[sizeof("HZ")]; - char stringpool_str142[sizeof("CP858")]; - char stringpool_str147[sizeof("CP864")]; - char stringpool_str149[sizeof("CP1046")]; - char stringpool_str150[sizeof("CP284")]; - char stringpool_str153[sizeof("CP424")]; - char stringpool_str159[sizeof("CP01146")]; - char stringpool_str161[sizeof("CP01145")]; - char stringpool_str162[sizeof("L10")]; - char stringpool_str163[sizeof("LATIN8")]; - char stringpool_str165[sizeof("CP01142")]; - char stringpool_str169[sizeof("LATIN4")]; - char stringpool_str172[sizeof("860")]; - char stringpool_str173[sizeof("850")]; - char stringpool_str175[sizeof("CP01141")]; - char stringpool_str179[sizeof("CP1132")]; - char stringpool_str180[sizeof("CP1250")]; - char stringpool_str181[sizeof("CP1361")]; - char stringpool_str184[sizeof("CP1160")]; - char stringpool_str189[sizeof("CP1131")]; - char stringpool_str200[sizeof("JOHAB")]; - char stringpool_str201[sizeof("CP860")]; - char stringpool_str202[sizeof("CP850")]; - char stringpool_str204[sizeof("CP280")]; - char stringpool_str207[sizeof("X0212")]; - char stringpool_str224[sizeof("CP16804")]; - char stringpool_str225[sizeof("IBM1166")]; - char stringpool_str226[sizeof("IBM1156")]; - char stringpool_str227[sizeof("IBM1165")]; - char stringpool_str228[sizeof("IBM1155")]; - char stringpool_str229[sizeof("CP01148")]; - char stringpool_str231[sizeof("IBM1162")]; - char stringpool_str232[sizeof("CP500")]; - char stringpool_str233[sizeof("LATIN10")]; - char stringpool_str234[sizeof("IBM1122")]; - char stringpool_str235[sizeof("CP01144")]; - char stringpool_str236[sizeof("CP880")]; - char stringpool_str239[sizeof("IBM1112")]; - char stringpool_str241[sizeof("IBM1161")]; - char stringpool_str242[sizeof("IBM866")]; - char stringpool_str244[sizeof("IBM865")]; - char stringpool_str245[sizeof("IBM855")]; - char stringpool_str247[sizeof("IBM285")]; - char stringpool_str248[sizeof("IBM862")]; - char stringpool_str249[sizeof("IBM852")]; - char stringpool_str250[sizeof("IBM425")]; - char stringpool_str251[sizeof("IBM282")]; - char stringpool_str256[sizeof("CP12712")]; - char stringpool_str257[sizeof("BIG5")]; - char stringpool_str258[sizeof("IBM861")]; - char stringpool_str260[sizeof("L3")]; - char stringpool_str261[sizeof("MAC")]; - char stringpool_str263[sizeof("IBM1146")]; - char stringpool_str264[sizeof("CP875")]; - char stringpool_str265[sizeof("IBM1145")]; - char stringpool_str269[sizeof("IBM1142")]; - char stringpool_str274[sizeof("X0201")]; - char stringpool_str278[sizeof("CP871")]; - char stringpool_str279[sizeof("IBM1141")]; - char stringpool_str280[sizeof("863")]; - char stringpool_str285[sizeof("IBM1026")]; - char stringpool_str287[sizeof("IBM1025")]; - char stringpool_str288[sizeof("CP1253")]; - char stringpool_str289[sizeof("CP01140")]; - char stringpool_str292[sizeof("CP1163")]; - char stringpool_str293[sizeof("CP1153")]; - char stringpool_str295[sizeof("CP1123")]; - char stringpool_str296[sizeof("IBM1158")]; - char stringpool_str300[sizeof("CP278")]; - char stringpool_str301[sizeof("IBM1164")]; - char stringpool_str302[sizeof("IBM1154")]; - char stringpool_str303[sizeof("CP1130")]; - char stringpool_str309[sizeof("CP863")]; - char stringpool_str310[sizeof("CP853")]; - char stringpool_str311[sizeof("UHC")]; - char stringpool_str315[sizeof("CP423")]; - char stringpool_str318[sizeof("IBM864")]; - char stringpool_str321[sizeof("IBM284")]; - char stringpool_str324[sizeof("IBM424")]; - char stringpool_str328[sizeof("X0208")]; - char stringpool_str331[sizeof("LATIN3")]; - char stringpool_str333[sizeof("IBM1148")]; - char stringpool_str338[sizeof("CP874")]; - char stringpool_str339[sizeof("IBM1144")]; - char stringpool_str341[sizeof("ROMAN8")]; - char stringpool_str347[sizeof("CYRILLIC")]; - char stringpool_str350[sizeof("IBM1132")]; - char stringpool_str351[sizeof("MACTHAI")]; - char stringpool_str355[sizeof("IBM1160")]; - char stringpool_str357[sizeof("IBM16804")]; - char stringpool_str365[sizeof("IBM01146")]; - char stringpool_str368[sizeof("IBM01144")]; - char stringpool_str371[sizeof("IBM01142")]; - char stringpool_str372[sizeof("IBM860")]; - char stringpool_str373[sizeof("IBM850")]; - char stringpool_str375[sizeof("IBM280")]; - char stringpool_str392[sizeof("CP870")]; - char stringpool_str393[sizeof("IBM1140")]; - char stringpool_str395[sizeof("GB2312")]; - char stringpool_str397[sizeof("CP01143")]; - char stringpool_str398[sizeof("IBM01140")]; - char stringpool_str403[sizeof("IBM500")]; - char stringpool_str404[sizeof("L7")]; - char stringpool_str407[sizeof("IBM880")]; - char stringpool_str411[sizeof("CP1133")]; - char stringpool_str413[sizeof("ASCII")]; - char stringpool_str420[sizeof("CP775")]; - char stringpool_str425[sizeof("857")]; - char stringpool_str428[sizeof("ATARIST")]; - char stringpool_str431[sizeof("IBM838")]; - char stringpool_str432[sizeof("CP1257")]; - char stringpool_str435[sizeof("IBM875")]; - char stringpool_str437[sizeof("CP1157")]; - char stringpool_str448[sizeof("CP922")]; - char stringpool_str449[sizeof("IBM871")]; - char stringpool_str450[sizeof("IBM01143")]; - char stringpool_str454[sizeof("CP857")]; - char stringpool_str457[sizeof("IBM01141")]; - char stringpool_str462[sizeof("IBM12712")]; - char stringpool_str463[sizeof("IBM1163")]; - char stringpool_str464[sizeof("IBM1153")]; - char stringpool_str465[sizeof("TDS565")]; - char stringpool_str466[sizeof("IBM1123")]; - char stringpool_str467[sizeof("MACCYRILLIC")]; - char stringpool_str468[sizeof("CP273")]; - char stringpool_str471[sizeof("IBM278")]; - char stringpool_str474[sizeof("IBM1130")]; - char stringpool_str475[sizeof("LATIN7")]; - char stringpool_str480[sizeof("IBM863")]; - char stringpool_str482[sizeof("MACROMANIA")]; - char stringpool_str486[sizeof("IBM423")]; - char stringpool_str491[sizeof("RK1048")]; - char stringpool_str499[sizeof("IBM-285")]; - char stringpool_str501[sizeof("IBM1143")]; - char stringpool_str502[sizeof("IBM-425")]; - char stringpool_str503[sizeof("IBM-282")]; - char stringpool_str504[sizeof("MACROMAN")]; - char stringpool_str505[sizeof("EUCJP")]; - char stringpool_str506[sizeof("CP905")]; - char stringpool_str509[sizeof("BIG-5")]; - char stringpool_str511[sizeof("CSPCP852")]; - char stringpool_str512[sizeof("IBM-1166")]; - char stringpool_str513[sizeof("IBM-1156")]; - char stringpool_str515[sizeof("IBM-1164")]; - char stringpool_str516[sizeof("IBM-1154")]; - char stringpool_str518[sizeof("IBM-1162")]; - char stringpool_str520[sizeof("TIS620")]; - char stringpool_str521[sizeof("IBM-1122")]; - char stringpool_str522[sizeof("IBM01145")]; - char stringpool_str526[sizeof("IBM-1112")]; - char stringpool_str531[sizeof("CP1047")]; - char stringpool_str536[sizeof("EUCCN")]; - char stringpool_str537[sizeof("CP367")]; - char stringpool_str541[sizeof("CP01147")]; - char stringpool_str542[sizeof("CP-GR")]; - char stringpool_str545[sizeof("IBM-1160")]; - char stringpool_str546[sizeof("437")]; - char stringpool_str550[sizeof("IBM-1146")]; - char stringpool_str553[sizeof("IBM-1144")]; - char stringpool_str555[sizeof("CP1137")]; - char stringpool_str556[sizeof("IBM-1142")]; - char stringpool_str558[sizeof("CP936")]; - char stringpool_str563[sizeof("IBM870")]; - char stringpool_str564[sizeof("CP932")]; - char stringpool_str570[sizeof("CP950")]; - char stringpool_str572[sizeof("IBM-1026")]; - char stringpool_str573[sizeof("IBM-284")]; - char stringpool_str575[sizeof("CP437")]; - char stringpool_str576[sizeof("IBM-424")]; - char stringpool_str578[sizeof("CN-GB")]; - char stringpool_str583[sizeof("IBM-1140")]; - char stringpool_str584[sizeof("CN-BIG5")]; - char stringpool_str585[sizeof("IBM-16804")]; - char stringpool_str591[sizeof("IBM775")]; - char stringpool_str597[sizeof("IBM-1163")]; - char stringpool_str598[sizeof("IBM-1153")]; - char stringpool_str600[sizeof("IBM-1123")]; - char stringpool_str602[sizeof("CP037")]; - char stringpool_str603[sizeof("KOI8-R")]; - char stringpool_str604[sizeof("IBM-1161")]; - char stringpool_str607[sizeof("KOI8-T")]; - char stringpool_str608[sizeof("IBM1157")]; - char stringpool_str615[sizeof("MACARABIC")]; - char stringpool_str618[sizeof("GB18030")]; - char stringpool_str621[sizeof("JAVA")]; - char stringpool_str625[sizeof("IBM857")]; - char stringpool_str627[sizeof("IBM-280")]; - char stringpool_str629[sizeof("TCVN")]; - char stringpool_str634[sizeof("KOREAN")]; - char stringpool_str635[sizeof("IBM-1143")]; - char stringpool_str637[sizeof("IBM-1132")]; - char stringpool_str639[sizeof("IBM273")]; - char stringpool_str641[sizeof("HP-ROMAN8")]; - char stringpool_str642[sizeof("IBM-1141")]; - char stringpool_str643[sizeof("IBM01148")]; - char stringpool_str644[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str645[sizeof("IBM1147")]; - char stringpool_str647[sizeof("GB18030:2005")]; - char stringpool_str648[sizeof("MACINTOSH")]; - char stringpool_str652[sizeof("CP00924")]; - char stringpool_str653[sizeof("CSBIG5")]; - char stringpool_str655[sizeof("IBM-500")]; - char stringpool_str659[sizeof("IBM-880")]; - char stringpool_str662[sizeof("CSIBM1162")]; - char stringpool_str664[sizeof("IBM-1130")]; - char stringpool_str669[sizeof("IBM-1165")]; - char stringpool_str670[sizeof("IBM-1155")]; - char stringpool_str671[sizeof("JIS0208")]; - char stringpool_str672[sizeof("CSIBM1161")]; - char stringpool_str673[sizeof("CSIBM866")]; - char stringpool_str676[sizeof("CSIBM864")]; - char stringpool_str677[sizeof("IBM905")]; - char stringpool_str679[sizeof("CSIBM284")]; - char stringpool_str682[sizeof("CSIBM424")]; - char stringpool_str683[sizeof("IBM-838")]; - char stringpool_str686[sizeof("CP4971")]; - char stringpool_str687[sizeof("IBM-875")]; - char stringpool_str689[sizeof("IBM924")]; - char stringpool_str694[sizeof("ISO646-JP")]; - char stringpool_str696[sizeof("TIS620.2533-1")]; - char stringpool_str701[sizeof("IBM-871")]; - char stringpool_str702[sizeof("IBM1047")]; - char stringpool_str706[sizeof("CSIBM860")]; - char stringpool_str707[sizeof("IBM-1145")]; - char stringpool_str708[sizeof("IBM367")]; - char stringpool_str709[sizeof("CSIBM280")]; - char stringpool_str715[sizeof("CP943")]; - char stringpool_str716[sizeof("CSIBM1026")]; - char stringpool_str718[sizeof("CSPTCP154")]; - char stringpool_str721[sizeof("EUCKR")]; - char stringpool_str723[sizeof("IBM-278")]; - char stringpool_str724[sizeof("CCSID00924")]; - char stringpool_str726[sizeof("IBM1137")]; - char stringpool_str727[sizeof("CSIBMTHAI")]; - char stringpool_str728[sizeof("CP737")]; - char stringpool_str729[sizeof("IBM-1025")]; - char stringpool_str732[sizeof("MACICELAND")]; - char stringpool_str735[sizeof("IBM01149")]; - char stringpool_str737[sizeof("CSIBM500")]; - char stringpool_str738[sizeof("IBM-423")]; - char stringpool_str741[sizeof("CSIBM880")]; - char stringpool_str743[sizeof("CCSID01146")]; - char stringpool_str745[sizeof("CCSID01145")]; - char stringpool_str746[sizeof("IBM437")]; - char stringpool_str747[sizeof("CSKOI8R")]; - char stringpool_str749[sizeof("CCSID01142")]; - char stringpool_str753[sizeof("TIS620.2533-0")]; - char stringpool_str757[sizeof("EUC-JP")]; - char stringpool_str758[sizeof("CSIBM863")]; - char stringpool_str759[sizeof("CCSID01141")]; - char stringpool_str760[sizeof("GB18030:2022")]; - char stringpool_str761[sizeof("KZ-1048")]; - char stringpool_str764[sizeof("CSIBM423")]; - char stringpool_str765[sizeof("CSIBM861")]; - char stringpool_str769[sizeof("ECMA-114")]; - char stringpool_str772[sizeof("TIS-620")]; - char stringpool_str773[sizeof("IBM037")]; - char stringpool_str776[sizeof("EBCDIC-LATIN9-EURO")]; - char stringpool_str777[sizeof("TIS620-0")]; - char stringpool_str783[sizeof("IBM277")]; - char stringpool_str785[sizeof("IBM00924")]; - char stringpool_str788[sizeof("EUC-CN")]; - char stringpool_str790[sizeof("IBM-12712")]; - char stringpool_str791[sizeof("IBM-1158")]; - char stringpool_str809[sizeof("CSASCII")]; - char stringpool_str813[sizeof("CCSID01148")]; - char stringpool_str815[sizeof("IBM-870")]; - char stringpool_str818[sizeof("CSIBM00924")]; - char stringpool_str819[sizeof("CCSID01144")]; - char stringpool_str820[sizeof("TIS620.2529-1")]; - char stringpool_str822[sizeof("WINBALTRIM")]; - char stringpool_str823[sizeof("UCS-2")]; - char stringpool_str824[sizeof("CP297")]; - char stringpool_str825[sizeof("BIG5-2003")]; - char stringpool_str826[sizeof("CSGB2312")]; - char stringpool_str828[sizeof("IBM-1148")]; - char stringpool_str830[sizeof("CSIBM865")]; - char stringpool_str831[sizeof("CSIBM855")]; - char stringpool_str833[sizeof("CSIBM285")]; - char stringpool_str837[sizeof("GBK")]; - char stringpool_str839[sizeof("CSIBM01145")]; - char stringpool_str843[sizeof("CSIBM01142")]; - char stringpool_str846[sizeof("CSHPROMAN8")]; - char stringpool_str848[sizeof("869")]; - char stringpool_str850[sizeof("MACCROATIAN")]; - char stringpool_str851[sizeof("MS-ARAB")]; - char stringpool_str853[sizeof("CSIBM01141")]; - char stringpool_str857[sizeof("IBM4971")]; - char stringpool_str860[sizeof("IBM-THAI")]; - char stringpool_str863[sizeof("CP1129")]; - char stringpool_str873[sizeof("CCSID01140")]; - char stringpool_str877[sizeof("CP869")]; - char stringpool_str883[sizeof("UTF-16")]; - char stringpool_str885[sizeof("CP819")]; - char stringpool_str891[sizeof("IBM-273")]; - char stringpool_str892[sizeof("JIS_X0201")]; - char stringpool_str893[sizeof("UCS-4")]; - char stringpool_str894[sizeof("CSIBM1163")]; - char stringpool_str896[sizeof("CP1097")]; - char stringpool_str897[sizeof("CSIBM870")]; - char stringpool_str898[sizeof("HZ-GB-2312")]; - char stringpool_str899[sizeof("IBM737")]; - char stringpool_str901[sizeof("VISCII")]; - char stringpool_str903[sizeof("US")]; - char stringpool_str907[sizeof("CSIBM01148")]; - char stringpool_str912[sizeof("MS-CYRL")]; - char stringpool_str914[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str917[sizeof("CSIBM273")]; - char stringpool_str920[sizeof("IBM-1149")]; - char stringpool_str921[sizeof("KOI8-U")]; - char stringpool_str924[sizeof("IBM01147")]; - char stringpool_str927[sizeof("ISO-IR-6")]; - char stringpool_str928[sizeof("KOI8-RU")]; - char stringpool_str929[sizeof("IBM-905")]; - char stringpool_str931[sizeof("CSISO58GB231280")]; - char stringpool_str933[sizeof("ISO_8859-6")]; - char stringpool_str935[sizeof("ISO_8859-5")]; - char stringpool_str937[sizeof("ISO-IR-226")]; - char stringpool_str939[sizeof("ISO_8859-2")]; - char stringpool_str941[sizeof("IBM-924")]; - char stringpool_str943[sizeof("UTF-8")]; - char stringpool_str944[sizeof("ISO_8859-15")]; - char stringpool_str946[sizeof("JIS_X0208")]; - char stringpool_str949[sizeof("ISO_8859-1")]; - char stringpool_str953[sizeof("DEC-KANJI")]; - char stringpool_str954[sizeof("ISO_8859-11")]; - char stringpool_str956[sizeof("CSIBM871")]; - char stringpool_str959[sizeof("ISO_8859-10:1992")]; - char stringpool_str960[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str963[sizeof("CSISO159JISX02121990")]; - char stringpool_str964[sizeof("ISO-8859-6")]; - char stringpool_str965[sizeof("CP01149")]; - char stringpool_str966[sizeof("ISO-8859-5")]; - char stringpool_str967[sizeof("CSIBM01140")]; - char stringpool_str968[sizeof("CSISO2022CN")]; - char stringpool_str970[sizeof("ISO-8859-2")]; - char stringpool_str973[sizeof("EUC-KR")]; - char stringpool_str974[sizeof("IBM-CP1133")]; - char stringpool_str975[sizeof("ISO-8859-15")]; - char stringpool_str977[sizeof("ISO_8859-5:1988")]; - char stringpool_str978[sizeof("EBCDIC-CYRILLIC")]; - char stringpool_str980[sizeof("ISO-8859-1")]; - char stringpool_str981[sizeof("CCSID01143")]; - char stringpool_str982[sizeof("ISO_8859-14")]; - char stringpool_str983[sizeof("ISO_8859-15:1998")]; - char stringpool_str984[sizeof("ISO_8859-14:1998")]; - char stringpool_str985[sizeof("ISO-8859-11")]; - char stringpool_str988[sizeof("ISO646-CN")]; - char stringpool_str993[sizeof("UNICODELITTLE")]; - char stringpool_str994[sizeof("DECHANYU")]; - char stringpool_str995[sizeof("IBM297")]; - char stringpool_str996[sizeof("EBCDIC-GB-285+EURO")]; - char stringpool_str998[sizeof("JIS_X0212")]; - char stringpool_str999[sizeof("EBCDIC-NO-277+EURO")]; - char stringpool_str1000[sizeof("UTF-32")]; - char stringpool_str1001[sizeof("NEXTSTEP")]; - char stringpool_str1003[sizeof("ISO_8859-8")]; - char stringpool_str1009[sizeof("ISO_8859-4")]; - char stringpool_str1011[sizeof("ISO_8859-8:1988")]; - char stringpool_str1013[sizeof("ISO-8859-14")]; - char stringpool_str1014[sizeof("ISO_8859-4:1988")]; - char stringpool_str1015[sizeof("ISO-IR-166")]; - char stringpool_str1016[sizeof("ISO_8859-10")]; - char stringpool_str1017[sizeof("ISO-IR-165")]; - char stringpool_str1018[sizeof("ISO-IR-126")]; - char stringpool_str1020[sizeof("CP-IS")]; - char stringpool_str1025[sizeof("IBM-037")]; - char stringpool_str1034[sizeof("ISO-8859-8")]; - char stringpool_str1035[sizeof("IBM-277")]; - char stringpool_str1037[sizeof("CSUCS4")]; - char stringpool_str1040[sizeof("ISO-8859-4")]; - char stringpool_str1041[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str1043[sizeof("CSIBM869")]; - char stringpool_str1044[sizeof("ECMA-118")]; - char stringpool_str1047[sizeof("ISO-8859-10")]; - char stringpool_str1048[sizeof("IBM869")]; - char stringpool_str1056[sizeof("IBM819")]; - char stringpool_str1059[sizeof("ISO_646.IRV:1991")]; - char stringpool_str1060[sizeof("CSIBM1047")]; - char stringpool_str1061[sizeof("MULELAO-1")]; - char stringpool_str1062[sizeof("DECKANJI")]; - char stringpool_str1063[sizeof("DEC-HANYU")]; - char stringpool_str1064[sizeof("GREEK8")]; - char stringpool_str1067[sizeof("IBM1097")]; - char stringpool_str1069[sizeof("IBM1149")]; - char stringpool_str1072[sizeof("IBM-1157")]; - char stringpool_str1075[sizeof("CSIBM01143")]; - char stringpool_str1076[sizeof("ISO-2022-CN")]; - char stringpool_str1078[sizeof("EUCTW")]; - char stringpool_str1086[sizeof("EBCDIC-FI-278+EURO")]; - char stringpool_str1088[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str1089[sizeof("ISO-IR-14")]; - char stringpool_str1091[sizeof("EBCDIC-FR-297+EURO")]; - char stringpool_str1092[sizeof("ARMSCII-8")]; - char stringpool_str1093[sizeof("EBCDIC-CP-NO")]; - char stringpool_str1094[sizeof("MS936")]; - char stringpool_str1095[sizeof("ISO_8859-3:1988")]; - char stringpool_str1096[sizeof("ISO-IR-101")]; - char stringpool_str1097[sizeof("JIS_X0212.1990-0")]; - char stringpool_str1099[sizeof("TCVN5712-1")]; - char stringpool_str1100[sizeof("ISO_8859-13")]; - char stringpool_str1107[sizeof("EBCDIC-CP-NL")]; - char stringpool_str1109[sizeof("IBM-1147")]; - char stringpool_str1110[sizeof("CSIBM278")]; - char stringpool_str1113[sizeof("KSC_5601")]; - char stringpool_str1114[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str1116[sizeof("CSPC775BALTIC")]; - char stringpool_str1117[sizeof("CSEUCKR")]; - char stringpool_str1120[sizeof("UNICODEBIG")]; - char stringpool_str1123[sizeof("ISO-IR-148")]; - char stringpool_str1125[sizeof("CCSID01147")]; - char stringpool_str1129[sizeof("ISO-IR-144")]; - char stringpool_str1131[sizeof("ISO-8859-13")]; - char stringpool_str1132[sizeof("ISO_8859-6:1987")]; - char stringpool_str1134[sizeof("ISO_8859-16")]; - char stringpool_str1135[sizeof("ISO_8859-2:1987")]; - char stringpool_str1136[sizeof("JIS_C6226-1983")]; - char stringpool_str1140[sizeof("ISO_8859-1:1987")]; - char stringpool_str1145[sizeof("MS-HEBR")]; - char stringpool_str1147[sizeof("ISO_8859-16:2001")]; - char stringpool_str1148[sizeof("CSKZ1048")]; - char stringpool_str1151[sizeof("LATIN-9")]; - char stringpool_str1153[sizeof("ISO-IR-110")]; - char stringpool_str1155[sizeof("ISO-IR-58")]; - char stringpool_str1160[sizeof("TCVN-5712")]; - char stringpool_str1165[sizeof("ISO-8859-16")]; - char stringpool_str1166[sizeof("IBM-1047")]; - char stringpool_str1169[sizeof("CSPC8CODEPAGE1146")]; - char stringpool_str1171[sizeof("ISO_8859-3")]; - char stringpool_str1172[sizeof("EBCDIC-CP-CA")]; - char stringpool_str1177[sizeof("EBCDIC-CP-GB")]; - char stringpool_str1180[sizeof("EBCDIC-CP-IT")]; - char stringpool_str1182[sizeof("EBCDIC-CP-GR")]; - char stringpool_str1183[sizeof("ISO-IR-230")]; - char stringpool_str1185[sizeof("CSISO2022JP")]; - char stringpool_str1186[sizeof("GB_2312-80")]; - char stringpool_str1189[sizeof("CSISO2022JP2")]; - char stringpool_str1190[sizeof("IBM-1137")]; - char stringpool_str1196[sizeof("SJIS")]; - char stringpool_str1198[sizeof("HEBREW")]; - char stringpool_str1199[sizeof("RISCOS-LATIN1")]; - char stringpool_str1200[sizeof("CHINESE")]; - char stringpool_str1201[sizeof("ELOT_928")]; - char stringpool_str1202[sizeof("ISO-8859-3")]; - char stringpool_str1204[sizeof("ISO-IR-138")]; - char stringpool_str1207[sizeof("CSPC8CODEPAGE1144")]; - char stringpool_str1208[sizeof("EBCDIC-CP-WT")]; - char stringpool_str1210[sizeof("ISO-IR-100")]; - char stringpool_str1218[sizeof("TCVN5712-1:1993")]; - char stringpool_str1219[sizeof("CSIBM01147")]; - char stringpool_str1220[sizeof("IBM-4971")]; - char stringpool_str1226[sizeof("UNICODE-1-1")]; - char stringpool_str1233[sizeof("CSIBM857")]; - char stringpool_str1236[sizeof("JIS_X0208-1990")]; - char stringpool_str1237[sizeof("ISO-IR-203")]; - char stringpool_str1241[sizeof("C99")]; - char stringpool_str1247[sizeof("IBM-297")]; - char stringpool_str1248[sizeof("MACCENTRALEUROPE")]; - char stringpool_str1249[sizeof("MS-ANSI")]; - char stringpool_str1251[sizeof("ISO_8859-7:2003")]; - char stringpool_str1252[sizeof("EBCDIC-CP-CH")]; - char stringpool_str1253[sizeof("VISCII1.1-1")]; - char stringpool_str1255[sizeof("UTF-7")]; - char stringpool_str1256[sizeof("EBCDIC-CP-TR")]; - char stringpool_str1257[sizeof("ANSI_X3.4-1986")]; - char stringpool_str1262[sizeof("UCS-2BE")]; - char stringpool_str1263[sizeof("CSIBM905")]; - char stringpool_str1265[sizeof("ISO8859-6")]; - char stringpool_str1267[sizeof("ISO8859-5")]; - char stringpool_str1271[sizeof("ISO8859-2")]; - char stringpool_str1274[sizeof("EBCDIC-CP-YU")]; - char stringpool_str1275[sizeof("ISO8859-16")]; - char stringpool_str1277[sizeof("ISO8859-15")]; - char stringpool_str1279[sizeof("UCS-2LE")]; - char stringpool_str1281[sizeof("ISO8859-1")]; - char stringpool_str1283[sizeof("CP949")]; - char stringpool_str1284[sizeof("GREEK")]; - char stringpool_str1290[sizeof("JIS_X0208-1983")]; - char stringpool_str1291[sizeof("ISO8859-11")]; - char stringpool_str1292[sizeof("ANSI_X3.4-1968")]; - char stringpool_str1293[sizeof("ISO-2022-JP")]; - char stringpool_str1295[sizeof("EBCDIC-IT-280+EURO")]; - char stringpool_str1297[sizeof("UCS-4BE")]; - char stringpool_str1298[sizeof("ISO-2022-JP-2")]; - char stringpool_str1299[sizeof("CSISO14JISC6220RO")]; - char stringpool_str1300[sizeof("CSISO57GB1988")]; - char stringpool_str1303[sizeof("ISO-2022-JP-1")]; - char stringpool_str1306[sizeof("EBCDIC-CP-HE")]; - char stringpool_str1313[sizeof("EBCDIC-CP-SE")]; - char stringpool_str1314[sizeof("UCS-4LE")]; - char stringpool_str1315[sizeof("ISO_8859-7")]; - char stringpool_str1320[sizeof("JIS_X0212-1990")]; - char stringpool_str1323[sizeof("ISO_8859-7:1987")]; - char stringpool_str1330[sizeof("EUC-TW")]; - char stringpool_str1331[sizeof("EBCDIC-CP-BE")]; - char stringpool_str1332[sizeof("CSUNICODE11")]; - char stringpool_str1333[sizeof("EBCDIC-CP-FI")]; - char stringpool_str1335[sizeof("ISO8859-8")]; - char stringpool_str1336[sizeof("ISO-2022-JP-2004")]; - char stringpool_str1338[sizeof("EBCDIC-CP-FR")]; - char stringpool_str1341[sizeof("ISO8859-4")]; - char stringpool_str1346[sizeof("ISO-8859-7")]; - char stringpool_str1348[sizeof("EUC-JISX0213")]; - char stringpool_str1349[sizeof("STRK1048-2002")]; - char stringpool_str1351[sizeof("ISO8859-14")]; - char stringpool_str1352[sizeof("UTF-16BE")]; - char stringpool_str1355[sizeof("CSISOLATIN5")]; - char stringpool_str1359[sizeof("CSPC8CODEPAGE437")]; - char stringpool_str1365[sizeof("CSISOLATIN1")]; - char stringpool_str1369[sizeof("UTF-16LE")]; - char stringpool_str1376[sizeof("GEORGIAN-PS")]; - char stringpool_str1378[sizeof("CN-GB-ISOIR165")]; - char stringpool_str1379[sizeof("EBCDIC-SE-278+EURO")]; - char stringpool_str1380[sizeof("JISX0201-1976")]; - char stringpool_str1381[sizeof("CSIBM037")]; - char stringpool_str1384[sizeof("CSISOLATINARABIC")]; - char stringpool_str1391[sizeof("CSIBM277")]; - char stringpool_str1393[sizeof("CSISOLATIN4")]; - char stringpool_str1398[sizeof("ISO-IR-157")]; - char stringpool_str1400[sizeof("ISO-IR-127")]; - char stringpool_str1405[sizeof("ISO8859-10")]; - char stringpool_str1410[sizeof("ASMO-708")]; - char stringpool_str1414[sizeof("ISO-2022-JP-3")]; - char stringpool_str1415[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str1421[sizeof("MACGREEK")]; - char stringpool_str1424[sizeof("EBCDIC-INTERNATIONAL-500+EURO")]; - char stringpool_str1448[sizeof("ISO-CELTIC")]; - char stringpool_str1456[sizeof("CSISO87JISX0208")]; - char stringpool_str1460[sizeof("MACHEBREW")]; - char stringpool_str1461[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str1466[sizeof("UTF-32BE")]; - char stringpool_str1467[sizeof("ISO-IR-57")]; - char stringpool_str1469[sizeof("ISO-10646-UCS-2")]; - char stringpool_str1472[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str1474[sizeof("CSEUCTW")]; - char stringpool_str1476[sizeof("CSISOLATIN2")]; - char stringpool_str1479[sizeof("MS-EE")]; - char stringpool_str1483[sizeof("UTF-32LE")]; - char stringpool_str1492[sizeof("US-ASCII")]; - char stringpool_str1497[sizeof("MACUKRAINE")]; - char stringpool_str1499[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str1502[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str1503[sizeof("ISO8859-3")]; - char stringpool_str1504[sizeof("ISO-10646-UCS-4")]; - char stringpool_str1511[sizeof("CSISOLATIN3")]; - char stringpool_str1513[sizeof("ISO8859-13")]; - char stringpool_str1519[sizeof("CSUNICODE11UTF7")]; - char stringpool_str1523[sizeof("MS_KANJI")]; - char stringpool_str1528[sizeof("CSUNICODE")]; - char stringpool_str1531[sizeof("IBM-1097")]; - char stringpool_str1534[sizeof("GB_1988-80")]; - char stringpool_str1540[sizeof("EBCDIC-CP-IS")]; - char stringpool_str1545[sizeof("CSISOLATIN6")]; - char stringpool_str1549[sizeof("CCSID01149")]; - char stringpool_str1554[sizeof("ISO-IR-87")]; - char stringpool_str1557[sizeof("MACTURKISH")]; - char stringpool_str1558[sizeof("CSISO2022KR")]; - char stringpool_str1575[sizeof("EBCDIC-GREEK")]; - char stringpool_str1580[sizeof("WINDOWS-1256")]; - char stringpool_str1581[sizeof("WINDOWS-1255")]; - char stringpool_str1583[sizeof("WINDOWS-1252")]; - char stringpool_str1586[sizeof("MS-TURK")]; - char stringpool_str1588[sizeof("WINDOWS-1251")]; - char stringpool_str1589[sizeof("CSVISCII")]; - char stringpool_str1590[sizeof("CSKSC56011987")]; - char stringpool_str1598[sizeof("EBCDIC-CP-DK")]; - char stringpool_str1603[sizeof("CSIBM297")]; - char stringpool_str1604[sizeof("KS_C_5601-1987")]; - char stringpool_str1607[sizeof("EBCDIC-US-37+EURO")]; - char stringpool_str1609[sizeof("EBCDIC-ES-284+EURO")]; - char stringpool_str1615[sizeof("WINDOWS-1258")]; - char stringpool_str1618[sizeof("WINDOWS-1254")]; - char stringpool_str1636[sizeof("BIGFIVE")]; - char stringpool_str1643[sizeof("CSIBM01149")]; - char stringpool_str1645[sizeof("WINDOWS-1250")]; - char stringpool_str1646[sizeof("CSMACINTOSH")]; - char stringpool_str1647[sizeof("ISO8859-7")]; - char stringpool_str1651[sizeof("EUC-JIS-2004")]; - char stringpool_str1656[sizeof("EBCDIC-DE-273+EURO")]; - char stringpool_str1663[sizeof("ISO-2022-JP-MS")]; - char stringpool_str1666[sizeof("ISO-2022-KR")]; - char stringpool_str1676[sizeof("EBCDIC-CP-ROECE")]; - char stringpool_str1685[sizeof("CSISOLATINHEBREW")]; - char stringpool_str1691[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str1695[sizeof("UCS-2-INTERNAL")]; - char stringpool_str1699[sizeof("WINDOWS-1253")]; - char stringpool_str1729[sizeof("EBCDIC-DK-277+EURO")]; - char stringpool_str1730[sizeof("UCS-4-INTERNAL")]; - char stringpool_str1737[sizeof("ISO646-US")]; - char stringpool_str1739[sizeof("ISO_8859-9")]; - char stringpool_str1740[sizeof("CSISOLATINGREEK")]; - char stringpool_str1747[sizeof("ISO_8859-9:1989")]; - char stringpool_str1763[sizeof("UCS-2-SWAPPED")]; - char stringpool_str1770[sizeof("ISO-8859-9")]; - char stringpool_str1771[sizeof("WINDOWS-1257")]; - char stringpool_str1798[sizeof("UCS-4-SWAPPED")]; - char stringpool_str1816[sizeof("KS_C_5601-1989")]; - char stringpool_str1822[sizeof("ISO-IR-159")]; - char stringpool_str1823[sizeof("BIG5-HKSCS")]; - char stringpool_str1833[sizeof("WINDOWS-874")]; - char stringpool_str1859[sizeof("ISO-IR-149")]; - char stringpool_str1867[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str1886[sizeof("ISO-IR-109")]; - char stringpool_str1895[sizeof("EBCDIC-CP-ES")]; - char stringpool_str1915[sizeof("BIG-FIVE")]; - char stringpool_str1939[sizeof("EBCDIC-IS-871+EURO")]; - char stringpool_str1950[sizeof("EBCDIC-CP-US")]; - char stringpool_str1968[sizeof("BIG5HKSCS")]; - char stringpool_str2002[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str2003[sizeof("MS-GREEK")]; - char stringpool_str2012[sizeof("ISO-IR-179")]; - char stringpool_str2069[sizeof("CSSHIFTJIS")]; - char stringpool_str2071[sizeof("ISO8859-9")]; - char stringpool_str2136[sizeof("SHIFT_JISX0213")]; - char stringpool_str2224[sizeof("ISO-IR-199")]; - char stringpool_str2255[sizeof("SHIFT_JIS")]; - char stringpool_str2281[sizeof("WINDOWS-936")]; - char stringpool_str2286[sizeof("SHIFT-JIS")]; - char stringpool_str2302[sizeof("SHIFT_JIS-2004")]; - char stringpool_str2582[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str20[sizeof("L6")]; + char stringpool_str22[sizeof("L5")]; + char stringpool_str26[sizeof("L2")]; + char stringpool_str36[sizeof("L1")]; + char stringpool_str52[sizeof("866")]; + char stringpool_str54[sizeof("865")]; + char stringpool_str55[sizeof("855")]; + char stringpool_str58[sizeof("862")]; + char stringpool_str59[sizeof("852")]; + char stringpool_str64[sizeof("646")]; + char stringpool_str65[sizeof("CP1256")]; + char stringpool_str66[sizeof("ATARI")]; + char stringpool_str67[sizeof("CP1255")]; + char stringpool_str68[sizeof("861")]; + char stringpool_str69[sizeof("CP1166")]; + char stringpool_str70[sizeof("CP1156")]; + char stringpool_str71[sizeof("CP1252")]; + char stringpool_str72[sizeof("CP1155")]; + char stringpool_str74[sizeof("CP1125")]; + char stringpool_str75[sizeof("CP1162")]; + char stringpool_str78[sizeof("CP1122")]; + char stringpool_str81[sizeof("CP1251")]; + char stringpool_str83[sizeof("CP1112")]; + char stringpool_str85[sizeof("CP1161")]; + char stringpool_str86[sizeof("CP866")]; + char stringpool_str87[sizeof("CP856")]; + char stringpool_str88[sizeof("CP865")]; + char stringpool_str89[sizeof("CP855")]; + char stringpool_str91[sizeof("CP285")]; + char stringpool_str92[sizeof("CP862")]; + char stringpool_str93[sizeof("CP852")]; + char stringpool_str94[sizeof("L8")]; + char stringpool_str96[sizeof("R8")]; + char stringpool_str102[sizeof("CP861")]; + char stringpool_str118[sizeof("L4")]; + char stringpool_str120[sizeof("ARABIC")]; + char stringpool_str132[sizeof("PT154")]; + char stringpool_str139[sizeof("CP1258")]; + char stringpool_str143[sizeof("CP1026")]; + char stringpool_str144[sizeof("CP1158")]; + char stringpool_str145[sizeof("CP1025")]; + char stringpool_str156[sizeof("CP154")]; + char stringpool_str159[sizeof("CP50221")]; + char stringpool_str161[sizeof("CP858")]; + char stringpool_str163[sizeof("CP1254")]; + char stringpool_str166[sizeof("PTCP154")]; + char stringpool_str167[sizeof("CP1164")]; + char stringpool_str168[sizeof("CP1154")]; + char stringpool_str170[sizeof("CP1124")]; + char stringpool_str184[sizeof("CP864")]; + char stringpool_str187[sizeof("CP284")]; + char stringpool_str188[sizeof("JP")]; + char stringpool_str189[sizeof("CP1046")]; + char stringpool_str190[sizeof("L10")]; + char stringpool_str194[sizeof("CP1132")]; + char stringpool_str196[sizeof("CP1361")]; + char stringpool_str199[sizeof("CP424")]; + char stringpool_str201[sizeof("CP01146")]; + char stringpool_str203[sizeof("CP01145")]; + char stringpool_str204[sizeof("CP1131")]; + char stringpool_str207[sizeof("CP01142")]; + char stringpool_str210[sizeof("860")]; + char stringpool_str211[sizeof("850")]; + char stringpool_str217[sizeof("CP01141")]; + char stringpool_str223[sizeof("CP1250")]; + char stringpool_str227[sizeof("CP1160")]; + char stringpool_str231[sizeof("HZ")]; + char stringpool_str237[sizeof("IBM1166")]; + char stringpool_str238[sizeof("IBM1156")]; + char stringpool_str239[sizeof("IBM1165")]; + char stringpool_str240[sizeof("IBM1155")]; + char stringpool_str243[sizeof("IBM1162")]; + char stringpool_str244[sizeof("CP860")]; + char stringpool_str245[sizeof("CP850")]; + char stringpool_str246[sizeof("IBM1122")]; + char stringpool_str247[sizeof("CP280")]; + char stringpool_str251[sizeof("IBM1112")]; + char stringpool_str253[sizeof("IBM1161")]; + char stringpool_str254[sizeof("IBM866")]; + char stringpool_str256[sizeof("IBM865")]; + char stringpool_str257[sizeof("IBM855")]; + char stringpool_str258[sizeof("L3")]; + char stringpool_str259[sizeof("IBM285")]; + char stringpool_str260[sizeof("IBM862")]; + char stringpool_str261[sizeof("IBM852")]; + char stringpool_str263[sizeof("IBM282")]; + char stringpool_str270[sizeof("IBM861")]; + char stringpool_str271[sizeof("IBM425")]; + char stringpool_str272[sizeof("MAC")]; + char stringpool_str275[sizeof("CP01148")]; + char stringpool_str277[sizeof("CYRILLIC")]; + char stringpool_str279[sizeof("CP16804")]; + char stringpool_str281[sizeof("CP880")]; + char stringpool_str286[sizeof("IBM1146")]; + char stringpool_str287[sizeof("CP500")]; + char stringpool_str288[sizeof("IBM1145")]; + char stringpool_str289[sizeof("UHC")]; + char stringpool_str290[sizeof("863")]; + char stringpool_str292[sizeof("IBM1142")]; + char stringpool_str299[sizeof("CP01144")]; + char stringpool_str302[sizeof("IBM1141")]; + char stringpool_str303[sizeof("CP1253")]; + char stringpool_str307[sizeof("CP1163")]; + char stringpool_str308[sizeof("CP1153")]; + char stringpool_str310[sizeof("CP1123")]; + char stringpool_str311[sizeof("IBM1026")]; + char stringpool_str312[sizeof("IBM1158")]; + char stringpool_str313[sizeof("IBM1025")]; + char stringpool_str317[sizeof("CP12712")]; + char stringpool_str323[sizeof("CP875")]; + char stringpool_str324[sizeof("CP863")]; + char stringpool_str325[sizeof("CP853")]; + char stringpool_str335[sizeof("IBM1164")]; + char stringpool_str336[sizeof("IBM1154")]; + char stringpool_str337[sizeof("CP871")]; + char stringpool_str339[sizeof("CP423")]; + char stringpool_str346[sizeof("CP1130")]; + char stringpool_str347[sizeof("JAVA")]; + char stringpool_str352[sizeof("IBM864")]; + char stringpool_str355[sizeof("IBM284")]; + char stringpool_str359[sizeof("CP01140")]; + char stringpool_str360[sizeof("IBM1148")]; + char stringpool_str361[sizeof("CP278")]; + char stringpool_str362[sizeof("IBM1132")]; + char stringpool_str363[sizeof("LATIN6")]; + char stringpool_str365[sizeof("LATIN5")]; + char stringpool_str366[sizeof("EUCJP")]; + char stringpool_str367[sizeof("IBM424")]; + char stringpool_str369[sizeof("LATIN2")]; + char stringpool_str379[sizeof("LATIN1")]; + char stringpool_str383[sizeof("JOHAB")]; + char stringpool_str384[sizeof("IBM1144")]; + char stringpool_str395[sizeof("IBM1160")]; + char stringpool_str398[sizeof("IBM16804")]; + char stringpool_str402[sizeof("CP922")]; + char stringpool_str406[sizeof("IBM01146")]; + char stringpool_str407[sizeof("X0212")]; + char stringpool_str412[sizeof("IBM860")]; + char stringpool_str413[sizeof("IBM850")]; + char stringpool_str415[sizeof("IBM280")]; + char stringpool_str416[sizeof("IBM01148")]; + char stringpool_str418[sizeof("IBM01144")]; + char stringpool_str419[sizeof("CP874")]; + char stringpool_str421[sizeof("IBM01142")]; + char stringpool_str425[sizeof("EUCKR")]; + char stringpool_str426[sizeof("CP1133")]; + char stringpool_str437[sizeof("LATIN8")]; + char stringpool_str439[sizeof("CP01143")]; + char stringpool_str444[sizeof("IBM1140")]; + char stringpool_str445[sizeof("MACTHAI")]; + char stringpool_str447[sizeof("IBM838")]; + char stringpool_str449[sizeof("IBM880")]; + char stringpool_str451[sizeof("IBM01140")]; + char stringpool_str455[sizeof("IBM500")]; + char stringpool_str461[sizeof("LATIN4")]; + char stringpool_str462[sizeof("RK1048")]; + char stringpool_str469[sizeof("PCK")]; + char stringpool_str474[sizeof("CP905")]; + char stringpool_str475[sizeof("IBM1163")]; + char stringpool_str476[sizeof("IBM1153")]; + char stringpool_str478[sizeof("IBM1123")]; + char stringpool_str479[sizeof("CP870")]; + char stringpool_str488[sizeof("X0201")]; + char stringpool_str489[sizeof("IBM01143")]; + char stringpool_str490[sizeof("L7")]; + char stringpool_str491[sizeof("IBM875")]; + char stringpool_str492[sizeof("IBM863")]; + char stringpool_str495[sizeof("UTF8")]; + char stringpool_str496[sizeof("IBM01141")]; + char stringpool_str505[sizeof("IBM871")]; + char stringpool_str507[sizeof("IBM423")]; + char stringpool_str510[sizeof("TDS565")]; + char stringpool_str512[sizeof("CP936")]; + char stringpool_str514[sizeof("IBM1130")]; + char stringpool_str518[sizeof("CP932")]; + char stringpool_str521[sizeof("CP775")]; + char stringpool_str522[sizeof("MACROMANIA")]; + char stringpool_str523[sizeof("857")]; + char stringpool_str524[sizeof("IBM1143")]; + char stringpool_str525[sizeof("CP273")]; + char stringpool_str529[sizeof("IBM278")]; + char stringpool_str531[sizeof("IBM12712")]; + char stringpool_str532[sizeof("IBM-285")]; + char stringpool_str533[sizeof("LATIN10")]; + char stringpool_str535[sizeof("CP1257")]; + char stringpool_str536[sizeof("IBM-282")]; + char stringpool_str537[sizeof("ASCII")]; + char stringpool_str540[sizeof("CP1157")]; + char stringpool_str544[sizeof("IBM-425")]; + char stringpool_str546[sizeof("X0208")]; + char stringpool_str547[sizeof("IBM-1166")]; + char stringpool_str548[sizeof("IBM-1156")]; + char stringpool_str551[sizeof("ATARIST")]; + char stringpool_str552[sizeof("CP950")]; + char stringpool_str553[sizeof("KOI8-T")]; + char stringpool_str557[sizeof("CP857")]; + char stringpool_str558[sizeof("IBM-1158")]; + char stringpool_str559[sizeof("IBM-1164")]; + char stringpool_str560[sizeof("IBM-1154")]; + char stringpool_str562[sizeof("IBM-1162")]; + char stringpool_str565[sizeof("IBM-1122")]; + char stringpool_str570[sizeof("IBM-1112")]; + char stringpool_str571[sizeof("KOI8-R")]; + char stringpool_str577[sizeof("MACARABIC")]; + char stringpool_str592[sizeof("IBM-1160")]; + char stringpool_str596[sizeof("IBM-1146")]; + char stringpool_str601[sizeof("LATIN3")]; + char stringpool_str605[sizeof("IBM01145")]; + char stringpool_str606[sizeof("IBM-1148")]; + char stringpool_str608[sizeof("IBM-1144")]; + char stringpool_str611[sizeof("IBM-1142")]; + char stringpool_str621[sizeof("IBM-1026")]; + char stringpool_str627[sizeof("BIG5")]; + char stringpool_str628[sizeof("IBM-284")]; + char stringpool_str629[sizeof("ROMAN8")]; + char stringpool_str630[sizeof("IBM-1163")]; + char stringpool_str631[sizeof("IBM-1153")]; + char stringpool_str632[sizeof("VISCII")]; + char stringpool_str633[sizeof("IBM-1123")]; + char stringpool_str637[sizeof("IBM-1161")]; + char stringpool_str638[sizeof("CP367")]; + char stringpool_str639[sizeof("EUC-JP")]; + char stringpool_str640[sizeof("IBM-424")]; + char stringpool_str641[sizeof("IBM-1140")]; + char stringpool_str642[sizeof("IBM905")]; + char stringpool_str644[sizeof("IBM-16804")]; + char stringpool_str647[sizeof("IBM870")]; + char stringpool_str650[sizeof("CSPCP852")]; + char stringpool_str653[sizeof("437")]; + char stringpool_str657[sizeof("CN")]; + char stringpool_str658[sizeof("CP1137")]; + char stringpool_str659[sizeof("CP1047")]; + char stringpool_str660[sizeof("CP00924")]; + char stringpool_str661[sizeof("KOI8-U")]; + char stringpool_str662[sizeof("IBM924")]; + char stringpool_str663[sizeof("TIS620")]; + char stringpool_str669[sizeof("ELOT_928")]; + char stringpool_str671[sizeof("CP01147")]; + char stringpool_str673[sizeof("IBM-EUCJP")]; + char stringpool_str676[sizeof("KOI8-RU")]; + char stringpool_str679[sizeof("IBM-1143")]; + char stringpool_str680[sizeof("CP943")]; + char stringpool_str681[sizeof("IBM-1132")]; + char stringpool_str682[sizeof("ECMA-118")]; + char stringpool_str683[sizeof("TIS620.2529-1")]; + char stringpool_str684[sizeof("ECMA-114")]; + char stringpool_str686[sizeof("IBM-1141")]; + char stringpool_str687[sizeof("CP437")]; + char stringpool_str688[sizeof("IBM-280")]; + char stringpool_str689[sizeof("IBM775")]; + char stringpool_str693[sizeof("IBM273")]; + char stringpool_str697[sizeof("CP4971")]; + char stringpool_str698[sizeof("EUC-KR")]; + char stringpool_str706[sizeof("UTF-16")]; + char stringpool_str708[sizeof("IBM1157")]; + char stringpool_str711[sizeof("IBM-1130")]; + char stringpool_str713[sizeof("IBM01149")]; + char stringpool_str717[sizeof("CP037")]; + char stringpool_str720[sizeof("IBM-838")]; + char stringpool_str722[sizeof("IBM-880")]; + char stringpool_str725[sizeof("IBM857")]; + char stringpool_str728[sizeof("IBM-500")]; + char stringpool_str739[sizeof("MACICELAND")]; + char stringpool_str740[sizeof("869")]; + char stringpool_str742[sizeof("MACCYRILLIC")]; + char stringpool_str746[sizeof("IBM-1165")]; + char stringpool_str747[sizeof("IBM-1155")]; + char stringpool_str751[sizeof("KZ-1048")]; + char stringpool_str756[sizeof("IBM1147")]; + char stringpool_str760[sizeof("CP1129")]; + char stringpool_str764[sizeof("IBM-875")]; + char stringpool_str765[sizeof("MACCROATIAN")]; + char stringpool_str766[sizeof("HP-ROMAN8")]; + char stringpool_str768[sizeof("UTF-8")]; + char stringpool_str769[sizeof("GB2312")]; + char stringpool_str773[sizeof("TCVN")]; + char stringpool_str774[sizeof("CP869")]; + char stringpool_str778[sizeof("IBM-871")]; + char stringpool_str779[sizeof("IBM00924")]; + char stringpool_str780[sizeof("IBM-423")]; + char stringpool_str782[sizeof("CP819")]; + char stringpool_str787[sizeof("CSIBM1162")]; + char stringpool_str794[sizeof("MACROMAN")]; + char stringpool_str795[sizeof("IBM-1145")]; + char stringpool_str797[sizeof("CSIBM1161")]; + char stringpool_str798[sizeof("CSIBM866")]; + char stringpool_str802[sizeof("IBM-278")]; + char stringpool_str805[sizeof("CSKOI8R")]; + char stringpool_str806[sizeof("IBM367")]; + char stringpool_str810[sizeof("CSIBM864")]; + char stringpool_str813[sizeof("CSIBM284")]; + char stringpool_str815[sizeof("EBCDIC-CP-NO")]; + char stringpool_str819[sizeof("MULELAO-1")]; + char stringpool_str820[sizeof("IBM-1025")]; + char stringpool_str821[sizeof("EUCTW")]; + char stringpool_str822[sizeof("EBCDIC-CP-NL")]; + char stringpool_str823[sizeof("UTF-32")]; + char stringpool_str825[sizeof("CSIBM424")]; + char stringpool_str826[sizeof("IBM1137")]; + char stringpool_str827[sizeof("IBM1047")]; + char stringpool_str828[sizeof("CCSID01146")]; + char stringpool_str829[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str830[sizeof("CCSID01145")]; + char stringpool_str831[sizeof("EBCDIC-CP-CA")]; + char stringpool_str832[sizeof("CCSID00924")]; + char stringpool_str833[sizeof("LATIN7")]; + char stringpool_str834[sizeof("CCSID01142")]; + char stringpool_str835[sizeof("EUCCN")]; + char stringpool_str836[sizeof("EBCDIC-CYRILLIC")]; + char stringpool_str838[sizeof("TIS620.2533-1")]; + char stringpool_str841[sizeof("ISO646-JP")]; + char stringpool_str843[sizeof("CSIBM860")]; + char stringpool_str844[sizeof("CCSID01141")]; + char stringpool_str846[sizeof("CSIBM280")]; + char stringpool_str848[sizeof("HP15CN")]; + char stringpool_str853[sizeof("UCS-2")]; + char stringpool_str854[sizeof("EBCDIC-GB-285+EURO")]; + char stringpool_str855[sizeof("IBM437")]; + char stringpool_str856[sizeof("EBCDIC-NO-277+EURO")]; + char stringpool_str862[sizeof("CYRILLIC-ASIAN")]; + char stringpool_str864[sizeof("CSIBM1026")]; + char stringpool_str865[sizeof("IBM4971")]; + char stringpool_str866[sizeof("CP297")]; + char stringpool_str869[sizeof("IBM-12712")]; + char stringpool_str873[sizeof("CP737")]; + char stringpool_str878[sizeof("EBCDIC-CP-TR")]; + char stringpool_str880[sizeof("CSIBM880")]; + char stringpool_str881[sizeof("CSIBM863")]; + char stringpool_str882[sizeof("DECHANZI")]; + char stringpool_str885[sizeof("IBM037")]; + char stringpool_str886[sizeof("CSIBM500")]; + char stringpool_str888[sizeof("CSIBM861")]; + char stringpool_str889[sizeof("CP01149")]; + char stringpool_str891[sizeof("IBM-THAI")]; + char stringpool_str894[sizeof("EBCDIC-CP-YU")]; + char stringpool_str895[sizeof("EBCDIC-CP-HE")]; + char stringpool_str896[sizeof("CSIBM423")]; + char stringpool_str897[sizeof("EBCDIC-CP-SE")]; + char stringpool_str900[sizeof("BIG-5")]; + char stringpool_str902[sizeof("CCSID01148")]; + char stringpool_str903[sizeof("IBM-1149")]; + char stringpool_str907[sizeof("CSPTCP154")]; + char stringpool_str909[sizeof("TIS620.2533-0")]; + char stringpool_str915[sizeof("IBM-905")]; + char stringpool_str916[sizeof("JIS0208")]; + char stringpool_str920[sizeof("IBM-870")]; + char stringpool_str921[sizeof("EBCDIC-CP-BE")]; + char stringpool_str922[sizeof("CSIBMTHAI")]; + char stringpool_str925[sizeof("IBM277")]; + char stringpool_str926[sizeof("CCSID01144")]; + char stringpool_str932[sizeof("CSEUCKR")]; + char stringpool_str935[sizeof("IBM-924")]; + char stringpool_str936[sizeof("TIS-620")]; + char stringpool_str942[sizeof("IBM869")]; + char stringpool_str943[sizeof("TIS620-0")]; + char stringpool_str945[sizeof("UCS-4")]; + char stringpool_str946[sizeof("CP-GR")]; + char stringpool_str948[sizeof("IBM01147")]; + char stringpool_str950[sizeof("IBM819")]; + char stringpool_str954[sizeof("CP1097")]; + char stringpool_str958[sizeof("CSKZ1048")]; + char stringpool_str959[sizeof("IBM-932")]; + char stringpool_str966[sizeof("IBM-273")]; + char stringpool_str970[sizeof("EBCDIC-LATIN9-EURO")]; + char stringpool_str971[sizeof("DEC-KANJI")]; + char stringpool_str972[sizeof("MACINTOSH")]; + char stringpool_str973[sizeof("KOREAN")]; + char stringpool_str974[sizeof("IBM1149")]; + char stringpool_str977[sizeof("EBCDIC-CP-GB")]; + char stringpool_str982[sizeof("EBCDIC-CP-CH")]; + char stringpool_str984[sizeof("UNICODELITTLE")]; + char stringpool_str986[sizeof("CCSID01140")]; + char stringpool_str988[sizeof("EBCDIC-CP-GR")]; + char stringpool_str989[sizeof("CSIBM01145")]; + char stringpool_str990[sizeof("EBCDIC-CP-IT")]; + char stringpool_str991[sizeof("CSIBM00924")]; + char stringpool_str993[sizeof("CSIBM01142")]; + char stringpool_str994[sizeof("EBCDIC-SE-278+EURO")]; + char stringpool_str997[sizeof("CSIBM865")]; + char stringpool_str998[sizeof("CSIBM855")]; + char stringpool_str1000[sizeof("CSIBM285")]; + char stringpool_str1002[sizeof("HEBREW")]; + char stringpool_str1003[sizeof("CSIBM01141")]; + char stringpool_str1004[sizeof("MS-ARAB")]; + char stringpool_str1005[sizeof("ISO_8859-6")]; + char stringpool_str1007[sizeof("ISO_8859-5")]; + char stringpool_str1009[sizeof("CSIBM278")]; + char stringpool_str1011[sizeof("ISO_8859-2")]; + char stringpool_str1012[sizeof("IBM-CP1133")]; + char stringpool_str1013[sizeof("US")]; + char stringpool_str1018[sizeof("ISO_8859-15")]; + char stringpool_str1019[sizeof("CSIBM1163")]; + char stringpool_str1020[sizeof("EBCDIC-FI-278+EURO")]; + char stringpool_str1021[sizeof("ISO_8859-1")]; + char stringpool_str1026[sizeof("UCS-2BE")]; + char stringpool_str1027[sizeof("VISCII1.1-1")]; + char stringpool_str1028[sizeof("ISO_8859-11")]; + char stringpool_str1029[sizeof("CNS11643")]; + char stringpool_str1030[sizeof("DEC-HANYU")]; + char stringpool_str1031[sizeof("EBCDIC-FR-297+EURO")]; + char stringpool_str1033[sizeof("ISO_8859-10:1992")]; + char stringpool_str1034[sizeof("IBM297")]; + char stringpool_str1035[sizeof("UCS-2LE")]; + char stringpool_str1038[sizeof("GB18030")]; + char stringpool_str1041[sizeof("IBM737")]; + char stringpool_str1044[sizeof("CSASCII")]; + char stringpool_str1049[sizeof("GBK")]; + char stringpool_str1051[sizeof("ISO_8859-5:1988")]; + char stringpool_str1059[sizeof("ISO_8859-15:1998")]; + char stringpool_str1060[sizeof("ISO_8859-14:1998")]; + char stringpool_str1061[sizeof("CSIBM01148")]; + char stringpool_str1064[sizeof("ISO-CELTIC")]; + char stringpool_str1065[sizeof("TCVN5712-1")]; + char stringpool_str1066[sizeof("CCSID01143")]; + char stringpool_str1067[sizeof("ISO_8859-14")]; + char stringpool_str1068[sizeof("GB18030:2005")]; + char stringpool_str1070[sizeof("EBCDIC-IT-280+EURO")]; + char stringpool_str1071[sizeof("CSPC8CODEPAGE1146")]; + char stringpool_str1072[sizeof("UCS-4BE")]; + char stringpool_str1073[sizeof("C99")]; + char stringpool_str1076[sizeof("WINBALTRIM")]; + char stringpool_str1078[sizeof("CSIBM870")]; + char stringpool_str1079[sizeof("ISO_8859-8")]; + char stringpool_str1080[sizeof("DECKANJI")]; + char stringpool_str1081[sizeof("UCS-4LE")]; + char stringpool_str1082[sizeof("CSIBM273")]; + char stringpool_str1087[sizeof("ISO_8859-8:1988")]; + char stringpool_str1089[sizeof("DECHANYU")]; + char stringpool_str1090[sizeof("IBM-1157")]; + char stringpool_str1094[sizeof("EUC-TW")]; + char stringpool_str1095[sizeof("MS-CYRL")]; + char stringpool_str1096[sizeof("ISO-IR-6")]; + char stringpool_str1098[sizeof("KSC_5601")]; + char stringpool_str1099[sizeof("ISO_8859-4:1988")]; + char stringpool_str1100[sizeof("GREEK8")]; + char stringpool_str1101[sizeof("EBCDIC-CP-WT")]; + char stringpool_str1103[sizeof("ISO_8859-4")]; + char stringpool_str1104[sizeof("ISO_8859-10")]; + char stringpool_str1105[sizeof("CSIBM869")]; + char stringpool_str1108[sizeof("EUC-CN")]; + char stringpool_str1109[sizeof("EBCDIC-CP-DK")]; + char stringpool_str1111[sizeof("EBCDIC-GREEK")]; + char stringpool_str1113[sizeof("TCVN-5712")]; + char stringpool_str1119[sizeof("ISO-IR-226")]; + char stringpool_str1120[sizeof("CSPC8CODEPAGE1144")]; + char stringpool_str1122[sizeof("IBM1097")]; + char stringpool_str1123[sizeof("CSIBM871")]; + char stringpool_str1130[sizeof("CP949")]; + char stringpool_str1131[sizeof("ISO-8859-6")]; + char stringpool_str1132[sizeof("ISO_646.IRV:1991")]; + char stringpool_str1133[sizeof("ISO-8859-5")]; + char stringpool_str1134[sizeof("CSBIG5")]; + char stringpool_str1137[sizeof("ISO-8859-2")]; + char stringpool_str1138[sizeof("IBM-1147")]; + char stringpool_str1144[sizeof("ISO-8859-15")]; + char stringpool_str1145[sizeof("CSIBM01140")]; + char stringpool_str1147[sizeof("ISO-8859-1")]; + char stringpool_str1149[sizeof("MS936")]; + char stringpool_str1154[sizeof("ISO-8859-11")]; + char stringpool_str1156[sizeof("CSPC775BALTIC")]; + char stringpool_str1158[sizeof("IBM-037")]; + char stringpool_str1159[sizeof("MACCENTRALEUROPE")]; + char stringpool_str1164[sizeof("UTF-7")]; + char stringpool_str1169[sizeof("ISO_8859-3:1988")]; + char stringpool_str1175[sizeof("SDECKANJI")]; + char stringpool_str1178[sizeof("STRK1048-2002")]; + char stringpool_str1179[sizeof("CSUCS4")]; + char stringpool_str1181[sizeof("GB18030:2022")]; + char stringpool_str1184[sizeof("TCVN5712-1:1993")]; + char stringpool_str1185[sizeof("ISO_8859-13")]; + char stringpool_str1186[sizeof("ISO-IR-166")]; + char stringpool_str1188[sizeof("ISO-IR-165")]; + char stringpool_str1189[sizeof("ISO-IR-126")]; + char stringpool_str1193[sizeof("ISO-8859-14")]; + char stringpool_str1194[sizeof("CSISO58GB231280")]; + char stringpool_str1198[sizeof("IBM-277")]; + char stringpool_str1205[sizeof("ISO-8859-8")]; + char stringpool_str1207[sizeof("MS-EE")]; + char stringpool_str1208[sizeof("IBM-1137")]; + char stringpool_str1209[sizeof("IBM-1047")]; + char stringpool_str1217[sizeof("UNICODE-1-1")]; + char stringpool_str1221[sizeof("JIS_X0201")]; + char stringpool_str1225[sizeof("CSIBM01143")]; + char stringpool_str1227[sizeof("ARMSCII-8")]; + char stringpool_str1228[sizeof("ISO-2022-CN-EXT")]; + char stringpool_str1229[sizeof("ISO-8859-4")]; + char stringpool_str1230[sizeof("ISO-8859-10")]; + char stringpool_str1234[sizeof("CN-GB")]; + char stringpool_str1235[sizeof("MS-HEBR")]; + char stringpool_str1236[sizeof("GREEK")]; + char stringpool_str1238[sizeof("BIG5-2003")]; + char stringpool_str1243[sizeof("ISO_8859-3")]; + char stringpool_str1244[sizeof("CN-BIG5")]; + char stringpool_str1248[sizeof("ISO_8859-6:1987")]; + char stringpool_str1249[sizeof("IBM-4971")]; + char stringpool_str1251[sizeof("ISO_8859-2:1987")]; + char stringpool_str1252[sizeof("ISO_8859-16")]; + char stringpool_str1255[sizeof("BIGFIVE")]; + char stringpool_str1256[sizeof("ISO_8859-1:1987")]; + char stringpool_str1258[sizeof("CHINESE")]; + char stringpool_str1260[sizeof("ISO-10646-UCS-2")]; + char stringpool_str1262[sizeof("MACUKRAINE")]; + char stringpool_str1264[sizeof("CP-IS")]; + char stringpool_str1265[sizeof("ISO_8859-16:2001")]; + char stringpool_str1277[sizeof("JIS_C6220-1969-RO")]; + char stringpool_str1279[sizeof("JIS_X0208")]; + char stringpool_str1280[sizeof("ISO-IR-14")]; + char stringpool_str1281[sizeof("ISO-IR-101")]; + char stringpool_str1282[sizeof("EBCDIC-DE-273+EURO")]; + char stringpool_str1285[sizeof("CSIBM1047")]; + char stringpool_str1289[sizeof("NEXTSTEP")]; + char stringpool_str1297[sizeof("CSISO159JISX02121990")]; + char stringpool_str1298[sizeof("CCSID01147")]; + char stringpool_str1305[sizeof("CSPC8CODEPAGE437")]; + char stringpool_str1306[sizeof("ISO-10646-UCS-4")]; + char stringpool_str1307[sizeof("IBM-297")]; + char stringpool_str1309[sizeof("ISO-IR-148")]; + char stringpool_str1311[sizeof("ISO-8859-13")]; + char stringpool_str1312[sizeof("JIS_C6226-1983")]; + char stringpool_str1314[sizeof("CSISO57GB1988")]; + char stringpool_str1321[sizeof("CSHPROMAN8")]; + char stringpool_str1322[sizeof("CSGB2312")]; + char stringpool_str1324[sizeof("LATIN-9")]; + char stringpool_str1327[sizeof("JIS_X0212")]; + char stringpool_str1328[sizeof("CSEUCTW")]; + char stringpool_str1332[sizeof("ISO8859-6")]; + char stringpool_str1333[sizeof("ISO-IR-144")]; + char stringpool_str1334[sizeof("ISO8859-5")]; + char stringpool_str1336[sizeof("CSISO2022JP")]; + char stringpool_str1338[sizeof("ISO8859-2")]; + char stringpool_str1340[sizeof("CSISO2022JP2")]; + char stringpool_str1341[sizeof("CSIBM857")]; + char stringpool_str1344[sizeof("ISO8859-16")]; + char stringpool_str1345[sizeof("ASMO-708")]; + char stringpool_str1346[sizeof("ISO8859-15")]; + char stringpool_str1347[sizeof("EBCDIC-INTERNATIONAL-500+EURO")]; + char stringpool_str1348[sizeof("ISO8859-1")]; + char stringpool_str1352[sizeof("ISO-IR-110")]; + char stringpool_str1353[sizeof("CSVISCII")]; + char stringpool_str1360[sizeof("ISO8859-11")]; + char stringpool_str1364[sizeof("EUC-JISX0213")]; + char stringpool_str1367[sizeof("ISO_8859-7:2003")]; + char stringpool_str1368[sizeof("IBM-EUCCN")]; + char stringpool_str1369[sizeof("ISO-8859-3")]; + char stringpool_str1371[sizeof("EBCDIC-CP-ROECE")]; + char stringpool_str1372[sizeof("ISO-IR-58")]; + char stringpool_str1375[sizeof("ISO-2022-JP")]; + char stringpool_str1378[sizeof("ISO-8859-16")]; + char stringpool_str1379[sizeof("ISO-IR-138")]; + char stringpool_str1380[sizeof("ISO-2022-JP-2")]; + char stringpool_str1383[sizeof("CSIBM905")]; + char stringpool_str1385[sizeof("ISO-2022-JP-1")]; + char stringpool_str1387[sizeof("CSUNICODE11")]; + char stringpool_str1390[sizeof("EBCDIC-CP-US")]; + char stringpool_str1393[sizeof("ISO-IR-230")]; + char stringpool_str1398[sizeof("HZ-GB-2312")]; + char stringpool_str1400[sizeof("IBM-EUCTW")]; + char stringpool_str1404[sizeof("UTF-16BE")]; + char stringpool_str1406[sizeof("ISO8859-8")]; + char stringpool_str1412[sizeof("EBCDIC-DK-277+EURO")]; + char stringpool_str1413[sizeof("UTF-16LE")]; + char stringpool_str1417[sizeof("EBCDIC-CP-FI")]; + char stringpool_str1423[sizeof("ISO-IR-100")]; + char stringpool_str1425[sizeof("JIS_X0212.1990-0")]; + char stringpool_str1428[sizeof("EBCDIC-CP-FR")]; + char stringpool_str1429[sizeof("ISO-2022-JP-2004")]; + char stringpool_str1430[sizeof("ISO8859-4")]; + char stringpool_str1433[sizeof("ISO-IR-203")]; + char stringpool_str1438[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str1442[sizeof("ISO8859-14")]; + char stringpool_str1444[sizeof("CSUNICODE")]; + char stringpool_str1450[sizeof("UNICODE-1-1-UTF-7")]; + char stringpool_str1455[sizeof("MACGREEK")]; + char stringpool_str1457[sizeof("CSIBM01147")]; + char stringpool_str1460[sizeof("MS-TURK")]; + char stringpool_str1461[sizeof("EBCDIC-CP-IS")]; + char stringpool_str1462[sizeof("CSISOLATIN5")]; + char stringpool_str1472[sizeof("CSISOLATIN1")]; + char stringpool_str1475[sizeof("ISO_8859-7")]; + char stringpool_str1483[sizeof("ISO_8859-7:1987")]; + char stringpool_str1492[sizeof("CSISOLATINARABIC")]; + char stringpool_str1493[sizeof("CSISO2022CN")]; + char stringpool_str1496[sizeof("ISO-2022-JP-3")]; + char stringpool_str1499[sizeof("CSISOLATINCYRILLIC")]; + char stringpool_str1501[sizeof("CSIBM037")]; + char stringpool_str1502[sizeof("ISO8859-10")]; + char stringpool_str1504[sizeof("IBM-1097")]; + char stringpool_str1511[sizeof("CSISOLATIN4")]; + char stringpool_str1516[sizeof("CCSID01149")]; + char stringpool_str1518[sizeof("UTF-32BE")]; + char stringpool_str1519[sizeof("GB_2312-80")]; + char stringpool_str1526[sizeof("CSKSC56011987")]; + char stringpool_str1527[sizeof("UTF-32LE")]; + char stringpool_str1532[sizeof("ISO-2022-CN")]; + char stringpool_str1536[sizeof("ISO646-CN")]; + char stringpool_str1541[sizeof("CSIBM277")]; + char stringpool_str1543[sizeof("ISO-IR-87")]; + char stringpool_str1554[sizeof("JISX0201-1976")]; + char stringpool_str1561[sizeof("US-ASCII")]; + char stringpool_str1567[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; + char stringpool_str1568[sizeof("KS_C_5601-1987")]; + char stringpool_str1570[sizeof("ISO8859-3")]; + char stringpool_str1571[sizeof("EBCDIC-US-37+EURO")]; + char stringpool_str1573[sizeof("CSISO14JISC6220RO")]; + char stringpool_str1576[sizeof("MACTURKISH")]; + char stringpool_str1582[sizeof("ISO8859-13")]; + char stringpool_str1583[sizeof("CSISOLATIN2")]; + char stringpool_str1601[sizeof("ISO-8859-7")]; + char stringpool_str1604[sizeof("JIS_X0208-1990")]; + char stringpool_str1615[sizeof("SJIS")]; + char stringpool_str1618[sizeof("CSUNICODE11UTF7")]; + char stringpool_str1628[sizeof("EBCDIC-CP-ES")]; + char stringpool_str1629[sizeof("CSISOLATIN3")]; + char stringpool_str1639[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str1644[sizeof("JIS_X0208-1983")]; + char stringpool_str1650[sizeof("CSIBM297")]; + char stringpool_str1657[sizeof("ISO-IR-157")]; + char stringpool_str1659[sizeof("ISO-IR-127")]; + char stringpool_str1671[sizeof("EUC-JIS-2004")]; + char stringpool_str1675[sizeof("CSIBM01149")]; + char stringpool_str1677[sizeof("KS_C_5601-1989")]; + char stringpool_str1686[sizeof("JIS_X0212-1990")]; + char stringpool_str1693[sizeof("ISO_8859-9")]; + char stringpool_str1696[sizeof("CSISOLATIN6")]; + char stringpool_str1701[sizeof("ISO_8859-9:1989")]; + char stringpool_str1714[sizeof("UCS-2-INTERNAL")]; + char stringpool_str1719[sizeof("UCS-2-SWAPPED")]; + char stringpool_str1742[sizeof("GEORGIAN-ACADEMY")]; + char stringpool_str1743[sizeof("UNICODEBIG")]; + char stringpool_str1760[sizeof("UCS-4-INTERNAL")]; + char stringpool_str1761[sizeof("MS-ANSI")]; + char stringpool_str1765[sizeof("UCS-4-SWAPPED")]; + char stringpool_str1766[sizeof("EBCDIC-IS-871+EURO")]; + char stringpool_str1767[sizeof("MACHEBREW")]; + char stringpool_str1768[sizeof("ISO-IR-57")]; + char stringpool_str1771[sizeof("MS_KANJI")]; + char stringpool_str1781[sizeof("CSISOLATINHEBREW")]; + char stringpool_str1798[sizeof("ANSI_X3.4-1986")]; + char stringpool_str1802[sizeof("ISO8859-7")]; + char stringpool_str1812[sizeof("GB_1988-80")]; + char stringpool_str1815[sizeof("RISCOS-LATIN1")]; + char stringpool_str1819[sizeof("ISO-8859-9")]; + char stringpool_str1834[sizeof("CSMACINTOSH")]; + char stringpool_str1835[sizeof("ANSI_X3.4-1968")]; + char stringpool_str1845[sizeof("CSISOLATINGREEK")]; + char stringpool_str1851[sizeof("ISO-2022-JP-MS")]; + char stringpool_str1853[sizeof("CSISO2022KR")]; + char stringpool_str1870[sizeof("BIG5-HKSCS:2001")]; + char stringpool_str1875[sizeof("ISO-IR-159")]; + char stringpool_str1878[sizeof("WINDOWS-1256")]; + char stringpool_str1879[sizeof("WINDOWS-1255")]; + char stringpool_str1881[sizeof("WINDOWS-1252")]; + char stringpool_str1886[sizeof("WINDOWS-1251")]; + char stringpool_str1892[sizeof("ISO-2022-KR")]; + char stringpool_str1893[sizeof("CSISO87JISX0208")]; + char stringpool_str1899[sizeof("BIG5-HKSCS:2008")]; + char stringpool_str1911[sizeof("BIG5-HKSCS:2004")]; + char stringpool_str1915[sizeof("WINDOWS-1258")]; + char stringpool_str1923[sizeof("ISO-IR-149")]; + char stringpool_str1927[sizeof("WINDOWS-1254")]; + char stringpool_str1933[sizeof("EBCDIC-ES-284+EURO")]; + char stringpool_str1952[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str1953[sizeof("ISO-IR-109")]; + char stringpool_str1957[sizeof("WINDOWS-1250")]; + char stringpool_str1997[sizeof("WINDOWS-1253")]; + char stringpool_str2020[sizeof("ISO8859-9")]; + char stringpool_str2050[sizeof("BIG-FIVE")]; + char stringpool_str2062[sizeof("CN-GB-ISOIR165")]; + char stringpool_str2093[sizeof("ISO646-US")]; + char stringpool_str2109[sizeof("ISO-IR-179")]; + char stringpool_str2113[sizeof("WINDOWS-1257")]; + char stringpool_str2115[sizeof("GEORGIAN-PS")]; + char stringpool_str2156[sizeof("MS-GREEK")]; + char stringpool_str2188[sizeof("WINDOWS-874")]; + char stringpool_str2206[sizeof("BIG5-HKSCS:1999")]; + char stringpool_str2218[sizeof("ISO-IR-199")]; + char stringpool_str2327[sizeof("BIG5-HKSCS")]; + char stringpool_str2457[sizeof("SHIFT_JISX0213")]; + char stringpool_str2479[sizeof("SHIFT_JIS-2004")]; + char stringpool_str2482[sizeof("CSSHIFTJIS")]; + char stringpool_str2504[sizeof("SHIFT_JIS")]; + char stringpool_str2529[sizeof("BIG5HKSCS")]; + char stringpool_str2564[sizeof("WINDOWS-936")]; + char stringpool_str2630[sizeof("SHIFT-JIS")]; }; static const struct stringpool_t stringpool_contents = { @@ -790,18 +801,19 @@ static const struct stringpool_t stringpool_contents = "L2", "L1", "866", - "ATARI", "865", "855", "862", "852", + "646", "CP1256", + "ATARI", "CP1255", + "861", "CP1166", "CP1156", "CP1252", "CP1155", - "861", "CP1125", "CP1162", "CP1122", @@ -815,649 +827,659 @@ static const struct stringpool_t stringpool_contents = "CP285", "CP862", "CP852", + "L8", "R8", "CP861", - "ARABIC", - "JP", - "L8", - "LATIN6", - "LATIN5", "L4", - "LATIN2", + "ARABIC", "PT154", - "LATIN1", + "CP1258", "CP1026", + "CP1158", "CP1025", - "CP1258", "CP154", - "CN", - "CP1158", - "CP1254", "CP50221", + "CP858", + "CP1254", + "PTCP154", "CP1164", "CP1154", - "PTCP154", "CP1124", - "HZ", - "CP858", "CP864", - "CP1046", "CP284", + "JP", + "CP1046", + "L10", + "CP1132", + "CP1361", "CP424", "CP01146", "CP01145", - "L10", - "LATIN8", + "CP1131", "CP01142", - "LATIN4", "860", "850", "CP01141", - "CP1132", "CP1250", - "CP1361", "CP1160", - "CP1131", - "JOHAB", - "CP860", - "CP850", - "CP280", - "X0212", - "CP16804", + "HZ", "IBM1166", "IBM1156", "IBM1165", "IBM1155", - "CP01148", "IBM1162", - "CP500", - "LATIN10", + "CP860", + "CP850", "IBM1122", - "CP01144", - "CP880", + "CP280", "IBM1112", "IBM1161", "IBM866", "IBM865", "IBM855", + "L3", "IBM285", "IBM862", "IBM852", - "IBM425", "IBM282", - "CP12712", - "BIG5", "IBM861", - "L3", + "IBM425", "MAC", + "CP01148", + "CYRILLIC", + "CP16804", + "CP880", "IBM1146", - "CP875", + "CP500", "IBM1145", + "UHC", + "863", "IBM1142", - "X0201", - "CP871", + "CP01144", "IBM1141", - "863", - "IBM1026", - "IBM1025", "CP1253", - "CP01140", "CP1163", "CP1153", "CP1123", + "IBM1026", "IBM1158", - "CP278", - "IBM1164", - "IBM1154", - "CP1130", + "IBM1025", + "CP12712", + "CP875", "CP863", "CP853", - "UHC", + "IBM1164", + "IBM1154", + "CP871", "CP423", + "CP1130", + "JAVA", "IBM864", "IBM284", - "IBM424", - "X0208", - "LATIN3", + "CP01140", "IBM1148", - "CP874", - "IBM1144", - "ROMAN8", - "CYRILLIC", + "CP278", "IBM1132", - "MACTHAI", + "LATIN6", + "LATIN5", + "EUCJP", + "IBM424", + "LATIN2", + "LATIN1", + "JOHAB", + "IBM1144", "IBM1160", "IBM16804", + "CP922", "IBM01146", - "IBM01144", - "IBM01142", + "X0212", "IBM860", "IBM850", "IBM280", - "CP870", - "IBM1140", - "GB2312", + "IBM01148", + "IBM01144", + "CP874", + "IBM01142", + "EUCKR", + "CP1133", + "LATIN8", "CP01143", + "IBM1140", + "MACTHAI", + "IBM838", + "IBM880", "IBM01140", "IBM500", + "LATIN4", + "RK1048", + "PCK", + "CP905", + "IBM1163", + "IBM1153", + "IBM1123", + "CP870", + "X0201", + "IBM01143", "L7", - "IBM880", - "CP1133", - "ASCII", - "CP775", - "857", - "ATARIST", - "IBM838", - "CP1257", "IBM875", - "CP1157", - "CP922", - "IBM871", - "IBM01143", - "CP857", + "IBM863", + "UTF8", "IBM01141", - "IBM12712", - "IBM1163", - "IBM1153", + "IBM871", + "IBM423", "TDS565", - "IBM1123", - "MACCYRILLIC", - "CP273", - "IBM278", + "CP936", "IBM1130", - "LATIN7", - "IBM863", + "CP932", + "CP775", "MACROMANIA", - "IBM423", - "RK1048", - "IBM-285", + "857", "IBM1143", - "IBM-425", + "CP273", + "IBM278", + "IBM12712", + "IBM-285", + "LATIN10", + "CP1257", "IBM-282", - "MACROMAN", - "EUCJP", - "CP905", - "BIG-5", - "CSPCP852", + "ASCII", + "CP1157", + "IBM-425", + "X0208", "IBM-1166", "IBM-1156", + "ATARIST", + "CP950", + "KOI8-T", + "CP857", + "IBM-1158", "IBM-1164", "IBM-1154", "IBM-1162", - "TIS620", "IBM-1122", - "IBM01145", "IBM-1112", - "CP1047", - "EUCCN", - "CP367", - "CP01147", - "CP-GR", + "KOI8-R", + "MACARABIC", "IBM-1160", - "437", "IBM-1146", + "LATIN3", + "IBM01145", + "IBM-1148", "IBM-1144", - "CP1137", "IBM-1142", - "CP936", - "IBM870", - "CP932", - "CP950", "IBM-1026", + "BIG5", "IBM-284", - "CP437", - "IBM-424", - "CN-GB", - "IBM-1140", - "CN-BIG5", - "IBM-16804", - "IBM775", + "ROMAN8", "IBM-1163", "IBM-1153", + "VISCII", "IBM-1123", - "CP037", - "KOI8-R", "IBM-1161", - "KOI8-T", - "IBM1157", - "MACARABIC", - "GB18030", - "JAVA", - "IBM857", - "IBM-280", - "TCVN", - "KOREAN", + "CP367", + "EUC-JP", + "IBM-424", + "IBM-1140", + "IBM905", + "IBM-16804", + "IBM870", + "CSPCP852", + "437", + "CN", + "CP1137", + "CP1047", + "CP00924", + "KOI8-U", + "IBM924", + "TIS620", + "ELOT_928", + "CP01147", + "IBM-EUCJP", + "KOI8-RU", "IBM-1143", + "CP943", "IBM-1132", - "IBM273", - "HP-ROMAN8", + "ECMA-118", + "TIS620.2529-1", + "ECMA-114", "IBM-1141", - "IBM01148", - "CYRILLIC-ASIAN", - "IBM1147", - "GB18030:2005", - "MACINTOSH", - "CP00924", - "CSBIG5", - "IBM-500", - "IBM-880", - "CSIBM1162", + "CP437", + "IBM-280", + "IBM775", + "IBM273", + "CP4971", + "EUC-KR", + "UTF-16", + "IBM1157", "IBM-1130", + "IBM01149", + "CP037", + "IBM-838", + "IBM-880", + "IBM857", + "IBM-500", + "MACICELAND", + "869", + "MACCYRILLIC", "IBM-1165", "IBM-1155", - "JIS0208", + "KZ-1048", + "IBM1147", + "CP1129", + "IBM-875", + "MACCROATIAN", + "HP-ROMAN8", + "UTF-8", + "GB2312", + "TCVN", + "CP869", + "IBM-871", + "IBM00924", + "IBM-423", + "CP819", + "CSIBM1162", + "MACROMAN", + "IBM-1145", "CSIBM1161", "CSIBM866", + "IBM-278", + "CSKOI8R", + "IBM367", "CSIBM864", - "IBM905", "CSIBM284", + "EBCDIC-CP-NO", + "MULELAO-1", + "IBM-1025", + "EUCTW", + "EBCDIC-CP-NL", + "UTF-32", "CSIBM424", - "IBM-838", - "CP4971", - "IBM-875", - "IBM924", - "ISO646-JP", - "TIS620.2533-1", - "IBM-871", + "IBM1137", "IBM1047", + "CCSID01146", + "CSPC850MULTILINGUAL", + "CCSID01145", + "EBCDIC-CP-CA", + "CCSID00924", + "LATIN7", + "CCSID01142", + "EUCCN", + "EBCDIC-CYRILLIC", + "TIS620.2533-1", + "ISO646-JP", "CSIBM860", - "IBM-1145", - "IBM367", + "CCSID01141", "CSIBM280", - "CP943", + "HP15CN", + "UCS-2", + "EBCDIC-GB-285+EURO", + "IBM437", + "EBCDIC-NO-277+EURO", + "CYRILLIC-ASIAN", "CSIBM1026", - "CSPTCP154", - "EUCKR", - "IBM-278", - "CCSID00924", - "IBM1137", - "CSIBMTHAI", + "IBM4971", + "CP297", + "IBM-12712", "CP737", - "IBM-1025", - "MACICELAND", - "IBM01149", - "CSIBM500", - "IBM-423", + "EBCDIC-CP-TR", "CSIBM880", - "CCSID01146", - "CCSID01145", - "IBM437", - "CSKOI8R", - "CCSID01142", - "TIS620.2533-0", - "EUC-JP", "CSIBM863", - "CCSID01141", - "GB18030:2022", - "KZ-1048", - "CSIBM423", - "CSIBM861", - "ECMA-114", - "TIS-620", + "DECHANZI", "IBM037", - "EBCDIC-LATIN9-EURO", - "TIS620-0", - "IBM277", - "IBM00924", - "EUC-CN", - "IBM-12712", - "IBM-1158", - "CSASCII", + "CSIBM500", + "CSIBM861", + "CP01149", + "IBM-THAI", + "EBCDIC-CP-YU", + "EBCDIC-CP-HE", + "CSIBM423", + "EBCDIC-CP-SE", + "BIG-5", "CCSID01148", + "IBM-1149", + "CSPTCP154", + "TIS620.2533-0", + "IBM-905", + "JIS0208", "IBM-870", - "CSIBM00924", + "EBCDIC-CP-BE", + "CSIBMTHAI", + "IBM277", "CCSID01144", - "TIS620.2529-1", - "WINBALTRIM", - "UCS-2", - "CP297", - "BIG5-2003", - "CSGB2312", - "IBM-1148", + "CSEUCKR", + "IBM-924", + "TIS-620", + "IBM869", + "TIS620-0", + "UCS-4", + "CP-GR", + "IBM01147", + "IBM819", + "CP1097", + "CSKZ1048", + "IBM-932", + "IBM-273", + "EBCDIC-LATIN9-EURO", + "DEC-KANJI", + "MACINTOSH", + "KOREAN", + "IBM1149", + "EBCDIC-CP-GB", + "EBCDIC-CP-CH", + "UNICODELITTLE", + "CCSID01140", + "EBCDIC-CP-GR", + "CSIBM01145", + "EBCDIC-CP-IT", + "CSIBM00924", + "CSIBM01142", + "EBCDIC-SE-278+EURO", "CSIBM865", "CSIBM855", "CSIBM285", - "GBK", - "CSIBM01145", - "CSIBM01142", - "CSHPROMAN8", - "869", - "MACCROATIAN", - "MS-ARAB", + "HEBREW", "CSIBM01141", - "IBM4971", - "IBM-THAI", - "CP1129", - "CCSID01140", - "CP869", - "UTF-16", - "CP819", - "IBM-273", - "JIS_X0201", - "UCS-4", - "CSIBM1163", - "CP1097", - "CSIBM870", - "HZ-GB-2312", - "IBM737", - "VISCII", - "US", - "CSIBM01148", - "MS-CYRL", - "CSPC850MULTILINGUAL", - "CSIBM273", - "IBM-1149", - "KOI8-U", - "IBM01147", - "ISO-IR-6", - "KOI8-RU", - "IBM-905", - "CSISO58GB231280", + "MS-ARAB", "ISO_8859-6", "ISO_8859-5", - "ISO-IR-226", + "CSIBM278", "ISO_8859-2", - "IBM-924", - "UTF-8", + "IBM-CP1133", + "US", "ISO_8859-15", - "JIS_X0208", + "CSIBM1163", + "EBCDIC-FI-278+EURO", "ISO_8859-1", - "DEC-KANJI", + "UCS-2BE", + "VISCII1.1-1", "ISO_8859-11", - "CSIBM871", + "CNS11643", + "DEC-HANYU", + "EBCDIC-FR-297+EURO", "ISO_8859-10:1992", - "CSPC862LATINHEBREW", - "CSISO159JISX02121990", - "ISO-8859-6", - "CP01149", - "ISO-8859-5", - "CSIBM01140", - "CSISO2022CN", - "ISO-8859-2", - "EUC-KR", - "IBM-CP1133", - "ISO-8859-15", + "IBM297", + "UCS-2LE", + "GB18030", + "IBM737", + "CSASCII", + "GBK", "ISO_8859-5:1988", - "EBCDIC-CYRILLIC", - "ISO-8859-1", - "CCSID01143", - "ISO_8859-14", "ISO_8859-15:1998", "ISO_8859-14:1998", - "ISO-8859-11", - "ISO646-CN", - "UNICODELITTLE", - "DECHANYU", - "IBM297", - "EBCDIC-GB-285+EURO", - "JIS_X0212", - "EBCDIC-NO-277+EURO", - "UTF-32", - "NEXTSTEP", - "ISO_8859-8", - "ISO_8859-4", - "ISO_8859-8:1988", - "ISO-8859-14", - "ISO_8859-4:1988", - "ISO-IR-166", - "ISO_8859-10", + "CSIBM01148", + "ISO-CELTIC", + "TCVN5712-1", + "CCSID01143", + "ISO_8859-14", + "GB18030:2005", + "EBCDIC-IT-280+EURO", + "CSPC8CODEPAGE1146", + "UCS-4BE", + "C99", + "WINBALTRIM", + "CSIBM870", + "ISO_8859-8", + "DECKANJI", + "UCS-4LE", + "CSIBM273", + "ISO_8859-8:1988", + "DECHANYU", + "IBM-1157", + "EUC-TW", + "MS-CYRL", + "ISO-IR-6", + "KSC_5601", + "ISO_8859-4:1988", + "GREEK8", + "EBCDIC-CP-WT", + "ISO_8859-4", + "ISO_8859-10", + "CSIBM869", + "EUC-CN", + "EBCDIC-CP-DK", + "EBCDIC-GREEK", + "TCVN-5712", + "ISO-IR-226", + "CSPC8CODEPAGE1144", + "IBM1097", + "CSIBM871", + "CP949", + "ISO-8859-6", + "ISO_646.IRV:1991", + "ISO-8859-5", + "CSBIG5", + "ISO-8859-2", + "IBM-1147", + "ISO-8859-15", + "CSIBM01140", + "ISO-8859-1", + "MS936", + "ISO-8859-11", + "CSPC775BALTIC", + "IBM-037", + "MACCENTRALEUROPE", + "UTF-7", + "ISO_8859-3:1988", + "SDECKANJI", + "STRK1048-2002", + "CSUCS4", + "GB18030:2022", + "TCVN5712-1:1993", + "ISO_8859-13", + "ISO-IR-166", "ISO-IR-165", "ISO-IR-126", - "CP-IS", - "IBM-037", - "ISO-8859-8", + "ISO-8859-14", + "CSISO58GB231280", "IBM-277", - "CSUCS4", - "ISO-8859-4", + "ISO-8859-8", + "MS-EE", + "IBM-1137", + "IBM-1047", + "UNICODE-1-1", + "JIS_X0201", + "CSIBM01143", + "ARMSCII-8", "ISO-2022-CN-EXT", - "CSIBM869", - "ECMA-118", + "ISO-8859-4", "ISO-8859-10", - "IBM869", - "IBM819", - "ISO_646.IRV:1991", - "CSIBM1047", - "MULELAO-1", - "DECKANJI", - "DEC-HANYU", - "GREEK8", - "IBM1097", - "IBM1149", - "IBM-1157", - "CSIBM01143", - "ISO-2022-CN", - "EUCTW", - "EBCDIC-FI-278+EURO", + "CN-GB", + "MS-HEBR", + "GREEK", + "BIG5-2003", + "ISO_8859-3", + "CN-BIG5", + "ISO_8859-6:1987", + "IBM-4971", + "ISO_8859-2:1987", + "ISO_8859-16", + "BIGFIVE", + "ISO_8859-1:1987", + "CHINESE", + "ISO-10646-UCS-2", + "MACUKRAINE", + "CP-IS", + "ISO_8859-16:2001", "JIS_C6220-1969-RO", + "JIS_X0208", "ISO-IR-14", - "EBCDIC-FR-297+EURO", - "ARMSCII-8", - "EBCDIC-CP-NO", - "MS936", - "ISO_8859-3:1988", "ISO-IR-101", - "JIS_X0212.1990-0", - "TCVN5712-1", - "ISO_8859-13", - "EBCDIC-CP-NL", - "IBM-1147", - "CSIBM278", - "KSC_5601", - "GEORGIAN-ACADEMY", - "CSPC775BALTIC", - "CSEUCKR", - "UNICODEBIG", - "ISO-IR-148", + "EBCDIC-DE-273+EURO", + "CSIBM1047", + "NEXTSTEP", + "CSISO159JISX02121990", "CCSID01147", - "ISO-IR-144", + "CSPC8CODEPAGE437", + "ISO-10646-UCS-4", + "IBM-297", + "ISO-IR-148", "ISO-8859-13", - "ISO_8859-6:1987", - "ISO_8859-16", - "ISO_8859-2:1987", "JIS_C6226-1983", - "ISO_8859-1:1987", - "MS-HEBR", - "ISO_8859-16:2001", - "CSKZ1048", + "CSISO57GB1988", + "CSHPROMAN8", + "CSGB2312", "LATIN-9", - "ISO-IR-110", - "ISO-IR-58", - "TCVN-5712", - "ISO-8859-16", - "IBM-1047", - "CSPC8CODEPAGE1146", - "ISO_8859-3", - "EBCDIC-CP-CA", - "EBCDIC-CP-GB", - "EBCDIC-CP-IT", - "EBCDIC-CP-GR", - "ISO-IR-230", - "CSISO2022JP", - "GB_2312-80", - "CSISO2022JP2", - "IBM-1137", - "SJIS", - "HEBREW", - "RISCOS-LATIN1", - "CHINESE", - "ELOT_928", - "ISO-8859-3", - "ISO-IR-138", - "CSPC8CODEPAGE1144", - "EBCDIC-CP-WT", - "ISO-IR-100", - "TCVN5712-1:1993", - "CSIBM01147", - "IBM-4971", - "UNICODE-1-1", - "CSIBM857", - "JIS_X0208-1990", - "ISO-IR-203", - "C99", - "IBM-297", - "MACCENTRALEUROPE", - "MS-ANSI", - "ISO_8859-7:2003", - "EBCDIC-CP-CH", - "VISCII1.1-1", - "UTF-7", - "EBCDIC-CP-TR", - "ANSI_X3.4-1986", - "UCS-2BE", - "CSIBM905", + "JIS_X0212", + "CSEUCTW", "ISO8859-6", + "ISO-IR-144", "ISO8859-5", + "CSISO2022JP", "ISO8859-2", - "EBCDIC-CP-YU", + "CSISO2022JP2", + "CSIBM857", "ISO8859-16", + "ASMO-708", "ISO8859-15", - "UCS-2LE", + "EBCDIC-INTERNATIONAL-500+EURO", "ISO8859-1", - "CP949", - "GREEK", - "JIS_X0208-1983", + "ISO-IR-110", + "CSVISCII", "ISO8859-11", - "ANSI_X3.4-1968", + "EUC-JISX0213", + "ISO_8859-7:2003", + "IBM-EUCCN", + "ISO-8859-3", + "EBCDIC-CP-ROECE", + "ISO-IR-58", "ISO-2022-JP", - "EBCDIC-IT-280+EURO", - "UCS-4BE", + "ISO-8859-16", + "ISO-IR-138", "ISO-2022-JP-2", - "CSISO14JISC6220RO", - "CSISO57GB1988", + "CSIBM905", "ISO-2022-JP-1", - "EBCDIC-CP-HE", - "EBCDIC-CP-SE", - "UCS-4LE", - "ISO_8859-7", - "JIS_X0212-1990", - "ISO_8859-7:1987", - "EUC-TW", - "EBCDIC-CP-BE", "CSUNICODE11", - "EBCDIC-CP-FI", + "EBCDIC-CP-US", + "ISO-IR-230", + "HZ-GB-2312", + "IBM-EUCTW", + "UTF-16BE", "ISO8859-8", - "ISO-2022-JP-2004", + "EBCDIC-DK-277+EURO", + "UTF-16LE", + "EBCDIC-CP-FI", + "ISO-IR-100", + "JIS_X0212.1990-0", "EBCDIC-CP-FR", + "ISO-2022-JP-2004", "ISO8859-4", - "ISO-8859-7", - "EUC-JISX0213", - "STRK1048-2002", + "ISO-IR-203", + "CSPC862LATINHEBREW", "ISO8859-14", - "UTF-16BE", + "CSUNICODE", + "UNICODE-1-1-UTF-7", + "MACGREEK", + "CSIBM01147", + "MS-TURK", + "EBCDIC-CP-IS", "CSISOLATIN5", - "CSPC8CODEPAGE437", "CSISOLATIN1", - "UTF-16LE", - "GEORGIAN-PS", - "CN-GB-ISOIR165", - "EBCDIC-SE-278+EURO", - "JISX0201-1976", - "CSIBM037", + "ISO_8859-7", + "ISO_8859-7:1987", "CSISOLATINARABIC", - "CSIBM277", - "CSISOLATIN4", - "ISO-IR-157", - "ISO-IR-127", - "ISO8859-10", - "ASMO-708", + "CSISO2022CN", "ISO-2022-JP-3", - "UNICODE-1-1-UTF-7", - "MACGREEK", - "EBCDIC-INTERNATIONAL-500+EURO", - "ISO-CELTIC", - "CSISO87JISX0208", - "MACHEBREW", "CSISOLATINCYRILLIC", + "CSIBM037", + "ISO8859-10", + "IBM-1097", + "CSISOLATIN4", + "CCSID01149", "UTF-32BE", - "ISO-IR-57", - "ISO-10646-UCS-2", - "BIG5-HKSCS:2001", - "CSEUCTW", - "CSISOLATIN2", - "MS-EE", + "GB_2312-80", + "CSKSC56011987", "UTF-32LE", + "ISO-2022-CN", + "ISO646-CN", + "CSIBM277", + "ISO-IR-87", + "JISX0201-1976", "US-ASCII", - "MACUKRAINE", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:2004", + "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", + "KS_C_5601-1987", "ISO8859-3", - "ISO-10646-UCS-4", - "CSISOLATIN3", + "EBCDIC-US-37+EURO", + "CSISO14JISC6220RO", + "MACTURKISH", "ISO8859-13", + "CSISOLATIN2", + "ISO-8859-7", + "JIS_X0208-1990", + "SJIS", "CSUNICODE11UTF7", + "EBCDIC-CP-ES", + "CSISOLATIN3", + "CSHALFWIDTHKATAKANA", + "JIS_X0208-1983", + "CSIBM297", + "ISO-IR-157", + "ISO-IR-127", + "EUC-JIS-2004", + "CSIBM01149", + "KS_C_5601-1989", + "JIS_X0212-1990", + "ISO_8859-9", + "CSISOLATIN6", + "ISO_8859-9:1989", + "UCS-2-INTERNAL", + "UCS-2-SWAPPED", + "GEORGIAN-ACADEMY", + "UNICODEBIG", + "UCS-4-INTERNAL", + "MS-ANSI", + "UCS-4-SWAPPED", + "EBCDIC-IS-871+EURO", + "MACHEBREW", + "ISO-IR-57", "MS_KANJI", - "CSUNICODE", - "IBM-1097", + "CSISOLATINHEBREW", + "ANSI_X3.4-1986", + "ISO8859-7", "GB_1988-80", - "EBCDIC-CP-IS", - "CSISOLATIN6", - "CCSID01149", - "ISO-IR-87", - "MACTURKISH", + "RISCOS-LATIN1", + "ISO-8859-9", + "CSMACINTOSH", + "ANSI_X3.4-1968", + "CSISOLATINGREEK", + "ISO-2022-JP-MS", "CSISO2022KR", - "EBCDIC-GREEK", + "BIG5-HKSCS:2001", + "ISO-IR-159", "WINDOWS-1256", "WINDOWS-1255", "WINDOWS-1252", - "MS-TURK", "WINDOWS-1251", - "CSVISCII", - "CSKSC56011987", - "EBCDIC-CP-DK", - "CSIBM297", - "KS_C_5601-1987", - "EBCDIC-US-37+EURO", - "EBCDIC-ES-284+EURO", + "ISO-2022-KR", + "CSISO87JISX0208", + "BIG5-HKSCS:2008", + "BIG5-HKSCS:2004", "WINDOWS-1258", + "ISO-IR-149", "WINDOWS-1254", - "BIGFIVE", - "CSIBM01149", + "EBCDIC-ES-284+EURO", + "CSEUCPKDFMTJAPANESE", + "ISO-IR-109", "WINDOWS-1250", - "CSMACINTOSH", - "ISO8859-7", - "EUC-JIS-2004", - "EBCDIC-DE-273+EURO", - "ISO-2022-JP-MS", - "ISO-2022-KR", - "EBCDIC-CP-ROECE", - "CSISOLATINHEBREW", - "CSHALFWIDTHKATAKANA", - "UCS-2-INTERNAL", "WINDOWS-1253", - "EBCDIC-DK-277+EURO", - "UCS-4-INTERNAL", + "ISO8859-9", + "BIG-FIVE", + "CN-GB-ISOIR165", "ISO646-US", - "ISO_8859-9", - "CSISOLATINGREEK", - "ISO_8859-9:1989", - "UCS-2-SWAPPED", - "ISO-8859-9", + "ISO-IR-179", "WINDOWS-1257", - "UCS-4-SWAPPED", - "KS_C_5601-1989", - "ISO-IR-159", - "BIG5-HKSCS", + "GEORGIAN-PS", + "MS-GREEK", "WINDOWS-874", - "ISO-IR-149", "BIG5-HKSCS:1999", - "ISO-IR-109", - "EBCDIC-CP-ES", - "BIG-FIVE", - "EBCDIC-IS-871+EURO", - "EBCDIC-CP-US", - "BIG5HKSCS", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "MS-GREEK", - "ISO-IR-179", - "CSSHIFTJIS", - "ISO8859-9", - "SHIFT_JISX0213", "ISO-IR-199", + "BIG5-HKSCS", + "SHIFT_JISX0213", + "SHIFT_JIS-2004", + "CSSHIFTJIS", "SHIFT_JIS", + "BIG5HKSCS", "WINDOWS-936", - "SHIFT-JIS", - "SHIFT_JIS-2004", - "CSEUCPKDFMTJAPANESE" + "SHIFT-JIS" }; #define stringpool ((const char *) &stringpool_contents) @@ -1465,1812 +1487,1809 @@ static const struct alias aliases[] = { {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 134 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_iso8859_10}, - {-1}, -#line 126 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str24, ei_iso8859_9}, - {-1}, {-1}, {-1}, -#line 68 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 60 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_iso8859_1}, - {-1}, {-1}, {-1}, -#line 207 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str42, ei_cp866}, -#line 683 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str43, ei_atarist}, -#line 424 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_cp865}, -#line 399 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_cp855}, - {-1}, {-1}, -#line 203 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_cp862}, -#line 394 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_cp852}, -#line 189 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_cp1256}, - {-1}, -#line 186 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_cp1255}, - {-1}, -#line 663 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_ebcdic1166}, -#line 646 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_ebcdic1156}, -#line 177 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str56, ei_cp1252}, -#line 643 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_ebcdic1155}, -#line 412 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_cp861}, -#line 431 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_cp1125}, -#line 375 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str60, ei_cp1162}, - {-1}, {-1}, -#line 550 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_ebcdic1122}, - {-1}, {-1}, -#line 174 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_cp1251}, - {-1}, -#line 547 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_ebcdic1112}, - {-1}, -#line 371 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_cp1161}, -#line 205 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_cp866}, -#line 365 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_cp856}, -#line 422 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_cp865}, -#line 397 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, ei_cp855}, - {-1}, -#line 469 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_ebcdic285}, -#line 201 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_cp862}, -#line 392 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_cp852}, - {-1}, -#line 227 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 410 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str87, ei_cp861}, -#line 100 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, ei_iso8859_6}, - {-1}, {-1}, -#line 265 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str91, ei_iso646_jp}, -#line 151 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_iso8859_14}, -#line 133 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_iso8859_10}, - {-1}, -#line 125 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_iso8859_9}, {-1}, {-1}, -#line 84 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str98, ei_iso8859_4}, -#line 67 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str99, ei_iso8859_2}, - {-1}, {-1}, {-1}, -#line 234 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_pt154}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 59 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str109, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, -#line 536 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str114, ei_ebcdic1026}, - {-1}, -#line 533 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str116, ei_ebcdic1025}, - {-1}, {-1}, {-1}, -#line 195 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_cp1258}, -#line 236 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str121, ei_pt154}, -#line 288 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str122, ei_iso646_cn}, - {-1}, {-1}, -#line 652 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_ebcdic1158}, -#line 183 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_cp1254}, - {-1}, -#line 317 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str128, ei_iso2022_jpms}, - {-1}, -#line 658 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_ebcdic1164}, -#line 640 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_ebcdic1154}, -#line 235 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_pt154}, -#line 369 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_cp1124}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 334 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str141, ei_hz}, -#line 405 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str142, ei_cp858}, - {-1}, {-1}, {-1}, {-1}, -#line 419 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str147, ei_cp864}, - {-1}, -#line 368 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str149, ei_cp1046}, -#line 464 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_ebcdic284}, - {-1}, {-1}, -#line 484 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_ebcdic424}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 611 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_ebcdic1146}, - {-1}, -#line 604 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_ebcdic1145}, -#line 165 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_iso8859_16}, -#line 150 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_iso8859_14}, - {-1}, -#line 581 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_ebcdic1142}, - {-1}, {-1}, {-1}, -#line 83 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_iso8859_4}, - {-1}, {-1}, -#line 408 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_cp860}, -#line 199 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_cp850}, +#line 136 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str20, ei_iso8859_10}, {-1}, -#line 574 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str175, ei_ebcdic1141}, +#line 128 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_iso8859_9}, {-1}, {-1}, {-1}, -#line 559 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_ebcdic1132}, -#line 171 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str180, ei_cp1250}, -#line 358 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_johab}, - {-1}, {-1}, -#line 655 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_ebcdic1160}, - {-1}, {-1}, {-1}, {-1}, -#line 209 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_cp1131}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 357 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_johab}, -#line 406 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_cp860}, -#line 197 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_cp850}, - {-1}, -#line 457 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_ebcdic280}, - {-1}, {-1}, -#line 282 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_jisx0212}, +#line 70 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, ei_iso8859_2}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 672 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str224, ei_ebcdic16804}, -#line 662 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_ebcdic1166}, -#line 645 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str226, ei_ebcdic1156}, -#line 660 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str227, ei_ebcdic1165}, -#line 642 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_ebcdic1155}, -#line 625 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str229, ei_ebcdic1148}, - {-1}, -#line 376 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_cp1162}, -#line 491 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_ebcdic500}, -#line 164 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_iso8859_16}, -#line 549 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_ebcdic1122}, -#line 597 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str235, ei_ebcdic1144}, -#line 516 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_ebcdic880}, - {-1}, {-1}, -#line 546 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_ebcdic1112}, - {-1}, -#line 372 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_cp1161}, -#line 206 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, ei_cp866}, - {-1}, -#line 423 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_cp865}, -#line 398 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_cp855}, - {-1}, -#line 468 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_ebcdic285}, -#line 202 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_cp862}, -#line 393 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_cp852}, -#line 488 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_ebcdic425}, -#line 461 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_ebcdic282}, - {-1}, {-1}, {-1}, {-1}, -#line 669 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_ebcdic12712}, -#line 339 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_ces_big5}, -#line 411 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str258, ei_cp861}, - {-1}, -#line 76 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_iso8859_3}, -#line 212 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_mac_roman}, - {-1}, -#line 608 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ebcdic1146}, -#line 512 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_ebcdic875}, -#line 601 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_ebcdic1145}, - {-1}, {-1}, {-1}, -#line 578 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_ebcdic1142}, - {-1}, {-1}, {-1}, {-1}, -#line 269 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str274, ei_jisx0201}, - {-1}, {-1}, {-1}, -#line 507 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_ebcdic871}, -#line 571 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ebcdic1141}, -#line 417 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_cp863}, - {-1}, {-1}, {-1}, {-1}, -#line 535 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ebcdic1026}, - {-1}, -#line 532 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_ebcdic1025}, -#line 180 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_cp1253}, -#line 567 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_ebcdic1140}, - {-1}, {-1}, -#line 379 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_cp1163}, -#line 637 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1153}, - {-1}, -#line 553 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str295, ei_ebcdic1123}, -#line 651 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_ebcdic1158}, - {-1}, {-1}, {-1}, -#line 451 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_ebcdic278}, -#line 657 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_ebcdic1164}, -#line 639 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ebcdic1154}, -#line 556 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_ebcdic1130}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 415 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_cp863}, -#line 396 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp853}, -#line 356 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_cp949}, - {-1}, {-1}, {-1}, -#line 479 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_ebcdic423}, - {-1}, {-1}, -#line 420 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_cp864}, - {-1}, {-1}, -#line 463 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ebcdic284}, - {-1}, {-1}, -#line 483 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_ebcdic424}, - {-1}, {-1}, {-1}, -#line 275 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_jisx0208}, - {-1}, {-1}, -#line 75 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str331, ei_iso8859_3}, - {-1}, -#line 622 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_ebcdic1148}, - {-1}, {-1}, {-1}, {-1}, -#line 253 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_cp874}, -#line 594 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str339, ei_ebcdic1144}, +#line 62 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 209 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_cp866}, {-1}, -#line 226 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 91 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_iso8859_5}, +#line 435 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_cp865}, +#line 410 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_cp855}, {-1}, {-1}, -#line 558 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_ebcdic1132}, -#line 224 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_mac_thai}, - {-1}, {-1}, {-1}, +#line 205 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_cp862}, +#line 405 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_cp852}, + {-1}, {-1}, {-1}, {-1}, +#line 23 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_ascii}, +#line 191 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_cp1256}, +#line 694 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_atarist}, +#line 188 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_cp1255}, +#line 423 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_cp861}, +#line 674 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str69, ei_ebcdic1166}, +#line 657 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_ebcdic1156}, +#line 179 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_cp1252}, #line 654 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic1160}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_ebcdic1155}, {-1}, -#line 671 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_ebcdic16804}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 609 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_ebcdic1146}, +#line 442 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, ei_cp1125}, +#line 386 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_cp1162}, {-1}, {-1}, -#line 595 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_ebcdic1144}, +#line 561 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_ebcdic1122}, {-1}, {-1}, -#line 579 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str371, ei_ebcdic1142}, -#line 407 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_cp860}, -#line 198 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_cp850}, +#line 176 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str81, ei_cp1251}, {-1}, -#line 456 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_ebcdic280}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 501 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ebcdic870}, -#line 564 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_ebcdic1140}, +#line 558 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, ei_ebcdic1112}, {-1}, -#line 320 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_euc_cn}, +#line 382 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str85, ei_cp1161}, +#line 207 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, ei_cp866}, +#line 376 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str87, ei_cp856}, +#line 433 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, ei_cp865}, +#line 408 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, ei_cp855}, {-1}, -#line 589 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_ebcdic1143}, -#line 565 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ebcdic1140}, - {-1}, {-1}, {-1}, {-1}, -#line 490 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_ebcdic500}, -#line 144 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str404, ei_iso8859_13}, - {-1}, {-1}, -#line 515 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_ebcdic880}, - {-1}, {-1}, {-1}, -#line 244 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_cp1133}, +#line 480 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str91, ei_ebcdic285}, +#line 203 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_cp862}, +#line 403 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_cp852}, +#line 153 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str94, ei_iso8859_14}, {-1}, -#line 13 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_ascii}, +#line 229 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_hp_roman8}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 421 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp861}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 389 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_cp775}, - {-1}, {-1}, {-1}, {-1}, -#line 403 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_cp857}, - {-1}, {-1}, -#line 682 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_atarist}, +#line 86 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_iso8859_4}, + {-1}, +#line 102 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 496 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_ebcdic838}, -#line 192 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_cp1257}, +#line 236 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_pt154}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 197 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_cp1258}, + {-1}, {-1}, {-1}, +#line 547 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_ebcdic1026}, +#line 663 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, ei_ebcdic1158}, +#line 544 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str145, ei_ebcdic1025}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 238 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_pt154}, {-1}, {-1}, -#line 511 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ebcdic875}, +#line 323 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_iso2022_jpms}, {-1}, -#line 649 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_ebcdic1157}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 416 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_cp858}, {-1}, -#line 366 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_cp922}, -#line 506 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic871}, -#line 587 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_ebcdic1143}, - {-1}, {-1}, {-1}, -#line 401 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str454, ei_cp857}, +#line 185 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_cp1254}, {-1}, {-1}, -#line 572 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, -#line 668 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_ebcdic12712}, +#line 237 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_pt154}, +#line 669 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_ebcdic1164}, +#line 651 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_ebcdic1154}, + {-1}, #line 380 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp1163}, -#line 636 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_ebcdic1153}, -#line 680 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str465, ei_tds565}, -#line 552 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_ebcdic1123}, -#line 218 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_mac_cyrillic}, -#line 442 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_ebcdic273}, - {-1}, {-1}, -#line 450 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str471, ei_ebcdic278}, - {-1}, {-1}, -#line 555 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str474, ei_ebcdic1130}, -#line 143 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_iso8859_13}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_cp1124}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 416 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_cp863}, - {-1}, -#line 217 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str482, ei_mac_romania}, +#line 430 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_cp864}, + {-1}, {-1}, +#line 475 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str187, ei_ebcdic284}, +#line 267 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso646_jp}, +#line 379 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_cp1046}, +#line 167 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_iso8859_16}, {-1}, {-1}, {-1}, -#line 478 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str486, ei_ebcdic423}, - {-1}, {-1}, {-1}, {-1}, -#line 239 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_rk1048}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 467 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str499, ei_ebcdic285}, +#line 570 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_ebcdic1132}, {-1}, -#line 586 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_ebcdic1143}, -#line 487 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_ebcdic425}, -#line 460 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_ebcdic282}, -#line 210 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_mac_roman}, -#line 302 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_euc_jp}, -#line 521 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_ebcdic905}, +#line 369 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_johab}, {-1}, {-1}, -#line 340 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_ces_big5}, - {-1}, -#line 395 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_cp852}, -#line 661 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_ebcdic1166}, -#line 644 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ebcdic1156}, - {-1}, -#line 656 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_ebcdic1164}, -#line 638 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str516, ei_ebcdic1154}, +#line 495 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_ebcdic424}, {-1}, -#line 377 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_cp1162}, +#line 622 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ebcdic1146}, {-1}, -#line 247 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_tis620}, -#line 548 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_ebcdic1122}, -#line 602 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_ebcdic1145}, +#line 615 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_ebcdic1145}, +#line 211 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_cp1131}, + {-1}, {-1}, +#line 592 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_ebcdic1142}, + {-1}, {-1}, +#line 419 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_cp860}, +#line 201 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str211, ei_cp850}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 585 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 173 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str223, ei_cp1250}, {-1}, {-1}, {-1}, -#line 545 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_ebcdic1112}, - {-1}, {-1}, {-1}, {-1}, -#line 540 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_ebcdic1047}, - {-1}, {-1}, {-1}, {-1}, -#line 319 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_euc_cn}, -#line 19 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_ascii}, +#line 666 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str227, ei_ebcdic1160}, {-1}, {-1}, {-1}, -#line 618 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_ebcdic1147}, -#line 429 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_cp869}, - {-1}, {-1}, +#line 343 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_hz}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 673 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_ebcdic1166}, +#line 656 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_ebcdic1156}, +#line 671 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_ebcdic1165}, #line 653 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_ebcdic1160}, -#line 385 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp437}, - {-1}, {-1}, {-1}, -#line 607 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_ebcdic1146}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_ebcdic1155}, {-1}, {-1}, -#line 593 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_ebcdic1144}, +#line 387 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_cp1162}, +#line 417 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_cp860}, +#line 199 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_cp850}, +#line 560 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_ebcdic1122}, +#line 468 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_ebcdic280}, + {-1}, {-1}, {-1}, +#line 557 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_ebcdic1112}, {-1}, -#line 562 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_ebcdic1137}, -#line 577 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_ebcdic1142}, +#line 383 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_cp1161}, +#line 208 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_cp866}, {-1}, -#line 325 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_cp936}, - {-1}, {-1}, {-1}, {-1}, -#line 500 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_ebcdic870}, -#line 310 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str564, ei_cp932}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 345 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_cp950}, +#line 434 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_cp865}, +#line 409 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_cp855}, +#line 78 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str258, ei_iso8859_3}, +#line 479 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_ebcdic285}, +#line 204 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_cp862}, +#line 404 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_cp852}, {-1}, -#line 534 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str572, ei_ebcdic1026}, -#line 462 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str573, ei_ebcdic284}, +#line 472 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ebcdic282}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 422 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_cp861}, +#line 499 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_ebcdic425}, +#line 214 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_mac_roman}, + {-1}, {-1}, +#line 636 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str275, ei_ebcdic1148}, {-1}, -#line 383 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_cp437}, -#line 482 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_ebcdic424}, +#line 93 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_iso8859_5}, {-1}, -#line 321 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str578, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, -#line 563 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_ebcdic1140}, -#line 343 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str584, ei_ces_big5}, -#line 670 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str585, ei_ebcdic16804}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 390 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_cp775}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 381 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str597, ei_cp1163}, -#line 635 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_ebcdic1153}, +#line 683 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ebcdic16804}, {-1}, -#line 551 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_ebcdic1123}, +#line 527 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_ebcdic880}, + {-1}, {-1}, {-1}, {-1}, +#line 619 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_ebcdic1146}, +#line 502 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_ebcdic500}, +#line 612 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_ebcdic1145}, +#line 367 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_cp949}, +#line 428 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_cp863}, {-1}, -#line 434 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str602, ei_ebcdic037}, -#line 167 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_koi8_r}, -#line 373 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str604, ei_cp1161}, +#line 589 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_ebcdic1142}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 608 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_ebcdic1144}, {-1}, {-1}, -#line 233 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str607, ei_koi8_t}, +#line 582 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ebcdic1141}, +#line 182 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_cp1253}, + {-1}, {-1}, {-1}, +#line 390 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_cp1163}, #line 648 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_ebcdic1157}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_ebcdic1153}, + {-1}, +#line 564 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_ebcdic1123}, +#line 546 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_ebcdic1026}, +#line 662 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_ebcdic1158}, +#line 543 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_ebcdic1025}, + {-1}, {-1}, {-1}, +#line 680 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_ebcdic12712}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 523 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_ebcdic875}, +#line 426 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp863}, +#line 407 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_cp853}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 668 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_ebcdic1164}, +#line 650 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_ebcdic1154}, +#line 518 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_ebcdic871}, + {-1}, +#line 490 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str339, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 223 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str615, ei_mac_arabic}, - {-1}, {-1}, -#line 328 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_gb18030_2005}, +#line 567 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_ebcdic1130}, +#line 54 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_java}, + {-1}, {-1}, {-1}, {-1}, +#line 431 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_cp864}, {-1}, {-1}, -#line 52 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_java}, +#line 474 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic284}, {-1}, {-1}, {-1}, -#line 402 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_cp857}, +#line 578 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_ebcdic1140}, +#line 633 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_ebcdic1148}, +#line 462 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_ebcdic278}, +#line 569 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_ebcdic1132}, +#line 135 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_iso8859_10}, {-1}, -#line 455 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_ebcdic280}, +#line 127 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_iso8859_9}, +#line 304 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_euc_jp}, +#line 494 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_ebcdic424}, {-1}, -#line 258 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, -#line 300 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str634, ei_ksc5601}, -#line 585 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str635, ei_ebcdic1143}, +#line 69 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str369, ei_iso8859_2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 61 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str379, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 368 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_johab}, +#line 605 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ebcdic1144}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 557 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_ebcdic1132}, +#line 665 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_ebcdic1160}, + {-1}, {-1}, +#line 682 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ebcdic16804}, + {-1}, {-1}, {-1}, +#line 377 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_cp922}, + {-1}, {-1}, {-1}, +#line 620 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_ebcdic1146}, +#line 284 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, +#line 418 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp860}, +#line 200 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_cp850}, {-1}, -#line 441 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_ebcdic273}, +#line 467 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_ebcdic280}, +#line 634 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_ebcdic1148}, {-1}, -#line 225 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_hp_roman8}, -#line 570 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_ebcdic1141}, -#line 623 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str643, ei_ebcdic1148}, -#line 237 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_pt154}, -#line 615 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_ebcdic1147}, +#line 606 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_ebcdic1144}, +#line 255 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp874}, {-1}, -#line 329 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_gb18030_2005}, -#line 211 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str648, ei_mac_roman}, +#line 590 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic1142}, {-1}, {-1}, {-1}, -#line 528 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str652, ei_ebcdic924}, -#line 344 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_ces_big5}, +#line 364 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_euc_kr}, +#line 246 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_cp1133}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 489 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_ebcdic500}, - {-1}, {-1}, {-1}, -#line 514 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_ebcdic880}, - {-1}, {-1}, -#line 378 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_cp1162}, +#line 152 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_iso8859_14}, {-1}, -#line 554 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_ebcdic1130}, +#line 600 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_ebcdic1143}, {-1}, {-1}, {-1}, {-1}, -#line 659 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_ebcdic1165}, -#line 641 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str670, ei_ebcdic1155}, -#line 274 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_jisx0208}, -#line 374 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str672, ei_cp1161}, -#line 208 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_cp866}, - {-1}, {-1}, -#line 421 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_cp864}, -#line 520 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_ebcdic905}, +#line 575 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_ebcdic1140}, +#line 226 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str445, ei_mac_thai}, {-1}, -#line 466 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_ebcdic284}, - {-1}, {-1}, -#line 486 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_ebcdic424}, -#line 495 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_ebcdic838}, - {-1}, {-1}, -#line 666 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_ebcdic4971}, -#line 510 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_ebcdic875}, +#line 507 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_ebcdic838}, {-1}, -#line 525 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_ebcdic924}, - {-1}, {-1}, {-1}, {-1}, -#line 263 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str694, ei_iso646_jp}, +#line 526 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic880}, {-1}, -#line 251 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, -#line 505 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_ebcdic871}, -#line 539 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str702, ei_ebcdic1047}, +#line 576 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_ebcdic1140}, {-1}, {-1}, {-1}, -#line 409 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_cp860}, -#line 600 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str707, ei_ebcdic1145}, -#line 20 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_ascii}, -#line 459 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_ebcdic280}, +#line 501 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_ebcdic500}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 367 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str715, ei_cp943}, -#line 537 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_ebcdic1026}, - {-1}, -#line 238 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str718, ei_pt154}, - {-1}, {-1}, -#line 353 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_euc_kr}, - {-1}, -#line 449 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_ebcdic278}, -#line 527 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str724, ei_ebcdic924}, +#line 85 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_iso8859_4}, +#line 241 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_rk1048}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 314 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, +#line 532 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str474, ei_ebcdic905}, +#line 391 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_cp1163}, +#line 647 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_ebcdic1153}, {-1}, -#line 561 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str726, ei_ebcdic1137}, -#line 498 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str727, ei_ebcdic838}, -#line 387 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str728, ei_cp737}, -#line 531 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str729, ei_ebcdic1025}, - {-1}, {-1}, -#line 215 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str732, ei_mac_iceland}, +#line 563 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_ebcdic1123}, +#line 512 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_ebcdic870}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 271 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_jisx0201}, +#line 598 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ebcdic1143}, +#line 146 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_iso8859_13}, +#line 522 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_ebcdic875}, +#line 427 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_cp863}, {-1}, {-1}, -#line 630 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str735, ei_ebcdic1149}, +#line 25 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_utf8}, +#line 583 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 517 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_ebcdic871}, {-1}, -#line 494 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str737, ei_ebcdic500}, -#line 477 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str738, ei_ebcdic423}, +#line 489 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_ebcdic423}, {-1}, {-1}, -#line 518 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str741, ei_ebcdic880}, - {-1}, -#line 610 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str743, ei_ebcdic1146}, +#line 691 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_tds565}, {-1}, -#line 603 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_ebcdic1145}, -#line 384 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_cp437}, -#line 168 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_koi8_r}, +#line 334 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_cp936}, {-1}, -#line 580 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_ebcdic1142}, - {-1}, {-1}, {-1}, -#line 250 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str753, ei_tis620}, +#line 566 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str514, ei_ebcdic1130}, {-1}, {-1}, {-1}, -#line 301 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_euc_jp}, -#line 418 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_cp863}, -#line 573 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_ebcdic1141}, -#line 330 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_gb18030_2022}, -#line 241 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str761, ei_rk1048}, +#line 315 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_cp932}, {-1}, {-1}, -#line 481 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_ebcdic423}, +#line 400 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_cp775}, +#line 219 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_mac_romania}, #line 414 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str765, ei_cp861}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_cp857}, +#line 597 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str524, ei_ebcdic1143}, +#line 453 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_ebcdic273}, {-1}, {-1}, {-1}, -#line 98 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_iso8859_6}, +#line 461 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_ebcdic278}, + {-1}, +#line 679 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_ebcdic12712}, +#line 478 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_ebcdic285}, +#line 166 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_iso8859_16}, + {-1}, +#line 194 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_cp1257}, +#line 471 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_ebcdic282}, +#line 13 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_ascii}, {-1}, {-1}, -#line 246 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str772, ei_tis620}, -#line 433 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str773, ei_ebcdic037}, +#line 660 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str540, ei_ebcdic1157}, + {-1}, {-1}, {-1}, +#line 498 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_ebcdic425}, + {-1}, +#line 277 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_jisx0208}, +#line 672 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_ebcdic1166}, +#line 655 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_ebcdic1156}, {-1}, {-1}, -#line 529 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str776, ei_ebcdic924}, -#line 248 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str777, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 445 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_ebcdic277}, +#line 693 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_atarist}, +#line 356 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_cp950}, +#line 235 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_koi8_t}, + {-1}, {-1}, {-1}, +#line 412 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_cp857}, +#line 661 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_ebcdic1158}, +#line 667 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_ebcdic1164}, +#line 649 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str560, ei_ebcdic1154}, {-1}, -#line 526 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_ebcdic924}, +#line 388 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_cp1162}, {-1}, {-1}, -#line 318 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str788, ei_euc_cn}, +#line 559 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_ebcdic1122}, + {-1}, {-1}, {-1}, {-1}, +#line 556 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_ebcdic1112}, +#line 169 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_koi8_r}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 225 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_mac_arabic}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 664 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_ebcdic1160}, + {-1}, {-1}, {-1}, +#line 618 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str596, ei_ebcdic1146}, + {-1}, {-1}, {-1}, {-1}, +#line 77 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str601, ei_iso8859_3}, + {-1}, {-1}, {-1}, +#line 613 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_ebcdic1145}, +#line 632 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str606, ei_ebcdic1148}, {-1}, -#line 667 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_ebcdic12712}, -#line 650 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str791, ei_ebcdic1158}, +#line 604 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_ebcdic1144}, + {-1}, {-1}, +#line 588 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_ebcdic1142}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 22 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str809, ei_ascii}, +#line 545 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_ebcdic1026}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 350 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_ces_big5}, +#line 473 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str628, ei_ebcdic284}, +#line 228 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_hp_roman8}, +#line 392 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_cp1163}, +#line 646 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_ebcdic1153}, +#line 257 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_viscii}, +#line 562 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_ebcdic1123}, {-1}, {-1}, {-1}, -#line 624 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_ebcdic1148}, +#line 384 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp1161}, +#line 19 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_ascii}, +#line 303 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_euc_jp}, +#line 493 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_ebcdic424}, +#line 574 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_ebcdic1140}, +#line 531 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_ebcdic905}, {-1}, -#line 499 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str815, ei_ebcdic870}, +#line 681 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_ebcdic16804}, {-1}, {-1}, -#line 530 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_ebcdic924}, -#line 596 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_ebcdic1144}, +#line 511 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_ebcdic870}, + {-1}, {-1}, +#line 406 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_cp852}, + {-1}, {-1}, +#line 396 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_cp437}, + {-1}, {-1}, {-1}, +#line 290 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_iso646_cn}, +#line 573 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str658, ei_ebcdic1137}, +#line 551 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_ebcdic1047}, +#line 539 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str660, ei_ebcdic924}, +#line 171 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_koi8_u}, +#line 536 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_ebcdic924}, #line 249 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_tis620}, - {-1}, -#line 194 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str822, ei_cp1257}, -#line 24 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_ucs2}, -#line 474 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str824, ei_ebcdic297}, -#line 679 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_big5_2003}, -#line 322 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str826, ei_euc_cn}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 111 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_iso8859_7}, {-1}, -#line 621 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str828, ei_ebcdic1148}, +#line 629 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_ebcdic1147}, {-1}, -#line 425 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_cp865}, -#line 400 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str831, ei_cp855}, +#line 307 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_euc_jp}, + {-1}, {-1}, +#line 172 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_koi8_ru}, + {-1}, {-1}, +#line 596 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_ebcdic1143}, +#line 378 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str680, ei_cp943}, +#line 568 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_ebcdic1132}, +#line 110 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_iso8859_7}, +#line 251 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_tis620}, +#line 100 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str684, ei_iso8859_6}, {-1}, -#line 471 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str833, ei_ebcdic285}, +#line 581 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_ebcdic1141}, +#line 394 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_cp437}, +#line 466 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str688, ei_ebcdic280}, +#line 401 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_cp775}, {-1}, {-1}, {-1}, -#line 324 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str837, ei_ces_gbk}, - {-1}, -#line 606 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str839, ei_ebcdic1145}, +#line 452 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_ebcdic273}, {-1}, {-1}, {-1}, -#line 584 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_ebcdic1142}, - {-1}, {-1}, -#line 228 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str846, ei_hp_roman8}, - {-1}, -#line 428 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str848, ei_cp869}, +#line 677 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_ebcdic4971}, +#line 363 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str698, ei_euc_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 40 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_utf16}, {-1}, -#line 216 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str850, ei_mac_croatian}, -#line 191 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str851, ei_cp1256}, +#line 659 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_ebcdic1157}, + {-1}, {-1}, +#line 565 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_ebcdic1130}, {-1}, -#line 576 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str853, ei_ebcdic1141}, +#line 641 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_ebcdic1149}, {-1}, {-1}, {-1}, -#line 665 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ebcdic4971}, +#line 445 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_ebcdic037}, {-1}, {-1}, -#line 497 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str860, ei_ebcdic838}, +#line 506 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_ebcdic838}, + {-1}, +#line 525 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str722, ei_ebcdic880}, {-1}, {-1}, -#line 370 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str863, ei_cp1129}, +#line 413 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str725, ei_cp857}, + {-1}, {-1}, +#line 500 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str728, ei_ebcdic500}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 566 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_ebcdic1140}, - {-1}, {-1}, {-1}, -#line 426 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str877, ei_cp869}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 38 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_utf16}, - {-1}, -#line 57 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str885, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 440 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_ebcdic273}, -#line 267 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str892, ei_jisx0201}, -#line 33 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str893, ei_ucs4}, -#line 382 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp1163}, {-1}, -#line 544 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str896, ei_ebcdic1097}, -#line 504 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_ebcdic870}, -#line 335 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str898, ei_hz}, -#line 388 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str899, ei_cp737}, +#line 217 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_mac_iceland}, +#line 439 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str740, ei_cp869}, {-1}, -#line 255 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str901, ei_viscii}, +#line 220 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_mac_cyrillic}, + {-1}, {-1}, {-1}, +#line 670 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_ebcdic1165}, +#line 652 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_ebcdic1155}, + {-1}, {-1}, {-1}, +#line 243 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_rk1048}, + {-1}, {-1}, {-1}, {-1}, +#line 626 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str756, ei_ebcdic1147}, + {-1}, {-1}, {-1}, +#line 381 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_cp1129}, + {-1}, {-1}, {-1}, +#line 521 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_ebcdic875}, +#line 218 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str765, ei_mac_croatian}, +#line 227 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str766, ei_hp_roman8}, {-1}, -#line 21 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str903, ei_ascii}, +#line 24 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_utf8}, +#line 326 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_euc_cn}, {-1}, {-1}, {-1}, -#line 627 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_ebcdic1148}, +#line 260 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str773, ei_tcvn}, +#line 437 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str774, ei_cp869}, + {-1}, {-1}, {-1}, +#line 516 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str778, ei_ebcdic871}, +#line 537 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str779, ei_ebcdic924}, +#line 488 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str780, ei_ebcdic423}, + {-1}, +#line 59 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, -#line 176 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str912, ei_cp1251}, +#line 389 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_cp1162}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 212 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_mac_roman}, +#line 611 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str795, ei_ebcdic1145}, {-1}, -#line 200 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_cp850}, - {-1}, {-1}, -#line 443 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_ebcdic273}, - {-1}, {-1}, -#line 628 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str920, ei_ebcdic1149}, -#line 169 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str921, ei_koi8_u}, - {-1}, {-1}, -#line 616 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str924, ei_ebcdic1147}, +#line 385 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str797, ei_cp1161}, +#line 210 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str798, ei_cp866}, + {-1}, {-1}, {-1}, +#line 460 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_ebcdic278}, {-1}, {-1}, -#line 16 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str927, ei_ascii}, #line 170 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str928, ei_koi8_ru}, -#line 519 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str929, ei_ebcdic905}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str805, ei_koi8_r}, +#line 20 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_ascii}, + {-1}, {-1}, {-1}, +#line 432 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str810, ei_cp864}, + {-1}, {-1}, +#line 477 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_ebcdic284}, {-1}, -#line 292 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str931, ei_gb2312}, +#line 458 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str815, ei_ebcdic277}, + {-1}, {-1}, {-1}, +#line 245 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_mulelao}, +#line 542 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_ebcdic1025}, +#line 346 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str821, ei_euc_tw}, +#line 449 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str822, ei_ebcdic037}, +#line 43 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_utf32}, {-1}, -#line 95 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str933, ei_iso8859_6}, +#line 497 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_ebcdic424}, +#line 572 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str826, ei_ebcdic1137}, +#line 550 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str827, ei_ebcdic1047}, +#line 621 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str828, ei_ebcdic1146}, +#line 202 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str829, ei_cp850}, +#line 614 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_ebcdic1145}, +#line 447 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str831, ei_ebcdic037}, +#line 538 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str832, ei_ebcdic924}, +#line 145 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str833, ei_iso8859_13}, +#line 591 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str834, ei_ebcdic1142}, +#line 325 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str835, ei_euc_cn}, +#line 528 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str836, ei_ebcdic880}, {-1}, -#line 88 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_iso8859_5}, +#line 253 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str838, ei_tis620}, + {-1}, {-1}, +#line 265 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str841, ei_iso646_jp}, {-1}, -#line 163 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str937, ei_iso8859_16}, +#line 420 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_cp860}, +#line 584 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str844, ei_ebcdic1141}, {-1}, -#line 64 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str939, ei_iso8859_2}, +#line 470 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str846, ei_ebcdic280}, {-1}, -#line 524 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str941, ei_ebcdic924}, +#line 331 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str848, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, +#line 26 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str853, ei_ucs2}, +#line 623 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str854, ei_ebcdic1146}, +#line 395 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str855, ei_cp437}, +#line 594 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str856, ei_ebcdic1142}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 239 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str862, ei_pt154}, {-1}, -#line 23 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str943, ei_utf8}, -#line 155 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_iso8859_15}, +#line 548 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str864, ei_ebcdic1026}, +#line 676 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str865, ei_ebcdic4971}, +#line 485 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str866, ei_ebcdic297}, + {-1}, {-1}, +#line 678 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str869, ei_ebcdic12712}, + {-1}, {-1}, {-1}, +#line 398 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_cp737}, + {-1}, {-1}, {-1}, {-1}, +#line 533 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str878, ei_ebcdic905}, {-1}, -#line 271 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str946, ei_jisx0208}, +#line 529 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str880, ei_ebcdic880}, +#line 429 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str881, ei_cp863}, +#line 332 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_euc_cn}, {-1}, {-1}, -#line 54 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str949, ei_iso8859_1}, +#line 444 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str885, ei_ebcdic037}, +#line 505 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str886, ei_ebcdic500}, + {-1}, +#line 425 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str888, ei_cp861}, +#line 643 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_ebcdic1149}, + {-1}, +#line 508 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_ebcdic838}, + {-1}, {-1}, +#line 514 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_ebcdic870}, +#line 496 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str895, ei_ebcdic424}, +#line 492 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str896, ei_ebcdic423}, +#line 464 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_ebcdic278}, + {-1}, {-1}, +#line 351 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_ces_big5}, + {-1}, +#line 635 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str902, ei_ebcdic1148}, +#line 639 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str903, ei_ebcdic1149}, {-1}, {-1}, {-1}, -#line 361 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_dec_kanji}, -#line 138 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str954, ei_iso8859_11}, +#line 240 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_pt154}, {-1}, +#line 252 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 530 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str915, ei_ebcdic905}, +#line 276 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str916, ei_jisx0208}, + {-1}, {-1}, {-1}, +#line 510 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str920, ei_ebcdic870}, +#line 503 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str921, ei_ebcdic500}, #line 509 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str956, ei_ebcdic871}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str922, ei_ebcdic838}, {-1}, {-1}, -#line 131 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str959, ei_iso8859_10}, -#line 204 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str960, ei_cp862}, +#line 456 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str925, ei_ebcdic277}, +#line 607 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str926, ei_ebcdic1144}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 365 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str932, ei_euc_kr}, {-1}, {-1}, -#line 284 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_jisx0212}, -#line 94 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str964, ei_iso8859_6}, -#line 632 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str965, ei_ebcdic1149}, -#line 87 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_iso8859_5}, -#line 569 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str967, ei_ebcdic1140}, -#line 332 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str968, ei_iso2022_cn}, +#line 535 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_ebcdic924}, +#line 248 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str936, ei_tis620}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 438 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str942, ei_cp869}, +#line 250 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str943, ei_tis620}, {-1}, -#line 63 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str970, ei_iso8859_2}, +#line 35 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str945, ei_ucs4}, +#line 440 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str946, ei_cp869}, + {-1}, +#line 627 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str948, ei_ebcdic1147}, + {-1}, +#line 60 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str950, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 555 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str954, ei_ebcdic1097}, + {-1}, {-1}, {-1}, +#line 244 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str958, ei_rk1048}, +#line 316 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str959, ei_cp932}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 451 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_ebcdic273}, + {-1}, {-1}, {-1}, +#line 540 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str970, ei_ebcdic924}, +#line 372 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str971, ei_dec_kanji}, +#line 213 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str972, ei_mac_roman}, +#line 302 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_ksc5601}, +#line 640 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_ebcdic1149}, {-1}, {-1}, -#line 352 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_euc_kr}, -#line 245 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_cp1133}, -#line 154 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str975, ei_iso8859_15}, +#line 481 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str977, ei_ebcdic285}, + {-1}, {-1}, {-1}, {-1}, +#line 504 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str982, ei_ebcdic500}, {-1}, -#line 89 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str977, ei_iso8859_5}, -#line 517 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str978, ei_ebcdic880}, +#line 34 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str984, ei_ucs2le}, + {-1}, +#line 577 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str986, ei_ebcdic1140}, {-1}, -#line 53 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str980, ei_iso8859_1}, -#line 588 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_ebcdic1143}, -#line 147 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str982, ei_iso8859_14}, -#line 156 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str983, ei_iso8859_15}, -#line 148 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str984, ei_iso8859_14}, -#line 137 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_iso8859_11}, +#line 491 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str988, ei_ebcdic423}, +#line 617 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str989, ei_ebcdic1145}, +#line 469 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str990, ei_ebcdic280}, +#line 541 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str991, ei_ebcdic924}, + {-1}, +#line 595 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_ebcdic1142}, +#line 602 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_ebcdic1143}, {-1}, {-1}, -#line 286 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str988, ei_iso646_cn}, - {-1}, {-1}, {-1}, {-1}, -#line 32 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_ucs2le}, -#line 364 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_dec_hanyu}, -#line 473 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_ebcdic297}, -#line 612 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_ebcdic1146}, +#line 436 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_cp865}, +#line 411 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str998, ei_cp855}, {-1}, -#line 279 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str998, ei_jisx0212}, -#line 583 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str999, ei_ebcdic1142}, -#line 41 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_utf32}, -#line 229 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1001, ei_nextstep}, +#line 482 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_ebcdic285}, {-1}, -#line 115 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1003, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 80 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_iso8859_4}, +#line 120 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1002, ei_iso8859_8}, +#line 587 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1003, ei_ebcdic1141}, +#line 193 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1004, ei_cp1256}, +#line 97 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1005, ei_iso8859_6}, {-1}, -#line 116 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1011, ei_iso8859_8}, +#line 90 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1007, ei_iso8859_5}, {-1}, -#line 146 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_iso8859_14}, -#line 81 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1014, ei_iso8859_4}, -#line 252 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1015, ei_tis620}, -#line 130 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1016, ei_iso8859_10}, -#line 293 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1017, ei_isoir165}, -#line 107 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1018, ei_iso8859_7}, +#line 465 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_ebcdic278}, {-1}, -#line 413 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_cp861}, +#line 66 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1011, ei_iso8859_2}, +#line 247 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1012, ei_cp1133}, +#line 21 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_ascii}, {-1}, {-1}, {-1}, {-1}, -#line 432 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1025, ei_ebcdic037}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 114 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1034, ei_iso8859_8}, -#line 444 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_ebcdic277}, +#line 157 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1018, ei_iso8859_15}, +#line 393 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_cp1163}, +#line 601 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_ebcdic1143}, +#line 56 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1021, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, +#line 29 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1026, ei_ucs2be}, +#line 258 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1027, ei_viscii}, +#line 140 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1028, ei_iso8859_11}, +#line 349 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1029, ei_euc_tw}, +#line 374 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1030, ei_dec_hanyu}, +#line 630 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1031, ei_ebcdic1147}, {-1}, -#line 35 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1037, ei_ucs4}, +#line 133 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1033, ei_iso8859_10}, +#line 484 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1034, ei_ebcdic297}, +#line 33 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_ucs2le}, {-1}, {-1}, -#line 79 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1040, ei_iso8859_4}, +#line 337 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1038, ei_gb18030_2005}, + {-1}, {-1}, +#line 399 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1041, ei_cp737}, + {-1}, {-1}, +#line 22 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1044, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, #line 333 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1041, ei_iso2022_cn_ext}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1049, ei_ces_gbk}, {-1}, -#line 430 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1043, ei_cp869}, -#line 108 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1044, ei_iso8859_7}, - {-1}, {-1}, -#line 129 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1047, ei_iso8859_10}, -#line 427 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1048, ei_cp869}, +#line 91 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1051, ei_iso8859_5}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 58 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1056, ei_iso8859_1}, - {-1}, {-1}, -#line 15 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1059, ei_ascii}, -#line 541 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1060, ei_ebcdic1047}, -#line 243 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1061, ei_mulelao}, -#line 362 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1062, ei_dec_kanji}, -#line 363 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1063, ei_dec_hanyu}, -#line 110 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1064, ei_iso8859_7}, +#line 158 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1059, ei_iso8859_15}, +#line 150 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1060, ei_iso8859_14}, +#line 638 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1061, ei_ebcdic1148}, {-1}, {-1}, -#line 543 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1067, ei_ebcdic1097}, +#line 154 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1064, ei_iso8859_14}, +#line 262 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1065, ei_tcvn}, +#line 599 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1066, ei_ebcdic1143}, +#line 149 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1067, ei_iso8859_14}, +#line 338 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1068, ei_gb18030_2005}, {-1}, -#line 629 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1069, ei_ebcdic1149}, - {-1}, {-1}, -#line 647 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_ebcdic1157}, +#line 609 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1070, ei_ebcdic1144}, +#line 624 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1071, ei_ebcdic1146}, +#line 38 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_ucs4be}, +#line 53 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1073, ei_c99}, {-1}, {-1}, -#line 592 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1075, ei_ebcdic1143}, -#line 331 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1076, ei_iso2022_cn}, - {-1}, -#line 337 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1078, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 590 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1086, ei_ebcdic1143}, +#line 196 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1076, ei_cp1257}, {-1}, -#line 262 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1088, ei_iso646_jp}, -#line 264 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1089, ei_iso646_jp}, +#line 515 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1078, ei_ebcdic870}, +#line 117 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1079, ei_iso8859_8}, +#line 373 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1080, ei_dec_kanji}, +#line 39 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1081, ei_ucs4le}, +#line 454 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1082, ei_ebcdic273}, + {-1}, {-1}, {-1}, {-1}, +#line 118 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1087, ei_iso8859_8}, {-1}, -#line 619 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1091, ei_ebcdic1147}, -#line 230 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1092, ei_armscii_8}, -#line 447 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1093, ei_ebcdic277}, -#line 326 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_cp936}, -#line 73 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1095, ei_iso8859_3}, -#line 66 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_iso8859_2}, -#line 280 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_jisx0212}, +#line 375 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1089, ei_dec_hanyu}, +#line 658 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_ebcdic1157}, + {-1}, {-1}, {-1}, +#line 345 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_euc_tw}, +#line 178 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1095, ei_cp1251}, +#line 16 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_ascii}, {-1}, -#line 260 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1099, ei_tcvn}, -#line 141 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1100, ei_iso8859_13}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 438 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1107, ei_ebcdic037}, +#line 297 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1098, ei_ksc5601}, +#line 83 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1099, ei_iso8859_4}, +#line 112 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1100, ei_iso8859_7}, +#line 448 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1101, ei_ebcdic037}, {-1}, -#line 614 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1109, ei_ebcdic1147}, -#line 454 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1110, ei_ebcdic278}, +#line 82 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1103, ei_iso8859_4}, +#line 132 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1104, ei_iso8859_10}, +#line 441 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1105, ei_cp869}, {-1}, {-1}, -#line 295 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1113, ei_ksc5601}, -#line 231 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1114, ei_georgian_academy}, +#line 324 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1108, ei_euc_cn}, +#line 457 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1109, ei_ebcdic277}, {-1}, -#line 391 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1116, ei_cp775}, -#line 354 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1117, ei_euc_kr}, - {-1}, {-1}, -#line 28 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1120, ei_ucs2be}, - {-1}, {-1}, -#line 124 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1123, ei_iso8859_9}, +#line 524 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1111, ei_ebcdic875}, {-1}, -#line 617 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1125, ei_ebcdic1147}, - {-1}, {-1}, {-1}, -#line 90 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1129, ei_iso8859_5}, +#line 261 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1113, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 165 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1119, ei_iso8859_16}, +#line 610 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1120, ei_ebcdic1144}, {-1}, -#line 140 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1131, ei_iso8859_13}, +#line 554 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1122, ei_ebcdic1097}, +#line 520 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1123, ei_ebcdic871}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 366 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1130, ei_cp949}, #line 96 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1132, ei_iso8859_6}, - {-1}, -#line 161 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1134, ei_iso8859_16}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1131, ei_iso8859_6}, +#line 15 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1132, ei_ascii}, +#line 89 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1133, ei_iso8859_5}, +#line 355 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1134, ei_ces_big5}, + {-1}, {-1}, #line 65 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1135, ei_iso8859_2}, -#line 277 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1136, ei_jisx0208}, - {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1137, ei_iso8859_2}, +#line 625 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1138, ei_ebcdic1147}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 156 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1144, ei_iso8859_15}, +#line 580 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1145, ei_ebcdic1140}, + {-1}, #line 55 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1140, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, -#line 188 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1145, ei_cp1255}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1147, ei_iso8859_1}, {-1}, -#line 162 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1147, ei_iso8859_16}, -#line 242 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1148, ei_rk1048}, - {-1}, {-1}, -#line 158 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1151, ei_iso8859_15}, +#line 335 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1149, ei_cp936}, + {-1}, {-1}, {-1}, {-1}, +#line 139 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1154, ei_iso8859_11}, {-1}, -#line 82 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1153, ei_iso8859_4}, +#line 402 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1156, ei_cp775}, {-1}, -#line 291 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1155, ei_gb2312}, - {-1}, {-1}, {-1}, {-1}, -#line 259 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1160, ei_tcvn}, +#line 443 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1158, ei_ebcdic037}, +#line 216 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1159, ei_mac_centraleurope}, {-1}, {-1}, {-1}, {-1}, -#line 160 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1165, ei_iso8859_16}, -#line 538 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1166, ei_ebcdic1047}, - {-1}, {-1}, -#line 613 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1169, ei_ebcdic1146}, - {-1}, -#line 72 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1171, ei_iso8859_3}, -#line 436 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1172, ei_ebcdic037}, +#line 46 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1164, ei_utf7}, {-1}, {-1}, {-1}, {-1}, -#line 470 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1177, ei_ebcdic285}, +#line 75 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1169, ei_iso8859_3}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 308 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1175, ei_euc_jp}, {-1}, {-1}, -#line 458 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1180, ei_ebcdic280}, - {-1}, -#line 480 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1182, ei_ebcdic423}, -#line 681 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1183, ei_tds565}, +#line 242 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1178, ei_rk1048}, +#line 37 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1179, ei_ucs4}, {-1}, -#line 312 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1185, ei_iso2022_jp}, -#line 290 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1186, ei_gb2312}, +#line 339 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1181, ei_gb18030_2022}, {-1}, {-1}, -#line 315 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1189, ei_iso2022_jp2}, -#line 560 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1190, ei_ebcdic1137}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 307 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1196, ei_sjis}, +#line 263 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1184, ei_tcvn}, +#line 143 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1185, ei_iso8859_13}, +#line 254 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1186, ei_tis620}, {-1}, -#line 118 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1198, ei_iso8859_8}, -#line 684 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1199, ei_riscos1}, -#line 323 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1200, ei_euc_cn}, +#line 295 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1188, ei_isoir165}, #line 109 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1201, ei_iso8859_7}, -#line 71 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1202, ei_iso8859_3}, - {-1}, -#line 117 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1204, ei_iso8859_8}, - {-1}, {-1}, -#line 599 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_ebcdic1144}, -#line 437 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1208, ei_ebcdic037}, - {-1}, -#line 56 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1210, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 261 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1218, ei_tcvn}, -#line 620 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1219, ei_ebcdic1147}, -#line 664 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1220, ei_ebcdic4971}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 29 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1226, ei_ucs2be}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1189, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 148 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1193, ei_iso8859_14}, +#line 294 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1194, ei_gb2312}, + {-1}, {-1}, {-1}, +#line 455 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1198, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 404 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1233, ei_cp857}, - {-1}, {-1}, -#line 273 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1236, ei_jisx0208}, -#line 157 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1237, ei_iso8859_15}, +#line 116 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1205, ei_iso8859_8}, + {-1}, +#line 175 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_cp1250}, +#line 571 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1208, ei_ebcdic1137}, +#line 549 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1209, ei_ebcdic1047}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 31 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1217, ei_ucs2be}, {-1}, {-1}, {-1}, -#line 51 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1241, ei_c99}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 472 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1247, ei_ebcdic297}, -#line 214 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_mac_centraleurope}, -#line 179 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1249, ei_cp1252}, +#line 269 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1221, ei_jisx0201}, + {-1}, {-1}, {-1}, +#line 603 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1225, ei_ebcdic1143}, {-1}, -#line 106 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1251, ei_iso8859_7}, -#line 493 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1252, ei_ebcdic500}, -#line 256 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1253, ei_viscii}, +#line 232 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1227, ei_armscii_8}, +#line 342 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1228, ei_iso2022_cn_ext}, +#line 81 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1229, ei_iso8859_4}, +#line 131 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1230, ei_iso8859_10}, + {-1}, {-1}, {-1}, +#line 327 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1234, ei_euc_cn}, +#line 190 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1235, ei_cp1255}, +#line 113 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1236, ei_iso8859_7}, {-1}, -#line 44 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1255, ei_utf7}, -#line 522 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1256, ei_ebcdic905}, -#line 18 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1257, ei_ascii}, +#line 690 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1238, ei_big5_2003}, {-1}, {-1}, {-1}, {-1}, -#line 27 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1262, ei_ucs2be}, -#line 523 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1263, ei_ebcdic905}, - {-1}, -#line 102 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1265, ei_iso8859_6}, - {-1}, -#line 93 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1267, ei_iso8859_5}, +#line 74 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1243, ei_iso8859_3}, +#line 354 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1244, ei_ces_big5}, {-1}, {-1}, {-1}, -#line 70 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1271, ei_iso8859_2}, - {-1}, {-1}, -#line 503 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1274, ei_ebcdic870}, -#line 166 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1275, ei_iso8859_16}, +#line 98 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_iso8859_6}, +#line 675 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1249, ei_ebcdic4971}, {-1}, -#line 159 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1277, ei_iso8859_15}, +#line 67 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1251, ei_iso8859_2}, +#line 163 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1252, ei_iso8859_16}, + {-1}, {-1}, +#line 353 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1255, ei_ces_big5}, +#line 57 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1256, ei_iso8859_1}, {-1}, -#line 31 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_ucs2le}, +#line 329 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1258, ei_euc_cn}, {-1}, -#line 62 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1281, ei_iso8859_1}, +#line 27 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1260, ei_ucs2}, {-1}, -#line 355 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1283, ei_cp949}, -#line 111 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1284, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 272 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1290, ei_jisx0208}, -#line 139 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1291, ei_iso8859_11}, -#line 17 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1292, ei_ascii}, -#line 311 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1293, ei_iso2022_jp}, +#line 221 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1262, ei_mac_ukraine}, {-1}, -#line 598 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1295, ei_ebcdic1144}, +#line 424 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1264, ei_cp861}, +#line 164 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1265, ei_iso8859_16}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 264 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1277, ei_iso646_jp}, {-1}, -#line 36 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1297, ei_ucs4be}, -#line 314 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1298, ei_iso2022_jp2}, +#line 273 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_jisx0208}, #line 266 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1299, ei_iso646_jp}, -#line 289 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1300, ei_iso646_cn}, - {-1}, {-1}, -#line 313 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1303, ei_iso2022_jp1}, - {-1}, {-1}, -#line 485 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1306, ei_ebcdic424}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 453 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1313, ei_ebcdic278}, -#line 37 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_ucs4le}, -#line 104 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1315, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, -#line 281 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1320, ei_jisx0212}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1280, ei_iso646_jp}, +#line 68 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1281, ei_iso8859_2}, +#line 586 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1282, ei_ebcdic1141}, {-1}, {-1}, -#line 105 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1323, ei_iso8859_7}, +#line 552 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1285, ei_ebcdic1047}, + {-1}, {-1}, {-1}, +#line 231 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1289, ei_nextstep}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 286 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1297, ei_jisx0212}, +#line 628 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1298, ei_ebcdic1147}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 336 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1330, ei_euc_tw}, -#line 492 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1331, ei_ebcdic500}, -#line 30 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1332, ei_ucs2be}, -#line 452 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1333, ei_ebcdic278}, +#line 397 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1305, ei_cp437}, +#line 36 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1306, ei_ucs4}, +#line 483 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1307, ei_ebcdic297}, {-1}, -#line 120 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1335, ei_iso8859_8}, -#line 678 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1336, ei_iso2022_jp3}, +#line 126 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1309, ei_iso8859_9}, {-1}, -#line 475 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1338, ei_ebcdic297}, - {-1}, {-1}, -#line 86 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_iso8859_4}, - {-1}, {-1}, {-1}, {-1}, -#line 103 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1346, ei_iso8859_7}, +#line 142 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1311, ei_iso8859_13}, +#line 279 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1312, ei_jisx0208}, {-1}, -#line 673 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1348, ei_euc_jisx0213}, -#line 240 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1349, ei_rk1048}, +#line 291 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 230 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1321, ei_hp_roman8}, +#line 328 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1322, ei_euc_cn}, {-1}, -#line 153 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1351, ei_iso8859_14}, -#line 39 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1352, ei_utf16be}, +#line 160 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1324, ei_iso8859_15}, {-1}, {-1}, -#line 127 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1355, ei_iso8859_9}, - {-1}, {-1}, {-1}, -#line 386 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1359, ei_cp437}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 61 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1365, ei_iso8859_1}, +#line 281 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1327, ei_jisx0212}, +#line 347 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1328, ei_euc_tw}, {-1}, {-1}, {-1}, -#line 40 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1369, ei_utf16le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 232 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_georgian_ps}, +#line 104 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1332, ei_iso8859_6}, +#line 92 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1333, ei_iso8859_5}, +#line 95 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1334, ei_iso8859_5}, {-1}, -#line 294 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1378, ei_isoir165}, -#line 591 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1379, ei_ebcdic1143}, -#line 268 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1380, ei_jisx0201}, -#line 439 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1381, ei_ebcdic037}, +#line 318 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1336, ei_iso2022_jp}, + {-1}, +#line 72 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1338, ei_iso8859_2}, + {-1}, +#line 321 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1340, ei_iso2022_jp2}, +#line 415 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_cp857}, {-1}, {-1}, +#line 168 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1344, ei_iso8859_16}, #line 101 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1384, ei_iso8859_6}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1345, ei_iso8859_6}, +#line 161 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1346, ei_iso8859_15}, +#line 637 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1347, ei_ebcdic1148}, +#line 64 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1348, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 84 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1352, ei_iso8859_4}, +#line 259 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1353, ei_viscii}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 448 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1391, ei_ebcdic277}, - {-1}, -#line 85 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1393, ei_iso8859_4}, - {-1}, {-1}, {-1}, {-1}, -#line 132 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_iso8859_10}, - {-1}, -#line 97 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1400, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, -#line 136 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1405, ei_iso8859_10}, - {-1}, {-1}, {-1}, {-1}, -#line 99 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1410, ei_iso8859_6}, +#line 141 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1360, ei_iso8859_11}, {-1}, {-1}, {-1}, -#line 677 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1414, ei_iso2022_jp3}, -#line 45 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1415, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 220 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1421, ei_mac_greek}, +#line 684 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1364, ei_euc_jisx0213}, {-1}, {-1}, -#line 626 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1424, ei_ebcdic1148}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 152 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1448, ei_iso8859_14}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 278 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1456, ei_jisx0208}, - {-1}, {-1}, {-1}, -#line 222 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1460, ei_mac_hebrew}, -#line 92 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1461, ei_iso8859_5}, - {-1}, {-1}, {-1}, {-1}, -#line 42 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1466, ei_utf32be}, -#line 287 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1467, ei_iso646_cn}, +#line 108 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1367, ei_iso8859_7}, +#line 330 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1368, ei_euc_cn}, +#line 73 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1369, ei_iso8859_3}, {-1}, -#line 25 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1469, ei_ucs2}, +#line 513 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1371, ei_ebcdic870}, +#line 293 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1372, ei_gb2312}, {-1}, {-1}, -#line 347 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1472, ei_big5hkscs2001}, +#line 317 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1375, ei_iso2022_jp}, + {-1}, {-1}, +#line 162 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1378, ei_iso8859_16}, +#line 119 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1379, ei_iso8859_8}, +#line 320 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1380, ei_iso2022_jp2}, + {-1}, {-1}, +#line 534 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1383, ei_ebcdic905}, {-1}, -#line 338 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1474, ei_euc_tw}, +#line 319 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1385, ei_iso2022_jp1}, {-1}, -#line 69 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1476, ei_iso8859_2}, +#line 32 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1387, ei_ucs2be}, {-1}, {-1}, -#line 173 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1479, ei_cp1250}, - {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1483, ei_utf32le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 12 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1492, ei_ascii}, +#line 446 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1390, ei_ebcdic037}, + {-1}, {-1}, +#line 692 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1393, ei_tds565}, {-1}, {-1}, {-1}, {-1}, -#line 219 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1497, ei_mac_ukraine}, +#line 344 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_hz}, {-1}, -#line 351 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1499, ei_big5hkscs2008}, - {-1}, {-1}, #line 348 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1502, ei_big5hkscs2004}, -#line 78 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1503, ei_iso8859_3}, -#line 34 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1504, ei_ucs4}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 77 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_iso8859_3}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1400, ei_euc_tw}, + {-1}, {-1}, {-1}, +#line 41 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1404, ei_utf16be}, {-1}, -#line 145 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1513, ei_iso8859_13}, +#line 122 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1406, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 46 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1519, ei_utf7}, +#line 593 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1412, ei_ebcdic1142}, +#line 42 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1413, ei_utf16le}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1523, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, -#line 26 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1528, ei_ucs2}, - {-1}, {-1}, -#line 542 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1531, ei_ebcdic1097}, - {-1}, {-1}, -#line 285 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1534, ei_iso646_cn}, +#line 463 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1417, ei_ebcdic278}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 508 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1540, ei_ebcdic871}, - {-1}, {-1}, {-1}, {-1}, -#line 135 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1545, ei_iso8859_10}, - {-1}, {-1}, {-1}, -#line 631 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1549, ei_ebcdic1149}, - {-1}, {-1}, {-1}, {-1}, -#line 276 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1554, ei_jisx0208}, - {-1}, {-1}, -#line 221 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1557, ei_mac_turkish}, -#line 360 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1558, ei_iso2022_kr}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 513 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1575, ei_ebcdic875}, - {-1}, {-1}, {-1}, {-1}, -#line 190 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1580, ei_cp1256}, -#line 187 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1581, ei_cp1255}, +#line 58 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1423, ei_iso8859_1}, {-1}, -#line 178 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1583, ei_cp1252}, +#line 282 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1425, ei_jisx0212}, {-1}, {-1}, -#line 185 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1586, ei_cp1254}, - {-1}, -#line 175 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1588, ei_cp1251}, -#line 257 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1589, ei_viscii}, -#line 299 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1590, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 446 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1598, ei_ebcdic277}, - {-1}, {-1}, {-1}, {-1}, -#line 476 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1603, ei_ebcdic297}, -#line 296 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1604, ei_ksc5601}, +#line 486 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1428, ei_ebcdic297}, +#line 689 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1429, ei_iso2022_jp3}, +#line 88 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1430, ei_iso8859_4}, {-1}, {-1}, -#line 568 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1607, ei_ebcdic1140}, +#line 159 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1433, ei_iso8859_15}, + {-1}, {-1}, {-1}, {-1}, +#line 206 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1438, ei_cp862}, + {-1}, {-1}, {-1}, +#line 155 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1442, ei_iso8859_14}, {-1}, -#line 605 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1609, ei_ebcdic1145}, +#line 28 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1444, ei_ucs2}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 196 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_cp1258}, +#line 47 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1450, ei_utf7}, + {-1}, {-1}, {-1}, {-1}, +#line 222 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1455, ei_mac_greek}, + {-1}, +#line 631 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1457, ei_ebcdic1147}, {-1}, {-1}, -#line 184 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1618, ei_cp1254}, +#line 187 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1460, ei_cp1254}, +#line 519 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1461, ei_ebcdic871}, +#line 129 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1462, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 63 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1472, ei_iso8859_1}, + {-1}, {-1}, +#line 106 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1475, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 107 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1483, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 342 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1636, ei_ces_big5}, +#line 103 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1492, ei_iso8859_6}, +#line 341 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1493, ei_iso2022_cn}, + {-1}, {-1}, +#line 688 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1496, ei_iso2022_jp3}, + {-1}, {-1}, +#line 94 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1499, ei_iso8859_5}, + {-1}, +#line 450 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1501, ei_ebcdic037}, +#line 138 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1502, ei_iso8859_10}, + {-1}, +#line 553 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1504, ei_ebcdic1097}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 634 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1643, ei_ebcdic1149}, +#line 87 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_iso8859_4}, + {-1}, {-1}, {-1}, {-1}, +#line 642 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1516, ei_ebcdic1149}, {-1}, -#line 172 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1645, ei_cp1250}, -#line 213 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1646, ei_mac_roman}, -#line 113 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1647, ei_iso8859_7}, +#line 44 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1518, ei_utf32be}, +#line 292 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1519, ei_gb2312}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 301 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1526, ei_ksc5601}, +#line 45 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1527, ei_utf32le}, + {-1}, {-1}, {-1}, {-1}, +#line 340 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1532, ei_iso2022_cn}, {-1}, {-1}, {-1}, -#line 674 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1651, ei_euc_jisx0213}, +#line 288 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1536, ei_iso646_cn}, {-1}, {-1}, {-1}, {-1}, -#line 575 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1656, ei_ebcdic1141}, +#line 459 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1541, ei_ebcdic277}, + {-1}, +#line 278 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1543, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 270 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1554, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 316 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1663, ei_iso2022_jpms}, +#line 12 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1561, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 305 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1567, ei_euc_jp}, +#line 298 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1568, ei_ksc5601}, + {-1}, +#line 80 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1570, ei_iso8859_3}, +#line 579 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1571, ei_ebcdic1140}, + {-1}, +#line 268 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1573, ei_iso646_jp}, {-1}, {-1}, -#line 359 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1666, ei_iso2022_kr}, +#line 223 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1576, ei_mac_turkish}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 147 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1582, ei_iso8859_13}, +#line 71 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1583, ei_iso8859_2}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 502 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1676, ei_ebcdic870}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 119 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1685, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 270 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1691, ei_jisx0201}, - {-1}, {-1}, {-1}, -#line 47 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1695, ei_ucs2internal}, - {-1}, {-1}, {-1}, -#line 181 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1699, ei_cp1253}, +#line 105 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1601, ei_iso8859_7}, + {-1}, {-1}, +#line 275 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1604, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 311 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_sjis}, + {-1}, {-1}, +#line 48 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1618, ei_utf7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 476 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1628, ei_ebcdic284}, +#line 79 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1629, ei_iso8859_3}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 582 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1729, ei_ebcdic1142}, -#line 49 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1730, ei_ucs4internal}, +#line 272 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1639, ei_jisx0201}, + {-1}, {-1}, {-1}, {-1}, +#line 274 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1644, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 487 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1650, ei_ebcdic297}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 14 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1737, ei_ascii}, +#line 134 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1657, ei_iso8859_10}, {-1}, -#line 122 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1739, ei_iso8859_9}, -#line 112 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1740, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 123 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1747, ei_iso8859_9}, +#line 99 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1659, ei_iso8859_6}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 685 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1671, ei_euc_jisx0213}, + {-1}, {-1}, {-1}, +#line 645 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1675, ei_ebcdic1149}, + {-1}, +#line 299 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1677, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 283 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1686, ei_jisx0212}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 48 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1763, ei_ucs2swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 121 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1770, ei_iso8859_9}, -#line 193 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1771, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 124 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1693, ei_iso8859_9}, + {-1}, {-1}, +#line 137 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1696, ei_iso8859_10}, + {-1}, {-1}, {-1}, {-1}, +#line 125 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1701, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 49 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1714, ei_ucs2internal}, + {-1}, {-1}, {-1}, {-1}, #line 50 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1798, ei_ucs4swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 297 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1816, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 283 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1822, ei_jisx0212}, -#line 349 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1823, ei_big5hkscs2008}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1719, ei_ucs2swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 254 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1833, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 233 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1742, ei_georgian_academy}, +#line 30 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1743, ei_ucs2be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 298 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1859, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 346 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1867, ei_big5hkscs1999}, +#line 51 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1760, ei_ucs4internal}, +#line 181 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1761, ei_cp1252}, + {-1}, {-1}, {-1}, +#line 52 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1765, ei_ucs4swapped}, +#line 644 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1766, ei_ebcdic1149}, +#line 224 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1767, ei_mac_hebrew}, +#line 289 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1768, ei_iso646_cn}, + {-1}, {-1}, +#line 312 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1771, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 121 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1781, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 74 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1886, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 465 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1895, ei_ebcdic284}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 18 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1798, ei_ascii}, + {-1}, {-1}, {-1}, +#line 115 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1802, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 287 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1812, ei_iso646_cn}, + {-1}, {-1}, +#line 695 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1815, ei_riscos1}, + {-1}, {-1}, {-1}, +#line 123 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1819, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 215 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1834, ei_mac_roman}, +#line 17 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1835, ei_ascii}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 114 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1845, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 322 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1851, ei_iso2022_jpms}, {-1}, -#line 341 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1915, ei_ces_big5}, +#line 371 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1853, ei_iso2022_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 358 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1870, ei_big5hkscs2001}, + {-1}, {-1}, {-1}, {-1}, +#line 285 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1875, ei_jisx0212}, + {-1}, {-1}, +#line 192 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1878, ei_cp1256}, +#line 189 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1879, ei_cp1255}, + {-1}, +#line 180 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1881, ei_cp1252}, + {-1}, {-1}, {-1}, {-1}, +#line 177 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1886, ei_cp1251}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 370 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1892, ei_iso2022_kr}, +#line 280 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1893, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 362 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1899, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 359 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1911, ei_big5hkscs2004}, + {-1}, {-1}, {-1}, +#line 198 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1915, ei_cp1258}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 300 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1923, ei_ksc5601}, + {-1}, {-1}, {-1}, +#line 186 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1927, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 633 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1939, ei_ebcdic1149}, +#line 616 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1933, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 435 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1950, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 350 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1968, ei_big5hkscs2008}, +#line 306 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1952, ei_euc_jp}, +#line 76 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1953, ei_iso8859_3}, + {-1}, {-1}, {-1}, +#line 174 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1957, ei_cp1250}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 303 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2002, ei_euc_jp}, -#line 182 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2003, ei_cp1253}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 142 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2012, ei_iso8859_13}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 183 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1997, ei_cp1253}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 130 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2020, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 309 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2069, ei_sjis}, - {-1}, -#line 128 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2071, ei_iso8859_9}, +#line 352 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2050, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 296 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2062, ei_isoir165}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 14 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2093, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 144 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2109, ei_iso8859_13}, + {-1}, {-1}, {-1}, +#line 195 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2113, ei_cp1257}, + {-1}, +#line 234 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2115, ei_georgian_ps}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 675 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2136, ei_shift_jisx0213}, + {-1}, {-1}, {-1}, {-1}, +#line 184 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2156, ei_cp1253}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 256 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2188, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 357 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2206, ei_big5hkscs1999}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 151 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2218, ei_iso8859_14}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 149 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2224, ei_iso8859_14}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 305 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2255, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 327 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2281, ei_cp936}, - {-1}, {-1}, {-1}, {-1}, -#line 306 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2286, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 676 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2302, ei_shift_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 360 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2327, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -3285,15 +3304,33 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 686 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2457, ei_shift_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 687 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2479, ei_shift_jisx0213}, + {-1}, {-1}, +#line 313 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2482, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 309 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2504, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 361 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2529, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 336 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2564, ei_cp936}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -3301,8 +3338,9 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 304 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2582, ei_euc_jp} + {-1}, {-1}, +#line 310 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2630, ei_sjis} }; const struct alias * diff --git a/lib/iconv.cpp b/lib/iconv.cpp index fade8936..5ea71545 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -56,37 +56,34 @@ struct encoding struct mbtowc_funcs ifuncs; /* conversion multibyte -> unicode */ struct wctomb_funcs ofuncs; /* conversion unicode -> multibyte */ int oflags; /* flags for unicode -> multibyte conversion */ - int codepage; /* codepage number */ }; -#define DEFALIAS(xxx_alias, xxx) /* nothing */ + +#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, +#define DEFCODEPAGE(codepage, xxx) + enum { -#define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, -#include "encodings.h.snippet" - -#undef DEFENCODING + #include "encodings.h.snippet" ei_for_broken_compilers_that_dont_like_trailing_commas }; -#include "flags.h" -static struct encoding const all_encodings[] = { -#define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2, ei_##xxx##_oflags, codepage}, -#include "encodings.h.snippet" + +#undef DEFCODEPAGE #undef DEFENCODING -}; -#undef DEFALIAS -static inline int lookup_by_codepage(int codepage) +#include "flags.h" + +#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2, ei_##xxx##_oflags}, +#define DEFCODEPAGE(codepage, xxx) + +static struct encoding const all_encodings[] = { - for(size_t i = 0; i < sizeof(all_encodings) / sizeof(all_encodings[0]); i++) - { - if(all_encodings[i].codepage == codepage) - { - return i; - } - } - return -1; -} + #include "encodings.h.snippet" +}; + +#undef DEFENCODING +// #undef DEFCODEPAGE + /* * Conversion loops. @@ -102,9 +99,6 @@ static inline int lookup_by_codepage(int codepage) */ #include "aliases.h" -#define aliases2_lookup(str) nullptr -#define stringpool2 nullptr - extern "C++" { @@ -146,6 +140,8 @@ extern "C++" return (iconv_t)(-1); } + int lookup_by_codepage(int) {return 0;} + _CPPP_API iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) { struct conv_struct *cd; diff --git a/lib/iconv_open1.h b/lib/iconv_open1.h index 7193eeaa..5248e3d3 100644 --- a/lib/iconv_open1.h +++ b/lib/iconv_open1.h @@ -74,11 +74,9 @@ break; } ap = HashPool::aliases_lookup(buf, bp - buf); - if (ap == nullptr) + if (!ap) { - ap = aliases2_lookup(buf); - if (ap == nullptr) - goto invalid; + goto invalid; } to_index = ap->encoding_index; @@ -117,11 +115,9 @@ break; } ap = HashPool::aliases_lookup(buf, bp - buf); - if (ap == nullptr) + if (!ap) { - ap = aliases2_lookup(buf); - if (ap == nullptr) - goto invalid; + goto invalid; } from_index = ap->encoding_index; } diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index 10d723d1..06de5470 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -89,23 +89,19 @@ int main(int argc, char* argv[]) fprintf(aliases_file, "%%pic\n"); fprintf(aliases_file, "%%%%\n"); -#define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ +#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ { \ static const char *const names[] = BRACIFY xxx_names; \ emit_encoding(aliases_file, names, sizeof(names) / sizeof(names[0]), #xxx); \ } +#define DEFCODEPAGE(codepage, xxx) #define BRACIFY(...) \ { \ __VA_ARGS__ \ } -#define DEFALIAS(xxx_alias, xxx) emit_alias(aliases_file, xxx_alias, #xxx); #include "encodings.h.snippet" -#undef DEFALIAS -#undef BRACIFY -#undef DEFENCODING - if (ferror(aliases_file) || fclose(aliases_file)) return 1; return 0; diff --git a/tools/genflags.cpp b/tools/genflags.cpp index c12adc70..4507a49f 100644 --- a/tools/genflags.cpp +++ b/tools/genflags.cpp @@ -97,15 +97,15 @@ int main() printf("#define HAVE_HANGUL_JAMO %d\n", bitmask); printf("\n"); -#define DEFENCODING(xxx_names, codepage, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ +#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ { \ struct wctomb_funcs ofuncs = xxx_ofuncs1, xxx_ofuncs2; \ emit_encoding(&ofuncs, #xxx); \ } -#define DEFALIAS(xxx_alias, xxx) /* nothing */ +#define DEFCODEPAGE(codepage, xxx) + /* Consider all encodings, including the system dependent ones. */ #include "encodings.h.snippet" -#undef DEFALIAS #undef DEFENCODING if (ferror(stdout) || fclose(stdout)) From ec6ae11d77c4d5aa09e214c02211724ece5d632f Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 27 Jul 2024 23:43:32 +0800 Subject: [PATCH 29/77] Remove '-' and '_' in the name of the encoding. --- lib/encodings.h.snippet | 2633 ++++++++++---------- lib/generated/aliases.h | 5111 +++++++++++++++++---------------------- lib/iconv.cpp | 45 +- lib/iconv_open1.h | 123 - 4 files changed, 3513 insertions(+), 4399 deletions(-) delete mode 100644 lib/iconv_open1.h diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index 82f4e26e..4e711cbe 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -15,8 +15,6 @@ License along with the cppp-reiconv library; see the file LICENSE. If not, see . */ -/* The list of all system independent user-visible encodings. */ - /* By convention, an encoding named FOOBAR or FOO_BAR or FOO-BAR is defined in a file named "foobar.h" through the functions foobar_mbtowc and foobar_wctomb (and possibly foobar_reset). */ @@ -34,1746 +32,1613 @@ xxx is the name as used in the C code (lowercase). */ +/* The list of all system independent user-visible encodings. */ -DEFENCODING(( "US-ASCII", /* IANA */ - "ASCII", /* IANA, JDK 1.1 */ - "ISO646-US", /* IANA */ - "ISO_646.IRV:1991", /* IANA */ - "ISO-IR-6", /* IANA */ - "ANSI_X3.4-1968", /* IANA */ - "ANSI_X3.4-1986", /* IANA */ - "CP367", /* IANA */ - "IBM367", /* IANA */ - "US", /* IANA */ - "csASCII", /* IANA */ - "646" - ), +// Notice: We removed all '-' and '_' of encoding's name. + +DEFENCODING(("USASCII", /* IANA */ + "ASCII", /* IANA, JDK 1.1 */ + "ISO646US", /* IANA */ + "ISO646.IRV:1991", /* IANA */ + "ISOIR6", /* IANA */ + "ANSIX3.41968", /* IANA */ + "ANSIX3.41986", /* IANA */ + "IBM367", /* IANA */ + "US", /* IANA */ + "csASCII", /* IANA */ + "646", /* Solaris */ + ), ascii, - { ascii_mbtowc, nullptr }, { ascii_wctomb, nullptr }) + {ascii_mbtowc, nullptr}, {ascii_wctomb, nullptr}) + +DEFCODEPAGE(367, ascii) /* General multi-byte encodings */ -DEFENCODING(( "UTF-8", /* IANA, RFC 2279 */ - "UTF8" - /*"UTF8", JDK 1.1 */ - /*"CP65001", Windows */ - ), +DEFENCODING(("UTF8", /* IANA, RFC 2279 */ + ), utf8, - { utf8_mbtowc, nullptr }, { utf8_wctomb, nullptr }) + {utf8_mbtowc, nullptr}, {utf8_wctomb, nullptr}) -DEFENCODING(( "UCS-2", /* glibc */ - "ISO-10646-UCS-2", /* IANA */ - "csUnicode", /* IANA */ - ), +DEFCODEPAGE(65001, utf8) + +DEFENCODING(("UCS2", /* glibc */ + "ISO10646UCS2", /* IANA */ + "csUnicode", /* IANA */ + ), ucs2, - { ucs2_mbtowc, nullptr }, { ucs2_wctomb, nullptr }) - -DEFENCODING(( "UCS-2BE", /* glibc */ - "UNICODEBIG", /* glibc */ - "UNICODE-1-1", /* IANA */ - "csUnicode11", /* IANA */ - /*"CP1201", Windows */ - ), + {ucs2_mbtowc, nullptr}, {ucs2_wctomb, nullptr}) + +DEFENCODING(("UCS2BE", /* glibc */ + "UNICODEBIG", /* glibc */ + "UNICODE11", /* IANA */ + "csUnicode11", /* IANA */ + /*"CP1201", Windows */ + ), ucs2be, - { ucs2be_mbtowc, nullptr }, { ucs2be_wctomb, nullptr }) + {ucs2be_mbtowc, nullptr}, {ucs2be_wctomb, nullptr}) -DEFENCODING(( "UCS-2LE", /* glibc */ - "UNICODELITTLE", /* glibc */ - /*"CP1200", Windows */ - ), +DEFENCODING(("UCS2LE", /* glibc */ + "UNICODELITTLE", /* glibc */ + /*"CP1200", Windows */ + ), ucs2le, - { ucs2le_mbtowc, nullptr }, { ucs2le_wctomb, nullptr }) + {ucs2le_mbtowc, nullptr}, {ucs2le_wctomb, nullptr}) -DEFENCODING(( "UCS-4", /* glibc */ - "ISO-10646-UCS-4", /* IANA */ - "csUCS4", /* IANA */ - ), +DEFENCODING(("UCS4", /* glibc */ + "ISO10646UCS4", /* IANA */ + "csUCS4", /* IANA */ + ), ucs4, - { ucs4_mbtowc, nullptr }, { ucs4_wctomb, nullptr }) + {ucs4_mbtowc, nullptr}, {ucs4_wctomb, nullptr}) -DEFENCODING(( "UCS-4BE", /* glibc */ - /*"CP12001", Windows */ - ), +DEFENCODING(("UCS4BE", /* glibc */ + /*"CP12001", Windows */ + ), ucs4be, - { ucs4be_mbtowc, nullptr }, { ucs4be_wctomb, nullptr }) + {ucs4be_mbtowc, nullptr}, {ucs4be_wctomb, nullptr}) -DEFENCODING(( "UCS-4LE", /* glibc */ - /*"CP12000", Windows */ - ), +DEFENCODING(("UCS4LE", /* glibc */ + /*"CP12000", Windows */ + ), ucs4le, - { ucs4le_mbtowc, nullptr }, { ucs4le_wctomb, nullptr }) + {ucs4le_mbtowc, nullptr}, {ucs4le_wctomb, nullptr}) -DEFENCODING(( "UTF-16", /* IANA, RFC 2781 */ - ), /* MS-Windows Use little endian, so CP1200 means UTF-16LE */ +DEFENCODING(("UTF16", /* IANA, RFC 2781 */ + ), utf16, - { utf16_mbtowc, nullptr }, { utf16_wctomb, nullptr }) + {utf16_mbtowc, nullptr}, {utf16_wctomb, nullptr}) + +/* MS-Windows Use little endian, so CP1200 means UTF-16LE */ -DEFENCODING(( "UTF-16BE", /* IANA, RFC 2781 */ - ), +DEFENCODING(("UTF16BE", /* IANA, RFC 2781 */ + ), utf16be, - { utf16be_mbtowc, nullptr }, { utf16be_wctomb, nullptr }) + {utf16be_mbtowc, nullptr}, {utf16be_wctomb, nullptr}) -DEFENCODING(( "UTF-16LE", /* IANA, RFC 2781 */ - ), +DEFCODEPAGE(1201, utf16be) + +DEFENCODING(("UTF16LE", /* IANA, RFC 2781 */ + ), utf16le, - { utf16le_mbtowc, nullptr }, { utf16le_wctomb, nullptr }) + {utf16le_mbtowc, nullptr}, {utf16le_wctomb, nullptr}) + +DEFCODEPAGE(1200, utf16le) -DEFENCODING(( "UTF-32", /* IANA, Unicode 3.1 */ - ), +DEFENCODING(("UTF32", /* IANA, Unicode 3.1 */ + ), utf32, - { utf32_mbtowc, nullptr }, { utf32_wctomb, nullptr }) + {utf32_mbtowc, nullptr}, {utf32_wctomb, nullptr}) -DEFENCODING(( "UTF-32BE", /* IANA, Unicode 3.1 */ - ), +DEFENCODING(("UTF32BE", /* IANA, Unicode 3.1 */ + ), utf32be, - { utf32be_mbtowc, nullptr }, { utf32be_wctomb, nullptr }) + {utf32be_mbtowc, nullptr}, {utf32be_wctomb, nullptr}) -DEFENCODING(( "UTF-32LE", /* IANA, Unicode 3.1 */ - ), +DEFCODEPAGE(12001, utf32be) + +DEFENCODING(("UTF32LE", /* IANA, Unicode 3.1 */ + ), utf32le, - { utf32le_mbtowc, nullptr }, { utf32le_wctomb, nullptr }) + {utf32le_mbtowc, nullptr}, {utf32le_wctomb, nullptr}) + +DEFCODEPAGE(12000, utf32le) -DEFENCODING(( "UTF-7", /* IANA, RFC 2152 */ - "UNICODE-1-1-UTF-7", /* IANA, RFC 1642 */ - "csUnicode11UTF7", /* IANA */ - /*"CP65000", Windows */ - ), +DEFENCODING(("UTF7", /* IANA, RFC 2152 */ + "UNICODE11UTF7", /* IANA, RFC 1642 */ + "csUnicode11UTF7", /* IANA */ + /*"CP65000", Windows */ + ), utf7, - { utf7_mbtowc, nullptr }, { utf7_wctomb, utf7_reset }) + {utf7_mbtowc, nullptr}, {utf7_wctomb, utf7_reset}) -DEFENCODING(( "UCS-2-INTERNAL", /* libiconv */ - ), +DEFCODEPAGE(65000, utf7) + +DEFENCODING(("UCS2INTERNAL", /* libiconv */ + ), ucs2internal, - { ucs2internal_mbtowc, nullptr }, { ucs2internal_wctomb, nullptr }) + {ucs2internal_mbtowc, nullptr}, {ucs2internal_wctomb, nullptr}) -DEFENCODING(( "UCS-2-SWAPPED", /* libiconv */ - ), +DEFENCODING(("UCS2SWAPPED", /* libiconv */ + ), ucs2swapped, - { ucs2swapped_mbtowc, nullptr }, { ucs2swapped_wctomb, nullptr }) + {ucs2swapped_mbtowc, nullptr}, {ucs2swapped_wctomb, nullptr}) -DEFENCODING(( "UCS-4-INTERNAL", /* libiconv */ - ), +DEFENCODING(("UCS4INTERNAL", /* libiconv */ + ), ucs4internal, - { ucs4internal_mbtowc, nullptr },{ ucs4internal_wctomb, nullptr }) + {ucs4internal_mbtowc, nullptr}, {ucs4internal_wctomb, nullptr}) -DEFENCODING(( "UCS-4-SWAPPED", /* libiconv */ - ), +DEFENCODING(("UCS4SWAPPED", /* libiconv */ + ), ucs4swapped, - { ucs4swapped_mbtowc, nullptr }, { ucs4swapped_wctomb, nullptr }) + {ucs4swapped_mbtowc, nullptr}, {ucs4swapped_wctomb, nullptr}) -DEFENCODING(( "C99", - ), +DEFENCODING(("C99", ), c99, - { c99_mbtowc, nullptr }, { c99_wctomb, nullptr }) + {c99_mbtowc, nullptr}, {c99_wctomb, nullptr}) -DEFENCODING(( "JAVA", - ), +DEFENCODING(("JAVA", ), java, - { java_mbtowc, nullptr }, { java_wctomb, nullptr }) + {java_mbtowc, nullptr}, {java_wctomb, nullptr}) /* Standard 8-bit encodings */ -DEFENCODING(( "ISO-8859-1", /* IANA */ - "ISO_8859-1", /* IANA */ - "ISO_8859-1:1987", /* IANA */ - "ISO-IR-100", /* IANA */ - "CP819", /* IANA */ - "IBM819", /* IANA */ - "LATIN1", /* IANA */ - "L1", /* IANA */ - "csISOLatin1", /* IANA */ - "ISO8859-1", /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ - /*"ISO8859_1", JDK 1.1 */ - /*"CP28591", Windows */ - ), +DEFENCODING(("ISO88591", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ + "ISO88591:1987", /* IANA */ + "ISOIR100", /* IANA */ + "IBM819", /* IANA */ + "LATIN1", /* IANA */ + "L1", /* IANA */ + "csISOLatin1", /* IANA */ + ), iso8859_1, - { iso8859_1_mbtowc, nullptr }, { iso8859_1_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88591", /* HP-UX */ - iso8859_1) -#endif - -DEFENCODING(( "ISO-8859-2", /* IANA */ - "ISO_8859-2", /* IANA */ - "ISO_8859-2:1987", /* IANA */ - "ISO-IR-101", /* IANA */ - "LATIN2", /* IANA */ - "L2", /* IANA */ - "csISOLatin2", /* IANA */ - "ISO8859-2", /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ - /*"ISO8859_2", JDK 1.1 */ - /*"CP28592", Windows */ - ), + {iso8859_1_mbtowc, nullptr}, {iso8859_1_wctomb, nullptr}) + +DEFCODEPAGE(819, iso8859_1) +DEFCODEPAGE(28591, iso8859_1) + +DEFENCODING(("ISO88592", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ + "ISO88592:1987", /* IANA */ + "ISOIR101", /* IANA */ + "LATIN2", /* IANA */ + "L2", /* IANA */ + "csISOLatin2", /* IANA */ + ), iso8859_2, - { iso8859_2_mbtowc, nullptr }, { iso8859_2_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88592", /* HP-UX */ - iso8859_2) -#endif - -DEFENCODING(( "ISO-8859-3", /* IANA */ - "ISO_8859-3", /* IANA */ - "ISO_8859-3:1988", /* IANA */ - "ISO-IR-109", /* IANA */ - "LATIN3", /* IANA */ - "L3", /* IANA */ - "csISOLatin3", /* IANA */ - "ISO8859-3", /* X11R6.4, glibc, FreeBSD, Solaris */ - /*"ISO8859_3", JDK 1.1 */ - /*"CP28593", Windows */ - ), + {iso8859_2_mbtowc, nullptr}, {iso8859_2_wctomb, nullptr}) + +DEFCODEPAGE(28592, iso8859_2) + +DEFENCODING(("ISO88593", /* IANA, X11R6.4, glibc, FreeBSD, Solaris */ + "ISO88593:1988", /* IANA */ + "ISOIR109", /* IANA */ + "LATIN3", /* IANA */ + "L3", /* IANA */ + "csISOLatin3", /* IANA */ + ), iso8859_3, - { iso8859_3_mbtowc, nullptr }, { iso8859_3_wctomb, nullptr }) - -DEFENCODING(( "ISO-8859-4", /* IANA */ - "ISO_8859-4", /* IANA */ - "ISO_8859-4:1988", /* IANA */ - "ISO-IR-110", /* IANA */ - "LATIN4", /* IANA */ - "L4", /* IANA */ - "csISOLatin4", /* IANA */ - "ISO8859-4", /* X11R6.4, glibc, FreeBSD, OSF/1, Solaris */ - /*"ISO8859_4", JDK 1.1 */ - /*"CP28594", Windows */ - ), + {iso8859_3_mbtowc, nullptr}, {iso8859_3_wctomb, nullptr}) + +DEFCODEPAGE(28593, iso8859_3) + +DEFENCODING(("ISO88594", /* IANA, X11R6.4, glibc, FreeBSD, OSF/1, Solaris */ + "ISO88594:1988", /* IANA */ + "ISOIR110", /* IANA */ + "LATIN4", /* IANA */ + "L4", /* IANA */ + "csISOLatin4", /* IANA */ + ), iso8859_4, - { iso8859_4_mbtowc, nullptr }, { iso8859_4_wctomb, nullptr }) - -DEFENCODING(( "ISO-8859-5", /* IANA */ - "ISO_8859-5", /* IANA */ - "ISO_8859-5:1988", /* IANA */ - "ISO-IR-144", /* IANA */ - "CYRILLIC", /* IANA */ - "csISOLatinCyrillic", /* IANA */ - "ISO8859-5", /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ - /*"ISO8859_5", JDK 1.1 */ - /*"CP28595", Windows */ - ), + {iso8859_4_mbtowc, nullptr}, {iso8859_4_wctomb, nullptr}) + +DEFCODEPAGE(28594, iso8859_4) + +DEFENCODING(("ISO88595", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ + "ISO88595:1988", /* IANA */ + "ISOIR144", /* IANA */ + "CYRILLIC", /* IANA */ + "csISOLatinCyrillic", /* IANA */ + ), iso8859_5, - { iso8859_5_mbtowc, nullptr }, { iso8859_5_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88595", /* HP-UX */ - iso8859_5) -#endif - -DEFENCODING(( "ISO-8859-6", /* IANA */ - "ISO_8859-6", /* IANA */ - "ISO_8859-6:1987", /* IANA */ - "ISO-IR-127", /* IANA */ - "ECMA-114", /* IANA */ - "ASMO-708", /* IANA */ - "ARABIC", /* IANA */ - "csISOLatinArabic", /* IANA */ - "ISO8859-6", /* X11R6.4, glibc, FreeBSD, AIX, Solaris */ - /*"ISO8859_6", JDK 1.1 */ - /*"CP28596", Windows */ - ), + {iso8859_5_mbtowc, nullptr}, {iso8859_5_wctomb, nullptr}) + +DEFCODEPAGE(28595, iso8859_5) + +DEFENCODING(("ISO88596", /* IANA, X11R6.4, glibc, FreeBSD, AIX, Solaris */ + "ISO88596:1987", /* IANA */ + "ISOIR127", /* IANA */ + "ECMA114", /* IANA */ + "ASMO708", /* IANA */ + "ARABIC", /* IANA */ + "csISOLatinArabic", /* IANA */ + ), iso8859_6, - { iso8859_6_mbtowc, nullptr }, { iso8859_6_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88596", /* HP-UX */ - iso8859_6) -#endif - -DEFENCODING(( "ISO-8859-7", /* IANA, RFC 1947 */ - "ISO_8859-7", /* IANA */ - "ISO_8859-7:1987", /* IANA */ - "ISO_8859-7:2003", - "ISO-IR-126", /* IANA */ - "ECMA-118", /* IANA */ - "ELOT_928", /* IANA */ - "GREEK8", /* IANA */ - "GREEK", /* IANA */ - "csISOLatinGreek", /* IANA */ - "ISO8859-7", /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ - /*"ISO8859_7", JDK 1.1 */ - /*"CP28597", Windows */ - ), + {iso8859_6_mbtowc, nullptr}, {iso8859_6_wctomb, nullptr}) + +DEFCODEPAGE(28596, iso8859_6) + +DEFENCODING(("ISO88597", /* IANA, RFC 1947, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ + "ISO88597:1987", /* IANA */ + "ISO88597:2003", + "ISOIR126", /* IANA */ + "ECMA118", /* IANA */ + "ELOT928", /* IANA */ + "GREEK8", /* IANA */ + "GREEK", /* IANA */ + "csISOLatinGreek", /* IANA */ + ), iso8859_7, - { iso8859_7_mbtowc, nullptr }, { iso8859_7_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88597", /* HP-UX */ - iso8859_7) -#endif - -DEFENCODING(( "ISO-8859-8", /* IANA */ - "ISO_8859-8", /* IANA */ - "ISO_8859-8:1988", /* IANA */ - "ISO-IR-138", /* IANA */ - "HEBREW", /* IANA */ - "csISOLatinHebrew", /* IANA */ - "ISO8859-8", /* X11R6.4, glibc, FreeBSD, AIX, OSF/1, Solaris */ - /*"ISO8859_8", JDK 1.1 */ - /*"CP28598", Windows */ - /*"CP38598", Windows */ - ), + {iso8859_7_mbtowc, nullptr}, {iso8859_7_wctomb, nullptr}) + +DEFCODEPAGE(28597, iso8859_7) + +DEFENCODING(("ISO88598", /* IANA, X11R6.4, glibc, FreeBSD, AIX, OSF/1, Solaris */ + "ISO88598:1988", /* IANA */ + "ISOIR138", /* IANA */ + "HEBREW", /* IANA */ + "csISOLatinHebrew", /* IANA */ + ), iso8859_8, - { iso8859_8_mbtowc, nullptr }, { iso8859_8_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88598", /* HP-UX */ - iso8859_8) -#endif - -DEFENCODING(( "ISO-8859-9", /* IANA */ - "ISO_8859-9", /* IANA */ - "ISO_8859-9:1989", /* IANA */ - "ISO-IR-148", /* IANA */ - "LATIN5", /* IANA */ - "L5", /* IANA */ - "csISOLatin5", /* IANA */ - "ISO8859-9", /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ - /*"ISO8859_9", JDK 1.1 */ - /*"CP28599", Windows */ - ), + {iso8859_8_mbtowc, nullptr}, {iso8859_8_wctomb, nullptr}) + +DEFCODEPAGE(28598, iso8859_8) +DEFCODEPAGE(38598, iso8859_8) + +DEFENCODING(("ISO88599", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ + "ISO88599:1989", /* IANA */ + "ISOIR148", /* IANA */ + "LATIN5", /* IANA */ + "L5", /* IANA */ + "csISOLatin5", /* IANA */ + ), iso8859_9, - { iso8859_9_mbtowc, nullptr }, { iso8859_9_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO88599", /* HP-UX */ - iso8859_9) -#endif - -DEFENCODING(( "ISO-8859-10", /* IANA */ - "ISO_8859-10", - "ISO_8859-10:1992", /* IANA */ - "ISO-IR-157", /* IANA */ - "LATIN6", /* IANA */ - "L6", /* IANA */ - "csISOLatin6", /* IANA */ - "ISO8859-10", /* X11R6.4, glibc, FreeBSD */ - ), + {iso8859_9_mbtowc, nullptr}, {iso8859_9_wctomb, nullptr}) + +DEFCODEPAGE(28599, iso8859_9) + +DEFENCODING(("ISO885910", /* IANA, X11R6.4, glibc, FreeBSD */ + "ISO885910:1992", /* IANA */ + "ISOIR157", /* IANA */ + "LATIN6", /* IANA */ + "L6", /* IANA */ + "csISOLatin6", /* IANA */ + ), iso8859_10, - { iso8859_10_mbtowc, nullptr }, { iso8859_10_wctomb, nullptr }) + {iso8859_10_mbtowc, nullptr}, {iso8859_10_wctomb, nullptr}) -DEFENCODING(( "ISO-8859-11", /* glibc */ - "ISO_8859-11", - "ISO8859-11", /* X11R6.7, glibc */ - ), +DEFENCODING(("ISO885911", /* glibc, X11R6.7, glibc */ + ), iso8859_11, - { iso8859_11_mbtowc, nullptr }, { iso8859_11_wctomb, nullptr }) - -DEFENCODING(( "ISO-8859-13", /* IANA, glibc */ - "ISO_8859-13", - "ISO-IR-179", /* glibc */ - "LATIN7", /* glibc */ - "L7", /* glibc */ - "ISO8859-13", /* glibc, FreeBSD */ - /*"CP28603", Windows */ - ), + {iso8859_11_mbtowc, nullptr}, {iso8859_11_wctomb, nullptr}) + +DEFENCODING(("ISO885913", /* IANA, glibc, FreeBSD */ + "ISOIR179", /* glibc */ + "LATIN7", /* glibc */ + "L7", /* glibc */ + "IBM921" /* AIX */ + ), iso8859_13, - { iso8859_13_mbtowc, nullptr }, { iso8859_13_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-921", /* AIX */ - iso8859_13) -#endif - -DEFENCODING(( "ISO-8859-14", /* IANA, glibc */ - "ISO_8859-14", /* IANA */ - "ISO_8859-14:1998", /* IANA, glibc */ - "ISO-IR-199", /* IANA */ - "LATIN8", /* IANA, glibc */ - "L8", /* IANA, glibc */ - "ISO-CELTIC", /* IANA */ - "ISO8859-14", /* glibc, FreeBSD */ - ), + {iso8859_13_mbtowc, nullptr}, {iso8859_13_wctomb, nullptr}) + +DEFCODEPAGE(28603, iso8859_13) + +DEFENCODING(("ISO885914", /* IANA, glibc, FreeBSD */ + "ISO885914:1998", /* IANA, glibc */ + "ISOIR199", /* IANA */ + "LATIN8", /* IANA, glibc */ + "L8", /* IANA, glibc */ + "ISOCELTIC", /* IANA */ + ), iso8859_14, - { iso8859_14_mbtowc, nullptr }, { iso8859_14_wctomb, nullptr }) - -DEFENCODING(( "ISO-8859-15", /* IANA, glibc */ - "ISO_8859-15", /* IANA */ - "ISO_8859-15:1998", /* glibc */ - "ISO-IR-203", - "LATIN-9", /* IANA */ - "ISO8859-15", /* glibc, FreeBSD, AIX, OSF/1, Solaris */ - /*"CP28605", Windows */ - ), + {iso8859_14_mbtowc, nullptr}, {iso8859_14_wctomb, nullptr}) + +DEFENCODING(("ISO885915", /* IANA, glibc, FreeBSD, AIX, OSF/1, Solaris */ + "ISO885915:1998", /* glibc */ + "ISOIR203", + "LATIN9", /* IANA */ + ), iso8859_15, - { iso8859_15_mbtowc, nullptr }, { iso8859_15_wctomb, nullptr }) -#ifdef USE_HPUX_ALIASES -DEFALIAS( "ISO885915", /* HP-UX */ - iso8859_15) -#endif - -DEFENCODING(( "ISO-8859-16", /* IANA */ - "ISO_8859-16", /* IANA */ - "ISO_8859-16:2001", /* IANA */ - "ISO-IR-226", /* IANA */ - "LATIN10", /* IANA */ - "L10", /* IANA */ - "ISO8859-16", /* glibc, FreeBSD */ - ), + {iso8859_15_mbtowc, nullptr}, {iso8859_15_wctomb, nullptr}) + +DEFCODEPAGE(28605, iso8859_15) + +DEFENCODING(("ISO885916", /* IANA, glibc, FreeBSD */ + "ISO885916:2001", /* IANA */ + "ISOIR226", /* IANA */ + "LATIN10", /* IANA */ + "L10", /* IANA */ + ), iso8859_16, - { iso8859_16_mbtowc, nullptr }, { iso8859_16_wctomb, nullptr }) + {iso8859_16_mbtowc, nullptr}, {iso8859_16_wctomb, nullptr}) -DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ - "csKOI8R", /* IANA */ - /*"CP20866", Windows */ - ), +DEFENCODING(("KOI8R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ + "csKOI8R", /* IANA */ + ), koi8_r, - { koi8_r_mbtowc, nullptr }, { koi8_r_wctomb, nullptr }) + {koi8_r_mbtowc, nullptr}, {koi8_r_wctomb, nullptr}) -DEFENCODING(( "KOI8-U", /* IANA, RFC 2319 */ - ), +DEFCODEPAGE(20866, koi8_r) + +DEFENCODING(("KOI8U", /* IANA, RFC 2319 */ + ), koi8_u, - { koi8_u_mbtowc, nullptr }, { koi8_u_wctomb, nullptr }) + {koi8_u_mbtowc, nullptr}, {koi8_u_wctomb, nullptr}) -DEFENCODING(( "KOI8-RU", - /*"CP21866", Windows */ - ), +DEFENCODING(("KOI8RU", ), koi8_ru, - { koi8_ru_mbtowc, nullptr }, { koi8_ru_wctomb, nullptr }) + {koi8_ru_mbtowc, nullptr}, {koi8_ru_wctomb, nullptr}) + +DEFCODEPAGE(21866, koi8_ru) /* Windows 8-bit encodings */ -DEFENCODING(( "CP1250", /* JDK 1.1 */ - "WINDOWS-1250", /* IANA */ - "MS-EE", - ), +DEFENCODING(("CP1250", /* JDK 1.1 */ + "WINDOWS1250", /* IANA */ + "MSEE", ), cp1250, - { cp1250_mbtowc, nullptr }, { cp1250_wctomb, nullptr }) + {cp1250_mbtowc, nullptr}, {cp1250_wctomb, nullptr}) -DEFENCODING(( "CP1251", /* JDK 1.1 */ - "WINDOWS-1251", /* IANA */ - "MS-CYRL", - ), +DEFCODEPAGE(1250, cp1250) + +DEFENCODING(("WINDOWS1251", /* IANA */ + "MSCYRL", + "ANSI1251", /* Solaris */ + ), cp1251, - { cp1251_mbtowc, nullptr }, { cp1251_wctomb, nullptr }) -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "ANSI-1251", /* Solaris */ - cp1251) -#endif - -DEFENCODING(( "CP1252", /* JDK 1.1 */ - "WINDOWS-1252", /* IANA */ - "MS-ANSI", - ), + {cp1251_mbtowc, nullptr}, {cp1251_wctomb, nullptr}) + +DEFCODEPAGE(1251, cp1251) + +DEFENCODING(("WINDOWS1252", /* IANA */ + "IBM1252", /* AIX */ + "MSANSI", ), cp1252, - { cp1252_mbtowc, nullptr }, { cp1252_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1252", /* AIX */ - cp1252) -#endif - -DEFENCODING(( "CP1253", /* JDK 1.1 */ - "WINDOWS-1253", /* IANA */ - "MS-GREEK", - ), + {cp1252_mbtowc, nullptr}, {cp1252_wctomb, nullptr}) + +DEFCODEPAGE(1252, cp1252) + +DEFENCODING(("WINDOWS1253", /* IANA */ + "MSGREEK", ), cp1253, - { cp1253_mbtowc, nullptr }, { cp1253_wctomb, nullptr }) + {cp1253_mbtowc, nullptr}, {cp1253_wctomb, nullptr}) -DEFENCODING(( "CP1254", /* JDK 1.1 */ - "WINDOWS-1254", /* IANA */ - "MS-TURK", - ), +DEFCODEPAGE(1253, cp1253) + +DEFENCODING(("WINDOWS1254", /* IANA */ + "MSTURK", ), cp1254, - { cp1254_mbtowc, nullptr }, { cp1254_wctomb, nullptr }) + {cp1254_mbtowc, nullptr}, {cp1254_wctomb, nullptr}) + +DEFCODEPAGE(1254, cp1254) -DEFENCODING(( "CP1255", /* JDK 1.1 */ - "WINDOWS-1255", /* IANA */ - "MS-HEBR", - ), +DEFENCODING(("WINDOWS1255", /* IANA */ + "MSHEBR", ), cp1255, - { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, nullptr }) + {cp1255_mbtowc, cp1255_flushwc}, {cp1255_wctomb, nullptr}) -DEFENCODING(( "CP1256", /* JDK 1.1 */ - "WINDOWS-1256", /* IANA */ - "MS-ARAB", - ), +DEFCODEPAGE(1255, cp1255) + +DEFENCODING(("WINDOWS1256", /* IANA */ + "MSARAB", ), cp1256, - { cp1256_mbtowc, nullptr }, { cp1256_wctomb, nullptr }) + {cp1256_mbtowc, nullptr}, {cp1256_wctomb, nullptr}) + +DEFCODEPAGE(1256, cp1256) -DEFENCODING(( "CP1257", /* JDK 1.1 */ - "WINDOWS-1257", /* IANA */ - "WINBALTRIM", - ), +DEFENCODING(("WINDOWS1257", /* IANA */ + "WINBALTRIM", ), cp1257, - { cp1257_mbtowc, nullptr }, { cp1257_wctomb, nullptr }) + {cp1257_mbtowc, nullptr}, {cp1257_wctomb, nullptr}) -DEFENCODING(( "CP1258", /* JDK 1.1 */ - "WINDOWS-1258", /* IANA */ - ), +DEFCODEPAGE(1257, cp1257) + +DEFENCODING(("WINDOWS1258", /* IANA */ + ), cp1258, - { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, nullptr }) + {cp1258_mbtowc, cp1258_flushwc}, {cp1258_wctomb, nullptr}) + +DEFCODEPAGE(1258, cp1258) /* DOS 8-bit encodings */ -DEFENCODING(( "CP850", /* IANA, JDK 1.1 */ - "IBM850", /* IANA */ - "850", /* IANA */ - "csPC850Multilingual", /* IANA */ - ), +DEFENCODING(("IBM850", /* IANA */ + "850", /* IANA */ + "csPC850Multilingual", /* IANA */ + ), cp850, - { cp850_mbtowc, nullptr }, { cp850_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-850", /* AIX */ - cp850) -#endif - -DEFENCODING(( "CP862", /* IANA, JDK 1.1 */ - "IBM862", /* IANA */ - "862", /* IANA */ - "csPC862LatinHebrew", /* IANA */ - ), + {cp850_mbtowc, nullptr}, {cp850_wctomb, nullptr}) + +DEFCODEPAGE(850, cp850) + +DEFENCODING(("IBM862", /* IANA */ + "862", /* IANA */ + "csPC862LatinHebrew", /* IANA */ + ), cp862, - { cp862_mbtowc, nullptr }, { cp862_wctomb, nullptr }) + {cp862_mbtowc, nullptr}, {cp862_wctomb, nullptr}) -DEFENCODING(( "CP866", /* IANA, JDK 1.1 */ - "IBM866", /* IANA */ - "866", /* IANA */ - "csIBM866", /* IANA */ - ), +DEFCODEPAGE(862, cp862) + +DEFENCODING(("IBM866", /* IANA */ + "866", /* IANA */ + "csIBM866", /* IANA */ + ), cp866, - { cp866_mbtowc, nullptr }, { cp866_wctomb, nullptr }) + {cp866_mbtowc, nullptr}, {cp866_wctomb, nullptr}) + +DEFCODEPAGE(866, cp866) -DEFENCODING(( "CP1131", /* FreeBSD, MacOS X */ - ), +DEFENCODING(("IBM1131", /* AIX */ + ), cp1131, - { cp1131_mbtowc, nullptr }, { cp1131_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1131", /* AIX */ - cp1131) -#endif + {cp1131_mbtowc, nullptr}, {cp1131_wctomb, nullptr}) + +DEFCODEPAGE(1131, cp1131) /* Macintosh 8-bit encodings */ -DEFENCODING(( "MacRoman", /* JDK 1.1 */ - /* This is the best table for MACINTOSH. The ones */ - /* in glibc and FreeBSD-iconv are bad quality. */ - "MACINTOSH", /* IANA */ - "MAC", /* IANA */ - "csMacintosh", /* IANA */ - /*"CP10000", Windows */ - ), +/* This is the best table for MACINTOSH. The + ones in glibc and FreeBSD-iconv are bad quality. */ +DEFENCODING(("MacRoman", /* JDK 1.1 */ + "MACINTOSH", /* IANA */ + "MAC", /* IANA */ + "csMacintosh", /* IANA */ + ), mac_roman, - { mac_roman_mbtowc, nullptr }, { mac_roman_wctomb, nullptr }) + {mac_roman_mbtowc, nullptr}, {mac_roman_wctomb, nullptr}) + +DEFCODEPAGE(10000, mac_roman) -DEFENCODING(( "MacCentralEurope", /* JDK 1.1 */ - /*"CP10029", Windows */ - ), +DEFENCODING(("MacCentralEurope", /* JDK 1.1 */ + "xmacce", /* Windows */ + ), mac_centraleurope, - { mac_centraleurope_mbtowc, nullptr }, { mac_centraleurope_wctomb, nullptr }) + {mac_centraleurope_mbtowc, nullptr}, {mac_centraleurope_wctomb, nullptr}) + +DEFCODEPAGE(10029, mac_centraleurope) -DEFENCODING(( "MacIceland", /* JDK 1.1 */ - /*"CP10079", Windows */ - ), +DEFENCODING(("MacIceland", /* JDK 1.1 */ + ), mac_iceland, - { mac_iceland_mbtowc, nullptr }, { mac_iceland_wctomb, nullptr }) + {mac_iceland_mbtowc, nullptr}, {mac_iceland_wctomb, nullptr}) -DEFENCODING(( "MacCroatian", /* JDK 1.1 */ - /*"CP10082", Windows */ - ), +DEFCODEPAGE(10079, mac_iceland) + +DEFENCODING(("MacCroatian", /* JDK 1.1 */ + ), mac_croatian, - { mac_croatian_mbtowc, nullptr }, { mac_croatian_wctomb, nullptr }) + {mac_croatian_mbtowc, nullptr}, {mac_croatian_wctomb, nullptr}) + +DEFCODEPAGE(10082, mac_croatian) -DEFENCODING(( "MacRomania", /* JDK 1.1 */ - /*"CP10010", Windows */ - ), +DEFENCODING(("MacRomania", /* JDK 1.1 */ + ), mac_romania, - { mac_romania_mbtowc, nullptr }, { mac_romania_wctomb, nullptr }) + {mac_romania_mbtowc, nullptr}, {mac_romania_wctomb, nullptr}) -DEFENCODING(( "MacCyrillic", /* JDK 1.1 */ - /*"CP10007", Windows */ - ), +DEFCODEPAGE(10010, mac_romania) + +DEFENCODING(("MacCyrillic", /* JDK 1.1 */ + ), mac_cyrillic, - { mac_cyrillic_mbtowc, nullptr }, { mac_cyrillic_wctomb, nullptr }) + {mac_cyrillic_mbtowc, nullptr}, {mac_cyrillic_wctomb, nullptr}) + +DEFCODEPAGE(10007, mac_cyrillic) -DEFENCODING(( "MacUkraine", /* JDK 1.1 */ - /*"CP10017", Windows */ - ), +DEFENCODING(("MacUkraine", /* JDK 1.1 */ + ), mac_ukraine, - { mac_ukraine_mbtowc, nullptr }, { mac_ukraine_wctomb, nullptr }) + {mac_ukraine_mbtowc, nullptr}, {mac_ukraine_wctomb, nullptr}) -DEFENCODING(( "MacGreek", /* JDK 1.1 */ - /*"CP10006", Windows */ - ), +DEFCODEPAGE(10017, mac_ukraine) + +DEFENCODING(("MacGreek", /* JDK 1.1 */ + ), mac_greek, - { mac_greek_mbtowc, nullptr }, { mac_greek_wctomb, nullptr }) + {mac_greek_mbtowc, nullptr}, {mac_greek_wctomb, nullptr}) + +DEFCODEPAGE(10006, mac_greek) -DEFENCODING(( "MacTurkish", /* JDK 1.1 */ - /*"CP10081", Windows */ - ), +DEFENCODING(("MacTurkish", /* JDK 1.1 */ + ), mac_turkish, - { mac_turkish_mbtowc, nullptr }, { mac_turkish_wctomb, nullptr }) + {mac_turkish_mbtowc, nullptr}, {mac_turkish_wctomb, nullptr}) -DEFENCODING(( "MacHebrew", /* JDK 1.1 */ - /*"CP10005", Windows */ - ), +DEFCODEPAGE(10081, mac_turkish) + +DEFENCODING(("MacHebrew", /* JDK 1.1 */ + ), mac_hebrew, - { mac_hebrew_mbtowc, nullptr }, { mac_hebrew_wctomb, nullptr }) + {mac_hebrew_mbtowc, nullptr}, {mac_hebrew_wctomb, nullptr}) + +DEFCODEPAGE(10005, mac_hebrew) -DEFENCODING(( "MacArabic", /* JDK 1.1 */ - /*"CP10004", Windows */ - ), +DEFENCODING(("MacArabic", /* JDK 1.1 */ + ), mac_arabic, - { mac_arabic_mbtowc, nullptr }, { mac_arabic_wctomb, nullptr }) + {mac_arabic_mbtowc, nullptr}, {mac_arabic_wctomb, nullptr}) -DEFENCODING(( "MacThai", /* JDK 1.1 */ - /*"CP10021", Windows */ - ), +DEFCODEPAGE(10004, mac_arabic) + +DEFENCODING(("MacThai", /* JDK 1.1 */ + ), mac_thai, - { mac_thai_mbtowc, nullptr }, { mac_thai_wctomb, nullptr }) + {mac_thai_mbtowc, nullptr}, {mac_thai_wctomb, nullptr}) + +DEFCODEPAGE(10021, mac_thai) /* Other platform specific 8-bit encodings */ -DEFENCODING(( "HP-ROMAN8", /* IANA, X11R6.4 */ - "ROMAN8", /* IANA */ - "R8", /* IANA */ - "csHPRoman8", /* IANA */ - ), +DEFENCODING(("HPROMAN8", /* IANA, X11R6.4 */ + "ROMAN8", /* IANA */ + "R8", /* IANA */ + "csHPRoman8", /* IANA */ + ), hp_roman8, - { hp_roman8_mbtowc, nullptr }, { hp_roman8_wctomb, nullptr }) + {hp_roman8_mbtowc, nullptr}, {hp_roman8_wctomb, nullptr}) -DEFENCODING(( "NEXTSTEP", - ), +DEFENCODING(("NEXTSTEP", ), nextstep, - { nextstep_mbtowc, nullptr }, { nextstep_wctomb, nullptr }) + {nextstep_mbtowc, nullptr}, {nextstep_wctomb, nullptr}) /* Regional 8-bit encodings used for a single language */ -DEFENCODING(( "ARMSCII-8", - ), +DEFENCODING(("ARMSCII8", ), armscii_8, - { armscii_8_mbtowc, nullptr }, { armscii_8_wctomb, nullptr }) + {armscii_8_mbtowc, nullptr}, {armscii_8_wctomb, nullptr}) -DEFENCODING(( "GEORGIAN-ACADEMY", - ), +DEFENCODING(("GEORGIANACADEMY", ), georgian_academy, - { georgian_academy_mbtowc, nullptr }, { georgian_academy_wctomb, nullptr }) + {georgian_academy_mbtowc, nullptr}, {georgian_academy_wctomb, nullptr}) -DEFENCODING(( "GEORGIAN-PS", - ), +DEFENCODING(("GEORGIANPS", ), georgian_ps, - { georgian_ps_mbtowc, nullptr }, { georgian_ps_wctomb, nullptr }) + {georgian_ps_mbtowc, nullptr}, {georgian_ps_wctomb, nullptr}) -DEFENCODING(( "KOI8-T", - ), +DEFENCODING(("KOI8T", ), koi8_t, - { koi8_t_mbtowc, nullptr }, { koi8_t_wctomb, nullptr }) - -DEFENCODING(( "PT154", /* IANA, glibc */ - "PTCP154", /* IANA */ - "CP154", /* IANA */ - "CYRILLIC-ASIAN", /* IANA */ - "csPTCP154", /* IANA */ - ), + {koi8_t_mbtowc, nullptr}, {koi8_t_wctomb, nullptr}) + +DEFENCODING(("PT154", /* IANA, glibc */ + "PTCP154", /* IANA */ + "CYRILLICASIAN", /* IANA */ + "csPTCP154", /* IANA */ + ), pt154, - { pt154_mbtowc, nullptr }, { pt154_wctomb, nullptr }) + {pt154_mbtowc, nullptr}, {pt154_wctomb, nullptr}) + +DEFCODEPAGE(154, pt154) -DEFENCODING(( "RK1048", /* IANA, glibc */ - "STRK1048-2002", /* IANA */ - "KZ-1048", /* IANA */ - "csKZ1048", /* IANA */ - ), +DEFENCODING(("RK1048", /* IANA, glibc */ + "STRK10482002", /* IANA */ + "KZ1048", /* IANA */ + "csKZ1048", /* IANA */ + ), rk1048, - { rk1048_mbtowc, nullptr }, { rk1048_wctomb, nullptr }) + {rk1048_mbtowc, nullptr}, {rk1048_wctomb, nullptr}) -DEFENCODING(( "MULELAO-1", - ), +DEFENCODING(("MULELAO1", ), mulelao, - { mulelao_mbtowc, nullptr }, { mulelao_wctomb, nullptr }) + {mulelao_mbtowc, nullptr}, {mulelao_wctomb, nullptr}) -DEFENCODING(( "CP1133", - "IBM-CP1133", - ), +DEFENCODING(("IBMCP1133", ), cp1133, - { cp1133_mbtowc, nullptr }, { cp1133_wctomb, nullptr }) - -DEFENCODING(( "TIS-620", /* IANA */ - "TIS620", /* glibc, HP-UX */ - "TIS620-0", /* glibc */ - "TIS620.2529-1", /* glibc */ - "TIS620.2533-0", /* glibc */ - "TIS620.2533-1", - "ISO-IR-166", /* glibc */ - ), + {cp1133_mbtowc, nullptr}, {cp1133_wctomb, nullptr}) + +DEFCODEPAGE(1133, cp1133) + +DEFENCODING(("TIS620", /* IANA, glibc, HP-UX */ + "TIS6200", /* glibc */ + "TIS620.25291", /* glibc */ + "TIS620.25330", /* glibc */ + "TIS620.25331", + "ISOIR166", /* glibc */ + "TACTIS", /* OSF/1 */ + "TIS620.2533", /* Solaris */ + ), tis620, - { tis620_mbtowc, nullptr }, { tis620_wctomb, nullptr }) -#ifdef USE_OSF1_ALIASES -DEFALIAS( "TACTIS", /* OSF/1 */ - tis620) -#endif -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "TIS620.2533", /* Solaris */ - tis620) -#endif - -DEFENCODING(( "CP874", /* JDK 1.1 */ - "WINDOWS-874", - ), + {tis620_mbtowc, nullptr}, {tis620_wctomb, nullptr}) + +DEFENCODING(("WINDOWS874", ), cp874, - { cp874_mbtowc, nullptr }, { cp874_wctomb, nullptr }) + {cp874_mbtowc, nullptr}, {cp874_wctomb, nullptr}) + +DEFCODEPAGE(874, cp874) -DEFENCODING(( "VISCII", /* IANA, RFC 1456 */ - "VISCII1.1-1", - "csVISCII", /* IANA */ - ), +DEFENCODING(("VISCII", /* IANA, RFC 1456 */ + "VISCII1.11", + "csVISCII", /* IANA */ + ), viscii, - { viscii_mbtowc, nullptr }, { viscii_wctomb, nullptr }) + {viscii_mbtowc, nullptr}, {viscii_wctomb, nullptr}) -DEFENCODING(( "TCVN", - "TCVN-5712", - "TCVN5712-1", - "TCVN5712-1:1993", - ), +DEFENCODING(("TCVN", + "TCVN5712", + "TCVN57121", + "TCVN57121:1993", ), tcvn, - { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, nullptr }) + {tcvn_mbtowc, tcvn_flushwc}, {tcvn_wctomb, nullptr}) /* CJK character sets (not documented) */ -DEFENCODING(( "JIS_C6220-1969-RO", /* IANA */ - "ISO646-JP", /* IANA */ - "ISO-IR-14", /* IANA */ - "JP", /* IANA */ - "csISO14JISC6220ro", /* IANA */ - ), +DEFENCODING(("JISC62201969RO", /* IANA */ + "ISO646JP", /* IANA */ + "ISOIR14", /* IANA */ + "JP", /* IANA */ + "csISO14JISC6220ro", /* IANA */ + ), iso646_jp, - { iso646_jp_mbtowc, nullptr }, { iso646_jp_wctomb, nullptr }) - -DEFENCODING(( "JIS_X0201", /* IANA */ - "JISX0201-1976", - "X0201", /* IANA */ - "csHalfWidthKatakana", /* IANA */ - /*"JISX0201.1976-0", X11R6.4 */ - /*"JIS0201", JDK 1.1 */ - ), + {iso646_jp_mbtowc, nullptr}, {iso646_jp_wctomb, nullptr}) + +DEFENCODING(("JISX0201", /* IANA */ + "JISX02011976", + "X0201", /* IANA */ + "csHalfWidthKatakana", /* IANA */ + ), jisx0201, - { jisx0201_mbtowc, nullptr }, { jisx0201_wctomb, nullptr }) - -DEFENCODING(( "JIS_X0208", - "JIS_X0208-1983", /* IANA */ - "JIS_X0208-1990", - "JIS0208", - "X0208", /* IANA */ - "ISO-IR-87", /* IANA */ - "JIS_C6226-1983", /* IANA */ - "csISO87JISX0208", /* IANA */ - /*"JISX0208.1983-0", X11R6.4 */ - /*"JISX0208.1990-0", X11R6.4 */ - /*"JIS0208", JDK 1.1 */ - ), + {jisx0201_mbtowc, nullptr}, {jisx0201_wctomb, nullptr}) + +DEFENCODING(("JISX0208", + "JISX02081983", /* IANA */ + "JISX02081990", + "JIS0208", + "X0208", /* IANA */ + "ISOIR87", /* IANA */ + "JISC62261983", /* IANA */ + "csISO87JISX0208", /* IANA */ + ), jisx0208, - { jisx0208_mbtowc, nullptr }, { jisx0208_wctomb, nullptr }) - -DEFENCODING(( "JIS_X0212", - "JIS_X0212.1990-0", - "JIS_X0212-1990", /* IANA */ - "X0212", /* IANA */ - "ISO-IR-159", /* IANA */ - "csISO159JISX02121990", /* IANA */ - /*"JISX0212.1990-0", X11R6.4 */ - /*"JIS0212", JDK 1.1 */ - ), + {jisx0208_mbtowc, nullptr}, {jisx0208_wctomb, nullptr}) + +DEFENCODING(("JISX0212", + "JISX0212.19900", + "JISX02121990", /* IANA */ + "X0212", /* IANA */ + "ISOIR159", /* IANA */ + "csISO159JISX02121990", /* IANA */ + ), jisx0212, - { jisx0212_mbtowc, nullptr }, { jisx0212_wctomb, nullptr }) - -DEFENCODING(( "GB_1988-80", /* IANA */ - "ISO646-CN", /* IANA */ - "ISO-IR-57", /* IANA */ - "CN", /* IANA */ - "csISO57GB1988", /* IANA */ - ), + {jisx0212_mbtowc, nullptr}, {jisx0212_wctomb, nullptr}) + +DEFENCODING(("GB198880", /* IANA */ + "ISO646CN", /* IANA */ + "ISOIR57", /* IANA */ + "CN", /* IANA */ + "csISO57GB1988", /* IANA */ + ), iso646_cn, - { iso646_cn_mbtowc, nullptr }, { iso646_cn_wctomb, nullptr }) + {iso646_cn_mbtowc, nullptr}, {iso646_cn_wctomb, nullptr}) -DEFENCODING(( "GB_2312-80", /* IANA */ - "ISO-IR-58", /* IANA */ - "csISO58GB231280", /* IANA */ - /*"GB2312.1980-0", X11R6.4 */ - ), +DEFENCODING(("GB231280", /* IANA */ + "ISOIR58", /* IANA */ + "csISO58GB231280", /* IANA */ + ), gb2312, - { gb2312_mbtowc, nullptr }, { gb2312_wctomb, nullptr }) + {gb2312_mbtowc, nullptr}, {gb2312_wctomb, nullptr}) -DEFENCODING(( "ISO-IR-165", - "CN-GB-ISOIR165", /* RFC 1922 */ - ), +DEFENCODING(("ISOIR165", + "CNGBISOIR165", /* RFC 1922 */ + ), isoir165, - { isoir165_mbtowc, nullptr }, { isoir165_wctomb, nullptr }) - -DEFENCODING(( "KSC_5601", /* IANA */ - "KS_C_5601-1987", /* IANA */ - "KS_C_5601-1989", /* IANA */ - "ISO-IR-149", /* IANA */ - "csKSC56011987", /* IANA */ - "KOREAN", /* IANA */ - /*"KSC5601.1987-0", X11R6.4 */ - /*"KSX1001:1992", Ken Lunde */ - ), + {isoir165_mbtowc, nullptr}, {isoir165_wctomb, nullptr}) + +DEFENCODING(("KSC5601", /* IANA */ + "KSC56011987", /* IANA */ + "KSC56011989", /* IANA */ + "ISOIR149", /* IANA */ + "csKSC56011987", /* IANA */ + "KOREAN", /* IANA */ + ), ksc5601, - { ksc5601_mbtowc, nullptr }, { ksc5601_wctomb, nullptr }) + {ksc5601_mbtowc, nullptr}, {ksc5601_wctomb, nullptr}) /* CJK encodings */ -DEFENCODING(( "EUC-JP", /* IANA */ - "EUCJP", /* glibc, HP-UX, IRIX, OSF/1, Solaris */ - "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */ - "csEUCPkdFmtJapanese", /* IANA */ - "IBM-EUCJP", - "SDECKANJI" - /*"EUC_JP", JDK 1.1 */ - /*"CP51932", Windows */ - ), +DEFENCODING(("EUCJP", /* IANA, glibc, HP-UX, IRIX, OSF/1, Solaris */ + "ExtendedUNIXCodePackedFormatforJapanese", /* IANA */ + "csEUCPkdFmtJapanese", /* IANA */ + "IBMEUCJP", /* AIX */ + "SDECKANJI", /* OSF/1 */ + ), euc_jp, - { euc_jp_mbtowc, nullptr }, { euc_jp_wctomb, nullptr }) - -DEFENCODING(( "SHIFT_JIS", /* IANA */ - "SHIFT-JIS", /* glibc */ - "SJIS", /* JDK 1.1, HP-UX, OSF/1 */ - "MS_KANJI", /* IANA */ - "csShiftJIS", /* IANA */ - "PCK" - ), + {euc_jp_mbtowc, nullptr}, {euc_jp_wctomb, nullptr}) + +DEFCODEPAGE(51932, euc_jp) + +DEFENCODING(("SHIFTJIS", /* IANA, glibc */ + "SJIS", /* JDK 1.1, HP-UX, OSF/1 */ + "MSKANJI", /* IANA */ + "csShiftJIS", /* IANA */ + "PCK", /* Solaris */ + ), sjis, - { sjis_mbtowc, nullptr }, { sjis_wctomb, nullptr }) + {sjis_mbtowc, nullptr}, {sjis_wctomb, nullptr}) -DEFENCODING(( "CP932", /* glibc */ - "IBM-932" - ), +DEFENCODING(("IBM932", /* AIX */ + ), cp932, - { cp932_mbtowc, nullptr }, { cp932_wctomb, nullptr }) + {cp932_mbtowc, nullptr}, {cp932_wctomb, nullptr}) -DEFENCODING(( "ISO-2022-JP", /* IANA, RFC 1468 */ - "csISO2022JP", /* IANA */ - /*"ISO2022JP", JDK 1.1 */ - ), +DEFCODEPAGE(932, cp932) + +DEFENCODING(("ISO2022JP", /* IANA, RFC 1468 */ + "csISO2022JP", /* IANA */ + /*"ISO2022JP", JDK 1.1 */ + ), iso2022_jp, - { iso2022_jp_mbtowc, nullptr }, { iso2022_jp_wctomb, iso2022_jp_reset }) + {iso2022_jp_mbtowc, nullptr}, {iso2022_jp_wctomb, iso2022_jp_reset}) -DEFENCODING(( "ISO-2022-JP-1", /* RFC 2237 */ - ), +DEFENCODING(("ISO2022JP1", /* RFC 2237 */ + ), iso2022_jp1, - { iso2022_jp1_mbtowc, nullptr }, { iso2022_jp1_wctomb, iso2022_jp1_reset }) + {iso2022_jp1_mbtowc, nullptr}, {iso2022_jp1_wctomb, iso2022_jp1_reset}) -DEFENCODING(( "ISO-2022-JP-2", /* IANA, RFC 1554 */ - "csISO2022JP2", /* IANA */ - ), +DEFENCODING(("ISO2022JP2", /* IANA, RFC 1554 */ + "csISO2022JP2", /* IANA */ + ), iso2022_jp2, - { iso2022_jp2_mbtowc, nullptr }, { iso2022_jp2_wctomb, iso2022_jp2_reset }) + {iso2022_jp2_mbtowc, nullptr}, {iso2022_jp2_wctomb, iso2022_jp2_reset}) -DEFENCODING(( "ISO-2022-JP-MS", - "CP50221", - /*"ISO-2022-JP-ESC", Windows */ - ), +DEFENCODING(("ISO2022JPMS", ), iso2022_jpms, - { iso2022_jpms_mbtowc, nullptr }, { iso2022_jpms_wctomb, iso2022_jpms_reset }) - -DEFENCODING(( "EUC-CN", /* glibc */ - "EUCCN", /* glibc, IRIX */ - "GB2312", /* IANA */ - "CN-GB", /* RFC 1922 */ - "csGB2312", /* IANA */ - "CHINESE", /* IANA */ - "IBM-EUCCN","HP15CN","DECHANZI" - /*"EUC_CN", JDK 1.1 */ - /*"CP51936", Windows */ - ), + {iso2022_jpms_mbtowc, nullptr}, {iso2022_jpms_wctomb, iso2022_jpms_reset}) + +DEFCODEPAGE(50221, iso2022_jpms) + +DEFENCODING(("EUCCN", /* glibc, IRIX */ + "GB2312", /* IANA */ + "CNGB", /* RFC 1922 */ + "csGB2312", /* IANA */ + "CHINESE", /* IANA */ + "IBMEUCCN", /* AIX */ + "HP15CN", /* HP-UX */ + "DECHANZI", /* OSF/1 */ + ), euc_cn, - { euc_cn_mbtowc, nullptr }, { euc_cn_wctomb, nullptr }) + {euc_cn_mbtowc, nullptr}, {euc_cn_wctomb, nullptr}) + +DEFCODEPAGE(51936, euc_cn) -DEFENCODING(( "GBK", /* IANA, JDK 1.1 */ - ), /* See CP936 */ +DEFENCODING(("GBK", /* IANA, JDK 1.1 */ + ), ces_gbk, - { ces_gbk_mbtowc, nullptr }, { ces_gbk_wctomb, nullptr }) + {ces_gbk_mbtowc, nullptr}, {ces_gbk_wctomb, nullptr}) -DEFENCODING(( "CP936", /* IANA */ - "MS936", /* IANA */ - "WINDOWS-936", /* IANA */ - ), +DEFENCODING(("MS936", /* IANA */ + "WINDOWS936", /* IANA */ + ), cp936, - { cp936_mbtowc, nullptr }, { cp936_wctomb, nullptr }) + {cp936_mbtowc, nullptr}, {cp936_wctomb, nullptr}) -DEFENCODING(( "GB18030", /* IANA, glibc */ - /*"CP54936", Windows */ - "GB18030:2005", - ), +DEFCODEPAGE(936, cp936) + +DEFENCODING(("GB18030:2005", ), gb18030_2005, - { gb18030_2005_mbtowc, nullptr },{ gb18030_2005_wctomb, nullptr }) + {gb18030_2005_mbtowc, nullptr}, {gb18030_2005_wctomb, nullptr}) -DEFENCODING(( "GB18030:2022", - ), +DEFENCODING(("GB18030", /* IANA, glibc */ + "GB18030:2022", ), gb18030_2022, - { gb18030_2022_mbtowc, nullptr },{ gb18030_2022_wctomb, nullptr }) + {gb18030_2022_mbtowc, nullptr}, {gb18030_2022_wctomb, nullptr}) + +DEFCODEPAGE(54936, gb18030_2022) -DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */ - "csISO2022CN", - /*"ISO2022CN", JDK 1.1 */ - ), +DEFENCODING(("ISO2022CN", /* IANA, RFC 1922 */ + "csISO2022CN", + /*"ISO2022CN", JDK 1.1 */ + ), iso2022_cn, - { iso2022_cn_mbtowc, nullptr }, { iso2022_cn_wctomb, iso2022_cn_reset }) + {iso2022_cn_mbtowc, nullptr}, {iso2022_cn_wctomb, iso2022_cn_reset}) -DEFENCODING(( "ISO-2022-CN-EXT", /* IANA, RFC 1922 */ - ), +DEFENCODING(("ISO2022CNEXT", /* IANA, RFC 1922 */ + ), iso2022_cn_ext, - { iso2022_cn_ext_mbtowc, nullptr }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset }) + {iso2022_cn_ext_mbtowc, nullptr}, {iso2022_cn_ext_wctomb, iso2022_cn_ext_reset}) -DEFENCODING(( "HZ", /* RFC 1843 */ - "HZ-GB-2312", /* IANA, RFC 1842 */ - /*"CP52936", Windows */ - ), +DEFENCODING(("HZ", /* RFC 1843 */ + "HZGB2312", /* IANA, RFC 1842 */ + /*"CP52936", Windows */ + ), hz, - { hz_mbtowc, nullptr }, { hz_wctomb, hz_reset }) - -DEFENCODING(( "EUC-TW", /* glibc */ - "EUCTW", /* glibc, HP-UX, IRIX, OSF/1 */ - "csEUCTW","IBM-EUCTW","CNS11643" - /*"EUC_TW", JDK 1.1 */ - /*"CP51950", Windows */ - ), + {hz_mbtowc, nullptr}, {hz_wctomb, hz_reset}) + +DEFCODEPAGE(52936, hz) + +DEFENCODING(("EUCTW", /* glibc, HPUX, IRIX, OSF/1 */ + "csEUCTW", + "IBMEUCTW", /* AIX */ + "CNS11643", /* Solaris */ + ), euc_tw, - { euc_tw_mbtowc, nullptr }, { euc_tw_wctomb, nullptr }) - -DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */ - "BIG-5", /* glibc */ - "BIG-FIVE", /* glibc */ - "BIGFIVE", /* glibc */ - "CN-BIG5", /* RFC 1922 */ - "csBig5", /* IANA */ - ), /* See CP950 */ + {euc_tw_mbtowc, nullptr}, {euc_tw_wctomb, nullptr}) + +DEFCODEPAGE(51950, euc_tw) + +DEFENCODING(("BIG5", /* IANA, JDK 1.1, glibc */ + "BIGFIVE", /* glibc */ + "CNBIG5", /* RFC 1922 */ + "csBig5", /* IANA */ + ), ces_big5, - { ces_big5_mbtowc, nullptr }, { ces_big5_wctomb, nullptr }) + {ces_big5_mbtowc, nullptr}, {ces_big5_wctomb, nullptr}) -DEFENCODING(( "CP950", /* JDK 1.1 */ - ), +DEFENCODING(("WINDOWS950", /* JDK 1.1 */ + ), cp950, - { cp950_mbtowc, nullptr }, { cp950_wctomb, nullptr }) + {cp950_mbtowc, nullptr}, {cp950_wctomb, nullptr}) -DEFENCODING(( "BIG5-HKSCS:1999", - ), +DEFCODEPAGE(950, cp950) + +DEFENCODING(("BIG5HKSCS:1999", ), big5hkscs1999, - { big5hkscs1999_mbtowc, big5hkscs1999_flushwc }, { big5hkscs1999_wctomb, big5hkscs1999_reset }) + {big5hkscs1999_mbtowc, big5hkscs1999_flushwc}, {big5hkscs1999_wctomb, big5hkscs1999_reset}) -DEFENCODING(( "BIG5-HKSCS:2001", - ), +DEFENCODING(("BIG5HKSCS:2001", ), big5hkscs2001, - { big5hkscs2001_mbtowc, big5hkscs2001_flushwc }, { big5hkscs2001_wctomb, big5hkscs2001_reset }) + {big5hkscs2001_mbtowc, big5hkscs2001_flushwc}, {big5hkscs2001_wctomb, big5hkscs2001_reset}) -DEFENCODING(( "BIG5-HKSCS:2004", - ), +DEFENCODING(("BIG5HKSCS:2004", ), big5hkscs2004, - { big5hkscs2004_mbtowc, big5hkscs2004_flushwc }, { big5hkscs2004_wctomb, big5hkscs2004_reset }) + {big5hkscs2004_mbtowc, big5hkscs2004_flushwc}, {big5hkscs2004_wctomb, big5hkscs2004_reset}) -DEFENCODING(( "BIG5-HKSCS", /* IANA */ - "BIG5HKSCS", /* glibc */ - "BIG5-HKSCS:2008", - ), +DEFENCODING(("BIG5HKSCS", /* IANA, glibc */ + "BIG5HKSCS:2008", ), big5hkscs2008, - { big5hkscs2008_mbtowc, big5hkscs2008_flushwc }, { big5hkscs2008_wctomb, big5hkscs2008_reset }) - -DEFENCODING(( "EUC-KR", /* IANA, RFC 1557 */ - "EUCKR", /* glibc, HP-UX, IRIX, OSF/1 */ - "csEUCKR", /* IANA */ - /*"EUC_KR", JDK 1.1 */ - /*"CP51949", Windows */ - ), + {big5hkscs2008_mbtowc, big5hkscs2008_flushwc}, {big5hkscs2008_wctomb, big5hkscs2008_reset}) + +DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ + "csEUCKR", /* IANA */ + "IBMEUCKR", /* AIX */ + "DECKOREAN", /* OSF/1 */ + "5601", /* Solaris */ + ), euc_kr, - { euc_kr_mbtowc, nullptr }, { euc_kr_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-EUCKR", /* AIX */ - euc_kr) -#endif -#ifdef USE_OSF1_ALIASES -DEFALIAS( "DECKOREAN", /* OSF/1 */ - euc_kr) -#endif -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "5601", /* Solaris */ - euc_kr) -#endif - -DEFENCODING(( "CP949", /* JDK 1.1 */ - "UHC", /* glibc */ - ), + {euc_kr_mbtowc, nullptr}, {euc_kr_wctomb, nullptr}) + +DEFCODEPAGE(51949, euc_kr) + +DEFENCODING(("UHC", /* glibc */ + ), cp949, - { cp949_mbtowc, nullptr }, { cp949_wctomb, nullptr }) -#ifdef USE_OSF1_ALIASES -DEFALIAS( "KSC5601", /* OSF/1 */ - cp949) -#endif - -DEFENCODING(( "JOHAB", /* glibc */ - "CP1361", /* glibc */ - ), - johab, - { johab_mbtowc, nullptr }, { johab_wctomb, nullptr }) -#ifdef USE_SOLARIS_ALIASES -DEFALIAS( "KO_KR.JOHAP92", /* Solaris */ - johab) -#endif - -DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */ - "csISO2022KR", /* IANA */ - /*"ISO2022KR", JDK 1.1 */ - /*"CP50225", Windows */ - ), - iso2022_kr, - { iso2022_kr_mbtowc, nullptr }, { iso2022_kr_wctomb, iso2022_kr_reset }) + {cp949_mbtowc, nullptr}, {cp949_wctomb, nullptr}) -DEFENCODING(( "DEC-KANJI", - "DECKANJI" - ), - dec_kanji, - { dec_kanji_mbtowc, nullptr }, { dec_kanji_wctomb, nullptr }) +DEFCODEPAGE(949, cp949) -DEFENCODING(( "DEC-HANYU","DECHANYU" - ), - dec_hanyu, - { dec_hanyu_mbtowc, nullptr }, { dec_hanyu_wctomb, nullptr }) +DEFENCODING(("JOHAB", /* glibc */ + "KOKR.JOHAP92", /* Solaris */ + ), + johab, + {johab_mbtowc, nullptr}, {johab_wctomb, nullptr}) +DEFCODEPAGE(1361, johab) -/* Copyright (C) 2000-2002, 2008 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. +DEFENCODING(("ISO2022KR", /* IANA, RFC 1557 */ + "csISO2022KR", /* IANA */ + /*"ISO2022KR", JDK 1.1 */ + /*"CP50225", Windows */ + ), + iso2022_kr, + {iso2022_kr_mbtowc, nullptr}, {iso2022_kr_wctomb, iso2022_kr_reset}) - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. +DEFCODEPAGE(50225, iso2022_kr) - The cppp-reiconv library 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 - Lesser General Public License for more details. +DEFENCODING(("DECKANJI", ), + dec_kanji, + {dec_kanji_mbtowc, nullptr}, {dec_kanji_wctomb, nullptr}) - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ +DEFENCODING(("DECHANYU", /* OSF/1 */ + ), + dec_hanyu, + {dec_hanyu_mbtowc, nullptr}, {dec_hanyu_wctomb, nullptr}) /* Encodings used by system dependent locales on AIX. */ -DEFENCODING(( "CP856", - ), +DEFENCODING(("IBM856", /* AIX */ + ), cp856, - { cp856_mbtowc, nullptr }, { cp856_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-856", /* AIX */ - cp856) -#endif - -DEFENCODING(( "CP922", - ), + {cp856_mbtowc, nullptr}, {cp856_wctomb, nullptr}) + +DEFCODEPAGE(856, cp856) + +DEFENCODING(("IBM922", /* AIX */ + ), cp922, - { cp922_mbtowc, nullptr }, { cp922_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-922", /* AIX */ - cp922) -#endif - -DEFENCODING(( "CP943", - ), + {cp922_mbtowc, nullptr}, {cp922_wctomb, nullptr}) + +DEFCODEPAGE(922, cp922) + +DEFENCODING(("IBM943", /* AIX */ + ), cp943, - { cp943_mbtowc, nullptr }, { cp943_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-943", /* AIX */ - cp943) -#endif - -DEFENCODING(( "CP1046", - ), + {cp943_mbtowc, nullptr}, {cp943_wctomb, nullptr}) + +DEFCODEPAGE(943, cp943) + +DEFENCODING(("IBM1046", /* AIX */ + ), cp1046, - { cp1046_mbtowc, nullptr }, { cp1046_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1046", /* AIX */ - cp1046) -#endif - -DEFENCODING(( "CP1124", - ), + {cp1046_mbtowc, nullptr}, {cp1046_wctomb, nullptr}) + +DEFCODEPAGE(1046, cp1046) + +DEFENCODING(("IBM1124", /* AIX */ + ), cp1124, - { cp1124_mbtowc, nullptr }, { cp1124_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1124", /* AIX */ - cp1124) -#endif - -DEFENCODING(( "CP1129", - ), + {cp1124_mbtowc, nullptr}, {cp1124_wctomb, nullptr}) + +DEFCODEPAGE(1124, cp1124) + +DEFENCODING(("IBM1129", /* AIX */ + ), cp1129, - { cp1129_mbtowc, nullptr }, { cp1129_wctomb, nullptr }) -#ifdef USE_AIX_ALIASES -DEFALIAS( "IBM-1129", /* AIX */ - cp1129) -#endif - -DEFENCODING(( "CP1161", - "IBM1161", /* glibc */ - "IBM-1161", /* glibc */ - "csIBM1161", /* glibc */ - ), - cp1161, - { cp1161_mbtowc, nullptr }, { cp1161_wctomb, nullptr }) + {cp1129_mbtowc, nullptr}, {cp1129_wctomb, nullptr}) -DEFENCODING(( "CP1162", - "IBM1162", /* glibc */ - "IBM-1162", /* glibc */ - "csIBM1162", /* glibc */ - ), - cp1162, - { cp1162_mbtowc, nullptr }, { cp1162_wctomb, nullptr }) +DEFCODEPAGE(1129, cp1129) -DEFENCODING(( "CP1163", - "IBM1163", /* glibc */ - "IBM-1163", /* glibc */ - "csIBM1163", /* glibc */ - ), - cp1163, - { cp1163_mbtowc, nullptr }, { cp1163_wctomb, nullptr }) +DEFENCODING(("IBM1161", /* glibc */ + "csIBM1161", /* glibc */ + ), + cp1161, + {cp1161_mbtowc, nullptr}, {cp1161_wctomb, nullptr}) +DEFCODEPAGE(1161, cp1161) -/* Copyright (C) 2001-2002 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. +DEFENCODING(("IBM1162", /* glibc */ + "csIBM1162", /* glibc */ + ), + cp1162, + {cp1162_mbtowc, nullptr}, {cp1162_wctomb, nullptr}) - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. +DEFCODEPAGE(1162, cp1162) - The cppp-reiconv library 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 - Lesser General Public License for more details. +DEFENCODING(("IBM1163", /* glibc */ + "csIBM1163", /* glibc */ + ), + cp1163, + {cp1163_mbtowc, nullptr}, {cp1163_wctomb, nullptr}) - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ +DEFCODEPAGE(1163, cp1163) /* Encodings used by system dependent locales on MSDOS. */ -DEFENCODING(( "CP437", /* IANA, JDK 1.1 */ - "IBM437", /* IANA */ - "437", /* IANA */ - "csPC8CodePage437", /* IANA */ - ), +DEFENCODING(("IBM437", /* IANA */ + "437", /* IANA */ + "csPC8CodePage437", /* IANA */ + ), cp437, - { cp437_mbtowc, nullptr }, { cp437_wctomb, nullptr }) + {cp437_mbtowc, nullptr}, {cp437_wctomb, nullptr}) -DEFENCODING(( "CP737", /* JDK 1.1 */ - "IBM737", /* Windows */ - ), +DEFCODEPAGE(437, cp437) + +DEFENCODING(("IBM737", /* Windows */ + ), cp737, - { cp737_mbtowc, nullptr }, { cp737_wctomb, nullptr }) + {cp737_mbtowc, nullptr}, {cp737_wctomb, nullptr}) + +DEFCODEPAGE(737, cp737) -DEFENCODING(( "CP775", /* IANA, JDK 1.1 */ - "IBM775", /* IANA */ - "csPC775Baltic", /* IANA */ - ), +DEFENCODING(("IBM775", /* IANA */ + "csPC775Baltic", /* IANA */ + ), cp775, - { cp775_mbtowc, nullptr }, { cp775_wctomb, nullptr }) + {cp775_mbtowc, nullptr}, {cp775_wctomb, nullptr}) -DEFENCODING(( "CP852", /* IANA, JDK 1.1 */ - "IBM852", /* IANA */ - "852", /* IANA */ - "csPCp852", /* IANA */ - ), +DEFCODEPAGE(775, cp775) + +DEFENCODING(("IBM852", /* IANA */ + "852", /* IANA */ + "csPCp852", /* IANA */ + ), cp852, - { cp852_mbtowc, nullptr }, { cp852_wctomb, nullptr }) + {cp852_mbtowc, nullptr}, {cp852_wctomb, nullptr}) + +DEFCODEPAGE(852, cp852) -DEFENCODING(( "CP853", - ), +DEFENCODING(("IBM853", + "853", + "CCSID853", /* dbpedia.org */ + "csIBM853" /* I don't know */ + ), cp853, - { cp853_mbtowc, nullptr }, { cp853_wctomb, nullptr }) + {cp853_mbtowc, nullptr}, {cp853_wctomb, nullptr}) -DEFENCODING(( "CP855", /* IANA, JDK 1.1 */ - "IBM855", /* IANA */ - "855", /* IANA */ - "csIBM855", /* IANA */ - ), +DEFCODEPAGE(853, cp853) + +DEFENCODING(("IBM855", /* IANA */ + "855", /* IANA */ + "csIBM855", /* IANA */ + ), cp855, - { cp855_mbtowc, nullptr }, { cp855_wctomb, nullptr }) + {cp855_mbtowc, nullptr}, {cp855_wctomb, nullptr}) + +DEFCODEPAGE(855, cp855) -DEFENCODING(( "CP857", /* IANA, JDK 1.1 */ - "IBM857", /* IANA */ - "857", /* IANA */ - "csIBM857", /* IANA */ - ), +DEFENCODING(("IBM857", /* IANA */ + "857", /* IANA */ + "csIBM857", /* IANA */ + ), cp857, - { cp857_mbtowc, nullptr }, { cp857_wctomb, nullptr }) + {cp857_mbtowc, nullptr}, {cp857_wctomb, nullptr}) -DEFENCODING(( "CP858", /* JDK 1.1.7 */ - ), +DEFCODEPAGE(857, cp857) + +DEFENCODING(("IBM858", + "858", + "IBM00858", /* Windows */ + "csIBM858"), cp858, - { cp858_mbtowc, nullptr }, { cp858_wctomb, nullptr }) + {cp858_mbtowc, nullptr}, {cp858_wctomb, nullptr}) + +DEFCODEPAGE(858, cp858) -DEFENCODING(( "CP860", /* IANA, JDK 1.1 */ - "IBM860", /* IANA */ - "860", /* IANA */ - "csIBM860", /* IANA */ - ), +DEFENCODING(("IBM860", /* IANA */ + "860", /* IANA */ + "csIBM860", /* IANA */ + ), cp860, - { cp860_mbtowc, nullptr }, { cp860_wctomb, nullptr }) - -DEFENCODING(( "CP861", /* IANA, JDK 1.1 */ - "IBM861", /* IANA */ - "861", /* IANA */ - "CP-IS", /* IANA */ - "csIBM861", /* IANA */ - ), + {cp860_mbtowc, nullptr}, {cp860_wctomb, nullptr}) + +DEFCODEPAGE(860, cp860) + +DEFENCODING(("IBM861", /* IANA */ + "861", /* IANA */ + "CPIS", /* IANA */ + "csIBM861", /* IANA */ + ), cp861, - { cp861_mbtowc, nullptr }, { cp861_wctomb, nullptr }) + {cp861_mbtowc, nullptr}, {cp861_wctomb, nullptr}) -DEFENCODING(( "CP863", /* IANA, JDK 1.1 */ - "IBM863", /* IANA */ - "863", /* IANA */ - "csIBM863", /* IANA */ - ), +DEFCODEPAGE(861, cp861) + +DEFENCODING(("IBM863", /* IANA */ + "863", /* IANA */ + "csIBM863", /* IANA */ + ), cp863, - { cp863_mbtowc, nullptr }, { cp863_wctomb, nullptr }) + {cp863_mbtowc, nullptr}, {cp863_wctomb, nullptr}) -DEFENCODING(( "CP864", /* IANA, JDK 1.1 */ - "IBM864", /* IANA */ - "csIBM864", /* IANA */ - ), - cp864, - { cp864_mbtowc, nullptr }, { cp864_wctomb, nullptr }) +DEFCODEPAGE(863, cp863) -DEFENCODING(( "CP865", /* IANA, JDK 1.1 */ - "IBM865", /* IANA */ - "865", /* IANA */ - "csIBM865", /* IANA */ - ), - cp865, - { cp865_mbtowc, nullptr }, { cp865_wctomb, nullptr }) - -DEFENCODING(( "CP869", /* IANA, JDK 1.1 */ - "IBM869", /* IANA */ - "869", /* IANA */ - "CP-GR", /* IANA */ - "csIBM869", /* IANA */ - ), - cp869, - { cp869_mbtowc, nullptr }, { cp869_wctomb, nullptr }) +DEFENCODING(("IBM864", /* IANA */ + "csIBM864", /* IANA */ + ), + cp864, + {cp864_mbtowc, nullptr}, {cp864_wctomb, nullptr}) -DEFENCODING(( "CP1125", /* ICU */ - ), - cp1125, - { cp1125_mbtowc, nullptr }, { cp1125_wctomb, nullptr }) +DEFCODEPAGE(864, cp864) +DEFENCODING(("IBM865", /* IANA */ + "865", /* IANA */ + "csIBM865", /* IANA */ + ), + cp865, + {cp865_mbtowc, nullptr}, {cp865_wctomb, nullptr}) +DEFCODEPAGE(865, cp865) -/* Copyright (C) 2022 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. +DEFENCODING(("IBM869", /* IANA */ + "869", /* IANA */ + "CPGR", /* IANA */ + "csIBM869", /* IANA */ + ), + cp869, + {cp869_mbtowc, nullptr}, {cp869_wctomb, nullptr}) - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. +DEFCODEPAGE(869, cp869) - The cppp-reiconv library 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 - Lesser General Public License for more details. +DEFENCODING(("IBM1125", + "1125", + "SYSTEM1125", + "csIBM1125" /* I don't know */ + ), + cp1125, + {cp1125_mbtowc, nullptr}, {cp1125_wctomb, nullptr}) - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ +DEFCODEPAGE(1125, cp1125) /* Encodings used by system dependent locales on z/OS. */ -DEFENCODING(( "IBM-037", - "IBM037", /* IANA */ - "CP037", /* IANA */ - "EBCDIC-CP-US", /* IANA */ - "EBCDIC-CP-CA", /* IANA */ - "EBCDIC-CP-WT", /* IANA */ - "EBCDIC-CP-NL", /* IANA */ - "csIBM037", /* IANA */ - ), +DEFENCODING(("IBM037", /* IANA */ + "EBCDICCPUS", /* IANA */ + "EBCDICCPCA", /* IANA */ + "EBCDICCPWT", /* IANA */ + "EBCDICCPNL", /* IANA */ + "csIBM037", /* IANA */ + ), ebcdic037, - { ebcdic037_mbtowc, nullptr }, { ebcdic037_wctomb, nullptr }) + {ebcdic037_mbtowc, nullptr}, {ebcdic037_wctomb, nullptr}) -DEFENCODING(( "IBM-273", - "IBM273", /* IANA */ - "CP273", /* IANA */ - "csIBM273", /* IANA */ - ), +DEFCODEPAGE(37, ebcdic037) + +DEFENCODING(("IBM273", /* IANA */ + "csIBM273", /* IANA */ + ), ebcdic273, - { ebcdic273_mbtowc, nullptr }, { ebcdic273_wctomb, nullptr }) - -DEFENCODING(( "IBM-277", - "IBM277", /* IANA */ - "EBCDIC-CP-DK", /* IANA */ - "EBCDIC-CP-NO", /* IANA */ - "csIBM277", /* IANA */ - ), + {ebcdic273_mbtowc, nullptr}, {ebcdic273_wctomb, nullptr}) + +DEFCODEPAGE(273, ebcdic273) + +DEFENCODING(("IBM277", /* IANA */ + "EBCDICCPDK", /* IANA */ + "EBCDICCPNO", /* IANA */ + "csIBM277", /* IANA */ + ), ebcdic277, - { ebcdic277_mbtowc, nullptr }, { ebcdic277_wctomb, nullptr }) - -DEFENCODING(( "IBM-278", - "IBM278", /* IANA */ - "CP278", /* IANA */ - "EBCDIC-CP-FI", /* IANA */ - "EBCDIC-CP-SE", /* IANA */ - "csIBM278", /* IANA */ - ), + {ebcdic277_mbtowc, nullptr}, {ebcdic277_wctomb, nullptr}) + +DEFCODEPAGE(277, ebcdic277) + +DEFENCODING(("IBM278", /* IANA */ + "EBCDICCPFI", /* IANA */ + "EBCDICCPSE", /* IANA */ + "csIBM278", /* IANA */ + ), ebcdic278, - { ebcdic278_mbtowc, nullptr }, { ebcdic278_wctomb, nullptr }) - -DEFENCODING(( "IBM-280", - "IBM280", /* IANA */ - "CP280", /* IANA */ - "EBCDIC-CP-IT", /* IANA */ - "csIBM280", /* IANA */ - ), + {ebcdic278_mbtowc, nullptr}, {ebcdic278_wctomb, nullptr}) + +DEFCODEPAGE(278, ebcdic278) + +DEFENCODING(("IBM280", /* IANA */ + "EBCDICCPIT", /* IANA */ + "csIBM280", /* IANA */ + ), ebcdic280, - { ebcdic280_mbtowc, nullptr }, { ebcdic280_wctomb, nullptr }) + {ebcdic280_mbtowc, nullptr}, {ebcdic280_wctomb, nullptr}) + +DEFCODEPAGE(280, ebcdic280) -DEFENCODING(( "IBM-282", - "IBM282", - ), +DEFENCODING(("IBM282", ), ebcdic282, - { ebcdic282_mbtowc, nullptr }, { ebcdic282_wctomb, nullptr }) - -DEFENCODING(( "IBM-284", - "IBM284", /* IANA */ - "CP284", /* IANA */ - "EBCDIC-CP-ES", /* IANA */ - "csIBM284", /* IANA */ - ), + {ebcdic282_mbtowc, nullptr}, {ebcdic282_wctomb, nullptr}) + +DEFCODEPAGE(282, ebcdic282) + +DEFENCODING(("IBM284", /* IANA */ + "EBCDICCPES", /* IANA */ + "csIBM284", /* IANA */ + ), ebcdic284, - { ebcdic284_mbtowc, nullptr }, { ebcdic284_wctomb, nullptr }) - -DEFENCODING(( "IBM-285", - "IBM285", /* IANA */ - "CP285", /* IANA */ - "EBCDIC-CP-GB", /* IANA */ - "csIBM285", /* IANA */ - ), + {ebcdic284_mbtowc, nullptr}, {ebcdic284_wctomb, nullptr}) + +DEFCODEPAGE(284, ebcdic284) + +DEFENCODING(("IBM285", /* IANA */ + "CP285", /* IANA */ + "EBCDICCPGB", /* IANA */ + "csIBM285", /* IANA */ + ), ebcdic285, - { ebcdic285_mbtowc, nullptr }, { ebcdic285_wctomb, nullptr }) - -DEFENCODING(( "IBM-297", - "IBM297", /* IANA */ - "CP297", /* IANA */ - "EBCDIC-CP-FR", /* IANA */ - "csIBM297", /* IANA */ - ), + {ebcdic285_mbtowc, nullptr}, {ebcdic285_wctomb, nullptr}) + +DEFCODEPAGE(285, ebcdic285) + +DEFENCODING(("IBM297", /* IANA */ + "EBCDICCPFR", /* IANA */ + "csIBM297", /* IANA */ + ), ebcdic297, - { ebcdic297_mbtowc, nullptr }, { ebcdic297_wctomb, nullptr }) - -DEFENCODING(( "IBM-423", - "IBM423", /* IANA */ - "CP423", /* IANA */ - "EBCDIC-CP-GR", /* IANA */ - "csIBM423", /* IANA */ - ), + {ebcdic297_mbtowc, nullptr}, {ebcdic297_wctomb, nullptr}) + +DEFCODEPAGE(297, ebcdic297) + +DEFENCODING(("IBM423", /* IANA */ + "EBCDICCPGR", /* IANA */ + "csIBM423", /* IANA */ + ), ebcdic423, - { ebcdic423_mbtowc, nullptr }, { ebcdic423_wctomb, nullptr }) - -DEFENCODING(( "IBM-424", - "IBM424", /* IANA */ - "CP424", /* IANA */ - "EBCDIC-CP-HE", /* IANA */ - "csIBM424", /* IANA */ - ), + {ebcdic423_mbtowc, nullptr}, {ebcdic423_wctomb, nullptr}) + +DEFCODEPAGE(423, ebcdic423) + +DEFENCODING(("IBM424", /* IANA */ + "EBCDICCPHE", /* IANA */ + "csIBM424", /* IANA */ + ), ebcdic424, - { ebcdic424_mbtowc, nullptr }, { ebcdic424_wctomb, nullptr }) + {ebcdic424_mbtowc, nullptr}, {ebcdic424_wctomb, nullptr}) + +DEFCODEPAGE(424, ebcdic424) -DEFENCODING(( "IBM-425", - "IBM425", - ), +DEFENCODING(("IBM425", ), ebcdic425, - { ebcdic425_mbtowc, nullptr }, { ebcdic425_wctomb, nullptr }) - -DEFENCODING(( "IBM-500", - "IBM500", /* IANA */ - "CP500", /* IANA */ - "EBCDIC-CP-BE", /* IANA */ - "EBCDIC-CP-CH", /* IANA */ - "csIBM500", /* IANA */ - ), + {ebcdic425_mbtowc, nullptr}, {ebcdic425_wctomb, nullptr}) + +DEFCODEPAGE(425, ebcdic425) + +DEFENCODING(("IBM500", /* IANA */ + "EBCDICCPBE", /* IANA */ + "EBCDICCPCH", /* IANA */ + "csIBM500", /* IANA */ + ), ebcdic500, - { ebcdic500_mbtowc, nullptr }, { ebcdic500_wctomb, nullptr }) + {ebcdic500_mbtowc, nullptr}, {ebcdic500_wctomb, nullptr}) -DEFENCODING(( "IBM-838", - "IBM838", - "IBM-THAI", /* IANA */ - "csIBMThai", /* IANA */ - ), +DEFCODEPAGE(500, ebcdic500) + +DEFENCODING(("IBM838", + "IBMTHAI", /* IANA */ + "csIBMThai", /* IANA */ + ), ebcdic838, - { ebcdic838_mbtowc, nullptr }, { ebcdic838_wctomb, nullptr }) - -DEFENCODING(( "IBM-870", - "IBM870", /* IANA */ - "CP870", /* IANA */ - "EBCDIC-CP-ROECE", /* IANA */ - "EBCDIC-CP-YU", /* IANA */ - "csIBM870", /* IANA */ - ), + {ebcdic838_mbtowc, nullptr}, {ebcdic838_wctomb, nullptr}) + +DEFCODEPAGE(838, ebcdic838) + +DEFENCODING(("IBM870", /* IANA */ + "CP870", /* IANA */ + "EBCDICCPROECE", /* IANA */ + "EBCDICCPYU", /* IANA */ + "csIBM870", /* IANA */ + ), ebcdic870, - { ebcdic870_mbtowc, nullptr }, { ebcdic870_wctomb, nullptr }) - -DEFENCODING(( "IBM-871", - "IBM871", /* IANA */ - "CP871", /* IANA */ - "EBCDIC-CP-IS", /* IANA */ - "csIBM871", /* IANA */ - ), + {ebcdic870_mbtowc, nullptr}, {ebcdic870_wctomb, nullptr}) + +DEFCODEPAGE(870, ebcdic870) + +DEFENCODING(("IBM871", /* IANA */ + "EBCDICCPIS", /* IANA */ + "csIBM871", /* IANA */ + ), ebcdic871, - { ebcdic871_mbtowc, nullptr }, { ebcdic871_wctomb, nullptr }) + {ebcdic871_mbtowc, nullptr}, {ebcdic871_wctomb, nullptr}) + +DEFCODEPAGE(871, ebcdic871) -DEFENCODING(( "IBM-875", - "IBM875", /* glibc */ - "CP875", /* glibc */ - "EBCDIC-GREEK", /* glibc */ - ), +DEFENCODING(("IBM875", /* glibc */ + "EBCDICGREEK", /* glibc */ + ), ebcdic875, - { ebcdic875_mbtowc, nullptr }, { ebcdic875_wctomb, nullptr }) - -DEFENCODING(( "IBM-880", - "IBM880", /* IANA */ - "CP880", /* IANA */ - "EBCDIC-CYRILLIC", /* IANA */ - "csIBM880", /* IANA */ - ), + {ebcdic875_mbtowc, nullptr}, {ebcdic875_wctomb, nullptr}) + +DEFCODEPAGE(875, ebcdic875) + +DEFENCODING(("IBM880", /* IANA */ + "EBCDICCYRILLIC", /* IANA */ + "csIBM880", /* IANA */ + ), ebcdic880, - { ebcdic880_mbtowc, nullptr }, { ebcdic880_wctomb, nullptr }) - -DEFENCODING(( "IBM-905", - "IBM905", /* IANA */ - "CP905", /* IANA */ - "EBCDIC-CP-TR", /* IANA */ - "csIBM905", /* IANA */ - ), + {ebcdic880_mbtowc, nullptr}, {ebcdic880_wctomb, nullptr}) + +DEFCODEPAGE(880, ebcdic880) + +DEFENCODING(("IBM905", /* IANA */ + "EBCDICCPTR", /* IANA */ + "csIBM905", /* IANA */ + ), ebcdic905, - { ebcdic905_mbtowc, nullptr }, { ebcdic905_wctomb, nullptr }) - -DEFENCODING(( "IBM-924", - "IBM924", - "IBM00924", /* IANA */ - "CCSID00924", /* IANA */ - "CP00924", /* IANA */ - "EBCDIC-LATIN9-EURO", /* IANA */ - "csIBM00924", /* IANA */ - ), + {ebcdic905_mbtowc, nullptr}, {ebcdic905_wctomb, nullptr}) + +DEFCODEPAGE(905, ebcdic905) + +DEFENCODING(("IBM924", + "IBM00924", /* IANA */ + "CCSID00924", /* IANA */ + "CP00924", /* IANA */ + "EBCDICLATIN9EURO", /* IANA */ + "csIBM00924", /* IANA */ + ), ebcdic924, - { ebcdic924_mbtowc, nullptr }, { ebcdic924_wctomb, nullptr }) + {ebcdic924_mbtowc, nullptr}, {ebcdic924_wctomb, nullptr}) + +DEFCODEPAGE(924, ebcdic924) -DEFENCODING(( "IBM-1025", - "IBM1025", /* glibc */ - "CP1025", /* glibc */ - ), +DEFENCODING(("IBM1025", /* glibc */ + ), ebcdic1025, - { ebcdic1025_mbtowc, nullptr }, { ebcdic1025_wctomb, nullptr }) + {ebcdic1025_mbtowc, nullptr}, {ebcdic1025_wctomb, nullptr}) -DEFENCODING(( "IBM-1026", - "IBM1026", /* IANA */ - "CP1026", /* IANA */ - "csIBM1026", /* IANA */ - ), +DEFCODEPAGE(1025, ebcdic1025) + +DEFENCODING(("IBM1026", /* IANA */ + "csIBM1026", /* IANA */ + ), ebcdic1026, - { ebcdic1026_mbtowc, nullptr }, { ebcdic1026_wctomb, nullptr }) + {ebcdic1026_mbtowc, nullptr}, {ebcdic1026_wctomb, nullptr}) + +DEFCODEPAGE(1026, ebcdic1026) -DEFENCODING(( "IBM-1047", /* IANA */ - "IBM1047", /* IANA */ - "CP1047", /* glibc */ - "csIBM1047", /* IANA */ - ), +DEFENCODING(("IBM1047", /* IANA */ + "csIBM1047", /* IANA */ + ), ebcdic1047, - { ebcdic1047_mbtowc, nullptr }, { ebcdic1047_wctomb, nullptr }) + {ebcdic1047_mbtowc, nullptr}, {ebcdic1047_wctomb, nullptr}) -DEFENCODING(( "IBM-1097", - "IBM1097", /* glibc */ - "CP1097", /* glibc */ - ), +DEFCODEPAGE(1047, ebcdic1047) + +DEFENCODING(("IBM1097", /* glibc */ + ), ebcdic1097, - { ebcdic1097_mbtowc, nullptr }, { ebcdic1097_wctomb, nullptr }) + {ebcdic1097_mbtowc, nullptr}, {ebcdic1097_wctomb, nullptr}) + +DEFCODEPAGE(1097, ebcdic1097) -DEFENCODING(( "IBM-1112", - "IBM1112", /* glibc */ - "CP1112", /* glibc */ - ), +DEFENCODING(("IBM1112", /* glibc */ + ), ebcdic1112, - { ebcdic1112_mbtowc, nullptr }, { ebcdic1112_wctomb, nullptr }) + {ebcdic1112_mbtowc, nullptr}, {ebcdic1112_wctomb, nullptr}) -DEFENCODING(( "IBM-1122", - "IBM1122", /* glibc */ - "CP1122", /* glibc */ - ), +DEFCODEPAGE(1112, ebcdic1112) + +DEFENCODING(("IBM1122", /* glibc */ + ), ebcdic1122, - { ebcdic1122_mbtowc, nullptr }, { ebcdic1122_wctomb, nullptr }) + {ebcdic1122_mbtowc, nullptr}, {ebcdic1122_wctomb, nullptr}) + +DEFCODEPAGE(1122, ebcdic1122) -DEFENCODING(( "IBM-1123", - "IBM1123", /* glibc */ - "CP1123", /* glibc */ - ), +DEFENCODING(("IBM1123", /* glibc */ + ), ebcdic1123, - { ebcdic1123_mbtowc, nullptr }, { ebcdic1123_wctomb, nullptr }) + {ebcdic1123_mbtowc, nullptr}, {ebcdic1123_wctomb, nullptr}) -DEFENCODING(( "IBM-1130", - "IBM1130", /* glibc */ - "CP1130", /* glibc */ - ), +DEFCODEPAGE(1123, ebcdic1123) + +DEFENCODING(("IBM1130", /* glibc */ + ), ebcdic1130, - { ebcdic1130_mbtowc, nullptr }, { ebcdic1130_wctomb, nullptr }) + {ebcdic1130_mbtowc, nullptr}, {ebcdic1130_wctomb, nullptr}) + +DEFCODEPAGE(1130, ebcdic1130) -DEFENCODING(( "IBM-1132", - "IBM1132", /* glibc */ - "CP1132", /* glibc */ - ), +DEFENCODING(("IBM1132", /* glibc */ + ), ebcdic1132, - { ebcdic1132_mbtowc, nullptr }, { ebcdic1132_wctomb, nullptr }) + {ebcdic1132_mbtowc, nullptr}, {ebcdic1132_wctomb, nullptr}) -DEFENCODING(( "IBM-1137", - "IBM1137", /* glibc */ - "CP1137", /* glibc */ - ), +DEFCODEPAGE(1132, ebcdic1132) + +DEFENCODING(("IBM1137", /* glibc */ + ), ebcdic1137, - { ebcdic1137_mbtowc, nullptr }, { ebcdic1137_wctomb, nullptr }) - -DEFENCODING(( "IBM-1140", - "IBM1140", - "IBM01140", /* IANA */ - "CCSID01140", /* IANA */ - "CP01140", /* IANA */ - "EBCDIC-US-37+EURO", /* IANA */ - "csIBM01140", /* IANA */ - ), + {ebcdic1137_mbtowc, nullptr}, {ebcdic1137_wctomb, nullptr}) + +DEFCODEPAGE(1137, ebcdic1137) + +DEFENCODING(("IBM1140", + "IBM01140", /* IANA */ + "CCSID01140", /* IANA */ + "CP01140", /* IANA */ + "EBCDICUS37+EURO", /* IANA */ + "csIBM01140", /* IANA */ + ), ebcdic1140, - { ebcdic1140_mbtowc, nullptr }, { ebcdic1140_wctomb, nullptr }) - -DEFENCODING(( "IBM-1141", - "IBM1141", - "IBM01141", /* IANA */ - "CCSID01141", /* IANA */ - "CP01141", /* IANA */ - "EBCDIC-DE-273+EURO", /* IANA */ - "csIBM01141", /* IANA */ - ), + {ebcdic1140_mbtowc, nullptr}, {ebcdic1140_wctomb, nullptr}) + +DEFCODEPAGE(1140, ebcdic1140) + +DEFENCODING(("IBM1141", + "IBM01141", /* IANA */ + "CCSID01141", /* IANA */ + "CP01141", /* IANA */ + "EBCDICDE273+EURO", /* IANA */ + "csIBM01141", /* IANA */ + ), ebcdic1141, - { ebcdic1141_mbtowc, nullptr }, { ebcdic1141_wctomb, nullptr }) - -DEFENCODING(( "IBM-1142", - "IBM1142", - "IBM01142", /* IANA */ - "CCSID01142", /* IANA */ - "CP01142", /* IANA */ - "EBCDIC-DK-277+EURO", /* IANA */ - "EBCDIC-NO-277+EURO", /* IANA */ - "csIBM01142", /* IANA */ - ), + {ebcdic1141_mbtowc, nullptr}, {ebcdic1141_wctomb, nullptr}) + +DEFCODEPAGE(1141, ebcdic1141) + +DEFENCODING(("IBM1142", + "IBM01142", /* IANA */ + "CCSID01142", /* IANA */ + "CP01142", /* IANA */ + "EBCDICDK277+EURO", /* IANA */ + "EBCDICNO277+EURO", /* IANA */ + "csIBM01142", /* IANA */ + ), ebcdic1142, - { ebcdic1142_mbtowc, nullptr }, { ebcdic1142_wctomb, nullptr }) - -DEFENCODING(( "IBM-1143", - "IBM1143", - "IBM01143", /* IANA */ - "CCSID01143", /* IANA */ - "CP01143", /* IANA */ - "EBCDIC-FI-278+EURO", /* IANA */ - "EBCDIC-SE-278+EURO", /* IANA */ - "csIBM01143", /* IANA */ - ), + {ebcdic1142_mbtowc, nullptr}, {ebcdic1142_wctomb, nullptr}) + +DEFCODEPAGE(1142, ebcdic1142) + +DEFENCODING(("IBM1143", + "IBM01143", /* IANA */ + "CCSID01143", /* IANA */ + "CP01143", /* IANA */ + "EBCDICFI278+EURO", /* IANA */ + "EBCDICSE278+EURO", /* IANA */ + "csIBM01143", /* IANA */ + ), ebcdic1143, - { ebcdic1143_mbtowc, nullptr }, { ebcdic1143_wctomb, nullptr }) - -DEFENCODING(( "IBM-1144", - "IBM1144", - "IBM01144", /* IANA */ - "CCSID01144", /* IANA */ - "CP01144", /* IANA */ - "EBCDIC-IT-280+EURO", /* IANA */ - "csPC8CodePage1144", /* IANA */ - ), + {ebcdic1143_mbtowc, nullptr}, {ebcdic1143_wctomb, nullptr}) + +DEFCODEPAGE(1143, ebcdic1143) + +DEFENCODING(("IBM1144", + "IBM01144", /* IANA */ + "CCSID01144", /* IANA */ + "CP01144", /* IANA */ + "EBCDICIT280+EURO", /* IANA */ + "csPC8CodePage1144", /* IANA */ + ), ebcdic1144, - { ebcdic1144_mbtowc, nullptr }, { ebcdic1144_wctomb, nullptr }) - -DEFENCODING(( "IBM-1145", - "IBM1145", - "IBM01145", /* IANA */ - "CCSID01145", /* IANA */ - "CP01145", /* IANA */ - "EBCDIC-ES-284+EURO", /* IANA */ - "csIBM01145", /* IANA */ - ), + {ebcdic1144_mbtowc, nullptr}, {ebcdic1144_wctomb, nullptr}) + +DEFCODEPAGE(1144, ebcdic1144) + +DEFENCODING(("IBM1145", + "IBM01145", /* IANA */ + "CCSID01145", /* IANA */ + "CP01145", /* IANA */ + "EBCDICES284+EURO", /* IANA */ + "csIBM01145", /* IANA */ + ), ebcdic1145, - { ebcdic1145_mbtowc, nullptr }, { ebcdic1145_wctomb, nullptr }) - -DEFENCODING(( "IBM-1146", - "IBM1146", - "IBM01146", /* IANA */ - "CCSID01146", /* IANA */ - "CP01146", /* IANA */ - "EBCDIC-GB-285+EURO", /* IANA */ - "csPC8CodePage1146", /* IANA */ - ), + {ebcdic1145_mbtowc, nullptr}, {ebcdic1145_wctomb, nullptr}) + +DEFCODEPAGE(1145, ebcdic1145) + +DEFENCODING(("IBM1146", + "IBM01146", /* IANA */ + "CCSID01146", /* IANA */ + "CP01146", /* IANA */ + "EBCDICGB285+EURO", /* IANA */ + "csPC8CodePage1146", /* IANA */ + ), ebcdic1146, - { ebcdic1146_mbtowc, nullptr }, { ebcdic1146_wctomb, nullptr }) - -DEFENCODING(( "IBM-1147", - "IBM1147", - "IBM01147", /* IANA */ - "CCSID01147", /* IANA */ - "CP01147", /* IANA */ - "EBCDIC-FR-297+EURO", /* IANA */ - "csIBM01147", /* IANA */ - ), + {ebcdic1146_mbtowc, nullptr}, {ebcdic1146_wctomb, nullptr}) + +DEFCODEPAGE(1146, ebcdic1146) + +DEFENCODING(("IBM1147", + "IBM01147", /* IANA */ + "CCSID01147", /* IANA */ + "CP01147", /* IANA */ + "EBCDICFR297+EURO", /* IANA */ + "csIBM01147", /* IANA */ + ), ebcdic1147, - { ebcdic1147_mbtowc, nullptr }, { ebcdic1147_wctomb, nullptr }) - -DEFENCODING(( "IBM-1148", - "IBM1148", - "IBM01148", /* IANA */ - "CCSID01148", /* IANA */ - "CP01148", /* IANA */ - "EBCDIC-INTERNATIONAL-500+EURO", /* IANA */ - "csIBM01148", /* IANA */ - ), + {ebcdic1147_mbtowc, nullptr}, {ebcdic1147_wctomb, nullptr}) + +DEFCODEPAGE(1147, ebcdic1147) + +DEFENCODING(("IBM1148", + "IBM01148", /* IANA */ + "CCSID01148", /* IANA */ + "CP01148", /* IANA */ + "EBCDICINTERNATIONAL500+EURO", /* IANA */ + "csIBM01148", /* IANA */ + ), ebcdic1148, - { ebcdic1148_mbtowc, nullptr }, { ebcdic1148_wctomb, nullptr }) - -DEFENCODING(( "IBM-1149", - "IBM1149", - "IBM01149", /* IANA */ - "CCSID01149", /* IANA */ - "CP01149", /* IANA */ - "EBCDIC-IS-871+EURO", /* IANA */ - "csIBM01149", /* IANA */ - ), + {ebcdic1148_mbtowc, nullptr}, {ebcdic1148_wctomb, nullptr}) + +DEFCODEPAGE(1148, ebcdic1148) + +DEFENCODING(("IBM1149", + "IBM01149", /* IANA */ + "CCSID01149", /* IANA */ + "CP01149", /* IANA */ + "EBCDICIS871+EURO", /* IANA */ + "csIBM01149", /* IANA */ + ), ebcdic1149, - { ebcdic1149_mbtowc, nullptr }, { ebcdic1149_wctomb, nullptr }) + {ebcdic1149_mbtowc, nullptr}, {ebcdic1149_wctomb, nullptr}) + +DEFCODEPAGE(1149, ebcdic1149) -DEFENCODING(( "IBM-1153", - "IBM1153", /* glibc */ - "CP1153", /* glibc */ - ), +DEFENCODING(("IBM1153", /* glibc */ + ), ebcdic1153, - { ebcdic1153_mbtowc, nullptr }, { ebcdic1153_wctomb, nullptr }) + {ebcdic1153_mbtowc, nullptr}, {ebcdic1153_wctomb, nullptr}) -DEFENCODING(( "IBM-1154", - "IBM1154", /* glibc */ - "CP1154", /* glibc */ - ), +DEFCODEPAGE(1153, ebcdic1153) + +DEFENCODING(("IBM1154", /* glibc */ + ), ebcdic1154, - { ebcdic1154_mbtowc, nullptr }, { ebcdic1154_wctomb, nullptr }) + {ebcdic1154_mbtowc, nullptr}, {ebcdic1154_wctomb, nullptr}) + +DEFCODEPAGE(1154, ebcdic1154) -DEFENCODING(( "IBM-1155", - "IBM1155", /* glibc */ - "CP1155", /* glibc */ - ), +DEFENCODING(("IBM1155", /* glibc */ + ), ebcdic1155, - { ebcdic1155_mbtowc, nullptr }, { ebcdic1155_wctomb, nullptr }) + {ebcdic1155_mbtowc, nullptr}, {ebcdic1155_wctomb, nullptr}) -DEFENCODING(( "IBM-1156", - "IBM1156", /* glibc */ - "CP1156", /* glibc */ - ), +DEFCODEPAGE(1155, ebcdic1155) + +DEFENCODING(("IBM1156", /* glibc */ + ), ebcdic1156, - { ebcdic1156_mbtowc, nullptr }, { ebcdic1156_wctomb, nullptr }) + {ebcdic1156_mbtowc, nullptr}, {ebcdic1156_wctomb, nullptr}) + +DEFCODEPAGE(1156, ebcdic1156) -DEFENCODING(( "IBM-1157", - "IBM1157", /* glibc */ - "CP1157", /* glibc */ - ), +DEFENCODING(("IBM1157", /* glibc */ + ), ebcdic1157, - { ebcdic1157_mbtowc, nullptr }, { ebcdic1157_wctomb, nullptr }) + {ebcdic1157_mbtowc, nullptr}, {ebcdic1157_wctomb, nullptr}) -DEFENCODING(( "IBM-1158", - "IBM1158", /* glibc */ - "CP1158", /* glibc */ - ), +DEFCODEPAGE(1157, ebcdic1157) + +DEFENCODING(("IBM1158", /* glibc */ + ), ebcdic1158, - { ebcdic1158_mbtowc, nullptr }, { ebcdic1158_wctomb, nullptr }) + {ebcdic1158_mbtowc, nullptr}, {ebcdic1158_wctomb, nullptr}) + +DEFCODEPAGE(1158, ebcdic1158) -DEFENCODING(( "IBM-1160", - "IBM1160", /* glibc */ - "CP1160", /* glibc */ - ), +DEFENCODING(("IBM1160", /* glibc */ + ), ebcdic1160, - { ebcdic1160_mbtowc, nullptr }, { ebcdic1160_wctomb, nullptr }) + {ebcdic1160_mbtowc, nullptr}, {ebcdic1160_wctomb, nullptr}) -DEFENCODING(( "IBM-1164", - "IBM1164", /* glibc */ - "CP1164", /* glibc */ - ), +DEFCODEPAGE(1160, ebcdic1160) + +DEFENCODING(("IBM1164", /* glibc */ + ), ebcdic1164, - { ebcdic1164_mbtowc, nullptr }, { ebcdic1164_wctomb, nullptr }) + {ebcdic1164_mbtowc, nullptr}, {ebcdic1164_wctomb, nullptr}) -DEFENCODING(( "IBM-1165", - "IBM1165", - ), - ebcdic1165, - { ebcdic1165_mbtowc, nullptr }, { ebcdic1165_wctomb, nullptr }) +DEFCODEPAGE(1164, ebcdic1164) -DEFENCODING(( "IBM-1166", - "IBM1166", /* glibc */ - "CP1166", /* glibc */ - ), - ebcdic1166, - { ebcdic1166_mbtowc, nullptr }, { ebcdic1166_wctomb, nullptr }) +DEFENCODING(("IBM1165", ), + ebcdic1165, + {ebcdic1165_mbtowc, nullptr}, {ebcdic1165_wctomb, nullptr}) -DEFENCODING(( "IBM-4971", - "IBM4971", /* glibc */ - "CP4971", /* glibc */ - ), - ebcdic4971, - { ebcdic4971_mbtowc, nullptr }, { ebcdic4971_wctomb, nullptr }) +DEFCODEPAGE(1165, ebcdic1165) -DEFENCODING(( "IBM-12712", - "IBM12712", /* glibc */ - "CP12712", /* glibc */ - ), - ebcdic12712, - { ebcdic12712_mbtowc, nullptr }, { ebcdic12712_wctomb, nullptr }) +DEFENCODING(("IBM1166", /* glibc */ + ), + ebcdic1166, + {ebcdic1166_mbtowc, nullptr}, {ebcdic1166_wctomb, nullptr}) -DEFENCODING(( "IBM-16804", - "IBM16804", /* glibc */ - "CP16804", /* glibc */ - ), - ebcdic16804, - { ebcdic16804_mbtowc, nullptr }, { ebcdic16804_wctomb, nullptr }) +DEFCODEPAGE(1166, ebcdic1166) +DEFENCODING(("IBM4971", /* glibc */ + ), + ebcdic4971, + {ebcdic4971_mbtowc, nullptr}, {ebcdic4971_wctomb, nullptr}) +DEFCODEPAGE(4971, ebcdic4971) -/* Copyright (C) 2002, 2005, 2008 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. +DEFENCODING(("IBM12712", /* glibc */ + ), + ebcdic12712, + {ebcdic12712_mbtowc, nullptr}, {ebcdic12712_wctomb, nullptr}) - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. +DEFCODEPAGE(12712, ebcdic12712) - The cppp-reiconv library 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 - Lesser General Public License for more details. +DEFENCODING(("IBM16804", /* glibc */ + ), + ebcdic16804, + {ebcdic16804_mbtowc, nullptr}, {ebcdic16804_wctomb, nullptr}) - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ +DEFCODEPAGE(16804, ebcdic16804) -DEFENCODING(( "EUC-JISX0213", - "EUC-JIS-2004", /* x0213.org */ - ), +DEFENCODING(("EUCJISX0213", + "EUCJIS2004", /* x0213.org */ + ), euc_jisx0213, - { euc_jisx0213_mbtowc, euc_jisx0213_flushwc }, { euc_jisx0213_wctomb, euc_jisx0213_reset }) + {euc_jisx0213_mbtowc, euc_jisx0213_flushwc}, {euc_jisx0213_wctomb, euc_jisx0213_reset}) -DEFENCODING(( "SHIFT_JISX0213", - "SHIFT_JIS-2004", /* x0213.org */ - ), +DEFENCODING(("SHIFTJISX0213", + "SHIFTJIS2004", /* x0213.org */ + ), shift_jisx0213, - { shift_jisx0213_mbtowc, shift_jisx0213_flushwc }, { shift_jisx0213_wctomb, shift_jisx0213_reset }) + {shift_jisx0213_mbtowc, shift_jisx0213_flushwc}, {shift_jisx0213_wctomb, shift_jisx0213_reset}) -DEFENCODING(( "ISO-2022-JP-3", - "ISO-2022-JP-2004", /* x0213.org */ - ), +DEFENCODING(("ISO2022JP3", + "ISO2022JP2004", /* x0213.org */ + ), iso2022_jp3, - { iso2022_jp3_mbtowc, iso2022_jp3_flushwc }, { iso2022_jp3_wctomb, iso2022_jp3_reset }) + {iso2022_jp3_mbtowc, iso2022_jp3_flushwc}, {iso2022_jp3_wctomb, iso2022_jp3_reset}) -DEFENCODING(( "BIG5-2003", - ), +DEFENCODING(("BIG52003", ), big5_2003, - { big5_2003_mbtowc, nullptr }, { big5_2003_wctomb, nullptr }) + {big5_2003_mbtowc, nullptr}, {big5_2003_wctomb, nullptr}) -DEFENCODING(( "TDS565", - "ISO-IR-230", - ), +DEFENCODING(("TDS565", + "ISOIR230", ), tds565, - { tds565_mbtowc, nullptr }, { tds565_wctomb, nullptr }) + {tds565_mbtowc, nullptr}, {tds565_wctomb, nullptr}) -DEFENCODING(( "ATARIST", - "ATARI", - ), +DEFENCODING(("ATARIST", + "ATARI", ), atarist, - { atarist_mbtowc, nullptr }, { atarist_wctomb, nullptr }) + {atarist_mbtowc, nullptr}, {atarist_wctomb, nullptr}) -DEFENCODING(( "RISCOS-LATIN1", - ), +DEFENCODING(("RISCOSLATIN1", ), riscos1, - { riscos1_mbtowc, nullptr }, { riscos1_wctomb, nullptr }) - + {riscos1_mbtowc, nullptr}, {riscos1_wctomb, nullptr}) diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index 6dfa551e..5d3b2762 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -1,6 +1,6 @@ /* C++ code produced by gperf version 3.1 */ /* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases.gperf */ -/* Computed positions: -k'1-11,$' */ +/* Computed positions: -k'1-2,4-10,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 684 +#define TOTAL_KEYWORDS 534 #define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 45 -#define MIN_HASH_VALUE 20 -#define MAX_HASH_VALUE 2630 -/* maximum key range = 2611, duplicates = 0 */ +#define MAX_WORD_LENGTH 39 +#define MIN_HASH_VALUE 21 +#define MAX_HASH_VALUE 2224 +/* maximum key range = 2204, duplicates = 0 */ class HashPool { @@ -52,35 +52,32 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 272, 9, 402, 82, 11, - 6, 122, 52, 4, 3, 238, 40, 347, 13, 3, - 4, 2631, 2631, 2631, 2631, 18, 3, 29, 8, 87, - 347, 609, 169, 3, 180, 217, 12, 193, 313, 5, - 3, 7, 14, 476, 5, 59, 109, 318, 291, 80, - 30, 7, 2631, 2631, 2631, 146, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, - 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631 + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 32, 2225, 33, 8, + 70, 126, 20, 6, 5, 113, 24, 168, 502, 2225, + 2225, 2225, 2225, 2225, 2225, 10, 261, 6, 57, 130, + 20, 243, 184, 5, 659, 82, 9, 94, 90, 124, + 8, 2225, 562, 5, 479, 608, 13, 294, 63, 16, + 5, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, + 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225 }; unsigned int hval = len; switch (hval) { default: - hval += asso_values[static_cast(str[10]+1)]; - /*FALLTHROUGH*/ - case 10: hval += asso_values[static_cast(str[9])]; /*FALLTHROUGH*/ case 9: hval += asso_values[static_cast(str[8])]; /*FALLTHROUGH*/ case 8: - hval += asso_values[static_cast(str[7]+2)]; + hval += asso_values[static_cast(str[7])]; /*FALLTHROUGH*/ case 7: hval += asso_values[static_cast(str[6])]; @@ -95,8 +92,6 @@ HashPool::aliases_hash (const char *str, size_t len) hval += asso_values[static_cast(str[3])]; /*FALLTHROUGH*/ case 3: - hval += asso_values[static_cast(str[2])]; - /*FALLTHROUGH*/ case 2: hval += asso_values[static_cast(str[1])]; /*FALLTHROUGH*/ @@ -109,1377 +104,1077 @@ HashPool::aliases_hash (const char *str, size_t len) struct stringpool_t { - char stringpool_str20[sizeof("L6")]; - char stringpool_str22[sizeof("L5")]; - char stringpool_str26[sizeof("L2")]; - char stringpool_str36[sizeof("L1")]; - char stringpool_str52[sizeof("866")]; - char stringpool_str54[sizeof("865")]; - char stringpool_str55[sizeof("855")]; - char stringpool_str58[sizeof("862")]; - char stringpool_str59[sizeof("852")]; - char stringpool_str64[sizeof("646")]; - char stringpool_str65[sizeof("CP1256")]; - char stringpool_str66[sizeof("ATARI")]; - char stringpool_str67[sizeof("CP1255")]; - char stringpool_str68[sizeof("861")]; - char stringpool_str69[sizeof("CP1166")]; - char stringpool_str70[sizeof("CP1156")]; - char stringpool_str71[sizeof("CP1252")]; - char stringpool_str72[sizeof("CP1155")]; - char stringpool_str74[sizeof("CP1125")]; - char stringpool_str75[sizeof("CP1162")]; - char stringpool_str78[sizeof("CP1122")]; - char stringpool_str81[sizeof("CP1251")]; - char stringpool_str83[sizeof("CP1112")]; - char stringpool_str85[sizeof("CP1161")]; - char stringpool_str86[sizeof("CP866")]; - char stringpool_str87[sizeof("CP856")]; - char stringpool_str88[sizeof("CP865")]; - char stringpool_str89[sizeof("CP855")]; - char stringpool_str91[sizeof("CP285")]; - char stringpool_str92[sizeof("CP862")]; - char stringpool_str93[sizeof("CP852")]; - char stringpool_str94[sizeof("L8")]; - char stringpool_str96[sizeof("R8")]; - char stringpool_str102[sizeof("CP861")]; - char stringpool_str118[sizeof("L4")]; - char stringpool_str120[sizeof("ARABIC")]; - char stringpool_str132[sizeof("PT154")]; - char stringpool_str139[sizeof("CP1258")]; - char stringpool_str143[sizeof("CP1026")]; - char stringpool_str144[sizeof("CP1158")]; - char stringpool_str145[sizeof("CP1025")]; - char stringpool_str156[sizeof("CP154")]; - char stringpool_str159[sizeof("CP50221")]; - char stringpool_str161[sizeof("CP858")]; - char stringpool_str163[sizeof("CP1254")]; - char stringpool_str166[sizeof("PTCP154")]; - char stringpool_str167[sizeof("CP1164")]; - char stringpool_str168[sizeof("CP1154")]; - char stringpool_str170[sizeof("CP1124")]; - char stringpool_str184[sizeof("CP864")]; - char stringpool_str187[sizeof("CP284")]; - char stringpool_str188[sizeof("JP")]; - char stringpool_str189[sizeof("CP1046")]; - char stringpool_str190[sizeof("L10")]; - char stringpool_str194[sizeof("CP1132")]; - char stringpool_str196[sizeof("CP1361")]; - char stringpool_str199[sizeof("CP424")]; - char stringpool_str201[sizeof("CP01146")]; - char stringpool_str203[sizeof("CP01145")]; - char stringpool_str204[sizeof("CP1131")]; - char stringpool_str207[sizeof("CP01142")]; - char stringpool_str210[sizeof("860")]; - char stringpool_str211[sizeof("850")]; - char stringpool_str217[sizeof("CP01141")]; - char stringpool_str223[sizeof("CP1250")]; - char stringpool_str227[sizeof("CP1160")]; - char stringpool_str231[sizeof("HZ")]; - char stringpool_str237[sizeof("IBM1166")]; - char stringpool_str238[sizeof("IBM1156")]; - char stringpool_str239[sizeof("IBM1165")]; - char stringpool_str240[sizeof("IBM1155")]; - char stringpool_str243[sizeof("IBM1162")]; - char stringpool_str244[sizeof("CP860")]; - char stringpool_str245[sizeof("CP850")]; - char stringpool_str246[sizeof("IBM1122")]; - char stringpool_str247[sizeof("CP280")]; - char stringpool_str251[sizeof("IBM1112")]; - char stringpool_str253[sizeof("IBM1161")]; - char stringpool_str254[sizeof("IBM866")]; - char stringpool_str256[sizeof("IBM865")]; - char stringpool_str257[sizeof("IBM855")]; - char stringpool_str258[sizeof("L3")]; - char stringpool_str259[sizeof("IBM285")]; - char stringpool_str260[sizeof("IBM862")]; - char stringpool_str261[sizeof("IBM852")]; - char stringpool_str263[sizeof("IBM282")]; - char stringpool_str270[sizeof("IBM861")]; - char stringpool_str271[sizeof("IBM425")]; - char stringpool_str272[sizeof("MAC")]; - char stringpool_str275[sizeof("CP01148")]; - char stringpool_str277[sizeof("CYRILLIC")]; - char stringpool_str279[sizeof("CP16804")]; - char stringpool_str281[sizeof("CP880")]; - char stringpool_str286[sizeof("IBM1146")]; - char stringpool_str287[sizeof("CP500")]; - char stringpool_str288[sizeof("IBM1145")]; - char stringpool_str289[sizeof("UHC")]; - char stringpool_str290[sizeof("863")]; - char stringpool_str292[sizeof("IBM1142")]; - char stringpool_str299[sizeof("CP01144")]; - char stringpool_str302[sizeof("IBM1141")]; - char stringpool_str303[sizeof("CP1253")]; - char stringpool_str307[sizeof("CP1163")]; - char stringpool_str308[sizeof("CP1153")]; - char stringpool_str310[sizeof("CP1123")]; - char stringpool_str311[sizeof("IBM1026")]; - char stringpool_str312[sizeof("IBM1158")]; - char stringpool_str313[sizeof("IBM1025")]; - char stringpool_str317[sizeof("CP12712")]; - char stringpool_str323[sizeof("CP875")]; - char stringpool_str324[sizeof("CP863")]; - char stringpool_str325[sizeof("CP853")]; - char stringpool_str335[sizeof("IBM1164")]; - char stringpool_str336[sizeof("IBM1154")]; - char stringpool_str337[sizeof("CP871")]; - char stringpool_str339[sizeof("CP423")]; - char stringpool_str346[sizeof("CP1130")]; - char stringpool_str347[sizeof("JAVA")]; - char stringpool_str352[sizeof("IBM864")]; - char stringpool_str355[sizeof("IBM284")]; - char stringpool_str359[sizeof("CP01140")]; - char stringpool_str360[sizeof("IBM1148")]; - char stringpool_str361[sizeof("CP278")]; - char stringpool_str362[sizeof("IBM1132")]; - char stringpool_str363[sizeof("LATIN6")]; - char stringpool_str365[sizeof("LATIN5")]; - char stringpool_str366[sizeof("EUCJP")]; - char stringpool_str367[sizeof("IBM424")]; - char stringpool_str369[sizeof("LATIN2")]; - char stringpool_str379[sizeof("LATIN1")]; - char stringpool_str383[sizeof("JOHAB")]; - char stringpool_str384[sizeof("IBM1144")]; - char stringpool_str395[sizeof("IBM1160")]; - char stringpool_str398[sizeof("IBM16804")]; - char stringpool_str402[sizeof("CP922")]; - char stringpool_str406[sizeof("IBM01146")]; - char stringpool_str407[sizeof("X0212")]; - char stringpool_str412[sizeof("IBM860")]; - char stringpool_str413[sizeof("IBM850")]; - char stringpool_str415[sizeof("IBM280")]; - char stringpool_str416[sizeof("IBM01148")]; - char stringpool_str418[sizeof("IBM01144")]; - char stringpool_str419[sizeof("CP874")]; - char stringpool_str421[sizeof("IBM01142")]; - char stringpool_str425[sizeof("EUCKR")]; - char stringpool_str426[sizeof("CP1133")]; - char stringpool_str437[sizeof("LATIN8")]; - char stringpool_str439[sizeof("CP01143")]; - char stringpool_str444[sizeof("IBM1140")]; - char stringpool_str445[sizeof("MACTHAI")]; - char stringpool_str447[sizeof("IBM838")]; - char stringpool_str449[sizeof("IBM880")]; - char stringpool_str451[sizeof("IBM01140")]; - char stringpool_str455[sizeof("IBM500")]; - char stringpool_str461[sizeof("LATIN4")]; - char stringpool_str462[sizeof("RK1048")]; - char stringpool_str469[sizeof("PCK")]; - char stringpool_str474[sizeof("CP905")]; - char stringpool_str475[sizeof("IBM1163")]; - char stringpool_str476[sizeof("IBM1153")]; - char stringpool_str478[sizeof("IBM1123")]; - char stringpool_str479[sizeof("CP870")]; - char stringpool_str488[sizeof("X0201")]; - char stringpool_str489[sizeof("IBM01143")]; - char stringpool_str490[sizeof("L7")]; - char stringpool_str491[sizeof("IBM875")]; - char stringpool_str492[sizeof("IBM863")]; - char stringpool_str495[sizeof("UTF8")]; - char stringpool_str496[sizeof("IBM01141")]; - char stringpool_str505[sizeof("IBM871")]; - char stringpool_str507[sizeof("IBM423")]; - char stringpool_str510[sizeof("TDS565")]; - char stringpool_str512[sizeof("CP936")]; - char stringpool_str514[sizeof("IBM1130")]; - char stringpool_str518[sizeof("CP932")]; - char stringpool_str521[sizeof("CP775")]; - char stringpool_str522[sizeof("MACROMANIA")]; - char stringpool_str523[sizeof("857")]; - char stringpool_str524[sizeof("IBM1143")]; - char stringpool_str525[sizeof("CP273")]; - char stringpool_str529[sizeof("IBM278")]; - char stringpool_str531[sizeof("IBM12712")]; - char stringpool_str532[sizeof("IBM-285")]; - char stringpool_str533[sizeof("LATIN10")]; - char stringpool_str535[sizeof("CP1257")]; - char stringpool_str536[sizeof("IBM-282")]; - char stringpool_str537[sizeof("ASCII")]; - char stringpool_str540[sizeof("CP1157")]; - char stringpool_str544[sizeof("IBM-425")]; - char stringpool_str546[sizeof("X0208")]; - char stringpool_str547[sizeof("IBM-1166")]; - char stringpool_str548[sizeof("IBM-1156")]; - char stringpool_str551[sizeof("ATARIST")]; - char stringpool_str552[sizeof("CP950")]; - char stringpool_str553[sizeof("KOI8-T")]; - char stringpool_str557[sizeof("CP857")]; - char stringpool_str558[sizeof("IBM-1158")]; - char stringpool_str559[sizeof("IBM-1164")]; - char stringpool_str560[sizeof("IBM-1154")]; - char stringpool_str562[sizeof("IBM-1162")]; - char stringpool_str565[sizeof("IBM-1122")]; - char stringpool_str570[sizeof("IBM-1112")]; - char stringpool_str571[sizeof("KOI8-R")]; - char stringpool_str577[sizeof("MACARABIC")]; - char stringpool_str592[sizeof("IBM-1160")]; - char stringpool_str596[sizeof("IBM-1146")]; - char stringpool_str601[sizeof("LATIN3")]; - char stringpool_str605[sizeof("IBM01145")]; - char stringpool_str606[sizeof("IBM-1148")]; - char stringpool_str608[sizeof("IBM-1144")]; - char stringpool_str611[sizeof("IBM-1142")]; - char stringpool_str621[sizeof("IBM-1026")]; - char stringpool_str627[sizeof("BIG5")]; - char stringpool_str628[sizeof("IBM-284")]; - char stringpool_str629[sizeof("ROMAN8")]; - char stringpool_str630[sizeof("IBM-1163")]; - char stringpool_str631[sizeof("IBM-1153")]; - char stringpool_str632[sizeof("VISCII")]; - char stringpool_str633[sizeof("IBM-1123")]; - char stringpool_str637[sizeof("IBM-1161")]; - char stringpool_str638[sizeof("CP367")]; - char stringpool_str639[sizeof("EUC-JP")]; - char stringpool_str640[sizeof("IBM-424")]; - char stringpool_str641[sizeof("IBM-1140")]; - char stringpool_str642[sizeof("IBM905")]; - char stringpool_str644[sizeof("IBM-16804")]; - char stringpool_str647[sizeof("IBM870")]; - char stringpool_str650[sizeof("CSPCP852")]; - char stringpool_str653[sizeof("437")]; - char stringpool_str657[sizeof("CN")]; - char stringpool_str658[sizeof("CP1137")]; - char stringpool_str659[sizeof("CP1047")]; - char stringpool_str660[sizeof("CP00924")]; - char stringpool_str661[sizeof("KOI8-U")]; - char stringpool_str662[sizeof("IBM924")]; - char stringpool_str663[sizeof("TIS620")]; - char stringpool_str669[sizeof("ELOT_928")]; - char stringpool_str671[sizeof("CP01147")]; - char stringpool_str673[sizeof("IBM-EUCJP")]; - char stringpool_str676[sizeof("KOI8-RU")]; - char stringpool_str679[sizeof("IBM-1143")]; - char stringpool_str680[sizeof("CP943")]; - char stringpool_str681[sizeof("IBM-1132")]; - char stringpool_str682[sizeof("ECMA-118")]; - char stringpool_str683[sizeof("TIS620.2529-1")]; - char stringpool_str684[sizeof("ECMA-114")]; - char stringpool_str686[sizeof("IBM-1141")]; - char stringpool_str687[sizeof("CP437")]; - char stringpool_str688[sizeof("IBM-280")]; - char stringpool_str689[sizeof("IBM775")]; - char stringpool_str693[sizeof("IBM273")]; - char stringpool_str697[sizeof("CP4971")]; - char stringpool_str698[sizeof("EUC-KR")]; - char stringpool_str706[sizeof("UTF-16")]; - char stringpool_str708[sizeof("IBM1157")]; - char stringpool_str711[sizeof("IBM-1130")]; - char stringpool_str713[sizeof("IBM01149")]; - char stringpool_str717[sizeof("CP037")]; - char stringpool_str720[sizeof("IBM-838")]; - char stringpool_str722[sizeof("IBM-880")]; - char stringpool_str725[sizeof("IBM857")]; - char stringpool_str728[sizeof("IBM-500")]; - char stringpool_str739[sizeof("MACICELAND")]; - char stringpool_str740[sizeof("869")]; - char stringpool_str742[sizeof("MACCYRILLIC")]; - char stringpool_str746[sizeof("IBM-1165")]; - char stringpool_str747[sizeof("IBM-1155")]; - char stringpool_str751[sizeof("KZ-1048")]; - char stringpool_str756[sizeof("IBM1147")]; - char stringpool_str760[sizeof("CP1129")]; - char stringpool_str764[sizeof("IBM-875")]; - char stringpool_str765[sizeof("MACCROATIAN")]; - char stringpool_str766[sizeof("HP-ROMAN8")]; - char stringpool_str768[sizeof("UTF-8")]; - char stringpool_str769[sizeof("GB2312")]; - char stringpool_str773[sizeof("TCVN")]; - char stringpool_str774[sizeof("CP869")]; - char stringpool_str778[sizeof("IBM-871")]; - char stringpool_str779[sizeof("IBM00924")]; - char stringpool_str780[sizeof("IBM-423")]; - char stringpool_str782[sizeof("CP819")]; - char stringpool_str787[sizeof("CSIBM1162")]; - char stringpool_str794[sizeof("MACROMAN")]; - char stringpool_str795[sizeof("IBM-1145")]; - char stringpool_str797[sizeof("CSIBM1161")]; - char stringpool_str798[sizeof("CSIBM866")]; - char stringpool_str802[sizeof("IBM-278")]; - char stringpool_str805[sizeof("CSKOI8R")]; - char stringpool_str806[sizeof("IBM367")]; - char stringpool_str810[sizeof("CSIBM864")]; - char stringpool_str813[sizeof("CSIBM284")]; - char stringpool_str815[sizeof("EBCDIC-CP-NO")]; - char stringpool_str819[sizeof("MULELAO-1")]; - char stringpool_str820[sizeof("IBM-1025")]; - char stringpool_str821[sizeof("EUCTW")]; - char stringpool_str822[sizeof("EBCDIC-CP-NL")]; - char stringpool_str823[sizeof("UTF-32")]; - char stringpool_str825[sizeof("CSIBM424")]; - char stringpool_str826[sizeof("IBM1137")]; - char stringpool_str827[sizeof("IBM1047")]; - char stringpool_str828[sizeof("CCSID01146")]; - char stringpool_str829[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str830[sizeof("CCSID01145")]; - char stringpool_str831[sizeof("EBCDIC-CP-CA")]; - char stringpool_str832[sizeof("CCSID00924")]; - char stringpool_str833[sizeof("LATIN7")]; - char stringpool_str834[sizeof("CCSID01142")]; - char stringpool_str835[sizeof("EUCCN")]; - char stringpool_str836[sizeof("EBCDIC-CYRILLIC")]; - char stringpool_str838[sizeof("TIS620.2533-1")]; - char stringpool_str841[sizeof("ISO646-JP")]; - char stringpool_str843[sizeof("CSIBM860")]; - char stringpool_str844[sizeof("CCSID01141")]; - char stringpool_str846[sizeof("CSIBM280")]; - char stringpool_str848[sizeof("HP15CN")]; - char stringpool_str853[sizeof("UCS-2")]; - char stringpool_str854[sizeof("EBCDIC-GB-285+EURO")]; - char stringpool_str855[sizeof("IBM437")]; - char stringpool_str856[sizeof("EBCDIC-NO-277+EURO")]; - char stringpool_str862[sizeof("CYRILLIC-ASIAN")]; - char stringpool_str864[sizeof("CSIBM1026")]; - char stringpool_str865[sizeof("IBM4971")]; - char stringpool_str866[sizeof("CP297")]; - char stringpool_str869[sizeof("IBM-12712")]; - char stringpool_str873[sizeof("CP737")]; - char stringpool_str878[sizeof("EBCDIC-CP-TR")]; - char stringpool_str880[sizeof("CSIBM880")]; - char stringpool_str881[sizeof("CSIBM863")]; - char stringpool_str882[sizeof("DECHANZI")]; - char stringpool_str885[sizeof("IBM037")]; - char stringpool_str886[sizeof("CSIBM500")]; - char stringpool_str888[sizeof("CSIBM861")]; - char stringpool_str889[sizeof("CP01149")]; - char stringpool_str891[sizeof("IBM-THAI")]; - char stringpool_str894[sizeof("EBCDIC-CP-YU")]; - char stringpool_str895[sizeof("EBCDIC-CP-HE")]; - char stringpool_str896[sizeof("CSIBM423")]; - char stringpool_str897[sizeof("EBCDIC-CP-SE")]; - char stringpool_str900[sizeof("BIG-5")]; - char stringpool_str902[sizeof("CCSID01148")]; - char stringpool_str903[sizeof("IBM-1149")]; - char stringpool_str907[sizeof("CSPTCP154")]; - char stringpool_str909[sizeof("TIS620.2533-0")]; - char stringpool_str915[sizeof("IBM-905")]; - char stringpool_str916[sizeof("JIS0208")]; - char stringpool_str920[sizeof("IBM-870")]; - char stringpool_str921[sizeof("EBCDIC-CP-BE")]; - char stringpool_str922[sizeof("CSIBMTHAI")]; - char stringpool_str925[sizeof("IBM277")]; - char stringpool_str926[sizeof("CCSID01144")]; - char stringpool_str932[sizeof("CSEUCKR")]; - char stringpool_str935[sizeof("IBM-924")]; - char stringpool_str936[sizeof("TIS-620")]; - char stringpool_str942[sizeof("IBM869")]; - char stringpool_str943[sizeof("TIS620-0")]; - char stringpool_str945[sizeof("UCS-4")]; - char stringpool_str946[sizeof("CP-GR")]; - char stringpool_str948[sizeof("IBM01147")]; - char stringpool_str950[sizeof("IBM819")]; - char stringpool_str954[sizeof("CP1097")]; - char stringpool_str958[sizeof("CSKZ1048")]; - char stringpool_str959[sizeof("IBM-932")]; - char stringpool_str966[sizeof("IBM-273")]; - char stringpool_str970[sizeof("EBCDIC-LATIN9-EURO")]; - char stringpool_str971[sizeof("DEC-KANJI")]; - char stringpool_str972[sizeof("MACINTOSH")]; - char stringpool_str973[sizeof("KOREAN")]; - char stringpool_str974[sizeof("IBM1149")]; - char stringpool_str977[sizeof("EBCDIC-CP-GB")]; - char stringpool_str982[sizeof("EBCDIC-CP-CH")]; - char stringpool_str984[sizeof("UNICODELITTLE")]; - char stringpool_str986[sizeof("CCSID01140")]; - char stringpool_str988[sizeof("EBCDIC-CP-GR")]; - char stringpool_str989[sizeof("CSIBM01145")]; - char stringpool_str990[sizeof("EBCDIC-CP-IT")]; - char stringpool_str991[sizeof("CSIBM00924")]; - char stringpool_str993[sizeof("CSIBM01142")]; - char stringpool_str994[sizeof("EBCDIC-SE-278+EURO")]; - char stringpool_str997[sizeof("CSIBM865")]; - char stringpool_str998[sizeof("CSIBM855")]; - char stringpool_str1000[sizeof("CSIBM285")]; - char stringpool_str1002[sizeof("HEBREW")]; - char stringpool_str1003[sizeof("CSIBM01141")]; - char stringpool_str1004[sizeof("MS-ARAB")]; - char stringpool_str1005[sizeof("ISO_8859-6")]; - char stringpool_str1007[sizeof("ISO_8859-5")]; - char stringpool_str1009[sizeof("CSIBM278")]; - char stringpool_str1011[sizeof("ISO_8859-2")]; - char stringpool_str1012[sizeof("IBM-CP1133")]; - char stringpool_str1013[sizeof("US")]; - char stringpool_str1018[sizeof("ISO_8859-15")]; - char stringpool_str1019[sizeof("CSIBM1163")]; - char stringpool_str1020[sizeof("EBCDIC-FI-278+EURO")]; - char stringpool_str1021[sizeof("ISO_8859-1")]; - char stringpool_str1026[sizeof("UCS-2BE")]; - char stringpool_str1027[sizeof("VISCII1.1-1")]; - char stringpool_str1028[sizeof("ISO_8859-11")]; - char stringpool_str1029[sizeof("CNS11643")]; - char stringpool_str1030[sizeof("DEC-HANYU")]; - char stringpool_str1031[sizeof("EBCDIC-FR-297+EURO")]; - char stringpool_str1033[sizeof("ISO_8859-10:1992")]; - char stringpool_str1034[sizeof("IBM297")]; - char stringpool_str1035[sizeof("UCS-2LE")]; - char stringpool_str1038[sizeof("GB18030")]; - char stringpool_str1041[sizeof("IBM737")]; - char stringpool_str1044[sizeof("CSASCII")]; - char stringpool_str1049[sizeof("GBK")]; - char stringpool_str1051[sizeof("ISO_8859-5:1988")]; - char stringpool_str1059[sizeof("ISO_8859-15:1998")]; - char stringpool_str1060[sizeof("ISO_8859-14:1998")]; - char stringpool_str1061[sizeof("CSIBM01148")]; - char stringpool_str1064[sizeof("ISO-CELTIC")]; - char stringpool_str1065[sizeof("TCVN5712-1")]; - char stringpool_str1066[sizeof("CCSID01143")]; - char stringpool_str1067[sizeof("ISO_8859-14")]; - char stringpool_str1068[sizeof("GB18030:2005")]; - char stringpool_str1070[sizeof("EBCDIC-IT-280+EURO")]; - char stringpool_str1071[sizeof("CSPC8CODEPAGE1146")]; - char stringpool_str1072[sizeof("UCS-4BE")]; - char stringpool_str1073[sizeof("C99")]; - char stringpool_str1076[sizeof("WINBALTRIM")]; - char stringpool_str1078[sizeof("CSIBM870")]; - char stringpool_str1079[sizeof("ISO_8859-8")]; - char stringpool_str1080[sizeof("DECKANJI")]; - char stringpool_str1081[sizeof("UCS-4LE")]; - char stringpool_str1082[sizeof("CSIBM273")]; - char stringpool_str1087[sizeof("ISO_8859-8:1988")]; - char stringpool_str1089[sizeof("DECHANYU")]; - char stringpool_str1090[sizeof("IBM-1157")]; - char stringpool_str1094[sizeof("EUC-TW")]; - char stringpool_str1095[sizeof("MS-CYRL")]; - char stringpool_str1096[sizeof("ISO-IR-6")]; - char stringpool_str1098[sizeof("KSC_5601")]; - char stringpool_str1099[sizeof("ISO_8859-4:1988")]; - char stringpool_str1100[sizeof("GREEK8")]; - char stringpool_str1101[sizeof("EBCDIC-CP-WT")]; - char stringpool_str1103[sizeof("ISO_8859-4")]; - char stringpool_str1104[sizeof("ISO_8859-10")]; - char stringpool_str1105[sizeof("CSIBM869")]; - char stringpool_str1108[sizeof("EUC-CN")]; - char stringpool_str1109[sizeof("EBCDIC-CP-DK")]; - char stringpool_str1111[sizeof("EBCDIC-GREEK")]; - char stringpool_str1113[sizeof("TCVN-5712")]; - char stringpool_str1119[sizeof("ISO-IR-226")]; - char stringpool_str1120[sizeof("CSPC8CODEPAGE1144")]; - char stringpool_str1122[sizeof("IBM1097")]; - char stringpool_str1123[sizeof("CSIBM871")]; - char stringpool_str1130[sizeof("CP949")]; - char stringpool_str1131[sizeof("ISO-8859-6")]; - char stringpool_str1132[sizeof("ISO_646.IRV:1991")]; - char stringpool_str1133[sizeof("ISO-8859-5")]; - char stringpool_str1134[sizeof("CSBIG5")]; - char stringpool_str1137[sizeof("ISO-8859-2")]; - char stringpool_str1138[sizeof("IBM-1147")]; - char stringpool_str1144[sizeof("ISO-8859-15")]; - char stringpool_str1145[sizeof("CSIBM01140")]; - char stringpool_str1147[sizeof("ISO-8859-1")]; - char stringpool_str1149[sizeof("MS936")]; - char stringpool_str1154[sizeof("ISO-8859-11")]; - char stringpool_str1156[sizeof("CSPC775BALTIC")]; - char stringpool_str1158[sizeof("IBM-037")]; - char stringpool_str1159[sizeof("MACCENTRALEUROPE")]; - char stringpool_str1164[sizeof("UTF-7")]; - char stringpool_str1169[sizeof("ISO_8859-3:1988")]; - char stringpool_str1175[sizeof("SDECKANJI")]; - char stringpool_str1178[sizeof("STRK1048-2002")]; - char stringpool_str1179[sizeof("CSUCS4")]; - char stringpool_str1181[sizeof("GB18030:2022")]; - char stringpool_str1184[sizeof("TCVN5712-1:1993")]; - char stringpool_str1185[sizeof("ISO_8859-13")]; - char stringpool_str1186[sizeof("ISO-IR-166")]; - char stringpool_str1188[sizeof("ISO-IR-165")]; - char stringpool_str1189[sizeof("ISO-IR-126")]; - char stringpool_str1193[sizeof("ISO-8859-14")]; - char stringpool_str1194[sizeof("CSISO58GB231280")]; - char stringpool_str1198[sizeof("IBM-277")]; - char stringpool_str1205[sizeof("ISO-8859-8")]; - char stringpool_str1207[sizeof("MS-EE")]; - char stringpool_str1208[sizeof("IBM-1137")]; - char stringpool_str1209[sizeof("IBM-1047")]; - char stringpool_str1217[sizeof("UNICODE-1-1")]; - char stringpool_str1221[sizeof("JIS_X0201")]; - char stringpool_str1225[sizeof("CSIBM01143")]; - char stringpool_str1227[sizeof("ARMSCII-8")]; - char stringpool_str1228[sizeof("ISO-2022-CN-EXT")]; - char stringpool_str1229[sizeof("ISO-8859-4")]; - char stringpool_str1230[sizeof("ISO-8859-10")]; - char stringpool_str1234[sizeof("CN-GB")]; - char stringpool_str1235[sizeof("MS-HEBR")]; - char stringpool_str1236[sizeof("GREEK")]; - char stringpool_str1238[sizeof("BIG5-2003")]; - char stringpool_str1243[sizeof("ISO_8859-3")]; - char stringpool_str1244[sizeof("CN-BIG5")]; - char stringpool_str1248[sizeof("ISO_8859-6:1987")]; - char stringpool_str1249[sizeof("IBM-4971")]; - char stringpool_str1251[sizeof("ISO_8859-2:1987")]; - char stringpool_str1252[sizeof("ISO_8859-16")]; - char stringpool_str1255[sizeof("BIGFIVE")]; - char stringpool_str1256[sizeof("ISO_8859-1:1987")]; - char stringpool_str1258[sizeof("CHINESE")]; - char stringpool_str1260[sizeof("ISO-10646-UCS-2")]; - char stringpool_str1262[sizeof("MACUKRAINE")]; - char stringpool_str1264[sizeof("CP-IS")]; - char stringpool_str1265[sizeof("ISO_8859-16:2001")]; - char stringpool_str1277[sizeof("JIS_C6220-1969-RO")]; - char stringpool_str1279[sizeof("JIS_X0208")]; - char stringpool_str1280[sizeof("ISO-IR-14")]; - char stringpool_str1281[sizeof("ISO-IR-101")]; - char stringpool_str1282[sizeof("EBCDIC-DE-273+EURO")]; - char stringpool_str1285[sizeof("CSIBM1047")]; - char stringpool_str1289[sizeof("NEXTSTEP")]; - char stringpool_str1297[sizeof("CSISO159JISX02121990")]; - char stringpool_str1298[sizeof("CCSID01147")]; - char stringpool_str1305[sizeof("CSPC8CODEPAGE437")]; - char stringpool_str1306[sizeof("ISO-10646-UCS-4")]; - char stringpool_str1307[sizeof("IBM-297")]; - char stringpool_str1309[sizeof("ISO-IR-148")]; - char stringpool_str1311[sizeof("ISO-8859-13")]; - char stringpool_str1312[sizeof("JIS_C6226-1983")]; - char stringpool_str1314[sizeof("CSISO57GB1988")]; - char stringpool_str1321[sizeof("CSHPROMAN8")]; - char stringpool_str1322[sizeof("CSGB2312")]; - char stringpool_str1324[sizeof("LATIN-9")]; - char stringpool_str1327[sizeof("JIS_X0212")]; - char stringpool_str1328[sizeof("CSEUCTW")]; - char stringpool_str1332[sizeof("ISO8859-6")]; - char stringpool_str1333[sizeof("ISO-IR-144")]; - char stringpool_str1334[sizeof("ISO8859-5")]; - char stringpool_str1336[sizeof("CSISO2022JP")]; - char stringpool_str1338[sizeof("ISO8859-2")]; - char stringpool_str1340[sizeof("CSISO2022JP2")]; - char stringpool_str1341[sizeof("CSIBM857")]; - char stringpool_str1344[sizeof("ISO8859-16")]; - char stringpool_str1345[sizeof("ASMO-708")]; - char stringpool_str1346[sizeof("ISO8859-15")]; - char stringpool_str1347[sizeof("EBCDIC-INTERNATIONAL-500+EURO")]; - char stringpool_str1348[sizeof("ISO8859-1")]; - char stringpool_str1352[sizeof("ISO-IR-110")]; - char stringpool_str1353[sizeof("CSVISCII")]; - char stringpool_str1360[sizeof("ISO8859-11")]; - char stringpool_str1364[sizeof("EUC-JISX0213")]; - char stringpool_str1367[sizeof("ISO_8859-7:2003")]; - char stringpool_str1368[sizeof("IBM-EUCCN")]; - char stringpool_str1369[sizeof("ISO-8859-3")]; - char stringpool_str1371[sizeof("EBCDIC-CP-ROECE")]; - char stringpool_str1372[sizeof("ISO-IR-58")]; - char stringpool_str1375[sizeof("ISO-2022-JP")]; - char stringpool_str1378[sizeof("ISO-8859-16")]; - char stringpool_str1379[sizeof("ISO-IR-138")]; - char stringpool_str1380[sizeof("ISO-2022-JP-2")]; - char stringpool_str1383[sizeof("CSIBM905")]; - char stringpool_str1385[sizeof("ISO-2022-JP-1")]; - char stringpool_str1387[sizeof("CSUNICODE11")]; - char stringpool_str1390[sizeof("EBCDIC-CP-US")]; - char stringpool_str1393[sizeof("ISO-IR-230")]; - char stringpool_str1398[sizeof("HZ-GB-2312")]; - char stringpool_str1400[sizeof("IBM-EUCTW")]; - char stringpool_str1404[sizeof("UTF-16BE")]; - char stringpool_str1406[sizeof("ISO8859-8")]; - char stringpool_str1412[sizeof("EBCDIC-DK-277+EURO")]; - char stringpool_str1413[sizeof("UTF-16LE")]; - char stringpool_str1417[sizeof("EBCDIC-CP-FI")]; - char stringpool_str1423[sizeof("ISO-IR-100")]; - char stringpool_str1425[sizeof("JIS_X0212.1990-0")]; - char stringpool_str1428[sizeof("EBCDIC-CP-FR")]; - char stringpool_str1429[sizeof("ISO-2022-JP-2004")]; - char stringpool_str1430[sizeof("ISO8859-4")]; - char stringpool_str1433[sizeof("ISO-IR-203")]; - char stringpool_str1438[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str1442[sizeof("ISO8859-14")]; - char stringpool_str1444[sizeof("CSUNICODE")]; - char stringpool_str1450[sizeof("UNICODE-1-1-UTF-7")]; - char stringpool_str1455[sizeof("MACGREEK")]; - char stringpool_str1457[sizeof("CSIBM01147")]; - char stringpool_str1460[sizeof("MS-TURK")]; - char stringpool_str1461[sizeof("EBCDIC-CP-IS")]; - char stringpool_str1462[sizeof("CSISOLATIN5")]; - char stringpool_str1472[sizeof("CSISOLATIN1")]; - char stringpool_str1475[sizeof("ISO_8859-7")]; - char stringpool_str1483[sizeof("ISO_8859-7:1987")]; - char stringpool_str1492[sizeof("CSISOLATINARABIC")]; - char stringpool_str1493[sizeof("CSISO2022CN")]; - char stringpool_str1496[sizeof("ISO-2022-JP-3")]; - char stringpool_str1499[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str1501[sizeof("CSIBM037")]; - char stringpool_str1502[sizeof("ISO8859-10")]; - char stringpool_str1504[sizeof("IBM-1097")]; - char stringpool_str1511[sizeof("CSISOLATIN4")]; - char stringpool_str1516[sizeof("CCSID01149")]; - char stringpool_str1518[sizeof("UTF-32BE")]; - char stringpool_str1519[sizeof("GB_2312-80")]; - char stringpool_str1526[sizeof("CSKSC56011987")]; - char stringpool_str1527[sizeof("UTF-32LE")]; - char stringpool_str1532[sizeof("ISO-2022-CN")]; - char stringpool_str1536[sizeof("ISO646-CN")]; - char stringpool_str1541[sizeof("CSIBM277")]; - char stringpool_str1543[sizeof("ISO-IR-87")]; - char stringpool_str1554[sizeof("JISX0201-1976")]; - char stringpool_str1561[sizeof("US-ASCII")]; - char stringpool_str1567[sizeof("EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE")]; - char stringpool_str1568[sizeof("KS_C_5601-1987")]; - char stringpool_str1570[sizeof("ISO8859-3")]; - char stringpool_str1571[sizeof("EBCDIC-US-37+EURO")]; - char stringpool_str1573[sizeof("CSISO14JISC6220RO")]; - char stringpool_str1576[sizeof("MACTURKISH")]; - char stringpool_str1582[sizeof("ISO8859-13")]; - char stringpool_str1583[sizeof("CSISOLATIN2")]; - char stringpool_str1601[sizeof("ISO-8859-7")]; - char stringpool_str1604[sizeof("JIS_X0208-1990")]; - char stringpool_str1615[sizeof("SJIS")]; - char stringpool_str1618[sizeof("CSUNICODE11UTF7")]; - char stringpool_str1628[sizeof("EBCDIC-CP-ES")]; - char stringpool_str1629[sizeof("CSISOLATIN3")]; - char stringpool_str1639[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str1644[sizeof("JIS_X0208-1983")]; - char stringpool_str1650[sizeof("CSIBM297")]; - char stringpool_str1657[sizeof("ISO-IR-157")]; - char stringpool_str1659[sizeof("ISO-IR-127")]; - char stringpool_str1671[sizeof("EUC-JIS-2004")]; - char stringpool_str1675[sizeof("CSIBM01149")]; - char stringpool_str1677[sizeof("KS_C_5601-1989")]; - char stringpool_str1686[sizeof("JIS_X0212-1990")]; - char stringpool_str1693[sizeof("ISO_8859-9")]; - char stringpool_str1696[sizeof("CSISOLATIN6")]; - char stringpool_str1701[sizeof("ISO_8859-9:1989")]; - char stringpool_str1714[sizeof("UCS-2-INTERNAL")]; - char stringpool_str1719[sizeof("UCS-2-SWAPPED")]; - char stringpool_str1742[sizeof("GEORGIAN-ACADEMY")]; - char stringpool_str1743[sizeof("UNICODEBIG")]; - char stringpool_str1760[sizeof("UCS-4-INTERNAL")]; - char stringpool_str1761[sizeof("MS-ANSI")]; - char stringpool_str1765[sizeof("UCS-4-SWAPPED")]; - char stringpool_str1766[sizeof("EBCDIC-IS-871+EURO")]; - char stringpool_str1767[sizeof("MACHEBREW")]; - char stringpool_str1768[sizeof("ISO-IR-57")]; - char stringpool_str1771[sizeof("MS_KANJI")]; - char stringpool_str1781[sizeof("CSISOLATINHEBREW")]; - char stringpool_str1798[sizeof("ANSI_X3.4-1986")]; - char stringpool_str1802[sizeof("ISO8859-7")]; - char stringpool_str1812[sizeof("GB_1988-80")]; - char stringpool_str1815[sizeof("RISCOS-LATIN1")]; - char stringpool_str1819[sizeof("ISO-8859-9")]; - char stringpool_str1834[sizeof("CSMACINTOSH")]; - char stringpool_str1835[sizeof("ANSI_X3.4-1968")]; - char stringpool_str1845[sizeof("CSISOLATINGREEK")]; - char stringpool_str1851[sizeof("ISO-2022-JP-MS")]; - char stringpool_str1853[sizeof("CSISO2022KR")]; - char stringpool_str1870[sizeof("BIG5-HKSCS:2001")]; - char stringpool_str1875[sizeof("ISO-IR-159")]; - char stringpool_str1878[sizeof("WINDOWS-1256")]; - char stringpool_str1879[sizeof("WINDOWS-1255")]; - char stringpool_str1881[sizeof("WINDOWS-1252")]; - char stringpool_str1886[sizeof("WINDOWS-1251")]; - char stringpool_str1892[sizeof("ISO-2022-KR")]; - char stringpool_str1893[sizeof("CSISO87JISX0208")]; - char stringpool_str1899[sizeof("BIG5-HKSCS:2008")]; - char stringpool_str1911[sizeof("BIG5-HKSCS:2004")]; - char stringpool_str1915[sizeof("WINDOWS-1258")]; - char stringpool_str1923[sizeof("ISO-IR-149")]; - char stringpool_str1927[sizeof("WINDOWS-1254")]; - char stringpool_str1933[sizeof("EBCDIC-ES-284+EURO")]; - char stringpool_str1952[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str1953[sizeof("ISO-IR-109")]; - char stringpool_str1957[sizeof("WINDOWS-1250")]; - char stringpool_str1997[sizeof("WINDOWS-1253")]; - char stringpool_str2020[sizeof("ISO8859-9")]; - char stringpool_str2050[sizeof("BIG-FIVE")]; - char stringpool_str2062[sizeof("CN-GB-ISOIR165")]; - char stringpool_str2093[sizeof("ISO646-US")]; - char stringpool_str2109[sizeof("ISO-IR-179")]; - char stringpool_str2113[sizeof("WINDOWS-1257")]; - char stringpool_str2115[sizeof("GEORGIAN-PS")]; - char stringpool_str2156[sizeof("MS-GREEK")]; - char stringpool_str2188[sizeof("WINDOWS-874")]; - char stringpool_str2206[sizeof("BIG5-HKSCS:1999")]; - char stringpool_str2218[sizeof("ISO-IR-199")]; - char stringpool_str2327[sizeof("BIG5-HKSCS")]; - char stringpool_str2457[sizeof("SHIFT_JISX0213")]; - char stringpool_str2479[sizeof("SHIFT_JIS-2004")]; - char stringpool_str2482[sizeof("CSSHIFTJIS")]; - char stringpool_str2504[sizeof("SHIFT_JIS")]; - char stringpool_str2529[sizeof("BIG5HKSCS")]; - char stringpool_str2564[sizeof("WINDOWS-936")]; - char stringpool_str2630[sizeof("SHIFT-JIS")]; + char stringpool_str21[sizeof("L6")]; + char stringpool_str23[sizeof("L5")]; + char stringpool_str27[sizeof("L1")]; + char stringpool_str28[sizeof("CPIS")]; + char stringpool_str31[sizeof("5601")]; + char stringpool_str32[sizeof("1125")]; + char stringpool_str33[sizeof("646")]; + char stringpool_str35[sizeof("ASCII")]; + char stringpool_str37[sizeof("866")]; + char stringpool_str38[sizeof("865")]; + char stringpool_str39[sizeof("855")]; + char stringpool_str40[sizeof("861")]; + char stringpool_str44[sizeof("CSASCII")]; + char stringpool_str45[sizeof("VISCII")]; + char stringpool_str50[sizeof("CSVISCII")]; + char stringpool_str51[sizeof("L4")]; + char stringpool_str53[sizeof("L10")]; + char stringpool_str55[sizeof("CP285")]; + char stringpool_str57[sizeof("858")]; + char stringpool_str59[sizeof("L8")]; + char stringpool_str65[sizeof("860")]; + char stringpool_str66[sizeof("850")]; + char stringpool_str67[sizeof("CP01146")]; + char stringpool_str68[sizeof("CSUCS4")]; + char stringpool_str69[sizeof("CP01145")]; + char stringpool_str70[sizeof("CYRILLIC")]; + char stringpool_str73[sizeof("CP01141")]; + char stringpool_str97[sizeof("CP01144")]; + char stringpool_str99[sizeof("PCK")]; + char stringpool_str102[sizeof("862")]; + char stringpool_str103[sizeof("852")]; + char stringpool_str105[sizeof("CP01148")]; + char stringpool_str108[sizeof("VISCII1.11")]; + char stringpool_str113[sizeof("MAC")]; + char stringpool_str123[sizeof("CP01140")]; + char stringpool_str130[sizeof("LATIN6")]; + char stringpool_str132[sizeof("LATIN5")]; + char stringpool_str133[sizeof("CSKZ1048")]; + char stringpool_str136[sizeof("LATIN1")]; + char stringpool_str146[sizeof("857")]; + char stringpool_str150[sizeof("X0201")]; + char stringpool_str151[sizeof("L2")]; + char stringpool_str154[sizeof("KSC5601")]; + char stringpool_str158[sizeof("863")]; + char stringpool_str159[sizeof("853")]; + char stringpool_str160[sizeof("LATIN4")]; + char stringpool_str162[sizeof("CP1250")]; + char stringpool_str163[sizeof("CCSID01146")]; + char stringpool_str165[sizeof("CCSID01145")]; + char stringpool_str168[sizeof("LATIN8")]; + char stringpool_str169[sizeof("CCSID01141")]; + char stringpool_str174[sizeof("CYRILLICASIAN")]; + char stringpool_str182[sizeof("X0208")]; + char stringpool_str188[sizeof("CN")]; + char stringpool_str193[sizeof("CCSID01144")]; + char stringpool_str194[sizeof("KZ1048")]; + char stringpool_str195[sizeof("LATIN10")]; + char stringpool_str196[sizeof("HZ")]; + char stringpool_str197[sizeof("CP01142")]; + char stringpool_str198[sizeof("CP870")]; + char stringpool_str200[sizeof("869")]; + char stringpool_str201[sizeof("CCSID01148")]; + char stringpool_str203[sizeof("CSPCP852")]; + char stringpool_str208[sizeof("CSKSC56011987")]; + char stringpool_str209[sizeof("ECMA114")]; + char stringpool_str210[sizeof("MSANSI")]; + char stringpool_str213[sizeof("ANSI1251")]; + char stringpool_str217[sizeof("ECMA118")]; + char stringpool_str219[sizeof("CCSID01140")]; + char stringpool_str234[sizeof("ISO646CN")]; + char stringpool_str237[sizeof("L7")]; + char stringpool_str240[sizeof("MS936")]; + char stringpool_str249[sizeof("X0212")]; + char stringpool_str250[sizeof("ISO88596")]; + char stringpool_str252[sizeof("ISO88595")]; + char stringpool_str256[sizeof("ISO88591")]; + char stringpool_str259[sizeof("ISO885916")]; + char stringpool_str260[sizeof("LATIN2")]; + char stringpool_str261[sizeof("ISO885915")]; + char stringpool_str262[sizeof("437")]; + char stringpool_str263[sizeof("L3")]; + char stringpool_str265[sizeof("ISO885911")]; + char stringpool_str277[sizeof("CSBIG5")]; + char stringpool_str280[sizeof("ISO88594")]; + char stringpool_str282[sizeof("BIG5")]; + char stringpool_str283[sizeof("CP01147")]; + char stringpool_str288[sizeof("ISO88598")]; + char stringpool_str289[sizeof("ISO885914")]; + char stringpool_str293[sizeof("CCSID01142")]; + char stringpool_str304[sizeof("IBM1166")]; + char stringpool_str305[sizeof("IBM1156")]; + char stringpool_str306[sizeof("IBM1165")]; + char stringpool_str307[sizeof("IBM1155")]; + char stringpool_str309[sizeof("CP01143")]; + char stringpool_str310[sizeof("IBM1161")]; + char stringpool_str311[sizeof("IBM866")]; + char stringpool_str312[sizeof("IBM856")]; + char stringpool_str313[sizeof("IBM865")]; + char stringpool_str314[sizeof("IBM855")]; + char stringpool_str315[sizeof("ISO885910")]; + char stringpool_str317[sizeof("IBM861")]; + char stringpool_str319[sizeof("IBM1146")]; + char stringpool_str321[sizeof("IBM1145")]; + char stringpool_str325[sizeof("IBM1141")]; + char stringpool_str332[sizeof("CP00924")]; + char stringpool_str334[sizeof("IBM1164")]; + char stringpool_str335[sizeof("IBM1154")]; + char stringpool_str340[sizeof("ASMO708")]; + char stringpool_str341[sizeof("IBM864")]; + char stringpool_str343[sizeof("IBM1158")]; + char stringpool_str344[sizeof("IBM1046")]; + char stringpool_str345[sizeof("C99")]; + char stringpool_str346[sizeof("LATIN7")]; + char stringpool_str349[sizeof("IBM1144")]; + char stringpool_str350[sizeof("IBM858")]; + char stringpool_str353[sizeof("IBM01146")]; + char stringpool_str355[sizeof("IBM01145")]; + char stringpool_str357[sizeof("IBM1148")]; + char stringpool_str359[sizeof("IBM01141")]; + char stringpool_str360[sizeof("IBM1160")]; + char stringpool_str362[sizeof("CNBIG5")]; + char stringpool_str363[sizeof("MSEE")]; + char stringpool_str364[sizeof("CCSID853")]; + char stringpool_str367[sizeof("IBM860")]; + char stringpool_str368[sizeof("IBM850")]; + char stringpool_str371[sizeof("IBM1125")]; + char stringpool_str372[sizeof("LATIN3")]; + char stringpool_str374[sizeof("IBM425")]; + char stringpool_str375[sizeof("IBM1140")]; + char stringpool_str377[sizeof("IBM500")]; + char stringpool_str378[sizeof("IBM285")]; + char stringpool_str379[sizeof("CCSID01147")]; + char stringpool_str380[sizeof("ISO88592")]; + char stringpool_str383[sizeof("IBM01144")]; + char stringpool_str384[sizeof("IBM16804")]; + char stringpool_str386[sizeof("IBM880")]; + char stringpool_str388[sizeof("CSPC8CODEPAGE1146")]; + char stringpool_str390[sizeof("HP15CN")]; + char stringpool_str391[sizeof("IBM01148")]; + char stringpool_str393[sizeof("CP01149")]; + char stringpool_str394[sizeof("IBM1026")]; + char stringpool_str396[sizeof("IBM1025")]; + char stringpool_str397[sizeof("CNS11643")]; + char stringpool_str399[sizeof("IBM1124")]; + char stringpool_str402[sizeof("IBM424")]; + char stringpool_str403[sizeof("CSPC8CODEPAGE1144")]; + char stringpool_str405[sizeof("CCSID01143")]; + char stringpool_str406[sizeof("IBM284")]; + char stringpool_str409[sizeof("IBM01140")]; + char stringpool_str412[sizeof("CSIBM1161")]; + char stringpool_str413[sizeof("CSIBM866")]; + char stringpool_str415[sizeof("CSIBM865")]; + char stringpool_str416[sizeof("CSIBM855")]; + char stringpool_str418[sizeof("IBM00858")]; + char stringpool_str419[sizeof("CSIBM861")]; + char stringpool_str421[sizeof("IBM875")]; + char stringpool_str425[sizeof("IBM871")]; + char stringpool_str428[sizeof("CCSID00924")]; + char stringpool_str431[sizeof("IBM1131")]; + char stringpool_str432[sizeof("IBM280")]; + char stringpool_str434[sizeof("IBM1162")]; + char stringpool_str435[sizeof("XMACCE")]; + char stringpool_str437[sizeof("IBM1112")]; + char stringpool_str441[sizeof("IBM862")]; + char stringpool_str442[sizeof("IBM852")]; + char stringpool_str443[sizeof("CSIBM864")]; + char stringpool_str448[sizeof("ISO2022CN")]; + char stringpool_str449[sizeof("IBM1142")]; + char stringpool_str450[sizeof("CSUNICODE11")]; + char stringpool_str452[sizeof("CSIBM858")]; + char stringpool_str456[sizeof("LATIN9")]; + char stringpool_str457[sizeof("CSIBM01145")]; + char stringpool_str461[sizeof("CSIBM01141")]; + char stringpool_str463[sizeof("KSC56011987")]; + char stringpool_str466[sizeof("ISO88597")]; + char stringpool_str469[sizeof("CSIBM860")]; + char stringpool_str470[sizeof("IBM838")]; + char stringpool_str473[sizeof("CSIBM1125")]; + char stringpool_str475[sizeof("IBM870")]; + char stringpool_str478[sizeof("MACICELAND")]; + char stringpool_str479[sizeof("CSIBM500")]; + char stringpool_str480[sizeof("CSIBM285")]; + char stringpool_str481[sizeof("IBM1130")]; + char stringpool_str483[sizeof("IBM01142")]; + char stringpool_str485[sizeof("IBM905")]; + char stringpool_str488[sizeof("CSIBM880")]; + char stringpool_str489[sizeof("CCSID01149")]; + char stringpool_str490[sizeof("CSISO2022CN")]; + char stringpool_str492[sizeof("ISO88593")]; + char stringpool_str493[sizeof("CSIBM01148")]; + char stringpool_str494[sizeof("DECHANZI")]; + char stringpool_str495[sizeof("CSPC8CODEPAGE437")]; + char stringpool_str496[sizeof("CSIBM1026")]; + char stringpool_str497[sizeof("IBM1252")]; + char stringpool_str498[sizeof("EBCDICCPIS")]; + char stringpool_str499[sizeof("IBM1122")]; + char stringpool_str501[sizeof("ISO885913")]; + char stringpool_str503[sizeof("IBM278")]; + char stringpool_str504[sizeof("CSIBM424")]; + char stringpool_str506[sizeof("IBM282")]; + char stringpool_str508[sizeof("CSIBM284")]; + char stringpool_str509[sizeof("EBCDICCPCA")]; + char stringpool_str510[sizeof("IBM775")]; + char stringpool_str511[sizeof("CSIBM01140")]; + char stringpool_str513[sizeof("EBCDICCPFI")]; + char stringpool_str518[sizeof("KSC56011989")]; + char stringpool_str521[sizeof("IBM1157")]; + char stringpool_str526[sizeof("IBM921")]; + char stringpool_str527[sizeof("CSIBM871")]; + char stringpool_str528[sizeof("IBM857")]; + char stringpool_str532[sizeof("KOREAN")]; + char stringpool_str534[sizeof("CSIBM280")]; + char stringpool_str535[sizeof("IBM1147")]; + char stringpool_str536[sizeof("CSIBM1162")]; + char stringpool_str538[sizeof("PT154")]; + char stringpool_str539[sizeof("ANSIX3.41986")]; + char stringpool_str546[sizeof("IBM1163")]; + char stringpool_str547[sizeof("IBM1153")]; + char stringpool_str548[sizeof("CSPC775BALTIC")]; + char stringpool_str550[sizeof("IBM924")]; + char stringpool_str553[sizeof("IBM863")]; + char stringpool_str554[sizeof("IBM853")]; + char stringpool_str555[sizeof("IBM1132")]; + char stringpool_str556[sizeof("PTCP154")]; + char stringpool_str558[sizeof("ANSIX3.41968")]; + char stringpool_str559[sizeof("CSUNICODE11UTF7")]; + char stringpool_str560[sizeof("IBM1047")]; + char stringpool_str561[sizeof("IBM1143")]; + char stringpool_str562[sizeof("CSUNICODE")]; + char stringpool_str565[sizeof("TDS565")]; + char stringpool_str566[sizeof("HPROMAN8")]; + char stringpool_str567[sizeof("CSPTCP154")]; + char stringpool_str568[sizeof("BIG5HKSCS")]; + char stringpool_str569[sizeof("IBM01147")]; + char stringpool_str571[sizeof("BIGFIVE")]; + char stringpool_str576[sizeof("ISO88599")]; + char stringpool_str577[sizeof("CSIBM870")]; + char stringpool_str585[sizeof("CSIBM01142")]; + char stringpool_str587[sizeof("CSIBM905")]; + char stringpool_str589[sizeof("GBK")]; + char stringpool_str590[sizeof("IBM4971")]; + char stringpool_str591[sizeof("EBCDICCPNL")]; + char stringpool_str593[sizeof("ISOIR6")]; + char stringpool_str595[sizeof("IBM01143")]; + char stringpool_str605[sizeof("CSIBM278")]; + char stringpool_str608[sizeof("ISOIR166")]; + char stringpool_str610[sizeof("ISOIR165")]; + char stringpool_str611[sizeof("IBM1123")]; + char stringpool_str612[sizeof("R8")]; + char stringpool_str613[sizeof("IBM12712")]; + char stringpool_str614[sizeof("IBM423")]; + char stringpool_str618[sizeof("IBM00924")]; + char stringpool_str620[sizeof("US")]; + char stringpool_str622[sizeof("CNGB")]; + char stringpool_str623[sizeof("EBCDICCPES")]; + char stringpool_str624[sizeof("CSGB2312")]; + char stringpool_str629[sizeof("IBM367")]; + char stringpool_str630[sizeof("CSIBM857")]; + char stringpool_str631[sizeof("TIS620")]; + char stringpool_str632[sizeof("ISOIR14")]; + char stringpool_str637[sizeof("IBM869")]; + char stringpool_str638[sizeof("ISOIR58")]; + char stringpool_str640[sizeof("IBM819")]; + char stringpool_str641[sizeof("IBM1137")]; + char stringpool_str642[sizeof("ISOIR101")]; + char stringpool_str644[sizeof("IBM437")]; + char stringpool_str645[sizeof("IBM1149")]; + char stringpool_str646[sizeof("USASCII")]; + char stringpool_str648[sizeof("CSIBM1163")]; + char stringpool_str649[sizeof("ARMSCII8")]; + char stringpool_str650[sizeof("IBM922")]; + char stringpool_str653[sizeof("ISOIR144")]; + char stringpool_str655[sizeof("CSIBM863")]; + char stringpool_str656[sizeof("CSIBM853")]; + char stringpool_str657[sizeof("IBM037")]; + char stringpool_str658[sizeof("UCS4")]; + char stringpool_str660[sizeof("ISOCELTIC")]; + char stringpool_str661[sizeof("ISOIR148")]; + char stringpool_str662[sizeof("CSIBM1047")]; + char stringpool_str665[sizeof("TIS6200")]; + char stringpool_str666[sizeof("ISO646US")]; + char stringpool_str667[sizeof("ISOIR110")]; + char stringpool_str668[sizeof("BIG52003")]; + char stringpool_str669[sizeof("TCVN")]; + char stringpool_str671[sizeof("CSIBM01147")]; + char stringpool_str673[sizeof("ISOIR126")]; + char stringpool_str675[sizeof("ISO646.IRV:1991")]; + char stringpool_str677[sizeof("JP")]; + char stringpool_str678[sizeof("SJIS")]; + char stringpool_str679[sizeof("IBM01149")]; + char stringpool_str681[sizeof("IBM277")]; + char stringpool_str682[sizeof("CHINESE")]; + char stringpool_str683[sizeof("IBMCP1133")]; + char stringpool_str692[sizeof("ISOIR100")]; + char stringpool_str693[sizeof("JAVA")]; + char stringpool_str695[sizeof("IBM1129")]; + char stringpool_str697[sizeof("CSIBM01143")]; + char stringpool_str701[sizeof("MSCYRL")]; + char stringpool_str704[sizeof("EBCDICCPDK")]; + char stringpool_str706[sizeof("IBM932")]; + char stringpool_str707[sizeof("IBM273")]; + char stringpool_str708[sizeof("IBM1097")]; + char stringpool_str712[sizeof("IBM943")]; + char stringpool_str716[sizeof("CSIBM423")]; + char stringpool_str720[sizeof("CSIBM00924")]; + char stringpool_str723[sizeof("ISO646JP")]; + char stringpool_str727[sizeof("ISO10646UCS4")]; + char stringpool_str733[sizeof("MACCYRILLIC")]; + char stringpool_str735[sizeof("ISOIR226")]; + char stringpool_str736[sizeof("IBM297")]; + char stringpool_str737[sizeof("IBM737")]; + char stringpool_str739[sizeof("CSIBM869")]; + char stringpool_str746[sizeof("EBCDICIS871+EURO")]; + char stringpool_str748[sizeof("EBCDICCPSE")]; + char stringpool_str749[sizeof("CSISOLATIN6")]; + char stringpool_str750[sizeof("CSISOLATIN5")]; + char stringpool_str751[sizeof("RK1048")]; + char stringpool_str752[sizeof("CSISOLATIN1")]; + char stringpool_str755[sizeof("CSISOLATINARABIC")]; + char stringpool_str757[sizeof("CSISOLATINCYRILLIC")]; + char stringpool_str758[sizeof("UCS2")]; + char stringpool_str759[sizeof("CSIBM037")]; + char stringpool_str760[sizeof("GB18030")]; + char stringpool_str764[sizeof("CSISOLATIN4")]; + char stringpool_str767[sizeof("ISOIR138")]; + char stringpool_str769[sizeof("ISO885916:2001")]; + char stringpool_str777[sizeof("ISO10646UCS2")]; + char stringpool_str781[sizeof("CSIBM01149")]; + char stringpool_str783[sizeof("CSIBM277")]; + char stringpool_str784[sizeof("GB2312")]; + char stringpool_str785[sizeof("ISO88595:1988")]; + char stringpool_str786[sizeof("ISO885915:1998")]; + char stringpool_str790[sizeof("TIS620.25291")]; + char stringpool_str792[sizeof("CSISO58GB231280")]; + char stringpool_str794[sizeof("MACTHAI")]; + char stringpool_str797[sizeof("TCVN57121")]; + char stringpool_str799[sizeof("ISO88594:1988")]; + char stringpool_str800[sizeof("ISO885914:1998")]; + char stringpool_str801[sizeof("UHC")]; + char stringpool_str802[sizeof("HZGB2312")]; + char stringpool_str803[sizeof("ISO88598:1988")]; + char stringpool_str806[sizeof("GB231280")]; + char stringpool_str807[sizeof("EBCDICFI278+EURO")]; + char stringpool_str808[sizeof("CSISO57GB1988")]; + char stringpool_str809[sizeof("CSIBM273")]; + char stringpool_str814[sizeof("CSISOLATIN2")]; + char stringpool_str816[sizeof("ISOIR57")]; + char stringpool_str818[sizeof("GB198880")]; + char stringpool_str819[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str821[sizeof("EBCDICCPNO")]; + char stringpool_str825[sizeof("ISOIR157")]; + char stringpool_str828[sizeof("EBCDICES284+EURO")]; + char stringpool_str830[sizeof("CSISOLATINGREEK")]; + char stringpool_str832[sizeof("SYSTEM1125")]; + char stringpool_str834[sizeof("ISOIR87")]; + char stringpool_str836[sizeof("STRK10482002")]; + char stringpool_str838[sizeof("CSIBM297")]; + char stringpool_str840[sizeof("ROMAN8")]; + char stringpool_str846[sizeof("TIS620.25331")]; + char stringpool_str847[sizeof("ISOIR230")]; + char stringpool_str850[sizeof("TCVN5712")]; + char stringpool_str855[sizeof("JIS0208")]; + char stringpool_str856[sizeof("ARABIC")]; + char stringpool_str857[sizeof("EBCDICCPCH")]; + char stringpool_str859[sizeof("ISO885910:1992")]; + char stringpool_str870[sizeof("CSISOLATIN3")]; + char stringpool_str871[sizeof("TIS620.25330")]; + char stringpool_str873[sizeof("ISO88596:1987")]; + char stringpool_str875[sizeof("MSKANJI")]; + char stringpool_str876[sizeof("ISO88591:1987")]; + char stringpool_str879[sizeof("WINDOWS1256")]; + char stringpool_str880[sizeof("WINDOWS1255")]; + char stringpool_str882[sizeof("WINDOWS1251")]; + char stringpool_str887[sizeof("JISX0201")]; + char stringpool_str889[sizeof("ISOIR127")]; + char stringpool_str894[sizeof("WINDOWS1254")]; + char stringpool_str898[sizeof("WINDOWS1258")]; + char stringpool_str905[sizeof("ISO88593:1988")]; + char stringpool_str907[sizeof("WINDOWS1250")]; + char stringpool_str909[sizeof("UCS4LE")]; + char stringpool_str911[sizeof("ELOT928")]; + char stringpool_str914[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str917[sizeof("EBCDICSE278+EURO")]; + char stringpool_str919[sizeof("JISX0208")]; + char stringpool_str921[sizeof("EBCDICDK277+EURO")]; + char stringpool_str925[sizeof("CSMACINTOSH")]; + char stringpool_str926[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str927[sizeof("EBCDICCPHE")]; + char stringpool_str928[sizeof("SDECKANJI")]; + char stringpool_str929[sizeof("EUCCN")]; + char stringpool_str935[sizeof("ISOIR159")]; + char stringpool_str937[sizeof("ISO2022JP")]; + char stringpool_str938[sizeof("ISO88592:1987")]; + char stringpool_str940[sizeof("ISOIR203")]; + char stringpool_str944[sizeof("WINDOWS1252")]; + char stringpool_str946[sizeof("ISO2022JP1")]; + char stringpool_str949[sizeof("ISOIR149")]; + char stringpool_str956[sizeof("IBMTHAI")]; + char stringpool_str957[sizeof("CSHPROMAN8")]; + char stringpool_str959[sizeof("UCS2LE")]; + char stringpool_str962[sizeof("ISOIR109")]; + char stringpool_str963[sizeof("TIS620.2533")]; + char stringpool_str966[sizeof("WINDOWS874")]; + char stringpool_str969[sizeof("EBCDICDE273+EURO")]; + char stringpool_str970[sizeof("ISO2022CNEXT")]; + char stringpool_str973[sizeof("MACARABIC")]; + char stringpool_str978[sizeof("CSISO14JISC6220RO")]; + char stringpool_str981[sizeof("ISO88597:1987")]; + char stringpool_str985[sizeof("CSISO87JISX0208")]; + char stringpool_str986[sizeof("JISX0212")]; + char stringpool_str987[sizeof("WINDOWS1257")]; + char stringpool_str989[sizeof("TACTIS")]; + char stringpool_str995[sizeof("JISX0212.19900")]; + char stringpool_str996[sizeof("EBCDICNO277+EURO")]; + char stringpool_str999[sizeof("MULELAO1")]; + char stringpool_str1000[sizeof("WINDOWS1253")]; + char stringpool_str1004[sizeof("EBCDICCPBE")]; + char stringpool_str1019[sizeof("MACROMANIA")]; + char stringpool_str1023[sizeof("ISO2022JP2004")]; + char stringpool_str1029[sizeof("WINDOWS950")]; + char stringpool_str1030[sizeof("ISO2022JPMS")]; + char stringpool_str1035[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str1038[sizeof("CSISO2022KR")]; + char stringpool_str1039[sizeof("CSISO159JISX02121990")]; + char stringpool_str1042[sizeof("ISOIR179")]; + char stringpool_str1043[sizeof("CSISOLATINHEBREW")]; + char stringpool_str1046[sizeof("DECKANJI")]; + char stringpool_str1048[sizeof("UNICODE11")]; + char stringpool_str1056[sizeof("ISO88597:2003")]; + char stringpool_str1058[sizeof("CSIBMTHAI")]; + char stringpool_str1061[sizeof("CSISO2022JP")]; + char stringpool_str1064[sizeof("JISX02011976")]; + char stringpool_str1066[sizeof("ATARI")]; + char stringpool_str1068[sizeof("EBCDICCYRILLIC")]; + char stringpool_str1070[sizeof("ISO2022JP2")]; + char stringpool_str1071[sizeof("GREEK8")]; + char stringpool_str1078[sizeof("BIG5HKSCS:2001")]; + char stringpool_str1082[sizeof("MACROMAN")]; + char stringpool_str1084[sizeof("CNGBISOIR165")]; + char stringpool_str1090[sizeof("BIG5HKSCS:2004")]; + char stringpool_str1091[sizeof("ISO88599:1989")]; + char stringpool_str1092[sizeof("MSGREEK")]; + char stringpool_str1093[sizeof("WINDOWS936")]; + char stringpool_str1094[sizeof("BIG5HKSCS:2008")]; + char stringpool_str1097[sizeof("ISOIR199")]; + char stringpool_str1101[sizeof("EBCDICCPUS")]; + char stringpool_str1102[sizeof("EBCDICLATIN9EURO")]; + char stringpool_str1104[sizeof("GREEK")]; + char stringpool_str1108[sizeof("JISX02081990")]; + char stringpool_str1110[sizeof("UTF16")]; + char stringpool_str1124[sizeof("CSISO2022JP2")]; + char stringpool_str1129[sizeof("JISX02121990")]; + char stringpool_str1134[sizeof("JISC62261983")]; + char stringpool_str1139[sizeof("UTF8")]; + char stringpool_str1142[sizeof("CPGR")]; + char stringpool_str1157[sizeof("UCS4SWAPPED")]; + char stringpool_str1161[sizeof("UCS4BE")]; + char stringpool_str1162[sizeof("JISC62201969RO")]; + char stringpool_str1177[sizeof("EBCDICIT280+EURO")]; + char stringpool_str1182[sizeof("ISO2022JP3")]; + char stringpool_str1184[sizeof("MACINTOSH")]; + char stringpool_str1193[sizeof("KOI8T")]; + char stringpool_str1197[sizeof("EBCDICGB285+EURO")]; + char stringpool_str1199[sizeof("MSARAB")]; + char stringpool_str1201[sizeof("JISX02081983")]; + char stringpool_str1204[sizeof("IBMEUCCN")]; + char stringpool_str1207[sizeof("UCS2SWAPPED")]; + char stringpool_str1211[sizeof("UCS2BE")]; + char stringpool_str1225[sizeof("RISCOSLATIN1")]; + char stringpool_str1238[sizeof("BIG5HKSCS:1999")]; + char stringpool_str1248[sizeof("EBCDICCPGB")]; + char stringpool_str1284[sizeof("DECKOREAN")]; + char stringpool_str1295[sizeof("CSKOI8R")]; + char stringpool_str1302[sizeof("EBCDICCPROECE")]; + char stringpool_str1311[sizeof("GEORGIANPS")]; + char stringpool_str1314[sizeof("EBCDICINTERNATIONAL500+EURO")]; + char stringpool_str1317[sizeof("UTF7")]; + char stringpool_str1320[sizeof("JOHAB")]; + char stringpool_str1330[sizeof("GEORGIANACADEMY")]; + char stringpool_str1337[sizeof("NEXTSTEP")]; + char stringpool_str1341[sizeof("MACGREEK")]; + char stringpool_str1343[sizeof("GB18030:2005")]; + char stringpool_str1358[sizeof("UTF32")]; + char stringpool_str1359[sizeof("KOI8R")]; + char stringpool_str1370[sizeof("SHIFTJIS")]; + char stringpool_str1376[sizeof("UTF16LE")]; + char stringpool_str1383[sizeof("CSSHIFTJIS")]; + char stringpool_str1401[sizeof("MACCROATIAN")]; + char stringpool_str1407[sizeof("GB18030:2022")]; + char stringpool_str1418[sizeof("EUCJP")]; + char stringpool_str1419[sizeof("EBCDICFR297+EURO")]; + char stringpool_str1422[sizeof("TCVN57121:1993")]; + char stringpool_str1439[sizeof("MSTURK")]; + char stringpool_str1446[sizeof("EBCDICCPIT")]; + char stringpool_str1450[sizeof("EBCDICUS37+EURO")]; + char stringpool_str1451[sizeof("KOI8U")]; + char stringpool_str1468[sizeof("ISO2022KR")]; + char stringpool_str1492[sizeof("SHIFTJIS2004")]; + char stringpool_str1524[sizeof("EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE")]; + char stringpool_str1536[sizeof("MACCENTRALEUROPE")]; + char stringpool_str1559[sizeof("UTF32LE")]; + char stringpool_str1592[sizeof("SHIFTJISX0213")]; + char stringpool_str1593[sizeof("EUCJIS2004")]; + char stringpool_str1600[sizeof("HEBREW")]; + char stringpool_str1617[sizeof("EBCDICGREEK")]; + char stringpool_str1620[sizeof("MSHEBR")]; + char stringpool_str1627[sizeof("EBCDICCPFR")]; + char stringpool_str1628[sizeof("UTF16BE")]; + char stringpool_str1651[sizeof("UNICODELITTLE")]; + char stringpool_str1693[sizeof("IBMEUCJP")]; + char stringpool_str1699[sizeof("CSEUCTW")]; + char stringpool_str1711[sizeof("DECHANYU")]; + char stringpool_str1715[sizeof("EBCDICCPYU")]; + char stringpool_str1718[sizeof("EUCJISX0213")]; + char stringpool_str1731[sizeof("MACUKRAINE")]; + char stringpool_str1735[sizeof("EBCDICCPWT")]; + char stringpool_str1765[sizeof("UNICODE11UTF7")]; + char stringpool_str1777[sizeof("UNICODEBIG")]; + char stringpool_str1810[sizeof("EUCTW")]; + char stringpool_str1811[sizeof("UTF32BE")]; + char stringpool_str1823[sizeof("WINBALTRIM")]; + char stringpool_str1838[sizeof("CSEUCKR")]; + char stringpool_str1850[sizeof("EBCDICCPGR")]; + char stringpool_str1867[sizeof("KOKR.JOHAP92")]; + char stringpool_str1949[sizeof("EUCKR")]; + char stringpool_str1968[sizeof("MACHEBREW")]; + char stringpool_str2011[sizeof("UCS4INTERNAL")]; + char stringpool_str2014[sizeof("KOI8RU")]; + char stringpool_str2026[sizeof("ATARIST")]; + char stringpool_str2061[sizeof("UCS2INTERNAL")]; + char stringpool_str2085[sizeof("IBMEUCTW")]; + char stringpool_str2086[sizeof("EBCDICCPTR")]; + char stringpool_str2223[sizeof("MACTURKISH")]; + char stringpool_str2224[sizeof("IBMEUCKR")]; }; static const struct stringpool_t stringpool_contents = { "L6", "L5", - "L2", "L1", + "CPIS", + "5601", + "1125", + "646", + "ASCII", "866", "865", "855", - "862", - "852", - "646", - "CP1256", - "ATARI", - "CP1255", "861", - "CP1166", - "CP1156", - "CP1252", - "CP1155", - "CP1125", - "CP1162", - "CP1122", - "CP1251", - "CP1112", - "CP1161", - "CP866", - "CP856", - "CP865", - "CP855", - "CP285", - "CP862", - "CP852", - "L8", - "R8", - "CP861", + "CSASCII", + "VISCII", + "CSVISCII", "L4", - "ARABIC", - "PT154", - "CP1258", - "CP1026", - "CP1158", - "CP1025", - "CP154", - "CP50221", - "CP858", - "CP1254", - "PTCP154", - "CP1164", - "CP1154", - "CP1124", - "CP864", - "CP284", - "JP", - "CP1046", "L10", - "CP1132", - "CP1361", - "CP424", - "CP01146", - "CP01145", - "CP1131", - "CP01142", + "CP285", + "858", + "L8", "860", "850", + "CP01146", + "CSUCS4", + "CP01145", + "CYRILLIC", "CP01141", + "CP01144", + "PCK", + "862", + "852", + "CP01148", + "VISCII1.11", + "MAC", + "CP01140", + "LATIN6", + "LATIN5", + "CSKZ1048", + "LATIN1", + "857", + "X0201", + "L2", + "KSC5601", + "863", + "853", + "LATIN4", "CP1250", - "CP1160", + "CCSID01146", + "CCSID01145", + "LATIN8", + "CCSID01141", + "CYRILLICASIAN", + "X0208", + "CN", + "CCSID01144", + "KZ1048", + "LATIN10", "HZ", + "CP01142", + "CP870", + "869", + "CCSID01148", + "CSPCP852", + "CSKSC56011987", + "ECMA114", + "MSANSI", + "ANSI1251", + "ECMA118", + "CCSID01140", + "ISO646CN", + "L7", + "MS936", + "X0212", + "ISO88596", + "ISO88595", + "ISO88591", + "ISO885916", + "LATIN2", + "ISO885915", + "437", + "L3", + "ISO885911", + "CSBIG5", + "ISO88594", + "BIG5", + "CP01147", + "ISO88598", + "ISO885914", + "CCSID01142", "IBM1166", "IBM1156", "IBM1165", "IBM1155", - "IBM1162", - "CP860", - "CP850", - "IBM1122", - "CP280", - "IBM1112", + "CP01143", "IBM1161", "IBM866", + "IBM856", "IBM865", "IBM855", - "L3", - "IBM285", - "IBM862", - "IBM852", - "IBM282", + "ISO885910", "IBM861", - "IBM425", - "MAC", - "CP01148", - "CYRILLIC", - "CP16804", - "CP880", "IBM1146", - "CP500", "IBM1145", - "UHC", - "863", - "IBM1142", - "CP01144", "IBM1141", - "CP1253", - "CP1163", - "CP1153", - "CP1123", - "IBM1026", - "IBM1158", - "IBM1025", - "CP12712", - "CP875", - "CP863", - "CP853", + "CP00924", "IBM1164", "IBM1154", - "CP871", - "CP423", - "CP1130", - "JAVA", + "ASMO708", "IBM864", - "IBM284", - "CP01140", - "IBM1148", - "CP278", - "IBM1132", - "LATIN6", - "LATIN5", - "EUCJP", - "IBM424", - "LATIN2", - "LATIN1", - "JOHAB", + "IBM1158", + "IBM1046", + "C99", + "LATIN7", "IBM1144", - "IBM1160", - "IBM16804", - "CP922", + "IBM858", "IBM01146", - "X0212", + "IBM01145", + "IBM1148", + "IBM01141", + "IBM1160", + "CNBIG5", + "MSEE", + "CCSID853", "IBM860", "IBM850", - "IBM280", - "IBM01148", - "IBM01144", - "CP874", - "IBM01142", - "EUCKR", - "CP1133", - "LATIN8", - "CP01143", + "IBM1125", + "LATIN3", + "IBM425", "IBM1140", - "MACTHAI", - "IBM838", + "IBM500", + "IBM285", + "CCSID01147", + "ISO88592", + "IBM01144", + "IBM16804", "IBM880", + "CSPC8CODEPAGE1146", + "HP15CN", + "IBM01148", + "CP01149", + "IBM1026", + "IBM1025", + "CNS11643", + "IBM1124", + "IBM424", + "CSPC8CODEPAGE1144", + "CCSID01143", + "IBM284", "IBM01140", - "IBM500", - "LATIN4", - "RK1048", - "PCK", - "CP905", - "IBM1163", - "IBM1153", - "IBM1123", - "CP870", - "X0201", - "IBM01143", - "L7", + "CSIBM1161", + "CSIBM866", + "CSIBM865", + "CSIBM855", + "IBM00858", + "CSIBM861", "IBM875", - "IBM863", - "UTF8", - "IBM01141", "IBM871", - "IBM423", - "TDS565", - "CP936", + "CCSID00924", + "IBM1131", + "IBM280", + "IBM1162", + "XMACCE", + "IBM1112", + "IBM862", + "IBM852", + "CSIBM864", + "ISO2022CN", + "IBM1142", + "CSUNICODE11", + "CSIBM858", + "LATIN9", + "CSIBM01145", + "CSIBM01141", + "KSC56011987", + "ISO88597", + "CSIBM860", + "IBM838", + "CSIBM1125", + "IBM870", + "MACICELAND", + "CSIBM500", + "CSIBM285", "IBM1130", - "CP932", - "CP775", - "MACROMANIA", - "857", - "IBM1143", - "CP273", - "IBM278", - "IBM12712", - "IBM-285", - "LATIN10", - "CP1257", - "IBM-282", - "ASCII", - "CP1157", - "IBM-425", - "X0208", - "IBM-1166", - "IBM-1156", - "ATARIST", - "CP950", - "KOI8-T", - "CP857", - "IBM-1158", - "IBM-1164", - "IBM-1154", - "IBM-1162", - "IBM-1122", - "IBM-1112", - "KOI8-R", - "MACARABIC", - "IBM-1160", - "IBM-1146", - "LATIN3", - "IBM01145", - "IBM-1148", - "IBM-1144", - "IBM-1142", - "IBM-1026", - "BIG5", - "IBM-284", - "ROMAN8", - "IBM-1163", - "IBM-1153", - "VISCII", - "IBM-1123", - "IBM-1161", - "CP367", - "EUC-JP", - "IBM-424", - "IBM-1140", + "IBM01142", "IBM905", - "IBM-16804", - "IBM870", - "CSPCP852", - "437", - "CN", - "CP1137", - "CP1047", - "CP00924", - "KOI8-U", - "IBM924", - "TIS620", - "ELOT_928", - "CP01147", - "IBM-EUCJP", - "KOI8-RU", - "IBM-1143", - "CP943", - "IBM-1132", - "ECMA-118", - "TIS620.2529-1", - "ECMA-114", - "IBM-1141", - "CP437", - "IBM-280", + "CSIBM880", + "CCSID01149", + "CSISO2022CN", + "ISO88593", + "CSIBM01148", + "DECHANZI", + "CSPC8CODEPAGE437", + "CSIBM1026", + "IBM1252", + "EBCDICCPIS", + "IBM1122", + "ISO885913", + "IBM278", + "CSIBM424", + "IBM282", + "CSIBM284", + "EBCDICCPCA", "IBM775", - "IBM273", - "CP4971", - "EUC-KR", - "UTF-16", + "CSIBM01140", + "EBCDICCPFI", + "KSC56011989", "IBM1157", - "IBM-1130", - "IBM01149", - "CP037", - "IBM-838", - "IBM-880", + "IBM921", + "CSIBM871", "IBM857", - "IBM-500", - "MACICELAND", - "869", - "MACCYRILLIC", - "IBM-1165", - "IBM-1155", - "KZ-1048", + "KOREAN", + "CSIBM280", "IBM1147", - "CP1129", - "IBM-875", - "MACCROATIAN", - "HP-ROMAN8", - "UTF-8", - "GB2312", - "TCVN", - "CP869", - "IBM-871", - "IBM00924", - "IBM-423", - "CP819", "CSIBM1162", - "MACROMAN", - "IBM-1145", - "CSIBM1161", - "CSIBM866", - "IBM-278", - "CSKOI8R", - "IBM367", - "CSIBM864", - "CSIBM284", - "EBCDIC-CP-NO", - "MULELAO-1", - "IBM-1025", - "EUCTW", - "EBCDIC-CP-NL", - "UTF-32", - "CSIBM424", - "IBM1137", + "PT154", + "ANSIX3.41986", + "IBM1163", + "IBM1153", + "CSPC775BALTIC", + "IBM924", + "IBM863", + "IBM853", + "IBM1132", + "PTCP154", + "ANSIX3.41968", + "CSUNICODE11UTF7", "IBM1047", - "CCSID01146", - "CSPC850MULTILINGUAL", - "CCSID01145", - "EBCDIC-CP-CA", - "CCSID00924", - "LATIN7", - "CCSID01142", - "EUCCN", - "EBCDIC-CYRILLIC", - "TIS620.2533-1", - "ISO646-JP", - "CSIBM860", - "CCSID01141", - "CSIBM280", - "HP15CN", - "UCS-2", - "EBCDIC-GB-285+EURO", - "IBM437", - "EBCDIC-NO-277+EURO", - "CYRILLIC-ASIAN", - "CSIBM1026", - "IBM4971", - "CP297", - "IBM-12712", - "CP737", - "EBCDIC-CP-TR", - "CSIBM880", - "CSIBM863", - "DECHANZI", - "IBM037", - "CSIBM500", - "CSIBM861", - "CP01149", - "IBM-THAI", - "EBCDIC-CP-YU", - "EBCDIC-CP-HE", - "CSIBM423", - "EBCDIC-CP-SE", - "BIG-5", - "CCSID01148", - "IBM-1149", + "IBM1143", + "CSUNICODE", + "TDS565", + "HPROMAN8", "CSPTCP154", - "TIS620.2533-0", - "IBM-905", - "JIS0208", - "IBM-870", - "EBCDIC-CP-BE", - "CSIBMTHAI", - "IBM277", - "CCSID01144", - "CSEUCKR", - "IBM-924", - "TIS-620", - "IBM869", - "TIS620-0", - "UCS-4", - "CP-GR", + "BIG5HKSCS", "IBM01147", - "IBM819", - "CP1097", - "CSKZ1048", - "IBM-932", - "IBM-273", - "EBCDIC-LATIN9-EURO", - "DEC-KANJI", - "MACINTOSH", - "KOREAN", - "IBM1149", - "EBCDIC-CP-GB", - "EBCDIC-CP-CH", - "UNICODELITTLE", - "CCSID01140", - "EBCDIC-CP-GR", - "CSIBM01145", - "EBCDIC-CP-IT", - "CSIBM00924", + "BIGFIVE", + "ISO88599", + "CSIBM870", "CSIBM01142", - "EBCDIC-SE-278+EURO", - "CSIBM865", - "CSIBM855", - "CSIBM285", - "HEBREW", - "CSIBM01141", - "MS-ARAB", - "ISO_8859-6", - "ISO_8859-5", + "CSIBM905", + "GBK", + "IBM4971", + "EBCDICCPNL", + "ISOIR6", + "IBM01143", "CSIBM278", - "ISO_8859-2", - "IBM-CP1133", + "ISOIR166", + "ISOIR165", + "IBM1123", + "R8", + "IBM12712", + "IBM423", + "IBM00924", "US", - "ISO_8859-15", + "CNGB", + "EBCDICCPES", + "CSGB2312", + "IBM367", + "CSIBM857", + "TIS620", + "ISOIR14", + "IBM869", + "ISOIR58", + "IBM819", + "IBM1137", + "ISOIR101", + "IBM437", + "IBM1149", + "USASCII", "CSIBM1163", - "EBCDIC-FI-278+EURO", - "ISO_8859-1", - "UCS-2BE", - "VISCII1.1-1", - "ISO_8859-11", - "CNS11643", - "DEC-HANYU", - "EBCDIC-FR-297+EURO", - "ISO_8859-10:1992", + "ARMSCII8", + "IBM922", + "ISOIR144", + "CSIBM863", + "CSIBM853", + "IBM037", + "UCS4", + "ISOCELTIC", + "ISOIR148", + "CSIBM1047", + "TIS6200", + "ISO646US", + "ISOIR110", + "BIG52003", + "TCVN", + "CSIBM01147", + "ISOIR126", + "ISO646.IRV:1991", + "JP", + "SJIS", + "IBM01149", + "IBM277", + "CHINESE", + "IBMCP1133", + "ISOIR100", + "JAVA", + "IBM1129", + "CSIBM01143", + "MSCYRL", + "EBCDICCPDK", + "IBM932", + "IBM273", + "IBM1097", + "IBM943", + "CSIBM423", + "CSIBM00924", + "ISO646JP", + "ISO10646UCS4", + "MACCYRILLIC", + "ISOIR226", "IBM297", - "UCS-2LE", - "GB18030", "IBM737", - "CSASCII", - "GBK", - "ISO_8859-5:1988", - "ISO_8859-15:1998", - "ISO_8859-14:1998", - "CSIBM01148", - "ISO-CELTIC", - "TCVN5712-1", - "CCSID01143", - "ISO_8859-14", - "GB18030:2005", - "EBCDIC-IT-280+EURO", - "CSPC8CODEPAGE1146", - "UCS-4BE", - "C99", - "WINBALTRIM", - "CSIBM870", - "ISO_8859-8", - "DECKANJI", - "UCS-4LE", - "CSIBM273", - "ISO_8859-8:1988", - "DECHANYU", - "IBM-1157", - "EUC-TW", - "MS-CYRL", - "ISO-IR-6", - "KSC_5601", - "ISO_8859-4:1988", - "GREEK8", - "EBCDIC-CP-WT", - "ISO_8859-4", - "ISO_8859-10", "CSIBM869", - "EUC-CN", - "EBCDIC-CP-DK", - "EBCDIC-GREEK", - "TCVN-5712", - "ISO-IR-226", - "CSPC8CODEPAGE1144", - "IBM1097", - "CSIBM871", - "CP949", - "ISO-8859-6", - "ISO_646.IRV:1991", - "ISO-8859-5", - "CSBIG5", - "ISO-8859-2", - "IBM-1147", - "ISO-8859-15", - "CSIBM01140", - "ISO-8859-1", - "MS936", - "ISO-8859-11", - "CSPC775BALTIC", - "IBM-037", - "MACCENTRALEUROPE", - "UTF-7", - "ISO_8859-3:1988", - "SDECKANJI", - "STRK1048-2002", - "CSUCS4", - "GB18030:2022", - "TCVN5712-1:1993", - "ISO_8859-13", - "ISO-IR-166", - "ISO-IR-165", - "ISO-IR-126", - "ISO-8859-14", - "CSISO58GB231280", - "IBM-277", - "ISO-8859-8", - "MS-EE", - "IBM-1137", - "IBM-1047", - "UNICODE-1-1", - "JIS_X0201", - "CSIBM01143", - "ARMSCII-8", - "ISO-2022-CN-EXT", - "ISO-8859-4", - "ISO-8859-10", - "CN-GB", - "MS-HEBR", - "GREEK", - "BIG5-2003", - "ISO_8859-3", - "CN-BIG5", - "ISO_8859-6:1987", - "IBM-4971", - "ISO_8859-2:1987", - "ISO_8859-16", - "BIGFIVE", - "ISO_8859-1:1987", - "CHINESE", - "ISO-10646-UCS-2", - "MACUKRAINE", - "CP-IS", - "ISO_8859-16:2001", - "JIS_C6220-1969-RO", - "JIS_X0208", - "ISO-IR-14", - "ISO-IR-101", - "EBCDIC-DE-273+EURO", - "CSIBM1047", - "NEXTSTEP", - "CSISO159JISX02121990", - "CCSID01147", - "CSPC8CODEPAGE437", - "ISO-10646-UCS-4", - "IBM-297", - "ISO-IR-148", - "ISO-8859-13", - "JIS_C6226-1983", - "CSISO57GB1988", - "CSHPROMAN8", - "CSGB2312", - "LATIN-9", - "JIS_X0212", - "CSEUCTW", - "ISO8859-6", - "ISO-IR-144", - "ISO8859-5", - "CSISO2022JP", - "ISO8859-2", - "CSISO2022JP2", - "CSIBM857", - "ISO8859-16", - "ASMO-708", - "ISO8859-15", - "EBCDIC-INTERNATIONAL-500+EURO", - "ISO8859-1", - "ISO-IR-110", - "CSVISCII", - "ISO8859-11", - "EUC-JISX0213", - "ISO_8859-7:2003", - "IBM-EUCCN", - "ISO-8859-3", - "EBCDIC-CP-ROECE", - "ISO-IR-58", - "ISO-2022-JP", - "ISO-8859-16", - "ISO-IR-138", - "ISO-2022-JP-2", - "CSIBM905", - "ISO-2022-JP-1", - "CSUNICODE11", - "EBCDIC-CP-US", - "ISO-IR-230", - "HZ-GB-2312", - "IBM-EUCTW", - "UTF-16BE", - "ISO8859-8", - "EBCDIC-DK-277+EURO", - "UTF-16LE", - "EBCDIC-CP-FI", - "ISO-IR-100", - "JIS_X0212.1990-0", - "EBCDIC-CP-FR", - "ISO-2022-JP-2004", - "ISO8859-4", - "ISO-IR-203", - "CSPC862LATINHEBREW", - "ISO8859-14", - "CSUNICODE", - "UNICODE-1-1-UTF-7", - "MACGREEK", - "CSIBM01147", - "MS-TURK", - "EBCDIC-CP-IS", + "EBCDICIS871+EURO", + "EBCDICCPSE", + "CSISOLATIN6", "CSISOLATIN5", + "RK1048", "CSISOLATIN1", - "ISO_8859-7", - "ISO_8859-7:1987", "CSISOLATINARABIC", - "CSISO2022CN", - "ISO-2022-JP-3", "CSISOLATINCYRILLIC", + "UCS2", "CSIBM037", - "ISO8859-10", - "IBM-1097", + "GB18030", "CSISOLATIN4", - "CCSID01149", - "UTF-32BE", - "GB_2312-80", - "CSKSC56011987", - "UTF-32LE", - "ISO-2022-CN", - "ISO646-CN", + "ISOIR138", + "ISO885916:2001", + "ISO10646UCS2", + "CSIBM01149", "CSIBM277", - "ISO-IR-87", - "JISX0201-1976", - "US-ASCII", - "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", - "KS_C_5601-1987", - "ISO8859-3", - "EBCDIC-US-37+EURO", - "CSISO14JISC6220RO", - "MACTURKISH", - "ISO8859-13", + "GB2312", + "ISO88595:1988", + "ISO885915:1998", + "TIS620.25291", + "CSISO58GB231280", + "MACTHAI", + "TCVN57121", + "ISO88594:1988", + "ISO885914:1998", + "UHC", + "HZGB2312", + "ISO88598:1988", + "GB231280", + "EBCDICFI278+EURO", + "CSISO57GB1988", + "CSIBM273", "CSISOLATIN2", - "ISO-8859-7", - "JIS_X0208-1990", - "SJIS", - "CSUNICODE11UTF7", - "EBCDIC-CP-ES", + "ISOIR57", + "GB198880", + "CSPC850MULTILINGUAL", + "EBCDICCPNO", + "ISOIR157", + "EBCDICES284+EURO", + "CSISOLATINGREEK", + "SYSTEM1125", + "ISOIR87", + "STRK10482002", + "CSIBM297", + "ROMAN8", + "TIS620.25331", + "ISOIR230", + "TCVN5712", + "JIS0208", + "ARABIC", + "EBCDICCPCH", + "ISO885910:1992", "CSISOLATIN3", + "TIS620.25330", + "ISO88596:1987", + "MSKANJI", + "ISO88591:1987", + "WINDOWS1256", + "WINDOWS1255", + "WINDOWS1251", + "JISX0201", + "ISOIR127", + "WINDOWS1254", + "WINDOWS1258", + "ISO88593:1988", + "WINDOWS1250", + "UCS4LE", + "ELOT928", "CSHALFWIDTHKATAKANA", - "JIS_X0208-1983", - "CSIBM297", - "ISO-IR-157", - "ISO-IR-127", - "EUC-JIS-2004", - "CSIBM01149", - "KS_C_5601-1989", - "JIS_X0212-1990", - "ISO_8859-9", - "CSISOLATIN6", - "ISO_8859-9:1989", - "UCS-2-INTERNAL", - "UCS-2-SWAPPED", - "GEORGIAN-ACADEMY", - "UNICODEBIG", - "UCS-4-INTERNAL", - "MS-ANSI", - "UCS-4-SWAPPED", - "EBCDIC-IS-871+EURO", - "MACHEBREW", - "ISO-IR-57", - "MS_KANJI", - "CSISOLATINHEBREW", - "ANSI_X3.4-1986", - "ISO8859-7", - "GB_1988-80", - "RISCOS-LATIN1", - "ISO-8859-9", + "EBCDICSE278+EURO", + "JISX0208", + "EBCDICDK277+EURO", "CSMACINTOSH", - "ANSI_X3.4-1968", - "CSISOLATINGREEK", - "ISO-2022-JP-MS", - "CSISO2022KR", - "BIG5-HKSCS:2001", - "ISO-IR-159", - "WINDOWS-1256", - "WINDOWS-1255", - "WINDOWS-1252", - "WINDOWS-1251", - "ISO-2022-KR", + "CSPC862LATINHEBREW", + "EBCDICCPHE", + "SDECKANJI", + "EUCCN", + "ISOIR159", + "ISO2022JP", + "ISO88592:1987", + "ISOIR203", + "WINDOWS1252", + "ISO2022JP1", + "ISOIR149", + "IBMTHAI", + "CSHPROMAN8", + "UCS2LE", + "ISOIR109", + "TIS620.2533", + "WINDOWS874", + "EBCDICDE273+EURO", + "ISO2022CNEXT", + "MACARABIC", + "CSISO14JISC6220RO", + "ISO88597:1987", "CSISO87JISX0208", - "BIG5-HKSCS:2008", - "BIG5-HKSCS:2004", - "WINDOWS-1258", - "ISO-IR-149", - "WINDOWS-1254", - "EBCDIC-ES-284+EURO", + "JISX0212", + "WINDOWS1257", + "TACTIS", + "JISX0212.19900", + "EBCDICNO277+EURO", + "MULELAO1", + "WINDOWS1253", + "EBCDICCPBE", + "MACROMANIA", + "ISO2022JP2004", + "WINDOWS950", + "ISO2022JPMS", "CSEUCPKDFMTJAPANESE", - "ISO-IR-109", - "WINDOWS-1250", - "WINDOWS-1253", - "ISO8859-9", - "BIG-FIVE", - "CN-GB-ISOIR165", - "ISO646-US", - "ISO-IR-179", - "WINDOWS-1257", - "GEORGIAN-PS", - "MS-GREEK", - "WINDOWS-874", - "BIG5-HKSCS:1999", - "ISO-IR-199", - "BIG5-HKSCS", - "SHIFT_JISX0213", - "SHIFT_JIS-2004", + "CSISO2022KR", + "CSISO159JISX02121990", + "ISOIR179", + "CSISOLATINHEBREW", + "DECKANJI", + "UNICODE11", + "ISO88597:2003", + "CSIBMTHAI", + "CSISO2022JP", + "JISX02011976", + "ATARI", + "EBCDICCYRILLIC", + "ISO2022JP2", + "GREEK8", + "BIG5HKSCS:2001", + "MACROMAN", + "CNGBISOIR165", + "BIG5HKSCS:2004", + "ISO88599:1989", + "MSGREEK", + "WINDOWS936", + "BIG5HKSCS:2008", + "ISOIR199", + "EBCDICCPUS", + "EBCDICLATIN9EURO", + "GREEK", + "JISX02081990", + "UTF16", + "CSISO2022JP2", + "JISX02121990", + "JISC62261983", + "UTF8", + "CPGR", + "UCS4SWAPPED", + "UCS4BE", + "JISC62201969RO", + "EBCDICIT280+EURO", + "ISO2022JP3", + "MACINTOSH", + "KOI8T", + "EBCDICGB285+EURO", + "MSARAB", + "JISX02081983", + "IBMEUCCN", + "UCS2SWAPPED", + "UCS2BE", + "RISCOSLATIN1", + "BIG5HKSCS:1999", + "EBCDICCPGB", + "DECKOREAN", + "CSKOI8R", + "EBCDICCPROECE", + "GEORGIANPS", + "EBCDICINTERNATIONAL500+EURO", + "UTF7", + "JOHAB", + "GEORGIANACADEMY", + "NEXTSTEP", + "MACGREEK", + "GB18030:2005", + "UTF32", + "KOI8R", + "SHIFTJIS", + "UTF16LE", "CSSHIFTJIS", - "SHIFT_JIS", - "BIG5HKSCS", - "WINDOWS-936", - "SHIFT-JIS" + "MACCROATIAN", + "GB18030:2022", + "EUCJP", + "EBCDICFR297+EURO", + "TCVN57121:1993", + "MSTURK", + "EBCDICCPIT", + "EBCDICUS37+EURO", + "KOI8U", + "ISO2022KR", + "SHIFTJIS2004", + "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE", + "MACCENTRALEUROPE", + "UTF32LE", + "SHIFTJISX0213", + "EUCJIS2004", + "HEBREW", + "EBCDICGREEK", + "MSHEBR", + "EBCDICCPFR", + "UTF16BE", + "UNICODELITTLE", + "IBMEUCJP", + "CSEUCTW", + "DECHANYU", + "EBCDICCPYU", + "EUCJISX0213", + "MACUKRAINE", + "EBCDICCPWT", + "UNICODE11UTF7", + "UNICODEBIG", + "EUCTW", + "UTF32BE", + "WINBALTRIM", + "CSEUCKR", + "EBCDICCPGR", + "KOKR.JOHAP92", + "EUCKR", + "MACHEBREW", + "UCS4INTERNAL", + "KOI8RU", + "ATARIST", + "UCS2INTERNAL", + "IBMEUCTW", + "EBCDICCPTR", + "MACTURKISH", + "IBMEUCKR" }; #define stringpool ((const char *) &stringpool_contents) @@ -1487,1850 +1182,1482 @@ static const struct alias aliases[] = { {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 136 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str20, ei_iso8859_10}, - {-1}, -#line 128 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_iso8859_9}, {-1}, {-1}, {-1}, -#line 70 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 62 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 209 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str52, ei_cp866}, +#line 114 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_iso8859_10}, {-1}, -#line 435 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_cp865}, -#line 410 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_cp855}, +#line 108 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str23, ei_iso8859_9}, + {-1}, {-1}, {-1}, +#line 58 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str27, ei_iso8859_1}, +#line 363 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_cp861}, {-1}, {-1}, -#line 205 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_cp862}, -#line 405 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_cp852}, - {-1}, {-1}, {-1}, {-1}, -#line 23 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str64, ei_ascii}, -#line 191 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_cp1256}, -#line 694 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_atarist}, -#line 188 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_cp1255}, -#line 423 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_cp861}, -#line 674 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str69, ei_ebcdic1166}, -#line 657 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_ebcdic1156}, -#line 179 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_cp1252}, -#line 654 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str72, ei_ebcdic1155}, +#line 315 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str31, ei_euc_kr}, +#line 378 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, ei_cp1125}, +#line 22 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str33, ei_ascii}, {-1}, -#line 442 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str74, ei_cp1125}, -#line 386 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_cp1162}, - {-1}, {-1}, -#line 561 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str78, ei_ebcdic1122}, - {-1}, {-1}, -#line 176 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str81, ei_cp1251}, +#line 13 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str35, ei_ascii}, {-1}, -#line 558 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str83, ei_ebcdic1112}, +#line 168 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str37, ei_cp866}, +#line 371 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_cp865}, +#line 349 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str39, ei_cp855}, +#line 362 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_cp861}, + {-1}, {-1}, {-1}, +#line 21 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_ascii}, +#line 215 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_viscii}, + {-1}, {-1}, {-1}, {-1}, +#line 217 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_viscii}, +#line 76 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_iso8859_4}, {-1}, -#line 382 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str85, ei_cp1161}, -#line 207 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str86, ei_cp866}, -#line 376 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str87, ei_cp856}, -#line 433 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str88, ei_cp865}, -#line 408 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, ei_cp855}, +#line 136 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str53, ei_iso8859_16}, {-1}, -#line 480 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str91, ei_ebcdic285}, -#line 203 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str92, ei_cp862}, -#line 403 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_cp852}, -#line 153 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str94, ei_iso8859_14}, +#line 405 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_ebcdic285}, {-1}, -#line 229 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str96, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 421 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp861}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 86 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_iso8859_4}, +#line 355 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_cp858}, {-1}, -#line 102 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str120, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 126 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_iso8859_14}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 359 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_cp860}, +#line 162 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_cp850}, +#line 500 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_ebcdic1146}, +#line 35 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_ucs4}, +#line 494 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str69, ei_ebcdic1145}, +#line 81 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_iso8859_5}, {-1}, {-1}, -#line 236 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_pt154}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 197 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_cp1258}, - {-1}, {-1}, {-1}, -#line 547 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_ebcdic1026}, -#line 663 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str144, ei_ebcdic1158}, -#line 544 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str145, ei_ebcdic1025}, +#line 468 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 488 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str97, ei_ebcdic1144}, {-1}, -#line 238 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_pt154}, +#line 270 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str99, ei_sjis}, {-1}, {-1}, -#line 323 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_iso2022_jpms}, - {-1}, -#line 416 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_cp858}, +#line 165 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp862}, +#line 342 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_cp852}, {-1}, -#line 185 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_cp1254}, +#line 512 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_ebcdic1148}, {-1}, {-1}, -#line 237 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_pt154}, -#line 669 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_ebcdic1164}, -#line 651 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_ebcdic1154}, - {-1}, -#line 380 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str170, ei_cp1124}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 216 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_viscii}, {-1}, {-1}, {-1}, {-1}, -#line 430 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str184, ei_cp864}, - {-1}, {-1}, -#line 475 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str187, ei_ebcdic284}, -#line 267 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso646_jp}, -#line 379 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str189, ei_cp1046}, -#line 167 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_iso8859_16}, - {-1}, {-1}, {-1}, -#line 570 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_ebcdic1132}, - {-1}, -#line 369 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_johab}, - {-1}, {-1}, -#line 495 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_ebcdic424}, - {-1}, -#line 622 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ebcdic1146}, +#line 173 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 462 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str123, ei_ebcdic1140}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 113 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_iso8859_10}, {-1}, -#line 615 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_ebcdic1145}, -#line 211 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str204, ei_cp1131}, - {-1}, {-1}, -#line 592 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_ebcdic1142}, +#line 107 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_iso8859_9}, +#line 203 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_rk1048}, {-1}, {-1}, -#line 419 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_cp860}, -#line 201 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str211, ei_cp850}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 585 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 173 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str223, ei_cp1250}, - {-1}, {-1}, {-1}, -#line 666 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str227, ei_ebcdic1160}, +#line 57 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 352 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str146, ei_cp857}, {-1}, {-1}, {-1}, -#line 343 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_hz}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 673 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_ebcdic1166}, -#line 656 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_ebcdic1156}, -#line 671 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_ebcdic1165}, -#line 653 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_ebcdic1155}, +#line 229 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_jisx0201}, +#line 64 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_2}, {-1}, {-1}, -#line 387 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_cp1162}, -#line 417 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_cp860}, -#line 199 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_cp850}, -#line 560 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str246, ei_ebcdic1122}, -#line 468 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_ebcdic280}, +#line 255 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_ksc5601}, {-1}, {-1}, {-1}, -#line 557 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_ebcdic1112}, - {-1}, -#line 383 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str253, ei_cp1161}, -#line 208 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str254, ei_cp866}, - {-1}, -#line 434 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_cp865}, -#line 409 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_cp855}, -#line 78 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str258, ei_iso8859_3}, -#line 479 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_ebcdic285}, -#line 204 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_cp862}, -#line 404 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_cp852}, +#line 366 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_cp863}, +#line 345 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_cp853}, +#line 75 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_iso8859_4}, {-1}, -#line 472 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_ebcdic282}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 422 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_cp861}, +#line 141 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_cp1250}, #line 499 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_ebcdic425}, -#line 214 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_mac_roman}, - {-1}, {-1}, -#line 636 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str275, ei_ebcdic1148}, - {-1}, -#line 93 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_iso8859_5}, - {-1}, -#line 683 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ebcdic16804}, - {-1}, -#line 527 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_ebcdic880}, - {-1}, {-1}, {-1}, {-1}, -#line 619 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_ebcdic1146}, -#line 502 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_ebcdic500}, -#line 612 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_ebcdic1145}, -#line 367 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_cp949}, -#line 428 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_cp863}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_ebcdic1146}, {-1}, -#line 589 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_ebcdic1142}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 608 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_ebcdic1144}, +#line 493 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_ebcdic1145}, {-1}, {-1}, -#line 582 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ebcdic1141}, -#line 182 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str303, ei_cp1253}, - {-1}, {-1}, {-1}, -#line 390 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_cp1163}, -#line 648 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str308, ei_ebcdic1153}, - {-1}, -#line 564 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_ebcdic1123}, -#line 546 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_ebcdic1026}, -#line 662 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_ebcdic1158}, -#line 543 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_ebcdic1025}, - {-1}, {-1}, {-1}, -#line 680 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_ebcdic12712}, +#line 125 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_iso8859_14}, +#line 467 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, +#line 198 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, ei_pt154}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 235 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str182, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 523 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_ebcdic875}, +#line 248 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, +#line 487 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str193, ei_ebcdic1144}, +#line 202 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_rk1048}, +#line 135 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str195, ei_iso8859_16}, +#line 295 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_hz}, +#line 474 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_ebcdic1142}, #line 426 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp863}, -#line 407 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_cp853}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 668 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_ebcdic1164}, -#line 650 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_ebcdic1154}, -#line 518 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str337, ei_ebcdic871}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_ebcdic870}, {-1}, -#line 490 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str339, ei_ebcdic423}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 567 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_ebcdic1130}, -#line 54 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_java}, +#line 374 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_cp869}, +#line 511 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ebcdic1148}, + {-1}, +#line 343 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_cp852}, {-1}, {-1}, {-1}, {-1}, -#line 431 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_cp864}, +#line 259 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_ksc5601}, +#line 86 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_iso8859_6}, +#line 149 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_cp1252}, {-1}, {-1}, -#line 474 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic284}, +#line 146 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_cp1251}, {-1}, {-1}, {-1}, -#line 578 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_ebcdic1140}, -#line 633 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_ebcdic1148}, -#line 462 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_ebcdic278}, -#line 569 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_ebcdic1132}, -#line 135 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_iso8859_10}, - {-1}, -#line 127 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_iso8859_9}, -#line 304 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_euc_jp}, -#line 494 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_ebcdic424}, +#line 94 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_iso8859_7}, {-1}, -#line 69 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str369, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 61 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str379, ei_iso8859_1}, - {-1}, {-1}, {-1}, -#line 368 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_johab}, -#line 605 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ebcdic1144}, +#line 461 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_ebcdic1140}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 665 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_ebcdic1160}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 246 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_iso646_cn}, {-1}, {-1}, -#line 682 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ebcdic16804}, - {-1}, {-1}, {-1}, -#line 377 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_cp922}, - {-1}, {-1}, {-1}, -#line 620 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_ebcdic1146}, -#line 284 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, -#line 418 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp860}, -#line 200 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_cp850}, +#line 120 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_iso8859_13}, + {-1}, {-1}, +#line 287 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_cp936}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 242 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_jisx0212}, +#line 83 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_iso8859_6}, {-1}, -#line 467 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_ebcdic280}, -#line 634 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_ebcdic1148}, +#line 78 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str252, ei_iso8859_5}, + {-1}, {-1}, {-1}, +#line 53 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_iso8859_1}, + {-1}, {-1}, +#line 132 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_iso8859_16}, +#line 63 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_iso8859_2}, +#line 128 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_iso8859_15}, +#line 336 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_cp437}, +#line 70 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_iso8859_3}, {-1}, -#line 606 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_ebcdic1144}, -#line 255 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp874}, +#line 116 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_11}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 304 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_ces_big5}, + {-1}, {-1}, +#line 72 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso8859_4}, {-1}, -#line 590 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic1142}, +#line 301 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_ces_big5}, +#line 506 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str283, ei_ebcdic1147}, + {-1}, {-1}, {-1}, {-1}, +#line 99 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_iso8859_8}, +#line 122 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_iso8859_14}, {-1}, {-1}, {-1}, -#line 364 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_euc_kr}, -#line 246 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str426, ei_cp1133}, +#line 473 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1142}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 152 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_iso8859_14}, +#line 530 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_ebcdic1166}, +#line 524 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_ebcdic1156}, +#line 529 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str306, ei_ebcdic1165}, +#line 523 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_ebcdic1155}, {-1}, -#line 600 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_ebcdic1143}, - {-1}, {-1}, {-1}, {-1}, -#line 575 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str444, ei_ebcdic1140}, -#line 226 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str445, ei_mac_thai}, +#line 481 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_ebcdic1143}, +#line 329 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp1161}, +#line 167 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_cp866}, +#line 323 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_cp856}, +#line 370 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_cp865}, +#line 348 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_cp855}, +#line 110 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_iso8859_10}, {-1}, -#line 507 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str447, ei_ebcdic838}, +#line 361 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_cp861}, {-1}, -#line 526 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic880}, +#line 497 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ebcdic1146}, {-1}, -#line 576 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_ebcdic1140}, +#line 491 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ebcdic1145}, {-1}, {-1}, {-1}, -#line 501 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_ebcdic500}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 85 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_iso8859_4}, -#line 241 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_rk1048}, +#line 465 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 314 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, -#line 532 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str474, ei_ebcdic905}, -#line 391 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_cp1163}, -#line 647 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_ebcdic1153}, +#line 444 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_ebcdic924}, {-1}, -#line 563 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_ebcdic1123}, -#line 512 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_ebcdic870}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_jisx0201}, -#line 598 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ebcdic1143}, -#line 146 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_iso8859_13}, +#line 528 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_ebcdic1164}, #line 522 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str491, ei_ebcdic875}, -#line 427 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_cp863}, - {-1}, {-1}, -#line 25 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_utf8}, -#line 583 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 517 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_ebcdic871}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_ebcdic1154}, + {-1}, {-1}, {-1}, {-1}, +#line 87 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_iso8859_6}, +#line 368 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_cp864}, {-1}, -#line 489 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_ebcdic423}, +#line 526 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_ebcdic1158}, +#line 326 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_cp1046}, +#line 51 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_c99}, +#line 119 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_iso8859_13}, {-1}, {-1}, -#line 691 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_tds565}, - {-1}, -#line 334 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_cp936}, - {-1}, -#line 566 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str514, ei_ebcdic1130}, - {-1}, {-1}, {-1}, -#line 315 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_cp932}, +#line 485 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_ebcdic1144}, +#line 354 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_cp858}, {-1}, {-1}, -#line 400 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_cp775}, -#line 219 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_mac_romania}, -#line 414 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_cp857}, -#line 597 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str524, ei_ebcdic1143}, -#line 453 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str525, ei_ebcdic273}, - {-1}, {-1}, {-1}, -#line 461 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_ebcdic278}, +#line 498 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_ebcdic1146}, {-1}, -#line 679 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str531, ei_ebcdic12712}, -#line 478 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_ebcdic285}, -#line 166 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str533, ei_iso8859_16}, - {-1}, -#line 194 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_cp1257}, -#line 471 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_ebcdic282}, -#line 13 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_ascii}, - {-1}, {-1}, -#line 660 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str540, ei_ebcdic1157}, - {-1}, {-1}, {-1}, -#line 498 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_ebcdic425}, +#line 492 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic1145}, {-1}, -#line 277 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_jisx0208}, -#line 672 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_ebcdic1166}, -#line 655 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_ebcdic1156}, - {-1}, {-1}, -#line 693 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_atarist}, -#line 356 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_cp950}, -#line 235 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_koi8_t}, - {-1}, {-1}, {-1}, -#line 412 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_cp857}, -#line 661 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_ebcdic1158}, -#line 667 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_ebcdic1164}, -#line 649 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str560, ei_ebcdic1154}, +#line 509 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_ebcdic1148}, {-1}, -#line 388 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_cp1162}, - {-1}, {-1}, -#line 559 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_ebcdic1122}, - {-1}, {-1}, {-1}, {-1}, -#line 556 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_ebcdic1112}, -#line 169 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_koi8_r}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 225 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_mac_arabic}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 664 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_ebcdic1160}, - {-1}, {-1}, {-1}, -#line 618 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str596, ei_ebcdic1146}, - {-1}, {-1}, {-1}, {-1}, -#line 77 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str601, ei_iso8859_3}, - {-1}, {-1}, {-1}, -#line 613 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_ebcdic1145}, -#line 632 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str606, ei_ebcdic1148}, +#line 466 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_ebcdic1141}, +#line 527 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_ebcdic1160}, {-1}, -#line 604 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_ebcdic1144}, - {-1}, {-1}, -#line 588 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_ebcdic1142}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 545 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_ebcdic1026}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 350 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_ces_big5}, -#line 473 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str628, ei_ebcdic284}, -#line 228 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_hp_roman8}, -#line 392 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_cp1163}, -#line 646 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_ebcdic1153}, -#line 257 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_viscii}, -#line 562 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_ebcdic1123}, - {-1}, {-1}, {-1}, -#line 384 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp1161}, -#line 19 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_ascii}, #line 303 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str639, ei_euc_jp}, -#line 493 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_ebcdic424}, -#line 574 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_ebcdic1140}, -#line 531 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_ebcdic905}, - {-1}, -#line 681 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_ebcdic16804}, - {-1}, {-1}, -#line 511 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_ebcdic870}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_ces_big5}, +#line 143 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_cp1250}, +#line 346 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_cp853}, {-1}, {-1}, -#line 406 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_cp852}, +#line 358 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_cp860}, +#line 161 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_cp850}, {-1}, {-1}, -#line 396 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_cp437}, - {-1}, {-1}, {-1}, -#line 290 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_iso646_cn}, -#line 573 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str658, ei_ebcdic1137}, -#line 551 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_ebcdic1047}, -#line 539 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str660, ei_ebcdic924}, -#line 171 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_koi8_u}, -#line 536 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_ebcdic924}, -#line 249 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 111 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_iso8859_7}, +#line 377 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str371, ei_cp1125}, +#line 69 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_iso8859_3}, {-1}, -#line 629 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_ebcdic1147}, +#line 417 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_ebcdic425}, +#line 459 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_ebcdic1140}, {-1}, -#line 307 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_euc_jp}, - {-1}, {-1}, -#line 172 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_koi8_ru}, +#line 418 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_ebcdic500}, +#line 404 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_ebcdic285}, +#line 505 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str379, ei_ebcdic1147}, +#line 60 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str380, ei_iso8859_2}, {-1}, {-1}, -#line 596 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_ebcdic1143}, -#line 378 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str680, ei_cp943}, -#line 568 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_ebcdic1132}, -#line 110 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_iso8859_7}, -#line 251 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_tis620}, -#line 100 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str684, ei_iso8859_6}, +#line 486 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_ebcdic1144}, +#line 533 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ebcdic16804}, {-1}, -#line 581 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_ebcdic1141}, -#line 394 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_cp437}, -#line 466 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str688, ei_ebcdic280}, -#line 401 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str689, ei_cp775}, - {-1}, {-1}, {-1}, -#line 452 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_ebcdic273}, - {-1}, {-1}, {-1}, -#line 677 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_ebcdic4971}, -#line 363 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str698, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 40 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_utf16}, +#line 435 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_ebcdic880}, {-1}, -#line 659 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_ebcdic1157}, - {-1}, {-1}, -#line 565 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_ebcdic1130}, +#line 502 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_ebcdic1146}, {-1}, -#line 641 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_ebcdic1149}, - {-1}, {-1}, {-1}, -#line 445 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_ebcdic037}, +#line 284 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_euc_cn}, +#line 510 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_ebcdic1148}, + {-1}, +#line 518 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_ebcdic1149}, +#line 448 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_ebcdic1026}, + {-1}, +#line 447 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_ebcdic1025}, +#line 300 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_euc_tw}, + {-1}, +#line 327 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_cp1124}, {-1}, {-1}, -#line 506 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_ebcdic838}, +#line 414 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_ebcdic424}, +#line 490 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_ebcdic1144}, {-1}, -#line 525 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str722, ei_ebcdic880}, +#line 480 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_ebcdic1143}, +#line 401 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_ebcdic284}, {-1}, {-1}, -#line 413 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str725, ei_cp857}, +#line 460 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_ebcdic1140}, {-1}, {-1}, -#line 500 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str728, ei_ebcdic500}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 330 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1161}, +#line 169 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_cp866}, {-1}, -#line 217 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_mac_iceland}, -#line 439 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str740, ei_cp869}, +#line 372 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_cp865}, +#line 350 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_cp855}, {-1}, -#line 220 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_mac_cyrillic}, +#line 356 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_cp858}, +#line 364 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp861}, + {-1}, +#line 433 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic875}, {-1}, {-1}, {-1}, -#line 670 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_ebcdic1165}, -#line 652 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_ebcdic1155}, +#line 430 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_ebcdic871}, + {-1}, {-1}, +#line 443 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_ebcdic924}, + {-1}, {-1}, +#line 170 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_cp1131}, +#line 397 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_ebcdic280}, + {-1}, +#line 331 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_cp1162}, +#line 176 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_mac_centraleurope}, + {-1}, +#line 453 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_ebcdic1112}, {-1}, {-1}, {-1}, -#line 243 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_rk1048}, +#line 164 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_cp862}, +#line 341 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_cp852}, +#line 369 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str443, ei_cp864}, {-1}, {-1}, {-1}, {-1}, -#line 626 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str756, ei_ebcdic1147}, - {-1}, {-1}, {-1}, -#line 381 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_cp1129}, - {-1}, {-1}, {-1}, -#line 521 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_ebcdic875}, -#line 218 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str765, ei_mac_croatian}, -#line 227 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str766, ei_hp_roman8}, +#line 292 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_iso2022_cn}, +#line 471 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic1142}, +#line 30 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_ucs2be}, {-1}, -#line 24 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_utf8}, -#line 326 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_euc_cn}, +#line 357 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_cp858}, {-1}, {-1}, {-1}, -#line 260 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str773, ei_tcvn}, -#line 437 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str774, ei_cp869}, +#line 131 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_iso8859_15}, +#line 496 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_ebcdic1145}, {-1}, {-1}, {-1}, -#line 516 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str778, ei_ebcdic871}, -#line 537 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str779, ei_ebcdic924}, -#line 488 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str780, ei_ebcdic423}, +#line 470 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_ebcdic1141}, {-1}, -#line 59 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, -#line 389 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_cp1162}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 212 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_mac_roman}, -#line 611 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str795, ei_ebcdic1145}, +#line 256 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_ksc5601}, + {-1}, {-1}, +#line 90 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_iso8859_7}, + {-1}, {-1}, +#line 360 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_cp860}, +#line 422 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str470, ei_ebcdic838}, + {-1}, {-1}, +#line 380 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_cp1125}, {-1}, -#line 385 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str797, ei_cp1161}, -#line 210 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str798, ei_cp866}, - {-1}, {-1}, {-1}, -#line 460 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_ebcdic278}, +#line 425 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_ebcdic870}, {-1}, {-1}, -#line 170 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str805, ei_koi8_r}, -#line 20 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_ascii}, - {-1}, {-1}, {-1}, -#line 432 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str810, ei_cp864}, +#line 177 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_mac_iceland}, +#line 421 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_ebcdic500}, +#line 407 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_ebcdic285}, +#line 456 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_ebcdic1130}, + {-1}, +#line 472 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_ebcdic1142}, + {-1}, +#line 438 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_ebcdic905}, {-1}, {-1}, -#line 477 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_ebcdic284}, +#line 437 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_ebcdic880}, +#line 517 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ebcdic1149}, +#line 293 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_iso2022_cn}, {-1}, -#line 458 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str815, ei_ebcdic277}, - {-1}, {-1}, {-1}, -#line 245 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_mulelao}, -#line 542 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_ebcdic1025}, -#line 346 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str821, ei_euc_tw}, +#line 66 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_iso8859_3}, +#line 514 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_ebcdic1148}, +#line 285 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_euc_cn}, +#line 337 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_cp437}, #line 449 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str822, ei_ebcdic037}, -#line 43 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_utf32}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ebcdic1026}, +#line 148 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_cp1252}, +#line 431 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_ebcdic871}, +#line 454 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str499, ei_ebcdic1122}, {-1}, -#line 497 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_ebcdic424}, -#line 572 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str826, ei_ebcdic1137}, -#line 550 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str827, ei_ebcdic1047}, -#line 621 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str828, ei_ebcdic1146}, -#line 202 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str829, ei_cp850}, -#line 614 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_ebcdic1145}, -#line 447 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str831, ei_ebcdic037}, -#line 538 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str832, ei_ebcdic924}, -#line 145 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str833, ei_iso8859_13}, -#line 591 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str834, ei_ebcdic1142}, -#line 325 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str835, ei_euc_cn}, -#line 528 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str836, ei_ebcdic880}, +#line 117 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_iso8859_13}, {-1}, -#line 253 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str838, ei_tis620}, - {-1}, {-1}, -#line 265 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str841, ei_iso646_jp}, +#line 393 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_ebcdic278}, +#line 416 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_ebcdic424}, {-1}, -#line 420 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_cp860}, -#line 584 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str844, ei_ebcdic1141}, +#line 400 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_ebcdic282}, {-1}, -#line 470 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str846, ei_ebcdic280}, +#line 403 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_ebcdic284}, +#line 383 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_ebcdic037}, +#line 339 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_cp775}, +#line 464 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_ebcdic1140}, {-1}, -#line 331 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str848, ei_euc_cn}, +#line 394 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ebcdic278}, {-1}, {-1}, {-1}, {-1}, -#line 26 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str853, ei_ucs2}, -#line 623 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str854, ei_ebcdic1146}, -#line 395 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str855, ei_cp437}, -#line 594 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str856, ei_ebcdic1142}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 239 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str862, ei_pt154}, - {-1}, -#line 548 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str864, ei_ebcdic1026}, -#line 676 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str865, ei_ebcdic4971}, -#line 485 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str866, ei_ebcdic297}, +#line 257 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_ksc5601}, {-1}, {-1}, -#line 678 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str869, ei_ebcdic12712}, - {-1}, {-1}, {-1}, -#line 398 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_cp737}, +#line 525 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_ebcdic1157}, {-1}, {-1}, {-1}, {-1}, -#line 533 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str878, ei_ebcdic905}, +#line 121 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_iso8859_13}, +#line 432 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_ebcdic871}, +#line 351 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_cp857}, + {-1}, {-1}, {-1}, +#line 260 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_ksc5601}, {-1}, -#line 529 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str880, ei_ebcdic880}, -#line 429 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str881, ei_cp863}, +#line 399 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_ebcdic280}, +#line 503 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_ebcdic1147}, #line 332 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_euc_cn}, - {-1}, {-1}, -#line 444 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str885, ei_ebcdic037}, -#line 505 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str886, ei_ebcdic500}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_cp1162}, {-1}, -#line 425 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str888, ei_cp861}, -#line 643 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_ebcdic1149}, - {-1}, -#line 508 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_ebcdic838}, - {-1}, {-1}, -#line 514 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_ebcdic870}, -#line 496 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str895, ei_ebcdic424}, -#line 492 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str896, ei_ebcdic423}, -#line 464 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str897, ei_ebcdic278}, - {-1}, {-1}, -#line 351 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_ces_big5}, - {-1}, -#line 635 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str902, ei_ebcdic1148}, -#line 639 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str903, ei_ebcdic1149}, - {-1}, {-1}, {-1}, -#line 240 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_pt154}, +#line 196 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_pt154}, +#line 18 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str539, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 333 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp1163}, +#line 521 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_ebcdic1153}, +#line 340 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_cp775}, {-1}, -#line 252 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 530 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str915, ei_ebcdic905}, -#line 276 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str916, ei_jisx0208}, - {-1}, {-1}, {-1}, -#line 510 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str920, ei_ebcdic870}, -#line 503 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str921, ei_ebcdic500}, -#line 509 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str922, ei_ebcdic838}, +#line 441 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_ebcdic924}, {-1}, {-1}, -#line 456 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str925, ei_ebcdic277}, -#line 607 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str926, ei_ebcdic1144}, - {-1}, {-1}, {-1}, {-1}, {-1}, #line 365 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str932, ei_euc_kr}, - {-1}, {-1}, -#line 535 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_ebcdic924}, -#line 248 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str936, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 438 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str942, ei_cp869}, -#line 250 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str943, ei_tis620}, - {-1}, -#line 35 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str945, ei_ucs4}, -#line 440 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str946, ei_cp869}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_cp863}, +#line 344 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_cp853}, +#line 457 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_ebcdic1132}, +#line 197 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_pt154}, {-1}, -#line 627 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str948, ei_ebcdic1147}, +#line 17 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_ascii}, +#line 46 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_utf7}, +#line 450 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str560, ei_ebcdic1047}, +#line 478 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_ebcdic1143}, +#line 26 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_ucs2}, + {-1}, {-1}, +#line 541 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_tds565}, +#line 187 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_hp_roman8}, +#line 199 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_pt154}, +#line 309 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_big5hkscs2008}, +#line 504 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_ebcdic1147}, {-1}, -#line 60 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str950, ei_iso8859_1}, - {-1}, {-1}, {-1}, -#line 555 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str954, ei_ebcdic1097}, - {-1}, {-1}, {-1}, -#line 244 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str958, ei_rk1048}, -#line 316 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str959, ei_cp932}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 451 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_ebcdic273}, - {-1}, {-1}, {-1}, -#line 540 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str970, ei_ebcdic924}, -#line 372 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str971, ei_dec_kanji}, -#line 213 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str972, ei_mac_roman}, #line 302 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_ksc5601}, -#line 640 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str974, ei_ebcdic1149}, - {-1}, {-1}, -#line 481 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str977, ei_ebcdic285}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_ces_big5}, {-1}, {-1}, {-1}, {-1}, -#line 504 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str982, ei_ebcdic500}, +#line 104 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso8859_9}, +#line 429 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_ebcdic870}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 477 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str585, ei_ebcdic1142}, {-1}, -#line 34 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str984, ei_ucs2le}, +#line 440 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str587, ei_ebcdic905}, {-1}, -#line 577 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str986, ei_ebcdic1140}, +#line 286 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str589, ei_ces_gbk}, +#line 531 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_ebcdic4971}, +#line 385 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_ebcdic037}, {-1}, -#line 491 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str988, ei_ebcdic423}, -#line 617 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str989, ei_ebcdic1145}, -#line 469 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str990, ei_ebcdic280}, -#line 541 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str991, ei_ebcdic924}, +#line 16 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_ascii}, {-1}, -#line 595 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_ebcdic1142}, -#line 602 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str994, ei_ebcdic1143}, +#line 479 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_ebcdic1143}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 396 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_ebcdic278}, {-1}, {-1}, -#line 436 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_cp865}, -#line 411 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str998, ei_cp855}, - {-1}, -#line 482 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_ebcdic285}, - {-1}, -#line 120 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1002, ei_iso8859_8}, -#line 587 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1003, ei_ebcdic1141}, -#line 193 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1004, ei_cp1256}, -#line 97 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1005, ei_iso8859_6}, +#line 211 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_tis620}, {-1}, -#line 90 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1007, ei_iso8859_5}, +#line 253 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_isoir165}, +#line 455 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_ebcdic1123}, +#line 189 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_hp_roman8}, +#line 532 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str613, ei_ebcdic12712}, +#line 411 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_ebcdic423}, + {-1}, {-1}, {-1}, +#line 442 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_ebcdic924}, {-1}, -#line 465 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_ebcdic278}, +#line 20 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_ascii}, {-1}, -#line 66 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1011, ei_iso8859_2}, -#line 247 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1012, ei_cp1133}, -#line 21 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, -#line 157 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1018, ei_iso8859_15}, -#line 393 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_cp1163}, -#line 601 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_ebcdic1143}, -#line 56 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1021, ei_iso8859_1}, +#line 280 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str622, ei_euc_cn}, +#line 402 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str623, ei_ebcdic284}, +#line 281 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_euc_cn}, {-1}, {-1}, {-1}, {-1}, -#line 29 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1026, ei_ucs2be}, -#line 258 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1027, ei_viscii}, -#line 140 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1028, ei_iso8859_11}, -#line 349 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1029, ei_euc_tw}, -#line 374 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1030, ei_dec_hanyu}, -#line 630 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1031, ei_ebcdic1147}, - {-1}, -#line 133 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1033, ei_iso8859_10}, -#line 484 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1034, ei_ebcdic297}, -#line 33 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_ucs2le}, - {-1}, {-1}, -#line 337 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1038, ei_gb18030_2005}, - {-1}, {-1}, -#line 399 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1041, ei_cp737}, - {-1}, {-1}, -#line 22 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1044, ei_ascii}, +#line 19 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_ascii}, +#line 353 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_cp857}, +#line 206 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_tis620}, +#line 224 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_iso646_jp}, {-1}, {-1}, {-1}, {-1}, -#line 333 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1049, ei_ces_gbk}, - {-1}, -#line 91 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1051, ei_iso8859_5}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 158 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1059, ei_iso8859_15}, -#line 150 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1060, ei_iso8859_14}, -#line 638 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1061, ei_ebcdic1148}, - {-1}, {-1}, -#line 154 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1064, ei_iso8859_14}, -#line 262 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1065, ei_tcvn}, -#line 599 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1066, ei_ebcdic1143}, -#line 149 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1067, ei_iso8859_14}, -#line 338 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1068, ei_gb18030_2005}, +#line 373 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp869}, +#line 251 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_gb2312}, {-1}, -#line 609 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1070, ei_ebcdic1144}, -#line 624 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1071, ei_ebcdic1146}, -#line 38 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_ucs4be}, -#line 53 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1073, ei_c99}, - {-1}, {-1}, -#line 196 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1076, ei_cp1257}, +#line 56 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_iso8859_1}, +#line 458 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_ebcdic1137}, +#line 62 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_iso8859_2}, {-1}, +#line 335 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_cp437}, #line 515 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1078, ei_ebcdic870}, -#line 117 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1079, ei_iso8859_8}, -#line 373 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1080, ei_dec_kanji}, -#line 39 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1081, ei_ucs4le}, -#line 454 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1082, ei_ebcdic273}, - {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1087, ei_iso8859_8}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_ebcdic1149}, +#line 12 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_ascii}, {-1}, -#line 375 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1089, ei_dec_hanyu}, -#line 658 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_ebcdic1157}, - {-1}, {-1}, {-1}, -#line 345 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_euc_tw}, -#line 178 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1095, ei_cp1251}, -#line 16 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_ascii}, +#line 334 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str648, ei_cp1163}, +#line 192 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str649, ei_armscii_8}, +#line 324 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_cp922}, + {-1}, {-1}, +#line 80 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_iso8859_5}, {-1}, -#line 297 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1098, ei_ksc5601}, -#line 83 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1099, ei_iso8859_4}, -#line 112 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1100, ei_iso8859_7}, -#line 448 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1101, ei_ebcdic037}, +#line 367 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_cp863}, +#line 347 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str656, ei_cp853}, +#line 381 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_ebcdic037}, +#line 33 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str658, ei_ucs4}, {-1}, -#line 82 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1103, ei_iso8859_4}, -#line 132 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1104, ei_iso8859_10}, -#line 441 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1105, ei_cp869}, +#line 127 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str660, ei_iso8859_14}, +#line 106 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_iso8859_9}, +#line 451 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_ebcdic1047}, {-1}, {-1}, -#line 324 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1108, ei_euc_cn}, -#line 457 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1109, ei_ebcdic277}, +#line 207 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str665, ei_tis620}, +#line 14 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_ascii}, +#line 74 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_iso8859_4}, +#line 540 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str668, ei_big5_2003}, +#line 218 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_tcvn}, {-1}, -#line 524 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1111, ei_ebcdic875}, +#line 508 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_ebcdic1147}, {-1}, -#line 261 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1113, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 165 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1119, ei_iso8859_16}, -#line 610 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1120, ei_ebcdic1144}, +#line 93 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_iso8859_7}, {-1}, -#line 554 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1122, ei_ebcdic1097}, -#line 520 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1123, ei_ebcdic871}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 366 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1130, ei_cp949}, -#line 96 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1131, ei_iso8859_6}, #line 15 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1132, ei_ascii}, -#line 89 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1133, ei_iso8859_5}, -#line 355 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1134, ei_ces_big5}, - {-1}, {-1}, -#line 65 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1137, ei_iso8859_2}, -#line 625 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1138, ei_ebcdic1147}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 156 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1144, ei_iso8859_15}, -#line 580 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1145, ei_ebcdic1140}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str675, ei_ascii}, {-1}, -#line 55 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1147, ei_iso8859_1}, +#line 225 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_iso646_jp}, +#line 267 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str678, ei_sjis}, +#line 516 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_ebcdic1149}, {-1}, -#line 335 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1149, ei_cp936}, - {-1}, {-1}, {-1}, {-1}, -#line 139 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1154, ei_iso8859_11}, +#line 389 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_ebcdic277}, +#line 282 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_euc_cn}, +#line 205 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_cp1133}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 55 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_iso8859_1}, +#line 52 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_java}, {-1}, -#line 402 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1156, ei_cp775}, +#line 328 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str695, ei_cp1129}, {-1}, -#line 443 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1158, ei_ebcdic037}, -#line 216 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1159, ei_mac_centraleurope}, - {-1}, {-1}, {-1}, {-1}, -#line 46 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1164, ei_utf7}, - {-1}, {-1}, {-1}, {-1}, -#line 75 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1169, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1175, ei_euc_jp}, +#line 484 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_ebcdic1143}, + {-1}, {-1}, {-1}, +#line 145 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_cp1251}, {-1}, {-1}, -#line 242 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1178, ei_rk1048}, -#line 37 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1179, ei_ucs4}, +#line 390 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_ebcdic277}, {-1}, -#line 339 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1181, ei_gb18030_2022}, +#line 271 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_cp932}, +#line 387 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str707, ei_ebcdic273}, +#line 452 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_ebcdic1097}, + {-1}, {-1}, {-1}, +#line 325 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_cp943}, + {-1}, {-1}, {-1}, +#line 413 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_ebcdic423}, + {-1}, {-1}, {-1}, +#line 446 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_ebcdic924}, {-1}, {-1}, -#line 263 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1184, ei_tcvn}, -#line 143 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1185, ei_iso8859_13}, -#line 254 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1186, ei_tis620}, +#line 223 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_iso646_jp}, + {-1}, {-1}, {-1}, +#line 34 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str727, ei_ucs4}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 180 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str733, ei_mac_cyrillic}, {-1}, -#line 295 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1188, ei_isoir165}, +#line 134 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str735, ei_iso8859_16}, +#line 408 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str736, ei_ebcdic297}, +#line 338 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str737, ei_cp737}, + {-1}, +#line 376 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_cp869}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 519 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_ebcdic1149}, + {-1}, +#line 395 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str748, ei_ebcdic278}, +#line 115 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_iso8859_10}, #line 109 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1189, ei_iso8859_7}, - {-1}, {-1}, {-1}, -#line 148 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1193, ei_iso8859_14}, -#line 294 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1194, ei_gb2312}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_iso8859_9}, +#line 200 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_rk1048}, +#line 59 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str752, ei_iso8859_1}, + {-1}, {-1}, +#line 89 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str755, ei_iso8859_6}, + {-1}, +#line 82 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_iso8859_5}, +#line 24 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_ucs2}, +#line 386 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_ebcdic037}, +#line 290 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_gb18030_2022}, {-1}, {-1}, {-1}, -#line 455 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1198, ei_ebcdic277}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 116 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1205, ei_iso8859_8}, +#line 77 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_iso8859_4}, + {-1}, {-1}, +#line 101 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_iso8859_8}, {-1}, -#line 175 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_cp1250}, -#line 571 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1208, ei_ebcdic1137}, -#line 549 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1209, ei_ebcdic1047}, +#line 133 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_iso8859_16}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 31 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1217, ei_ucs2be}, - {-1}, {-1}, {-1}, -#line 269 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1221, ei_jisx0201}, +#line 25 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str777, ei_ucs2}, {-1}, {-1}, {-1}, -#line 603 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1225, ei_ebcdic1143}, +#line 520 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str781, ei_ebcdic1149}, {-1}, -#line 232 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1227, ei_armscii_8}, -#line 342 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1228, ei_iso2022_cn_ext}, -#line 81 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1229, ei_iso8859_4}, -#line 131 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1230, ei_iso8859_10}, +#line 392 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_ebcdic277}, +#line 279 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str784, ei_euc_cn}, +#line 79 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_iso8859_5}, +#line 129 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str786, ei_iso8859_15}, {-1}, {-1}, {-1}, -#line 327 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1234, ei_euc_cn}, -#line 190 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1235, ei_cp1255}, -#line 113 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1236, ei_iso8859_7}, +#line 208 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_tis620}, + {-1}, +#line 252 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str792, ei_gb2312}, + {-1}, +#line 186 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_mac_thai}, + {-1}, {-1}, +#line 220 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str797, ei_tcvn}, + {-1}, +#line 73 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_iso8859_4}, +#line 123 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str800, ei_iso8859_14}, +#line 316 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str801, ei_cp949}, +#line 296 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_hz}, +#line 100 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_iso8859_8}, + {-1}, {-1}, +#line 250 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_gb2312}, +#line 482 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_ebcdic1143}, +#line 249 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str808, ei_iso646_cn}, +#line 388 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str809, ei_ebcdic273}, + {-1}, {-1}, {-1}, {-1}, +#line 65 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str814, ei_iso8859_2}, + {-1}, +#line 247 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str816, ei_iso646_cn}, + {-1}, +#line 245 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_iso646_cn}, +#line 163 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_cp850}, {-1}, -#line 690 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1238, ei_big5_2003}, - {-1}, {-1}, {-1}, {-1}, -#line 74 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1243, ei_iso8859_3}, -#line 354 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1244, ei_ces_big5}, +#line 391 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str821, ei_ebcdic277}, {-1}, {-1}, {-1}, +#line 112 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_iso8859_10}, + {-1}, {-1}, +#line 495 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str828, ei_ebcdic1145}, + {-1}, #line 98 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_iso8859_6}, -#line 675 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1249, ei_ebcdic4971}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_iso8859_7}, {-1}, -#line 67 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1251, ei_iso8859_2}, -#line 163 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1252, ei_iso8859_16}, - {-1}, {-1}, -#line 353 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1255, ei_ces_big5}, -#line 57 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1256, ei_iso8859_1}, +#line 379 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str832, ei_cp1125}, {-1}, -#line 329 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1258, ei_euc_cn}, +#line 236 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str834, ei_jisx0208}, {-1}, -#line 27 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1260, ei_ucs2}, +#line 201 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str836, ei_rk1048}, {-1}, -#line 221 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1262, ei_mac_ukraine}, +#line 410 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str838, ei_ebcdic297}, {-1}, -#line 424 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1264, ei_cp861}, -#line 164 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1265, ei_iso8859_16}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 188 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str840, ei_hp_roman8}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 210 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str846, ei_tis620}, +#line 542 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str847, ei_tds565}, {-1}, {-1}, -#line 264 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1277, ei_iso646_jp}, +#line 219 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str850, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, +#line 234 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str855, ei_jisx0208}, +#line 88 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str856, ei_iso8859_6}, +#line 420 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ebcdic500}, {-1}, -#line 273 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_jisx0208}, -#line 266 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1280, ei_iso646_jp}, -#line 68 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1281, ei_iso8859_2}, -#line 586 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1282, ei_ebcdic1141}, +#line 111 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str859, ei_iso8859_10}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 71 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str870, ei_iso8859_3}, +#line 209 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str871, ei_tis620}, + {-1}, +#line 84 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_iso8859_6}, + {-1}, +#line 268 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str875, ei_sjis}, +#line 54 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str876, ei_iso8859_1}, {-1}, {-1}, -#line 552 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1285, ei_ebcdic1047}, +#line 156 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str879, ei_cp1256}, +#line 154 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str880, ei_cp1255}, + {-1}, +#line 144 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_cp1251}, + {-1}, {-1}, {-1}, {-1}, +#line 227 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_jisx0201}, + {-1}, +#line 85 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, +#line 152 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp1254}, {-1}, {-1}, {-1}, -#line 231 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1289, ei_nextstep}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 286 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1297, ei_jisx0212}, -#line 628 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1298, ei_ebcdic1147}, +#line 160 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str898, ei_cp1258}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 397 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1305, ei_cp437}, -#line 36 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1306, ei_ucs4}, -#line 483 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1307, ei_ebcdic297}, - {-1}, -#line 126 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1309, ei_iso8859_9}, +#line 67 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str905, ei_iso8859_3}, {-1}, #line 142 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1311, ei_iso8859_13}, -#line 279 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1312, ei_jisx0208}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_cp1250}, {-1}, -#line 291 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_iso646_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 230 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1321, ei_hp_roman8}, -#line 328 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1322, ei_euc_cn}, +#line 37 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_ucs4le}, {-1}, -#line 160 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1324, ei_iso8859_15}, +#line 95 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str911, ei_iso8859_7}, {-1}, {-1}, -#line 281 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1327, ei_jisx0212}, -#line 347 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1328, ei_euc_tw}, +#line 230 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_jisx0201}, + {-1}, {-1}, +#line 483 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_ebcdic1143}, + {-1}, +#line 231 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str919, ei_jisx0208}, + {-1}, +#line 475 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str921, ei_ebcdic1142}, {-1}, {-1}, {-1}, -#line 104 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1332, ei_iso8859_6}, -#line 92 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1333, ei_iso8859_5}, -#line 95 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1334, ei_iso8859_5}, +#line 174 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str925, ei_mac_roman}, +#line 166 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str926, ei_cp862}, +#line 415 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str927, ei_ebcdic424}, +#line 265 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str928, ei_euc_jp}, +#line 278 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str929, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 243 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_jisx0212}, {-1}, -#line 318 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1336, ei_iso2022_jp}, +#line 272 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str937, ei_iso2022_jp}, +#line 61 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str938, ei_iso8859_2}, {-1}, -#line 72 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1338, ei_iso8859_2}, +#line 130 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str940, ei_iso8859_15}, + {-1}, {-1}, {-1}, +#line 147 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_cp1252}, {-1}, -#line 321 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1340, ei_iso2022_jp2}, -#line 415 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_cp857}, +#line 274 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str946, ei_iso2022_jp1}, {-1}, {-1}, -#line 168 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1344, ei_iso8859_16}, -#line 101 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1345, ei_iso8859_6}, -#line 161 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1346, ei_iso8859_15}, -#line 637 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1347, ei_ebcdic1148}, -#line 64 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1348, ei_iso8859_1}, - {-1}, {-1}, {-1}, -#line 84 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1352, ei_iso8859_4}, -#line 259 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1353, ei_viscii}, +#line 258 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str949, ei_ksc5601}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 141 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1360, ei_iso8859_11}, - {-1}, {-1}, {-1}, -#line 684 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1364, ei_euc_jisx0213}, - {-1}, {-1}, -#line 108 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1367, ei_iso8859_7}, -#line 330 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1368, ei_euc_cn}, -#line 73 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1369, ei_iso8859_3}, +#line 423 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str956, ei_ebcdic838}, +#line 190 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str957, ei_hp_roman8}, {-1}, -#line 513 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1371, ei_ebcdic870}, -#line 293 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1372, ei_gb2312}, - {-1}, {-1}, -#line 317 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1375, ei_iso2022_jp}, +#line 31 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str959, ei_ucs2le}, {-1}, {-1}, -#line 162 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1378, ei_iso8859_16}, -#line 119 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1379, ei_iso8859_8}, -#line 320 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1380, ei_iso2022_jp2}, +#line 68 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str962, ei_iso8859_3}, +#line 213 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_tis620}, {-1}, {-1}, -#line 534 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1383, ei_ebcdic905}, - {-1}, -#line 319 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1385, ei_iso2022_jp1}, - {-1}, -#line 32 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1387, ei_ucs2be}, +#line 214 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_cp874}, {-1}, {-1}, -#line 446 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1390, ei_ebcdic037}, +#line 469 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str969, ei_ebcdic1141}, +#line 294 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str970, ei_iso2022_cn_ext}, {-1}, {-1}, -#line 692 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1393, ei_tds565}, +#line 185 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_mac_arabic}, {-1}, {-1}, {-1}, {-1}, -#line 344 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_hz}, - {-1}, -#line 348 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1400, ei_euc_tw}, +#line 226 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str978, ei_iso646_jp}, + {-1}, {-1}, +#line 91 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 41 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1404, ei_utf16be}, +#line 238 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_jisx0208}, +#line 239 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str986, ei_jisx0212}, +#line 158 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str987, ei_cp1257}, {-1}, -#line 122 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1406, ei_iso8859_8}, +#line 212 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str989, ei_tis620}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 593 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1412, ei_ebcdic1142}, -#line 42 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1413, ei_utf16le}, +#line 240 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_jisx0212}, +#line 476 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_ebcdic1142}, + {-1}, {-1}, +#line 204 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str999, ei_mulelao}, +#line 150 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_cp1253}, {-1}, {-1}, {-1}, -#line 463 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1417, ei_ebcdic278}, +#line 419 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1004, ei_ebcdic500}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 58 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1423, ei_iso8859_1}, - {-1}, -#line 282 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1425, ei_jisx0212}, - {-1}, {-1}, -#line 486 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1428, ei_ebcdic297}, -#line 689 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1429, ei_iso2022_jp3}, -#line 88 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1430, ei_iso8859_4}, - {-1}, {-1}, -#line 159 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1433, ei_iso8859_15}, - {-1}, {-1}, {-1}, {-1}, -#line 206 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1438, ei_cp862}, +#line 179 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_mac_romania}, {-1}, {-1}, {-1}, -#line 155 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1442, ei_iso8859_14}, - {-1}, -#line 28 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1444, ei_ucs2}, +#line 539 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1023, ei_iso2022_jp3}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 47 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1450, ei_utf7}, +#line 305 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1029, ei_cp950}, +#line 277 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1030, ei_iso2022_jpms}, {-1}, {-1}, {-1}, {-1}, -#line 222 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1455, ei_mac_greek}, - {-1}, -#line 631 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1457, ei_ebcdic1147}, +#line 263 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_euc_jp}, {-1}, {-1}, -#line 187 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1460, ei_cp1254}, -#line 519 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1461, ei_ebcdic871}, -#line 129 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1462, ei_iso8859_9}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 63 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1472, ei_iso8859_1}, +#line 320 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1038, ei_iso2022_kr}, +#line 244 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1039, ei_jisx0212}, {-1}, {-1}, -#line 106 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1475, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 107 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1483, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 118 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1042, ei_iso8859_13}, #line 103 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1492, ei_iso8859_6}, -#line 341 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1493, ei_iso2022_cn}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1043, ei_iso8859_8}, {-1}, {-1}, -#line 688 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1496, ei_iso2022_jp3}, - {-1}, {-1}, -#line 94 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1499, ei_iso8859_5}, +#line 321 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1046, ei_dec_kanji}, {-1}, -#line 450 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1501, ei_ebcdic037}, -#line 138 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1502, ei_iso8859_10}, +#line 29 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1048, ei_ucs2be}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 92 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1056, ei_iso8859_7}, {-1}, -#line 553 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1504, ei_ebcdic1097}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 87 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_iso8859_4}, - {-1}, {-1}, {-1}, {-1}, -#line 642 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1516, ei_ebcdic1149}, +#line 424 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1058, ei_ebcdic838}, + {-1}, {-1}, +#line 273 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1061, ei_iso2022_jp}, + {-1}, {-1}, +#line 228 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1064, ei_jisx0201}, {-1}, -#line 44 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1518, ei_utf32be}, -#line 292 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1519, ei_gb2312}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 301 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1526, ei_ksc5601}, -#line 45 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1527, ei_utf32le}, - {-1}, {-1}, {-1}, {-1}, -#line 340 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1532, ei_iso2022_cn}, - {-1}, {-1}, {-1}, -#line 288 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1536, ei_iso646_cn}, - {-1}, {-1}, {-1}, {-1}, -#line 459 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1541, ei_ebcdic277}, +#line 544 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1066, ei_atarist}, {-1}, -#line 278 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1543, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 436 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1068, ei_ebcdic880}, {-1}, -#line 270 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1554, ei_jisx0201}, +#line 275 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1070, ei_iso2022_jp2}, +#line 96 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1071, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 12 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1561, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 305 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1567, ei_euc_jp}, -#line 298 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1568, ei_ksc5601}, - {-1}, -#line 80 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1570, ei_iso8859_3}, -#line 579 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1571, ei_ebcdic1140}, +#line 307 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1078, ei_big5hkscs2001}, + {-1}, {-1}, {-1}, +#line 171 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1082, ei_mac_roman}, {-1}, -#line 268 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1573, ei_iso646_jp}, - {-1}, {-1}, -#line 223 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1576, ei_mac_turkish}, +#line 254 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1084, ei_isoir165}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 147 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1582, ei_iso8859_13}, -#line 71 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1583, ei_iso8859_2}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 308 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_big5hkscs2004}, #line 105 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1601, ei_iso8859_7}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1091, ei_iso8859_9}, +#line 151 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1092, ei_cp1253}, +#line 288 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1093, ei_cp936}, +#line 310 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_big5hkscs2008}, {-1}, {-1}, -#line 275 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1604, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 124 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_iso8859_14}, + {-1}, {-1}, {-1}, +#line 382 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1101, ei_ebcdic037}, +#line 445 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1102, ei_ebcdic924}, {-1}, -#line 311 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_sjis}, +#line 97 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1104, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 233 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1108, ei_jisx0208}, + {-1}, +#line 38 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1110, ei_utf16}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 276 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1124, ei_iso2022_jp2}, + {-1}, {-1}, {-1}, {-1}, +#line 241 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1129, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, +#line 237 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1134, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, +#line 23 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1139, ei_utf8}, {-1}, {-1}, -#line 48 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1618, ei_utf7}, +#line 375 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1142, ei_cp869}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 476 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1628, ei_ebcdic284}, -#line 79 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1629, ei_iso8859_3}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 50 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1157, ei_ucs4swapped}, + {-1}, {-1}, {-1}, +#line 36 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1161, ei_ucs4be}, +#line 222 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1162, ei_iso646_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 272 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1639, ei_jisx0201}, - {-1}, {-1}, {-1}, {-1}, -#line 274 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1644, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 487 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1650, ei_ebcdic297}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 134 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1657, ei_iso8859_10}, +#line 489 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1177, ei_ebcdic1144}, + {-1}, {-1}, {-1}, {-1}, +#line 538 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1182, ei_iso2022_jp3}, {-1}, -#line 99 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1659, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 685 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1671, ei_euc_jisx0213}, +#line 172 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1184, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 195 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1193, ei_koi8_t}, {-1}, {-1}, {-1}, -#line 645 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1675, ei_ebcdic1149}, +#line 501 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1197, ei_ebcdic1146}, {-1}, -#line 299 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1677, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 157 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1199, ei_cp1256}, + {-1}, +#line 232 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1201, ei_jisx0208}, + {-1}, {-1}, #line 283 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1686, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 124 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1693, ei_iso8859_9}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1204, ei_euc_cn}, {-1}, {-1}, -#line 137 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1696, ei_iso8859_10}, - {-1}, {-1}, {-1}, {-1}, -#line 125 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1701, ei_iso8859_9}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 48 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_ucs2swapped}, {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1714, ei_ucs2internal}, - {-1}, {-1}, {-1}, {-1}, -#line 50 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1719, ei_ucs2swapped}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 27 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1211, ei_ucs2be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 233 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1742, ei_georgian_academy}, -#line 30 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1743, ei_ucs2be}, +#line 545 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1225, ei_riscos1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 51 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1760, ei_ucs4internal}, -#line 181 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1761, ei_cp1252}, {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1765, ei_ucs4swapped}, -#line 644 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1766, ei_ebcdic1149}, -#line 224 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1767, ei_mac_hebrew}, -#line 289 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1768, ei_iso646_cn}, - {-1}, {-1}, -#line 312 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1771, ei_sjis}, +#line 306 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1238, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 121 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1781, ei_iso8859_8}, +#line 406 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_ebcdic285}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 18 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1798, ei_ascii}, - {-1}, {-1}, {-1}, -#line 115 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1802, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 287 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1812, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 314 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1284, ei_euc_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 138 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1295, ei_koi8_r}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 427 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1302, ei_ebcdic870}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 194 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1311, ei_georgian_ps}, {-1}, {-1}, -#line 695 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1815, ei_riscos1}, - {-1}, {-1}, {-1}, -#line 123 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1819, ei_iso8859_9}, +#line 513 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_ebcdic1148}, + {-1}, {-1}, +#line 44 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1317, ei_utf7}, + {-1}, {-1}, +#line 317 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1320, ei_johab}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 215 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1834, ei_mac_roman}, -#line 17 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1835, ei_ascii}, +#line 193 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1330, ei_georgian_academy}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 191 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1337, ei_nextstep}, + {-1}, {-1}, {-1}, +#line 182 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_mac_greek}, + {-1}, +#line 289 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1343, ei_gb18030_2005}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 114 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1845, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 322 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1851, ei_iso2022_jpms}, - {-1}, -#line 371 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1853, ei_iso2022_kr}, +#line 41 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1358, ei_utf32}, +#line 137 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1359, ei_koi8_r}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 358 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1870, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, {-1}, -#line 285 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1875, ei_jisx0212}, - {-1}, {-1}, -#line 192 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1878, ei_cp1256}, -#line 189 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1879, ei_cp1255}, {-1}, -#line 180 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1881, ei_cp1252}, - {-1}, {-1}, {-1}, {-1}, -#line 177 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1886, ei_cp1251}, +#line 266 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1370, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 370 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1892, ei_iso2022_kr}, -#line 280 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1893, ei_jisx0208}, +#line 40 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_utf16le}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 269 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1383, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 178 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1401, ei_mac_croatian}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 362 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1899, ei_big5hkscs2008}, +#line 291 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1407, ei_gb18030_2022}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 261 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1418, ei_euc_jp}, +#line 507 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1419, ei_ebcdic1147}, {-1}, {-1}, -#line 359 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1911, ei_big5hkscs2004}, - {-1}, {-1}, {-1}, -#line 198 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1915, ei_cp1258}, +#line 221 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1422, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 300 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1923, ei_ksc5601}, +#line 153 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1439, ei_cp1254}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 398 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1446, ei_ebcdic280}, {-1}, {-1}, {-1}, -#line 186 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1927, ei_cp1254}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 616 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1933, ei_ebcdic1145}, +#line 463 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1450, ei_ebcdic1140}, +#line 139 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1451, ei_koi8_u}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 319 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1468, ei_iso2022_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 306 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1952, ei_euc_jp}, -#line 76 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1953, ei_iso8859_3}, - {-1}, {-1}, {-1}, -#line 174 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1957, ei_cp1250}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 537 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1492, ei_shift_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 183 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1997, ei_cp1253}, + {-1}, {-1}, {-1}, {-1}, +#line 262 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1524, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 175 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1536, ei_mac_centraleurope}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 130 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2020, ei_iso8859_9}, +#line 43 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1559, ei_utf32le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 352 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2050, ei_ces_big5}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 536 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1592, ei_shift_jisx0213}, +#line 535 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1593, ei_euc_jisx0213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 102 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1600, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 434 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1617, ei_ebcdic875}, {-1}, {-1}, -#line 296 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2062, ei_isoir165}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 155 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1620, ei_cp1255}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 409 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1627, ei_ebcdic297}, +#line 39 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1628, ei_utf16be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 14 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2093, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, +#line 32 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1651, ei_ucs2le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 144 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2109, ei_iso8859_13}, - {-1}, {-1}, {-1}, -#line 195 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2113, ei_cp1257}, - {-1}, -#line 234 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2115, ei_georgian_ps}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 264 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1693, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 298 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1699, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 184 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2156, ei_cp1253}, + {-1}, {-1}, +#line 322 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1711, ei_dec_hanyu}, + {-1}, {-1}, {-1}, +#line 428 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1715, ei_ebcdic870}, + {-1}, {-1}, +#line 534 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1718, ei_euc_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 181 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1731, ei_mac_ukraine}, + {-1}, {-1}, {-1}, +#line 384 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1735, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 256 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2188, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 357 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2206, ei_big5hkscs1999}, + {-1}, {-1}, +#line 45 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1765, ei_utf7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 151 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2218, ei_iso8859_14}, +#line 28 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1777, ei_ucs2be}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 297 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1810, ei_euc_tw}, +#line 42 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1811, ei_utf32be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 159 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1823, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 312 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1838, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 412 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1850, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 318 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1867, ei_johab}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 360 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2327, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 311 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1949, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 184 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1968, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 49 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2011, ei_ucs4internal}, + {-1}, {-1}, +#line 140 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2014, ei_koi8_ru}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 543 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2026, ei_atarist}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 47 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2061, ei_ucs2internal}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 686 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2457, ei_shift_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 299 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2085, ei_euc_tw}, +#line 439 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2086, ei_ebcdic905}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 687 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2479, ei_shift_jisx0213}, - {-1}, {-1}, -#line 313 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2482, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 309 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2504, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 361 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2529, ei_big5hkscs2008}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 336 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2564, ei_cp936}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -3338,9 +2665,11 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 310 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2630, ei_sjis} + {-1}, +#line 183 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2223, ei_mac_turkish}, +#line 313 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2224, ei_euc_kr} }; const struct alias * diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 5ea71545..a50a0e6f 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -114,14 +114,57 @@ extern "C++" std::cerr << "cd->discard_ilseq: " << cd->discard_ilseq << std::endl; } + static inline size_t name_canonicalize(const char* name, char* buf) + { + char* bp = buf; + const char* cp = name; + for (; *cp; cp++, bp++) + { + unsigned char c = (unsigned char)*cp; + if (c >= 'a' && c <= 'z') // Uppercase + { + c -= 'a' - 'A'; + } + if (c == '-' || c == '_') // Ignore '-' and '_' + { + bp--; + } + else + { + *bp = c; + } + } + *bp = '\0'; + return bp - buf; + } + _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode) { + char tocode_buf[MAX_WORD_LENGTH + 9 + 9 + 1]; + char fromcode_buf[MAX_WORD_LENGTH + 9 + 9 + 1]; struct conv_struct* cd; + const struct alias *ap; unsigned int from_index; unsigned int to_index; int discard_ilseq; - #include "iconv_open1.h" + discard_ilseq = 0; + size_t tocode_buf_len = name_canonicalize(tocode, tocode_buf); + size_t fromcode_buf_len = name_canonicalize(fromcode, fromcode_buf); + + ap = HashPool::aliases_lookup(tocode_buf, tocode_buf_len); + if (!ap) + { + goto invalid; + } + to_index = ap->encoding_index; + + ap = HashPool::aliases_lookup(fromcode_buf, fromcode_buf_len); + if (!ap) + { + goto invalid; + } + from_index = ap->encoding_index; cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); if (cd == nullptr) diff --git a/lib/iconv_open1.h b/lib/iconv_open1.h deleted file mode 100644 index 5248e3d3..00000000 --- a/lib/iconv_open1.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 1999-2008, 2011, 2018, 2020, 2023 Free Software Foundation, Inc. - * This file is part of the cppp-reiconv library. - * - * The cppp-reiconv library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file LICENSE. - * If not, see . - */ - -/* Part 1 of iconv_open. - Input: const char* tocode, const char* fromcode. - Output: - unsigned int from_index; - unsigned int to_index; - int discard_ilseq; - Jumps to 'invalid' in case of errror. - */ -{ - char buf[MAX_WORD_LENGTH + 9 + 9 + 1]; - const char *cp; - char *bp; - const struct alias *ap; - unsigned int count; - discard_ilseq = 0; - - /* Before calling HashPool::aliases_lookup, convert the input string to upper case, - * and check whether it's entirely ASCII (we call gperf with option "-7" - * to achieve a smaller table) and non-empty. If it's not entirely ASCII, - * or if it's too long, it is not a valid encoding name. - */ - - /* Search tocode in the table. */ - for (cp = tocode, bp = buf, count = MAX_WORD_LENGTH + 9 + 9 + 1;; cp++, bp++) - { - unsigned char c = (unsigned char)*cp; - if (c >= 0x80) - goto invalid; - if (c >= 'a' && c <= 'z') - c -= 'a' - 'A'; - *bp = c; - if (c == '\0') - break; - if (--count == 0) - goto invalid; - } - for (;;) - { - char *sp = bp; - int parsed_ignore = 0; - if (sp - buf > 7 && memcmp(sp - 7, "/IGNORE", 7) == 0) - { - sp = sp - 7; - parsed_ignore = 1; - } - if (sp > buf && memcmp(sp - 1, "/", 1) == 0) - { - bp = sp - 1; - } - else - break; - *bp = '\0'; - if (parsed_ignore) - discard_ilseq = 1; - break; - } - ap = HashPool::aliases_lookup(buf, bp - buf); - if (!ap) - { - goto invalid; - } - to_index = ap->encoding_index; - - /* Search fromcode in the table. */ - for (cp = fromcode, bp = buf, count = MAX_WORD_LENGTH + 9 + 9 + 1;; cp++, bp++) - { - unsigned char c = (unsigned char)*cp; - if (c >= 0x80) - goto invalid; - if (c >= 'a' && c <= 'z') - c -= 'a' - 'A'; - *bp = c; - if (c == '\0') - break; - if (--count == 0) - goto invalid; - } - for (;;) - { - char *sp = bp; - int parsed_ignore = 0; - if (sp - buf > 7 && memcmp(sp - 7, "/IGNORE", 7) == 0) - { - sp = sp - 7; - parsed_ignore = 1; - } - if (sp > buf && memcmp(sp - 1, "/", 1) == 0) - { - bp = sp - 1; - } - else - break; - *bp = '\0'; - if (parsed_ignore) - discard_ilseq = 1; - break; - } - ap = HashPool::aliases_lookup(buf, bp - buf); - if (!ap) - { - goto invalid; - } - from_index = ap->encoding_index; -} From caf45c3eddb571b8b76ab84f81e531ca693e4442 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 28 Jul 2024 13:08:33 +0800 Subject: [PATCH 30/77] Add codepage support. --- CMakeLists.txt | 23 +++- Makefile.devel | 10 +- include/cppp/reiconv.hpp.in | 6 +- lib/converters.h | 1 - lib/cp950ext.h | 2 +- lib/generated/flags.h | 212 ------------------------------ lib/iconv.cpp | 249 +++++++++++++++++------------------- lib/iconv_open2.h | 43 ------- tests/_iconv.hpp | 2 +- tests/reiconv-test.hpp | 2 +- tests/table-from.hpp | 2 +- tests/table-to.hpp | 2 +- tools/genflags.cpp | 114 ----------------- 13 files changed, 152 insertions(+), 516 deletions(-) delete mode 100644 lib/generated/flags.h delete mode 100644 lib/iconv_open2.h delete mode 100644 tools/genflags.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c9cb595d..3f916f47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,28 @@ elseif(HAVE_VISIBILITY) else() set(CPPP_API "") endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options(-Wno-unused-parameter) + add_compile_options(-Wno-missing-field-initializers) + add_compile_options(-Wno-implicit-fallthrough) + add_compile_options(-Wno-unused-function) + add_compile_options(-Wno-sign-compare) + add_compile_options(-Wno-type-limits) +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options(-Wno-unused-parameter) + add_compile_options(-Wno-missing-field-initializers) + add_compile_options(-Wno-implicit-fallthrough) + add_compile_options(-Wno-unused-function) + add_compile_options(-Wno-sign-compare) + add_compile_options(-Wno-type-limits) +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + add_compile_options(/wd4996) + add_compile_options(/wd4267) + add_compile_options(/wd4244) + add_compile_options(/wd4018) +endif() + add_compile_definitions("_CPPP_API=${CPPP_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") @@ -68,7 +90,6 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${outp # Add includes. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/generated") include_directories("${output_includedir}") # Add library. diff --git a/Makefile.devel b/Makefile.devel index bcb0be46..97831e3a 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -15,8 +15,7 @@ CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ - lib/generated/aliases.h \ - lib/generated/flags.h + lib/generated/aliases.h lib/generated : $(MKDIR) -p lib/generated @@ -30,12 +29,6 @@ lib/generated/aliases.gperf : lib/generated/genaliases lib/generated/aliases.h : lib/generated/aliases.gperf $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ -lib/generated/genflags : tools/genflags.cpp - $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ - -lib/generated/flags.h : lib/generated/genflags - ./lib/generated/genflags > $@ - test : all $(RM) -r -f build $(MKDIR) -p build @@ -77,7 +70,6 @@ clean : $(RM) -r -f .cache $(RM) -f lib/generated/aliases.gperf $(RM) -f lib/generated/genaliases - $(RM) -f lib/generated/genflags $(RM) -f tests/data/GB18030-2005.TXT $(RM) -f tests/data/GB18030-2022.TXT $(RM) -f tests/data/UTF-8.TXT diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 7fdbaab6..be6584ca 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -100,7 +100,9 @@ namespace cppp::base::reiconv */ extern _CPPP_API int convert(const char *tocode, const char *fromcode, const char *start, size_t inlength, - char **resultp, size_t *lengthp); + char **resultp, size_t *lengthp, bool strict); + +#if 0 /** * @brief Converts an entire string from one encoding to another, @@ -173,4 +175,6 @@ namespace cppp::base::reiconv char **resultp, size_t *lengthp, bool strict = true); +#endif + } // namespace cppp::base::reiconv diff --git a/lib/converters.h b/lib/converters.h index efce3838..81c8e7ae 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -102,7 +102,6 @@ struct conv_struct { /* Output (conversion unicode -> multibyte) */ int oindex; struct wctomb_funcs ofuncs; - int oflags; state_t ostate; /* Operation flags */ int discard_ilseq; diff --git a/lib/cp950ext.h b/lib/cp950ext.h index 81e14174..11cb8ca7 100644 --- a/lib/cp950ext.h +++ b/lib/cp950ext.h @@ -35,7 +35,7 @@ static int cp950ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { unsigned char c1 = s[0]; - if ((c1 == (unsigned char)0xf9)) { + if (c1 == (unsigned char)0xf9) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { diff --git a/lib/generated/flags.h b/lib/generated/flags.h deleted file mode 100644 index ce36f62e..00000000 --- a/lib/generated/flags.h +++ /dev/null @@ -1,212 +0,0 @@ -/* Generated automatically by genflags. */ - -/* Set if the encoding can encode - the acute and grave accents U+00B4 and U+0060. */ -#define HAVE_ACCENTS 1 - -/* Set if the encoding can encode - the single quotation marks U+2018 and U+2019. */ -#define HAVE_QUOTATION_MARKS 2 - -/* Set if the encoding can encode - the double-width Hangul letters (Jamo) U+3131 to U+3163. */ -#define HAVE_HANGUL_JAMO 4 - -#define ei_ascii_oflags (0) -#define ei_utf8_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs2be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs2le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs4_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs4be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs4le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf16_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf16be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf16le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf32_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf32be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf32le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_utf7_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs2internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs2swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs4internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_ucs4swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_c99_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_java_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_iso8859_1_oflags (HAVE_ACCENTS) -#define ei_iso8859_2_oflags (HAVE_ACCENTS) -#define ei_iso8859_3_oflags (HAVE_ACCENTS) -#define ei_iso8859_4_oflags (HAVE_ACCENTS) -#define ei_iso8859_5_oflags (0) -#define ei_iso8859_6_oflags (0) -#define ei_iso8859_7_oflags (HAVE_QUOTATION_MARKS) -#define ei_iso8859_8_oflags (HAVE_ACCENTS) -#define ei_iso8859_9_oflags (HAVE_ACCENTS) -#define ei_iso8859_10_oflags (0) -#define ei_iso8859_11_oflags (0) -#define ei_iso8859_13_oflags (0) -#define ei_iso8859_14_oflags (0) -#define ei_iso8859_15_oflags (0) -#define ei_iso8859_16_oflags (0) -#define ei_koi8_r_oflags (0) -#define ei_koi8_u_oflags (0) -#define ei_koi8_ru_oflags (0) -#define ei_cp1250_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1251_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp1252_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1253_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp1254_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1255_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1256_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1257_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1258_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp850_oflags (HAVE_ACCENTS) -#define ei_cp862_oflags (0) -#define ei_cp866_oflags (0) -#define ei_cp1131_oflags (0) -#define ei_mac_roman_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_mac_centraleurope_oflags (HAVE_QUOTATION_MARKS) -#define ei_mac_iceland_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_mac_croatian_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_mac_romania_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_mac_cyrillic_oflags (HAVE_QUOTATION_MARKS) -#define ei_mac_ukraine_oflags (HAVE_QUOTATION_MARKS) -#define ei_mac_greek_oflags (HAVE_QUOTATION_MARKS) -#define ei_mac_turkish_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_mac_hebrew_oflags (HAVE_QUOTATION_MARKS) -#define ei_mac_arabic_oflags (0) -#define ei_mac_thai_oflags (HAVE_QUOTATION_MARKS) -#define ei_hp_roman8_oflags (HAVE_ACCENTS) -#define ei_nextstep_oflags (HAVE_ACCENTS) -#define ei_armscii_8_oflags (0) -#define ei_georgian_academy_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_georgian_ps_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_koi8_t_oflags (HAVE_QUOTATION_MARKS) -#define ei_pt154_oflags (HAVE_QUOTATION_MARKS) -#define ei_rk1048_oflags (HAVE_QUOTATION_MARKS) -#define ei_mulelao_oflags (0) -#define ei_cp1133_oflags (0) -#define ei_tis620_oflags (0) -#define ei_cp874_oflags (HAVE_QUOTATION_MARKS) -#define ei_viscii_oflags (0) -#define ei_tcvn_oflags (HAVE_ACCENTS) -#define ei_iso646_jp_oflags (0) -#define ei_jisx0201_oflags (0) -#define ei_jisx0208_oflags (HAVE_QUOTATION_MARKS) -#define ei_jisx0212_oflags (0) -#define ei_iso646_cn_oflags (0) -#define ei_gb2312_oflags (HAVE_QUOTATION_MARKS) -#define ei_isoir165_oflags (HAVE_QUOTATION_MARKS) -#define ei_ksc5601_oflags (HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_euc_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_sjis_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp932_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_iso2022_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_iso2022_jp1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_iso2022_jp2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_iso2022_jpms_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_euc_cn_oflags (HAVE_QUOTATION_MARKS) -#define ei_ces_gbk_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp936_oflags (HAVE_QUOTATION_MARKS) -#define ei_gb18030_2005_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_gb18030_2022_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_iso2022_cn_oflags (HAVE_QUOTATION_MARKS) -#define ei_iso2022_cn_ext_oflags (HAVE_QUOTATION_MARKS) -#define ei_hz_oflags (HAVE_QUOTATION_MARKS) -#define ei_euc_tw_oflags (HAVE_QUOTATION_MARKS) -#define ei_ces_big5_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp950_oflags (HAVE_QUOTATION_MARKS) -#define ei_big5hkscs1999_oflags (HAVE_QUOTATION_MARKS) -#define ei_big5hkscs2001_oflags (HAVE_QUOTATION_MARKS) -#define ei_big5hkscs2004_oflags (HAVE_QUOTATION_MARKS) -#define ei_big5hkscs2008_oflags (HAVE_QUOTATION_MARKS) -#define ei_euc_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_cp949_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_johab_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_iso2022_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) -#define ei_dec_kanji_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_dec_hanyu_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp856_oflags (HAVE_ACCENTS) -#define ei_cp922_oflags (HAVE_ACCENTS) -#define ei_cp943_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_cp1046_oflags (0) -#define ei_cp1124_oflags (0) -#define ei_cp1129_oflags (0) -#define ei_cp1161_oflags (0) -#define ei_cp1162_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp1163_oflags (0) -#define ei_cp437_oflags (0) -#define ei_cp737_oflags (0) -#define ei_cp775_oflags (0) -#define ei_cp852_oflags (HAVE_ACCENTS) -#define ei_cp853_oflags (HAVE_ACCENTS) -#define ei_cp855_oflags (0) -#define ei_cp857_oflags (HAVE_ACCENTS) -#define ei_cp858_oflags (HAVE_ACCENTS) -#define ei_cp860_oflags (0) -#define ei_cp861_oflags (0) -#define ei_cp863_oflags (HAVE_ACCENTS) -#define ei_cp864_oflags (0) -#define ei_cp865_oflags (0) -#define ei_cp869_oflags (HAVE_QUOTATION_MARKS) -#define ei_cp1125_oflags (0) -#define ei_ebcdic037_oflags (HAVE_ACCENTS) -#define ei_ebcdic273_oflags (HAVE_ACCENTS) -#define ei_ebcdic277_oflags (HAVE_ACCENTS) -#define ei_ebcdic278_oflags (HAVE_ACCENTS) -#define ei_ebcdic280_oflags (HAVE_ACCENTS) -#define ei_ebcdic282_oflags (HAVE_ACCENTS) -#define ei_ebcdic284_oflags (HAVE_ACCENTS) -#define ei_ebcdic285_oflags (HAVE_ACCENTS) -#define ei_ebcdic297_oflags (HAVE_ACCENTS) -#define ei_ebcdic423_oflags (HAVE_ACCENTS) -#define ei_ebcdic424_oflags (HAVE_ACCENTS) -#define ei_ebcdic425_oflags (0) -#define ei_ebcdic500_oflags (HAVE_ACCENTS) -#define ei_ebcdic838_oflags (0) -#define ei_ebcdic870_oflags (HAVE_ACCENTS) -#define ei_ebcdic871_oflags (HAVE_ACCENTS) -#define ei_ebcdic875_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_ebcdic880_oflags (0) -#define ei_ebcdic905_oflags (HAVE_ACCENTS) -#define ei_ebcdic924_oflags (0) -#define ei_ebcdic1025_oflags (0) -#define ei_ebcdic1026_oflags (HAVE_ACCENTS) -#define ei_ebcdic1047_oflags (HAVE_ACCENTS) -#define ei_ebcdic1097_oflags (0) -#define ei_ebcdic1112_oflags (0) -#define ei_ebcdic1122_oflags (HAVE_ACCENTS) -#define ei_ebcdic1123_oflags (0) -#define ei_ebcdic1130_oflags (0) -#define ei_ebcdic1132_oflags (0) -#define ei_ebcdic1137_oflags (0) -#define ei_ebcdic1140_oflags (HAVE_ACCENTS) -#define ei_ebcdic1141_oflags (HAVE_ACCENTS) -#define ei_ebcdic1142_oflags (HAVE_ACCENTS) -#define ei_ebcdic1143_oflags (HAVE_ACCENTS) -#define ei_ebcdic1144_oflags (HAVE_ACCENTS) -#define ei_ebcdic1145_oflags (HAVE_ACCENTS) -#define ei_ebcdic1146_oflags (HAVE_ACCENTS) -#define ei_ebcdic1147_oflags (HAVE_ACCENTS) -#define ei_ebcdic1148_oflags (HAVE_ACCENTS) -#define ei_ebcdic1149_oflags (HAVE_ACCENTS) -#define ei_ebcdic1153_oflags (HAVE_ACCENTS) -#define ei_ebcdic1154_oflags (0) -#define ei_ebcdic1155_oflags (HAVE_ACCENTS) -#define ei_ebcdic1156_oflags (0) -#define ei_ebcdic1157_oflags (HAVE_ACCENTS) -#define ei_ebcdic1158_oflags (0) -#define ei_ebcdic1160_oflags (0) -#define ei_ebcdic1164_oflags (0) -#define ei_ebcdic1165_oflags (HAVE_ACCENTS) -#define ei_ebcdic1166_oflags (0) -#define ei_ebcdic4971_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_ebcdic12712_oflags (HAVE_ACCENTS) -#define ei_ebcdic16804_oflags (0) -#define ei_euc_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_shift_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_iso2022_jp3_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) -#define ei_big5_2003_oflags (HAVE_QUOTATION_MARKS) -#define ei_tds565_oflags (0) -#define ei_atarist_oflags (HAVE_ACCENTS) -#define ei_riscos1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) diff --git a/lib/iconv.cpp b/lib/iconv.cpp index a50a0e6f..ad44c08a 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -23,95 +23,83 @@ #include #include #include +#include -namespace cppp +namespace cppp::base::reiconv { -namespace base -{ -namespace reiconv -{ - - /* Iconv handle. */ + // Iconv handle. typedef void* iconv_t; -/* - * Data type for general conversion loop. - */ -struct loop_funcs -{ - size_t (*loop_convert)(iconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - size_t (*loop_reset)(iconv_t icd, char **outbuf, size_t *outbytesleft); -}; + // Data type for general conversion loop. + struct loop_funcs + { + size_t (*loop_convert)(iconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + size_t (*loop_reset)(iconv_t icd, char **outbuf, size_t *outbytesleft); + }; -/* - * Converters. - */ -#include "converters.h" + // Converters + #include "converters.h" -/* - * Table of all supported encodings. - */ -struct encoding -{ - struct mbtowc_funcs ifuncs; /* conversion multibyte -> unicode */ - struct wctomb_funcs ofuncs; /* conversion unicode -> multibyte */ - int oflags; /* flags for unicode -> multibyte conversion */ -}; + // Table of all supported encodings. + struct encoding + { + struct mbtowc_funcs ifuncs; // conversion multibyte -> unicode + struct wctomb_funcs ofuncs; // conversion unicode -> multibyte + }; #define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, #define DEFCODEPAGE(codepage, xxx) -enum -{ - #include "encodings.h.snippet" - ei_for_broken_compilers_that_dont_like_trailing_commas -}; + enum + { + #include "encodings.h.snippet" + }; #undef DEFCODEPAGE #undef DEFENCODING -#include "flags.h" - -#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2, ei_##xxx##_oflags}, +#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, #define DEFCODEPAGE(codepage, xxx) -static struct encoding const all_encodings[] = -{ - #include "encodings.h.snippet" -}; + static struct encoding const all_encodings[] = + { + #include "encodings.h.snippet" + }; #undef DEFENCODING -// #undef DEFCODEPAGE +#undef DEFCODEPAGE +#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) +#define DEFCODEPAGE(codepage, xxx) {codepage, ei_##xxx}, -/* - * Conversion loops. - */ -#include "loops.h" + static const std::map codepage_to_eindex = + { + #include "encodings.h.snippet" + }; -/* - * Alias lookup function. - * Defines - * struct alias { int name; unsigned int encoding_index; }; - * const struct alias * HashPool::aliases_lookup (const char *str, unsigned int len); - * #define MAX_WORD_LENGTH ... - */ -#include "aliases.h" +#undef DEFENCODING +#undef DEFCODEPAGE -extern "C++" -{ + + // Conversion loops. + #include "loops.h" + + /** + * Alias lookup function. + * Defines + * struct alias { int name; unsigned int encoding_index; }; + * const struct alias * HashPool::aliases_lookup (const char *str, unsigned int len); + * #define MAX_WORD_LENGTH ... + */ + #include "generated/aliases.h" #pragma region hidden-api - void cddump(struct conv_struct* cd) + static inline int lookup_by_codepage(int codepage) { - std::cerr << "cd->iindex: " << cd->iindex << std::endl; - std::cerr << "cd->istate: " << cd->istate << std::endl; - std::cerr << "cd->oindex: " << cd->oindex << std::endl; - std::cerr << "cd->oflags: " << cd->oflags << std::endl; - std::cerr << "cd->ostate: " << cd->ostate << std::endl; - std::cerr << "cd->discard_ilseq: " << cd->discard_ilseq << std::endl; + auto it = codepage_to_eindex.find(codepage); + return it != codepage_to_eindex.end() ? it->second : -1; } static inline size_t name_canonicalize(const char* name, char* buf) @@ -138,77 +126,78 @@ extern "C++" return bp - buf; } - _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode) + static inline int lookup_by_name(const char* name) { - char tocode_buf[MAX_WORD_LENGTH + 9 + 9 + 1]; - char fromcode_buf[MAX_WORD_LENGTH + 9 + 9 + 1]; - struct conv_struct* cd; - const struct alias *ap; - unsigned int from_index; - unsigned int to_index; - int discard_ilseq; + char buf[MAX_WORD_LENGTH + 9 + 9 + 1]; + size_t buf_len = name_canonicalize(name, buf); - discard_ilseq = 0; - size_t tocode_buf_len = name_canonicalize(tocode, tocode_buf); - size_t fromcode_buf_len = name_canonicalize(fromcode, fromcode_buf); - - ap = HashPool::aliases_lookup(tocode_buf, tocode_buf_len); - if (!ap) + if (buf_len >= 2 && buf[0] == 'C' && buf[1] == 'P') { - goto invalid; + int codepage = atoi(buf + 2); + return lookup_by_codepage(codepage); } - to_index = ap->encoding_index; - ap = HashPool::aliases_lookup(fromcode_buf, fromcode_buf_len); - if (!ap) + const struct alias* ap = HashPool::aliases_lookup(buf, buf_len); + if (ap) { - goto invalid; + return ap->encoding_index; } - from_index = ap->encoding_index; + return -1; + } + static inline struct conv_struct* iconv_open_from_index(int to_index, int from_index, int discard_ilseq) + { + struct conv_struct* cd; cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); if (cd == nullptr) { errno = ENOMEM; - return (iconv_t)(-1); + return (struct conv_struct*)(-1); } - - #include "iconv_open2.h" - - cddump(cd); - - return (iconv_t)cd; - invalid: - errno = EINVAL; - return (iconv_t)(-1); + cd->iindex = from_index; + cd->ifuncs = all_encodings[from_index].ifuncs; + cd->oindex = to_index; + cd->ofuncs = all_encodings[to_index].ofuncs; + /* Initialize the loop functions. */ + cd->lfuncs.loop_convert = unicode_loop_convert; + cd->lfuncs.loop_reset = unicode_loop_reset; + /* Initialize the states. */ + cd->istate = 0; + cd->ostate = 0; + /* Initialize the operation flags. */ + cd->discard_ilseq = discard_ilseq; + + return cd; } - int lookup_by_codepage(int) {return 0;} - - _CPPP_API iconv_t iconv_open(int tocode_cp, int fromcode_cp, bool strict) + _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict) { - struct conv_struct *cd; - unsigned int from_index; - unsigned int to_index; - int discard_ilseq = (int)!strict; - - to_index = lookup_by_codepage(tocode_cp); - from_index = lookup_by_codepage(fromcode_cp); + unsigned int to_index = lookup_by_name(tocode); + unsigned int from_index = lookup_by_name(fromcode); - if(to_index == -1 || from_index == -1 || tocode_cp == -1 || fromcode_cp == -1) + if (to_index == -1 || from_index == -1) { errno = EINVAL; return (iconv_t)(-1); } - cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); - if (cd == nullptr) + struct conv_struct* cd = iconv_open_from_index(to_index, from_index, (int)!strict); + + return (iconv_t)cd; + } + + _CPPP_API iconv_t iconv_open(int tocode, int fromcode, bool strict) + { + unsigned int to_index = lookup_by_codepage(tocode); + unsigned int from_index = lookup_by_codepage(fromcode); + + if (to_index == -1 || from_index == -1) { - errno = ENOMEM; + errno = EINVAL; return (iconv_t)(-1); } - #include "iconv_open2.h" + struct conv_struct* cd = iconv_open_from_index(to_index, from_index, (int)!strict); return (iconv_t)cd; } @@ -234,23 +223,23 @@ extern "C++" /* version number: (major<<8) + minor */ _CPPP_API int reiconv_version = (3 << 8) + 0; - constexpr const size_t tmpbufsize = 4096; + constexpr const size_t TEMP_BUFFER_SIZE = 4096; _CPPP_API int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, - size_t *lengthp) + size_t *lengthp, bool strict) { size_t length; char* result; /* Determine the length we need. */ { size_t count = 0; - char tmpbuf[tmpbufsize]; + char tmpbuf[TEMP_BUFFER_SIZE]; char* inptr = (char*)start; size_t insize = inlength; while (insize > 0) { char *outptr = tmpbuf; - size_t outsize = tmpbufsize; + size_t outsize = TEMP_BUFFER_SIZE; size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); if (res == (size_t)(-1) && errno != E2BIG) { @@ -260,7 +249,7 @@ extern "C++" } { char *outptr = tmpbuf; - size_t outsize = tmpbufsize; + size_t outsize = TEMP_BUFFER_SIZE; size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); if (res == (size_t)(-1)) { @@ -327,9 +316,9 @@ extern "C++" } _CPPP_API int convert(const char* tocode, const char* fromcode, const char* start, - size_t inlength, char** resultp, size_t* lengthp) + size_t inlength, char** resultp, size_t* lengthp, bool strict) { - iconv_t cd = iconv_open(tocode, fromcode); + iconv_t cd = iconv_open(tocode, fromcode, strict); if (cd == (iconv_t)(-1)) { if (errno != EINVAL) @@ -337,7 +326,7 @@ extern "C++" return -1; } - #pragma region autodetect +#pragma region autodetect /* Unsupported fromcode or tocode. Check whether the caller requested autodetection. */ if (!strcmp(fromcode, "autodetect_utf8")) @@ -345,10 +334,10 @@ extern "C++" int ret; /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */ - ret = convert(tocode, "UTF-8", start, inlength, resultp, lengthp); + ret = convert(tocode, "UTF-8", start, inlength, resultp, lengthp, strict); if (!(ret < 0 && errno == EILSEQ)) return ret; - ret = convert(tocode, "ISO-8859-1", start, inlength, resultp, lengthp); + ret = convert(tocode, "ISO-8859-1", start, inlength, resultp, lengthp, strict); return ret; } if (!strcmp(fromcode, "autodetect_jp")) @@ -356,7 +345,7 @@ extern "C++" int ret; /* Try 7-bit encoding first. If the input contains bytes >= 0x80, it will fail. */ - ret = convert(tocode, "ISO-2022-JP-2", start, inlength, resultp, lengthp); + ret = convert(tocode, "ISO-2022-JP-2", start, inlength, resultp, lengthp, strict); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This @@ -364,11 +353,11 @@ extern "C++" If we tried SHIFT_JIS first, then some short EUC-JP inputs would come out wrong, and people would condemn EUC-JP and Unix, which would not be good. */ - ret = convert(tocode, "EUC-JP", start, inlength, resultp, lengthp); + ret = convert(tocode, "EUC-JP", start, inlength, resultp, lengthp, strict); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Finally try SHIFT_JIS. */ - ret = convert(tocode, "SHIFT_JIS", start, inlength, resultp, lengthp); + ret = convert(tocode, "SHIFT_JIS", start, inlength, resultp, lengthp, strict); return ret; } if (!strcmp(fromcode, "autodetect_kr")) @@ -376,24 +365,26 @@ extern "C++" int ret; /* Try 7-bit encoding first. If the input contains bytes >= 0x80, it will fail. */ - ret = convert(tocode, "ISO-2022-KR", start, inlength, resultp, lengthp); + ret = convert(tocode, "ISO-2022-KR", start, inlength, resultp, lengthp, strict); if (!(ret < 0 && errno == EILSEQ)) return ret; /* Finally try EUC-KR. */ - ret = convert(tocode, "EUC-KR", start, inlength, resultp, lengthp); + ret = convert(tocode, "EUC-KR", start, inlength, resultp, lengthp, strict); return ret; } - #pragma endregion +#pragma endregion errno = EINVAL; return -1; } - int ret = convert(cd, start, inlength, resultp, lengthp); + int ret = convert(cd, start, inlength, resultp, lengthp, strict); iconv_close(cd); return ret; } +#if 0 + _CPPP_API int convert(int tocode_cp, int fromcode_cp, const char* start, size_t inlength, char** resultp, size_t* lengthp, bool strict) { @@ -408,6 +399,8 @@ extern "C++" return ret; } +#endif + _CPPP_API bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp) { if (resultp == nullptr || lengthp == nullptr) @@ -460,8 +453,4 @@ extern "C++" return true; } -} // extern "C++" - -} // namespace reiconv -} // namespace base -} // namespace cppp +} // namespace cppp::base::reiconv diff --git a/lib/iconv_open2.h b/lib/iconv_open2.h deleted file mode 100644 index bcb4bca2..00000000 --- a/lib/iconv_open2.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 1999-2009, 2023 Free Software Foundation, Inc. - * This file is part of the cppp-reiconv library. - * - * The cppp-reiconv library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file LICENSE. - * If not, see . - */ - -/* Part 2 of iconv_open. - Input: - struct conv_struct * cd; - unsigned int from_index; - unsigned int to_index; - int discard_ilseq; - Output: none. - Side effects: Fills cd. - */ - -cd->iindex = from_index; -cd->ifuncs = all_encodings[from_index].ifuncs; -cd->oindex = to_index; -cd->ofuncs = all_encodings[to_index].ofuncs; -cd->oflags = all_encodings[to_index].oflags; -/* Initialize the loop functions. */ -cd->lfuncs.loop_convert = unicode_loop_convert; -cd->lfuncs.loop_reset = unicode_loop_reset; -/* Initialize the states. */ -memset(&cd->istate, '\0', sizeof(state_t)); -memset(&cd->ostate, '\0', sizeof(state_t)); -/* Initialize the operation flags. */ -cd->discard_ilseq = discard_ilseq; -/* Done. */ diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index 435ce18e..a5e454d2 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -35,7 +35,7 @@ namespace cppp::base::reiconv { typedef void* iconv_t; - extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode); + extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict); extern _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); extern _CPPP_API int iconv_close(iconv_t cd); } // namespace cppp::base::reiconv \ No newline at end of file diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 2969cebb..1d0bbf6a 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -48,7 +48,7 @@ namespace test char* s = (char*)malloc(srclen); fread(s, 1, srclen, src); fclose(src); - cppp::base::reiconv::convert(to.c_str(), from.c_str(), s, srclen, &res, &len); + cppp::base::reiconv::convert(to.c_str(), from.c_str(), s, srclen, &res, &len, true); FILE* out = fopen(output_file_path.c_str(), "wb"); fwrite(res, 1, len, out); diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 98f78f67..72c5d0f1 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -131,7 +131,7 @@ namespace test iconv_t cd; int search_depth; - cd = iconv_open("UCS-4-INTERNAL", charset.c_str()); + cd = iconv_open("UCS-4-INTERNAL", charset.c_str(), true); if (cd == (iconv_t)(-1)) { error("iconv_open"," Iconv open error."); diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 292e9854..32bf1c52 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -50,7 +50,7 @@ namespace test iconv_t cd; int bmp_only; - cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL"); + cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL", true); if (cd == (iconv_t)(-1)) { error("iconv_open", "Iconv open error."); diff --git a/tools/genflags.cpp b/tools/genflags.cpp deleted file mode 100644 index 4507a49f..00000000 --- a/tools/genflags.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2023 The C++ Plus Project. - * This file is part of the cppp-reiconv Library. - * - * The cppp-reiconv Library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv Library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file LICENSE. - * If not, see . - */ - -/* Creates the flags.h include file. */ - -#include -#include -#include -struct loop_funcs -{ -}; -#define ICONV_SURFACE_EBCDIC_ZOS_UNIX 1 -#include "converters.h" - -static void emit_encoding(struct wctomb_funcs* ofuncs, const char* c_name) -{ - /* Prepare a converter struct. */ - struct conv_struct conv; - memset(&conv, '\0', sizeof(conv)); - conv.ofuncs = *ofuncs; - - { - /* See whether the encoding can encode the accents and quotation marks. */ - ucs4_t probe[6] = { - 0x0060, 0x00b4, 0x2018, 0x2019, 0x3131, 0x3163, - }; - int res[6]; - int i; - for (i = 0; i < 6; i++) - { - unsigned char buf[10]; - memset(&conv.ostate, '\0', sizeof(state_t)); - res[i] = (conv.ofuncs.xxx_wctomb(&conv, buf, probe[i], sizeof(buf)) != RET_ILUNI); - } - printf("#define ei_%s_oflags (", c_name); - { - int first = 1; - if (res[0] && res[1]) - { - printf("HAVE_ACCENTS"); - first = 0; - } - if (res[2] && res[3]) - { - if (!first) - printf(" | "); - printf("HAVE_QUOTATION_MARKS"); - first = 0; - } - if (res[4] && res[5]) - { - if (!first) - printf(" | "); - printf("HAVE_HANGUL_JAMO"); - first = 0; - } - if (first) - printf("0"); - } - printf(")\n"); - } -} - -int main() -{ - int bitmask = 1; - printf("/* Generated automatically by genflags. */\n"); - printf("\n"); - printf("/* Set if the encoding can encode\n"); - printf(" the acute and grave accents U+00B4 and U+0060. */\n"); - printf("#define HAVE_ACCENTS %d\n", bitmask); - printf("\n"); - bitmask = bitmask << 1; - printf("/* Set if the encoding can encode\n"); - printf(" the single quotation marks U+2018 and U+2019. */\n"); - printf("#define HAVE_QUOTATION_MARKS %d\n", bitmask); - printf("\n"); - bitmask = bitmask << 1; - printf("/* Set if the encoding can encode\n"); - printf(" the double-width Hangul letters (Jamo) U+3131 to U+3163. */\n"); - printf("#define HAVE_HANGUL_JAMO %d\n", bitmask); - printf("\n"); - -#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - { \ - struct wctomb_funcs ofuncs = xxx_ofuncs1, xxx_ofuncs2; \ - emit_encoding(&ofuncs, #xxx); \ - } -#define DEFCODEPAGE(codepage, xxx) - -/* Consider all encodings, including the system dependent ones. */ -#include "encodings.h.snippet" -#undef DEFENCODING - - if (ferror(stdout) || fclose(stdout)) - return 1; - return 0; -} From eec4962ecf637f912022cc8e4f321686804a6dac Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 28 Jul 2024 13:43:06 +0800 Subject: [PATCH 31/77] Fix bugs in building library. --- CMakeLists.txt | 27 ++++++++++----------------- include/cppp/reiconv.hpp.in | 8 +------- tests/_iconv.hpp | 1 + 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f916f47..7dbbc217 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,15 +39,6 @@ include("${BUILD_AUX}/cmake/cppp.cmake") check_have_visibility() -# Generate header file for build. -if(WIN32) - set(CPPP_API "__declspec(dllexport)") -elseif(HAVE_VISIBILITY) - set(CPPP_API "__attribute__((visibility(\"default\")))") -else() -set(CPPP_API "") -endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wno-unused-parameter) add_compile_options(-Wno-missing-field-initializers) @@ -69,11 +60,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") add_compile_options(/wd4018) endif() -add_compile_definitions("_CPPP_API=${CPPP_API}") - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") - # Generate header file for install. if(WIN32) set(CPPP_API "__declspec(dllimport)") @@ -83,11 +69,18 @@ else() set(CPPP_API "") endif() -remove_definitions("_CPPP_API") -add_compile_definitions("_CPPP_API=${CPPP_API}") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp.inst") + +# Generate header file for build. +if(WIN32) + set(CPPP_API "__declspec(dllexport)") +endif() + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") + + # Add includes. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") include_directories("${output_includedir}") diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index be6584ca..3adf77d8 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -30,13 +30,7 @@ #include #ifndef _CPPP_API - #ifdef _MSC_VER - #define _CPPP_API __declspec(dllexport) - #elif defined(__GNUC__) - #define _CPPP_API __attribute__((visibility("default"))) - #else - #define _CPPP_API - #endif +#define _CPPP_API @CPPP_API@ #endif #if _MSC_VER >= 1600 diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index a5e454d2..47d409d3 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -25,6 +25,7 @@ #pragma once +#include #include #if _MSC_VER >= 1600 From 2bd50134446e1e0603992de7f1f722124cbb318f Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 28 Jul 2024 14:52:11 +0800 Subject: [PATCH 32/77] Update `Makefile.devel`. --- Makefile.devel | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/Makefile.devel b/Makefile.devel index 97831e3a..ec7d5796 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -30,43 +30,17 @@ lib/generated/aliases.h : lib/generated/aliases.gperf $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ test : all - $(RM) -r -f build - $(MKDIR) -p build - - # Test 1.1: Release build without less build. - cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install-release-full - cd build && $(CMAKE) --build . --config=Release --verbose - cd build && $(CTEST) -C Release --verbose - $(CMAKE) --install build --verbose - - # Test 1.2: Release build with less build. - cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=test_install-release-less - cd build && $(CMAKE) --build . --config=Release --verbose - cd build && $(CTEST) -C Release --verbose - $(CMAKE) --install build --verbose - - # Test 2.1: Debug build without less build. - cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=test_install-debug-full - cd build && $(CMAKE) --build . --config=Debug --verbose - cd build && $(CTEST) -C Debug --verbose - $(CMAKE) --install build --verbose - - # Test 2.2: Debug build with less build. - cd build && $(CMAKE) .. -DBUILD_TEST=ON -DLESS_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=test_install-debug-less - cd build && $(CMAKE) --build . --config=Debug --verbose - cd build && $(CTEST) -C Debug --verbose - $(CMAKE) --install build --verbose - - ./repoutil.py distpkg --type dpkg - ./repoutil.py dist - { diff cppp-reiconv-v* . --recursive || echo ; } + $(RM) -r -f build tests/data/GB18030-2005.TXT tests/data/GB18030-2022.TXT tests/data/UTF-8.TXT + $(CMAKE) -B build -S . -DCMAKE_BUILD_TYPE=Debug + $(CMAKE) --build build --config Debug --target all -j $(shell nproc) + $(CTEST) --test-dir build --output-on-failure # Alias to test check : test clean : $(RM) -r -f build - $(RM) -r -f cppp-reiconv-v* + $(RM) -r -f cppp-reiconv-* $(RM) -r -f .cache $(RM) -f lib/generated/aliases.gperf $(RM) -f lib/generated/genaliases From 1df0d38d32581fbdbd30362ac14ab82d396a429a Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 28 Jul 2024 17:35:59 +0800 Subject: [PATCH 33/77] Add CPack configuration file. --- CMakeLists.txt | 8 +++++++- cpack.cmake | 36 ++++++++++++++++++++++++++++++++++++ repo.json | 3 ++- 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 cpack.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7dbbc217..3655d394 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,11 @@ # If not, see . cmake_minimum_required(VERSION 3.12) -project(cppp-reiconv VERSION 3.0.0) +project(cppp-reiconv + VERSION 3.0.0 + DESCRIPTION "A character set conversion library based on GNU LIBICONV." + HOMEPAGE_URL "https://github.com/cppp-project/cppp-reiconv" + LANGUAGES CXX) option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." ON) @@ -102,3 +106,5 @@ install(FILES "${output_includedir}/cppp/reiconv.hpp.inst" DESTINATION "${install_includedir}" RENAME "cppp/reiconv.hpp" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) + +include("${CMAKE_CURRENT_SOURCE_DIR}/cpack.cmake") diff --git a/cpack.cmake b/cpack.cmake new file mode 100644 index 00000000..a47bb470 --- /dev/null +++ b/cpack.cmake @@ -0,0 +1,36 @@ +# Copyright (C) 2023 The C++ Plus Project. +# This file is part of the cppp-reiconv library. +# +# The cppp-reiconv library is free software; you can redistribute it +# and/or modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either version 3 +# of the License, or (at your option) any later version. +# +# The cppp-reiconv library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the cppp-reiconv library; see the file LICENSE. +# If not, see . + +include(InstallRequiredSystemLibraries) + +# Set the package generator. +set(CPACK_GENERATOR "DEB") + +# Set package information. +set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) +set(CPACK_PACKAGE_VERSION ${CMAKE_PROJECT_VERSION}) +set(CPACK_PACKAGE_DESCRIPTION ${CMAKE_PROJECT_DESCRIPTION}) +set(CPACK_PACKAGE_CONTACT "ChenPi11 ") + +# Configure package-specific settings. +set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT}) +set(CPACK_DEBIAN_PACKAGE_SECTION "devel") +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${PROJECT_HOMEPAGE_URL}) +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.31), libgcc-s1 (>= 10.2.0), libstdc++6 (>= 10.2.0)") + +# Generate the package. +include(CPack) diff --git a/repo.json b/repo.json index 0997b689..ae884ba4 100644 --- a/repo.json +++ b/repo.json @@ -1,5 +1,6 @@ { "name": "cppp-reiconv", "version": "3.0.0", - "description": "C+++ character set conversion library." + "description": "C+++ character set conversion library.", + "license": "LGPL-3.0" } From 7aa15894d7e5ffd3d6961ab0b95e3b93f5855017 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 1 Aug 2024 22:27:27 +0800 Subject: [PATCH 34/77] Add `include/cppp/encodings/reiconv.hpp.in`. --- .gitignore | 112 +- .rubisco/build.yml | 107 + .rubisco/test.yml | 13 + CMakeLists.txt | 9 +- Makefile.devel | 9 +- include/cppp/encodings/reiconv.hpp.in | 35 + include/cppp/reiconv.hpp.in | 1 + lib/encodings.h.snippet | 408 ++- lib/generated/aliases.h | 4377 +++++++++++++------------ lib/generated/indexes.hpp.shippet | 207 ++ lib/iconv.cpp | 22 +- repo.json | 10 +- tools/genaliases.cpp | 15 +- tools/genindexes.cpp | 83 + 14 files changed, 3108 insertions(+), 2300 deletions(-) create mode 100644 .rubisco/build.yml create mode 100644 .rubisco/test.yml create mode 100644 include/cppp/encodings/reiconv.hpp.in create mode 100644 lib/generated/indexes.hpp.shippet create mode 100644 tools/genindexes.cpp diff --git a/.gitignore b/.gitignore index ab8e322d..b954c72e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,64 +1,70 @@ # CMake build files -build/ +build +install CMakeFiles -*.so -*.so.*.*.* -*.a -*.dylib -*.stackdump -*.lib -*.pdb -*.dll -*.exe cmake_install.cmake CMakeCache.txt CTestTestfile.cmake DartConfiguration.tcl Makefile -uninstall.cmake +cmake_uninstall.cmake reiconv.hpp CTestCostData.txt -*.inst Testing +install_manifest.txt +CPackConfig.cmake +CPackSourceConfig.cmake +_CPack_Packages +pdb +tests/check-ascii-converters +tests/check-stateful +tests/check-stateless +tests/data-generator +tests/sort +windows/cppp-reiconv.rc +*.inst *.log *.dSYM +*.so +*.so.*.*.* +*.a +*.dylib +*.stackdump +*.lib +*.pdb +*.dll +*.exe +*.sln +*.vcxproj +*.vcxproj.filters +*.vcxproj.user +*.vcxproj.user.* +build.ninja +.ninja_* +Release/ +Debug/ +RelWithDebInfo/ +MinSizeRel/ +x64/ +x86/ +ARM/ +ARM64/ +*.suo +*.user +*.user.* +*.dir +__pycache__ + +# Dist files +dist/ +cppp-reiconv-* +*.tar.xz +*.deb # Makefile.devel temp files lib/generated/genaliases -lib/generated/genaliases_sysaix -lib/generated/genaliases_syshpux -lib/generated/genaliases_sysosf1 -lib/generated/genaliases_syssolaris -lib/generated/genaliases2_aix -lib/generated/genaliases2_aix_sysaix -lib/generated/genaliases2_dos -lib/generated/genaliases2_extra -lib/generated/genaliases2_osf1 -lib/generated/genaliases2_osf1_sysosf1 -lib/generated/genaliases2_zos -lib/generated/genflags -/*/**/*.gperf - - -# Test suite runable -tests/cmp -tests/cmp.exe -tests/gengb18030z -tests/gengb18030z.exe -tests/genutf8 -tests/genutf8.exe -tests/reiconv-test -tests/reiconv-test.exe -tests/table-from -tests/table-from.exe -tests/table-to -tests/table-to.exe -tests/test-shiftseq -tests/test-shiftseq.exe -tests/uniq-u -tests/uniq-u.exe -tests/tmp-*.TXT -a.out +lib/generated/genindexes +*.gperf # Patterns for all subdirectories: all kinds of automatic backup files. *.orig @@ -68,21 +74,15 @@ a.out *.swp .#* \#*# -.vscode -.cache +.vscode/ +.cache/ -# Autopull modules +# Submodules. build-aux/ # Temp tests files. tests/data/UTF-8.TXT tests/data/GB18030-2005.TXT tests/data/GB18030-2022.TXT +tests/tmp-*.TXT *.tmp - -# Dist directory and temps -cppp-reiconv-v* -__pycache__ -dist -distpkg - diff --git a/.rubisco/build.yml b/.rubisco/build.yml new file mode 100644 index 00000000..c1ff2110 --- /dev/null +++ b/.rubisco/build.yml @@ -0,0 +1,107 @@ +name: 🛠️ Build ${{ project.name }} + +vars: + - ignores: + [ + ".git", + "build", + "install", + "dist", + "CMakeFiles", + "cmake_install.cmake", + "CMakeCache.txt", + "CTestTestfile.cmake", + "DartConfiguration.tcl", + "Makefile", + "cmake_uninstall.cmake", + "reiconv.hpp", + "CTestCostData.txt", + "Testing", + "install_manifest.txt", + "CPackConfig.cmake", + "CPackSourceConfig.cmake", + "_CPack_Packages", + "tests/check-ascii-converters", + "tests/check-stateful", + "tests/check-stateless", + "tests/data-generator", + "tests/sort", + "windows/cppp-reiconv.rc", + "pdb", + "*.inst", + "*.log", + "*.dSYM", + "*.so", + "*.so.*.*.*", + "*.a", + "*.dylib", + "*.stackdump", + "*.lib", + "*.pdb", + "*.dll", + "*.exe", + "*.sln", + "*.vcxproj", + "*.vcxproj.filters", + "*.vcxproj.user", + "*.vcxproj.user.*", + "build.ninja", + ".ninja_*", + "Release", + "Debug", + "RelWithDebInfo", + "MinSizeRel", + "x64", + "x86", + "ARM", + "ARM64", + "*.suo", + "*.user", + "*.user.*", + "*.dir", + "__pycache__", + "dist", + "cppp-reiconv-*", + "*.tar.xz", + "*.deb", + "lib/generated/genaliases", + "*.gperf", + "*.orig", + "*.rej", + "*~", + "*.kate-swp", + "*.swp", + ".vscode", + ".cache", + "build-aux/", + "tests/data/UTF-8.TXT", + "tests/data/GB18030-2005.TXT", + "tests/data/GB18030-2022.TXT", + "tests/tmp-*.TXT", + "*.tmp", + ] + +steps: + - name: 📦 Make source distribution directory + mkdir: ${{ project.name }}-${{ project.version }} + - mkdir: dist + - mkdir: install + + - name: 📦 Copy files to source distribution directory + copy: ${{ cwd }} + to: ${{ project.name }}-${{ project.version }} + excludes: ${{ ignores }} + + - name: 📦 Packing the source distribution + compress: ${{ project.name }}-${{ project.version }} + to: dist/${{ project.name }}-${{ project.version }} + format: [zip, tar.xz] + + - name: 🛠️ Build binary distribution + run: | + cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install + cmake --build build --config Release -v -j ${{ nproc }} + + - name: 📦 Install to temp install path + run: | + cmake --install build --config Release --prefix "${{ cwd }}/install" diff --git a/.rubisco/test.yml b/.rubisco/test.yml new file mode 100644 index 00000000..2340f847 --- /dev/null +++ b/.rubisco/test.yml @@ -0,0 +1,13 @@ +name: 🧪 Run tests for ${{ project.name }} + +steps: + - name: 🛠️ Build + run: | + cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install + cmake --build build --config Release -v -j ${{ nproc }} + + - name: 🧪 Run tests + run: | + cd build + ctest --output-on-failure -C Release + cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index 3655d394..bfc9c6da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,7 +83,9 @@ endif() configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") - +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/lib/generated/indexes.hpp.shippet" _INDEXES_CODE) +string(STRIP "${_INDEXES_CODE}" INDEXES_CODE) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/encodings/reiconv.hpp.in" "${output_includedir}/cppp/encodings/reiconv.hpp") # Add includes. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") @@ -107,4 +109,9 @@ install(FILES "${output_includedir}/cppp/reiconv.hpp.inst" RENAME "cppp/reiconv.hpp" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) +install(FILES "${output_includedir}/cppp/encodings/reiconv.hpp" + DESTINATION "${install_includedir}" + RENAME "cppp/reiconv.hpp" + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) + include("${CMAKE_CURRENT_SOURCE_DIR}/cpack.cmake") diff --git a/Makefile.devel b/Makefile.devel index ec7d5796..81775331 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -15,7 +15,8 @@ CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ - lib/generated/aliases.h + lib/generated/aliases.h \ + lib/generated/indexes.hpp.shippet lib/generated : $(MKDIR) -p lib/generated @@ -29,6 +30,12 @@ lib/generated/aliases.gperf : lib/generated/genaliases lib/generated/aliases.h : lib/generated/aliases.gperf $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ +lib/generated/genindexes : tools/genindexes.cpp + $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ + +lib/generated/indexes.hpp.shippet : lib/generated/genindexes + ./lib/generated/genindexes > $@ + test : all $(RM) -r -f build tests/data/GB18030-2005.TXT tests/data/GB18030-2022.TXT tests/data/UTF-8.TXT $(CMAKE) -B build -S . -DCMAKE_BUILD_TYPE=Debug diff --git a/include/cppp/encodings/reiconv.hpp.in b/include/cppp/encodings/reiconv.hpp.in new file mode 100644 index 00000000..cdf2c830 --- /dev/null +++ b/include/cppp/encodings/reiconv.hpp.in @@ -0,0 +1,35 @@ +/** + * @file cppp/reiconv.hpp + * @author ChenPi11 + * @brief C+++ cppp-reiconv package. + * @version 3.0.0 + * @date 2024-7-27 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + */ +/* Copyright (C) 1999-2023 Free Software Foundation, Inc. + This file is part of the cppp-reiconv library. + + The cppp-reiconv library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either version 3 + of the License, or (at your option) any later version. + + The cppp-reiconv library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the cppp-reiconv library; see the file LICENSE. + If not, see . */ + +/* When installed, this file is called "cppp/reiconv.hpp". */ + +#pragma once + +#if _MSC_VER >= 1600 +/* Use UTF-8 to decode this file. */ +#pragma execution_character_set("utf-8") +#endif + +@INDEXES_CODE@ diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 3adf77d8..353f379c 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -28,6 +28,7 @@ #pragma once #include +#include #ifndef _CPPP_API #define _CPPP_API @CPPP_API@ diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index 4e711cbe..963d9691 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -21,6 +21,7 @@ /* DEFENCODING(( name, alias1, ..., ), xxx, + xxx_index, { xxx_mbtowc, xxx_flushwc }, { xxx_wctomb, xxx_reset }) defines an encoding with the given name and aliases. (There is no @@ -29,7 +30,9 @@ All names and aliases must be in ASCII. Case is not significant, but for the "cs*" aliases mixed case is preferred, otherwise UPPERCASE is preferred. For all names and aliases, note where it comes from. - xxx is the name as used in the C code (lowercase). + xxx is the name as used in the C code (lowercase). xxx_index provides + a unique index for the encoding. It will be used in a enum for fast + access to the encoding. */ /* The list of all system independent user-visible encodings. */ @@ -49,15 +52,17 @@ DEFENCODING(("USASCII", /* IANA */ "646", /* Solaris */ ), ascii, + ASCII, {ascii_mbtowc, nullptr}, {ascii_wctomb, nullptr}) DEFCODEPAGE(367, ascii) -/* General multi-byte encodings */ +/* General multi-byte encodings */ DEFENCODING(("UTF8", /* IANA, RFC 2279 */ ), utf8, + UTF8, {utf8_mbtowc, nullptr}, {utf8_wctomb, nullptr}) DEFCODEPAGE(65001, utf8) @@ -67,72 +72,83 @@ DEFENCODING(("UCS2", /* glibc */ "csUnicode", /* IANA */ ), ucs2, + UCS2, {ucs2_mbtowc, nullptr}, {ucs2_wctomb, nullptr}) + DEFENCODING(("UCS2BE", /* glibc */ "UNICODEBIG", /* glibc */ "UNICODE11", /* IANA */ "csUnicode11", /* IANA */ - /*"CP1201", Windows */ ), ucs2be, + UCS2BE, {ucs2be_mbtowc, nullptr}, {ucs2be_wctomb, nullptr}) +DEFCODEPAGE(1201, ucs2be) + DEFENCODING(("UCS2LE", /* glibc */ "UNICODELITTLE", /* glibc */ - /*"CP1200", Windows */ ), ucs2le, + UCS2LE, {ucs2le_mbtowc, nullptr}, {ucs2le_wctomb, nullptr}) +DEFCODEPAGE(1200, ucs2le) + DEFENCODING(("UCS4", /* glibc */ "ISO10646UCS4", /* IANA */ "csUCS4", /* IANA */ ), ucs4, + UCS4, {ucs4_mbtowc, nullptr}, {ucs4_wctomb, nullptr}) + DEFENCODING(("UCS4BE", /* glibc */ - /*"CP12001", Windows */ ), ucs4be, + UCS4BE, {ucs4be_mbtowc, nullptr}, {ucs4be_wctomb, nullptr}) +DEFCODEPAGE(12001, ucs4be) + DEFENCODING(("UCS4LE", /* glibc */ - /*"CP12000", Windows */ ), ucs4le, + UCS4LE, {ucs4le_mbtowc, nullptr}, {ucs4le_wctomb, nullptr}) +DEFCODEPAGE(12000, ucs4le) + DEFENCODING(("UTF16", /* IANA, RFC 2781 */ ), utf16, + UTF16, {utf16_mbtowc, nullptr}, {utf16_wctomb, nullptr}) -/* MS-Windows Use little endian, so CP1200 means UTF-16LE */ - DEFENCODING(("UTF16BE", /* IANA, RFC 2781 */ ), utf16be, + UTF16BE, {utf16be_mbtowc, nullptr}, {utf16be_wctomb, nullptr}) -DEFCODEPAGE(1201, utf16be) - DEFENCODING(("UTF16LE", /* IANA, RFC 2781 */ ), utf16le, + UTF16LE, {utf16le_mbtowc, nullptr}, {utf16le_wctomb, nullptr}) -DEFCODEPAGE(1200, utf16le) - DEFENCODING(("UTF32", /* IANA, Unicode 3.1 */ ), utf32, + UTF32, {utf32_mbtowc, nullptr}, {utf32_wctomb, nullptr}) DEFENCODING(("UTF32BE", /* IANA, Unicode 3.1 */ ), utf32be, + UTF32BE, {utf32be_mbtowc, nullptr}, {utf32be_wctomb, nullptr}) DEFCODEPAGE(12001, utf32be) @@ -140,6 +156,7 @@ DEFCODEPAGE(12001, utf32be) DEFENCODING(("UTF32LE", /* IANA, Unicode 3.1 */ ), utf32le, + UTF32LE, {utf32le_mbtowc, nullptr}, {utf32le_wctomb, nullptr}) DEFCODEPAGE(12000, utf32le) @@ -147,43 +164,52 @@ DEFCODEPAGE(12000, utf32le) DEFENCODING(("UTF7", /* IANA, RFC 2152 */ "UNICODE11UTF7", /* IANA, RFC 1642 */ "csUnicode11UTF7", /* IANA */ - /*"CP65000", Windows */ ), utf7, + UTF7, {utf7_mbtowc, nullptr}, {utf7_wctomb, utf7_reset}) DEFCODEPAGE(65000, utf7) +// UCS-2/4-INTERNAL/SWAPPED are not standard encodings, but are used by +// cppp-reiconv(and libiconv)'s testsuite. + DEFENCODING(("UCS2INTERNAL", /* libiconv */ ), ucs2internal, + UCS2_INTERNAL, {ucs2internal_mbtowc, nullptr}, {ucs2internal_wctomb, nullptr}) DEFENCODING(("UCS2SWAPPED", /* libiconv */ ), ucs2swapped, + UCS2_SWAPPED, {ucs2swapped_mbtowc, nullptr}, {ucs2swapped_wctomb, nullptr}) DEFENCODING(("UCS4INTERNAL", /* libiconv */ ), ucs4internal, + UCS4_INTERNAL, {ucs4internal_mbtowc, nullptr}, {ucs4internal_wctomb, nullptr}) DEFENCODING(("UCS4SWAPPED", /* libiconv */ ), ucs4swapped, + UCS4_SWAPPED, {ucs4swapped_mbtowc, nullptr}, {ucs4swapped_wctomb, nullptr}) DEFENCODING(("C99", ), c99, + C99, {c99_mbtowc, nullptr}, {c99_wctomb, nullptr}) DEFENCODING(("JAVA", ), java, + JAVA, {java_mbtowc, nullptr}, {java_wctomb, nullptr}) -/* Standard 8-bit encodings */ +/* Standard 8-bit encodings */ DEFENCODING(("ISO88591", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ "ISO88591:1987", /* IANA */ "ISOIR100", /* IANA */ @@ -193,6 +219,7 @@ DEFENCODING(("ISO88591", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1 "csISOLatin1", /* IANA */ ), iso8859_1, + ISO8859_1, {iso8859_1_mbtowc, nullptr}, {iso8859_1_wctomb, nullptr}) DEFCODEPAGE(819, iso8859_1) @@ -206,6 +233,7 @@ DEFENCODING(("ISO88592", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/ "csISOLatin2", /* IANA */ ), iso8859_2, + ISO8859_2, {iso8859_2_mbtowc, nullptr}, {iso8859_2_wctomb, nullptr}) DEFCODEPAGE(28592, iso8859_2) @@ -218,6 +246,7 @@ DEFENCODING(("ISO88593", /* IANA, X11R6.4, glibc, FreeBSD, Solaris */ "csISOLatin3", /* IANA */ ), iso8859_3, + ISO8859_3, {iso8859_3_mbtowc, nullptr}, {iso8859_3_wctomb, nullptr}) DEFCODEPAGE(28593, iso8859_3) @@ -230,6 +259,7 @@ DEFENCODING(("ISO88594", /* IANA, X11R6.4, glibc, FreeBSD, OSF/1, Solaris * "csISOLatin4", /* IANA */ ), iso8859_4, + ISO8859_4, {iso8859_4_mbtowc, nullptr}, {iso8859_4_wctomb, nullptr}) DEFCODEPAGE(28594, iso8859_4) @@ -241,6 +271,7 @@ DEFENCODING(("ISO88595", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, "csISOLatinCyrillic", /* IANA */ ), iso8859_5, + ISO8859_5, {iso8859_5_mbtowc, nullptr}, {iso8859_5_wctomb, nullptr}) DEFCODEPAGE(28595, iso8859_5) @@ -254,6 +285,7 @@ DEFENCODING(("ISO88596", /* IANA, X11R6.4, glibc, FreeBSD, AIX, Solaris "csISOLatinArabic", /* IANA */ ), iso8859_6, + ISO8859_6, {iso8859_6_mbtowc, nullptr}, {iso8859_6_wctomb, nullptr}) DEFCODEPAGE(28596, iso8859_6) @@ -269,6 +301,7 @@ DEFENCODING(("ISO88597", /* IANA, RFC 1947, X11R6.4, glibc, FreeBSD, AIX, I "csISOLatinGreek", /* IANA */ ), iso8859_7, + ISO8859_7, {iso8859_7_mbtowc, nullptr}, {iso8859_7_wctomb, nullptr}) DEFCODEPAGE(28597, iso8859_7) @@ -280,6 +313,7 @@ DEFENCODING(("ISO88598", /* IANA, X11R6.4, glibc, FreeBSD, AIX, OSF/1, S "csISOLatinHebrew", /* IANA */ ), iso8859_8, + ISO8859_8, {iso8859_8_mbtowc, nullptr}, {iso8859_8_wctomb, nullptr}) DEFCODEPAGE(28598, iso8859_8) @@ -293,6 +327,7 @@ DEFENCODING(("ISO88599", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1 "csISOLatin5", /* IANA */ ), iso8859_9, + ISO8859_9, {iso8859_9_mbtowc, nullptr}, {iso8859_9_wctomb, nullptr}) DEFCODEPAGE(28599, iso8859_9) @@ -305,11 +340,13 @@ DEFENCODING(("ISO885910", /* IANA, X11R6.4, glibc, FreeBSD */ "csISOLatin6", /* IANA */ ), iso8859_10, + ISO8859_10, {iso8859_10_mbtowc, nullptr}, {iso8859_10_wctomb, nullptr}) DEFENCODING(("ISO885911", /* glibc, X11R6.7, glibc */ ), iso8859_11, + ISO8859_11, {iso8859_11_mbtowc, nullptr}, {iso8859_11_wctomb, nullptr}) DEFENCODING(("ISO885913", /* IANA, glibc, FreeBSD */ @@ -319,6 +356,7 @@ DEFENCODING(("ISO885913", /* IANA, glibc, FreeBSD */ "IBM921" /* AIX */ ), iso8859_13, + ISO8859_13, {iso8859_13_mbtowc, nullptr}, {iso8859_13_wctomb, nullptr}) DEFCODEPAGE(28603, iso8859_13) @@ -331,6 +369,7 @@ DEFENCODING(("ISO885914", /* IANA, glibc, FreeBSD */ "ISOCELTIC", /* IANA */ ), iso8859_14, + ISO8859_14, {iso8859_14_mbtowc, nullptr}, {iso8859_14_wctomb, nullptr}) DEFENCODING(("ISO885915", /* IANA, glibc, FreeBSD, AIX, OSF/1, Solaris */ @@ -339,6 +378,7 @@ DEFENCODING(("ISO885915", /* IANA, glibc, FreeBSD, AIX, OSF/1, Solaris */ "LATIN9", /* IANA */ ), iso8859_15, + ISO8859_15, {iso8859_15_mbtowc, nullptr}, {iso8859_15_wctomb, nullptr}) DEFCODEPAGE(28605, iso8859_15) @@ -350,12 +390,14 @@ DEFENCODING(("ISO885916", /* IANA, glibc, FreeBSD */ "L10", /* IANA */ ), iso8859_16, + ISO8859_16, {iso8859_16_mbtowc, nullptr}, {iso8859_16_wctomb, nullptr}) DEFENCODING(("KOI8R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ "csKOI8R", /* IANA */ ), koi8_r, + KOI8_R, {koi8_r_mbtowc, nullptr}, {koi8_r_wctomb, nullptr}) DEFCODEPAGE(20866, koi8_r) @@ -363,90 +405,111 @@ DEFCODEPAGE(20866, koi8_r) DEFENCODING(("KOI8U", /* IANA, RFC 2319 */ ), koi8_u, + KOI8_U, {koi8_u_mbtowc, nullptr}, {koi8_u_wctomb, nullptr}) DEFENCODING(("KOI8RU", ), koi8_ru, + KOI8_RU, {koi8_ru_mbtowc, nullptr}, {koi8_ru_wctomb, nullptr}) DEFCODEPAGE(21866, koi8_ru) -/* Windows 8-bit encodings */ +/* Windows 8-bit encodings */ DEFENCODING(("CP1250", /* JDK 1.1 */ + "csWindows1250", /* IANA */ "WINDOWS1250", /* IANA */ "MSEE", ), cp1250, + MSEE, {cp1250_mbtowc, nullptr}, {cp1250_wctomb, nullptr}) DEFCODEPAGE(1250, cp1250) DEFENCODING(("WINDOWS1251", /* IANA */ + "csWindows1251", /* IANA */ "MSCYRL", "ANSI1251", /* Solaris */ ), cp1251, + MSCYRL, {cp1251_mbtowc, nullptr}, {cp1251_wctomb, nullptr}) DEFCODEPAGE(1251, cp1251) DEFENCODING(("WINDOWS1252", /* IANA */ + "csWindows1252", /* IANA */ "IBM1252", /* AIX */ "MSANSI", ), cp1252, + MSANSI, {cp1252_mbtowc, nullptr}, {cp1252_wctomb, nullptr}) DEFCODEPAGE(1252, cp1252) DEFENCODING(("WINDOWS1253", /* IANA */ + "csWindows1253", /* IANA */ "MSGREEK", ), cp1253, + MSGREEK, {cp1253_mbtowc, nullptr}, {cp1253_wctomb, nullptr}) DEFCODEPAGE(1253, cp1253) DEFENCODING(("WINDOWS1254", /* IANA */ + "csWindows1254", /* IANA */ "MSTURK", ), cp1254, + MSTURK, {cp1254_mbtowc, nullptr}, {cp1254_wctomb, nullptr}) DEFCODEPAGE(1254, cp1254) DEFENCODING(("WINDOWS1255", /* IANA */ + "csWindows1255", /* IANA */ "MSHEBR", ), cp1255, + MSHEBR, {cp1255_mbtowc, cp1255_flushwc}, {cp1255_wctomb, nullptr}) DEFCODEPAGE(1255, cp1255) DEFENCODING(("WINDOWS1256", /* IANA */ + "csWindows1256", /* IANA */ "MSARAB", ), cp1256, + MSARAB, {cp1256_mbtowc, nullptr}, {cp1256_wctomb, nullptr}) DEFCODEPAGE(1256, cp1256) DEFENCODING(("WINDOWS1257", /* IANA */ + "csWindows1257", /* IANA */ "WINBALTRIM", ), cp1257, + WINBALTRIM, {cp1257_mbtowc, nullptr}, {cp1257_wctomb, nullptr}) DEFCODEPAGE(1257, cp1257) DEFENCODING(("WINDOWS1258", /* IANA */ + "csWindows1258", /* IANA */ ), cp1258, + WINDOWS1258, {cp1258_mbtowc, cp1258_flushwc}, {cp1258_wctomb, nullptr}) DEFCODEPAGE(1258, cp1258) -/* DOS 8-bit encodings */ +/* DOS 8-bit encodings */ DEFENCODING(("IBM850", /* IANA */ "850", /* IANA */ "csPC850Multilingual", /* IANA */ ), cp850, + IBM850, {cp850_mbtowc, nullptr}, {cp850_wctomb, nullptr}) DEFCODEPAGE(850, cp850) @@ -454,8 +517,10 @@ DEFCODEPAGE(850, cp850) DEFENCODING(("IBM862", /* IANA */ "862", /* IANA */ "csPC862LatinHebrew", /* IANA */ + "DOS862", /* .NET */ ), cp862, + IBM862, {cp862_mbtowc, nullptr}, {cp862_wctomb, nullptr}) DEFCODEPAGE(862, cp862) @@ -465,6 +530,7 @@ DEFENCODING(("IBM866", /* IANA */ "csIBM866", /* IANA */ ), cp866, + IBM866, {cp866_mbtowc, nullptr}, {cp866_wctomb, nullptr}) DEFCODEPAGE(866, cp866) @@ -472,13 +538,14 @@ DEFCODEPAGE(866, cp866) DEFENCODING(("IBM1131", /* AIX */ ), cp1131, + IBM1131, {cp1131_mbtowc, nullptr}, {cp1131_wctomb, nullptr}) DEFCODEPAGE(1131, cp1131) /* Macintosh 8-bit encodings */ -/* This is the best table for MACINTOSH. The +/* This is the best table for MACINTOSH. The :) ones in glibc and FreeBSD-iconv are bad quality. */ DEFENCODING(("MacRoman", /* JDK 1.1 */ "MACINTOSH", /* IANA */ @@ -486,84 +553,106 @@ DEFENCODING(("MacRoman", /* JDK 1.1 */ "csMacintosh", /* IANA */ ), mac_roman, + MACINTOSH, {mac_roman_mbtowc, nullptr}, {mac_roman_wctomb, nullptr}) DEFCODEPAGE(10000, mac_roman) DEFENCODING(("MacCentralEurope", /* JDK 1.1 */ - "xmacce", /* Windows */ + "XMacCE", /* Windows */ ), mac_centraleurope, + MAC_CENTRALEUROPE, {mac_centraleurope_mbtowc, nullptr}, {mac_centraleurope_wctomb, nullptr}) DEFCODEPAGE(10029, mac_centraleurope) DEFENCODING(("MacIceland", /* JDK 1.1 */ + "XMacIcelandic", /* Windows */ ), mac_iceland, + MAC_ICELAND, {mac_iceland_mbtowc, nullptr}, {mac_iceland_wctomb, nullptr}) DEFCODEPAGE(10079, mac_iceland) DEFENCODING(("MacCroatian", /* JDK 1.1 */ + "XMacCroatian", /* Windows */ ), mac_croatian, + MAC_CROATIAN, {mac_croatian_mbtowc, nullptr}, {mac_croatian_wctomb, nullptr}) DEFCODEPAGE(10082, mac_croatian) DEFENCODING(("MacRomania", /* JDK 1.1 */ + "XMacRomanian", /* Windows */ ), mac_romania, + MAC_ROMANIA, {mac_romania_mbtowc, nullptr}, {mac_romania_wctomb, nullptr}) DEFCODEPAGE(10010, mac_romania) DEFENCODING(("MacCyrillic", /* JDK 1.1 */ + "XMacCyrillic", /* Windows */ ), mac_cyrillic, + MAC_CYRILLIC, {mac_cyrillic_mbtowc, nullptr}, {mac_cyrillic_wctomb, nullptr}) DEFCODEPAGE(10007, mac_cyrillic) DEFENCODING(("MacUkraine", /* JDK 1.1 */ + "XMacUkrainian", /* Windows */ ), mac_ukraine, + MAC_UKRAINE, {mac_ukraine_mbtowc, nullptr}, {mac_ukraine_wctomb, nullptr}) DEFCODEPAGE(10017, mac_ukraine) DEFENCODING(("MacGreek", /* JDK 1.1 */ + "XMacGreek", /* Windows */ ), mac_greek, + MAC_GREEK, {mac_greek_mbtowc, nullptr}, {mac_greek_wctomb, nullptr}) DEFCODEPAGE(10006, mac_greek) DEFENCODING(("MacTurkish", /* JDK 1.1 */ + "xmacturkish", /* Windows */ ), mac_turkish, + MAC_TURKISH, {mac_turkish_mbtowc, nullptr}, {mac_turkish_wctomb, nullptr}) DEFCODEPAGE(10081, mac_turkish) DEFENCODING(("MacHebrew", /* JDK 1.1 */ + "XMacHebrew", /* Windows */ ), mac_hebrew, + MAC_HEBREW, {mac_hebrew_mbtowc, nullptr}, {mac_hebrew_wctomb, nullptr}) DEFCODEPAGE(10005, mac_hebrew) DEFENCODING(("MacArabic", /* JDK 1.1 */ + "XMacArabic", /* Windows */ ), mac_arabic, + MAC_ARABIC, {mac_arabic_mbtowc, nullptr}, {mac_arabic_wctomb, nullptr}) DEFCODEPAGE(10004, mac_arabic) DEFENCODING(("MacThai", /* JDK 1.1 */ + "XMacThai", /* Windows */ ), mac_thai, + MAC_THAI, {mac_thai_mbtowc, nullptr}, {mac_thai_wctomb, nullptr}) DEFCODEPAGE(10021, mac_thai) @@ -576,28 +665,34 @@ DEFENCODING(("HPROMAN8", /* IANA, X11R6.4 */ "csHPRoman8", /* IANA */ ), hp_roman8, + HPROMAN8, {hp_roman8_mbtowc, nullptr}, {hp_roman8_wctomb, nullptr}) DEFENCODING(("NEXTSTEP", ), nextstep, + NEXTSTEP, {nextstep_mbtowc, nullptr}, {nextstep_wctomb, nullptr}) -/* Regional 8-bit encodings used for a single language */ +/* Regional 8-bit encodings used for a single language */ DEFENCODING(("ARMSCII8", ), armscii_8, + ARMSCII8, {armscii_8_mbtowc, nullptr}, {armscii_8_wctomb, nullptr}) DEFENCODING(("GEORGIANACADEMY", ), georgian_academy, + GEORGIANACADEMY, {georgian_academy_mbtowc, nullptr}, {georgian_academy_wctomb, nullptr}) DEFENCODING(("GEORGIANPS", ), georgian_ps, + GEORGIANPS, {georgian_ps_mbtowc, nullptr}, {georgian_ps_wctomb, nullptr}) DEFENCODING(("KOI8T", ), koi8_t, + KOI8T, {koi8_t_mbtowc, nullptr}, {koi8_t_wctomb, nullptr}) DEFENCODING(("PT154", /* IANA, glibc */ @@ -606,6 +701,7 @@ DEFENCODING(("PT154", /* IANA, glibc */ "csPTCP154", /* IANA */ ), pt154, + PT154, {pt154_mbtowc, nullptr}, {pt154_wctomb, nullptr}) DEFCODEPAGE(154, pt154) @@ -616,14 +712,17 @@ DEFENCODING(("RK1048", /* IANA, glibc */ "csKZ1048", /* IANA */ ), rk1048, + RK1048, {rk1048_mbtowc, nullptr}, {rk1048_wctomb, nullptr}) DEFENCODING(("MULELAO1", ), mulelao, + MULELAO1, {mulelao_mbtowc, nullptr}, {mulelao_wctomb, nullptr}) DEFENCODING(("IBMCP1133", ), cp1133, + IBMCP1133, {cp1133_mbtowc, nullptr}, {cp1133_wctomb, nullptr}) DEFCODEPAGE(1133, cp1133) @@ -638,10 +737,14 @@ DEFENCODING(("TIS620", /* IANA, glibc, HP-UX */ "TIS620.2533", /* Solaris */ ), tis620, + TIS620, {tis620_mbtowc, nullptr}, {tis620_wctomb, nullptr}) -DEFENCODING(("WINDOWS874", ), +DEFENCODING(("WINDOWS874", /* IANA */ + "csWindows874", /* IANA */ + ), cp874, + WINDOWS874, {cp874_mbtowc, nullptr}, {cp874_wctomb, nullptr}) DEFCODEPAGE(874, cp874) @@ -651,6 +754,7 @@ DEFENCODING(("VISCII", /* IANA, RFC 1456 */ "csVISCII", /* IANA */ ), viscii, + VISCII, {viscii_mbtowc, nullptr}, {viscii_wctomb, nullptr}) DEFENCODING(("TCVN", @@ -658,10 +762,10 @@ DEFENCODING(("TCVN", "TCVN57121", "TCVN57121:1993", ), tcvn, + TCVN, {tcvn_mbtowc, tcvn_flushwc}, {tcvn_wctomb, nullptr}) /* CJK character sets (not documented) */ - DEFENCODING(("JISC62201969RO", /* IANA */ "ISO646JP", /* IANA */ "ISOIR14", /* IANA */ @@ -669,6 +773,7 @@ DEFENCODING(("JISC62201969RO", /* IANA */ "csISO14JISC6220ro", /* IANA */ ), iso646_jp, + JP, {iso646_jp_mbtowc, nullptr}, {iso646_jp_wctomb, nullptr}) DEFENCODING(("JISX0201", /* IANA */ @@ -677,6 +782,7 @@ DEFENCODING(("JISX0201", /* IANA */ "csHalfWidthKatakana", /* IANA */ ), jisx0201, + JISX0201, {jisx0201_mbtowc, nullptr}, {jisx0201_wctomb, nullptr}) DEFENCODING(("JISX0208", @@ -689,6 +795,7 @@ DEFENCODING(("JISX0208", "csISO87JISX0208", /* IANA */ ), jisx0208, + JISX0208, {jisx0208_mbtowc, nullptr}, {jisx0208_wctomb, nullptr}) DEFENCODING(("JISX0212", @@ -699,6 +806,7 @@ DEFENCODING(("JISX0212", "csISO159JISX02121990", /* IANA */ ), jisx0212, + JISX0212, {jisx0212_mbtowc, nullptr}, {jisx0212_wctomb, nullptr}) DEFENCODING(("GB198880", /* IANA */ @@ -708,6 +816,7 @@ DEFENCODING(("GB198880", /* IANA */ "csISO57GB1988", /* IANA */ ), iso646_cn, + GB1988_80, {iso646_cn_mbtowc, nullptr}, {iso646_cn_wctomb, nullptr}) DEFENCODING(("GB231280", /* IANA */ @@ -715,12 +824,14 @@ DEFENCODING(("GB231280", /* IANA */ "csISO58GB231280", /* IANA */ ), gb2312, + GB2312_80, {gb2312_mbtowc, nullptr}, {gb2312_wctomb, nullptr}) DEFENCODING(("ISOIR165", "CNGBISOIR165", /* RFC 1922 */ ), isoir165, + CNGBISOIR165, {isoir165_mbtowc, nullptr}, {isoir165_wctomb, nullptr}) DEFENCODING(("KSC5601", /* IANA */ @@ -731,17 +842,19 @@ DEFENCODING(("KSC5601", /* IANA */ "KOREAN", /* IANA */ ), ksc5601, + KOREAN, {ksc5601_mbtowc, nullptr}, {ksc5601_wctomb, nullptr}) -/* CJK encodings */ +/* CJK encodings */ DEFENCODING(("EUCJP", /* IANA, glibc, HP-UX, IRIX, OSF/1, Solaris */ - "ExtendedUNIXCodePackedFormatforJapanese", /* IANA */ + "ExtendedUNIXCodePackedFormatforJapanese", /* IANA */ "csEUCPkdFmtJapanese", /* IANA */ "IBMEUCJP", /* AIX */ "SDECKANJI", /* OSF/1 */ ), euc_jp, + EUC_JP, {euc_jp_mbtowc, nullptr}, {euc_jp_wctomb, nullptr}) DEFCODEPAGE(51932, euc_jp) @@ -753,35 +866,40 @@ DEFENCODING(("SHIFTJIS", /* IANA, glibc */ "PCK", /* Solaris */ ), sjis, + SHIFT_JIS, {sjis_mbtowc, nullptr}, {sjis_wctomb, nullptr}) DEFENCODING(("IBM932", /* AIX */ ), cp932, + IBM932, {cp932_mbtowc, nullptr}, {cp932_wctomb, nullptr}) DEFCODEPAGE(932, cp932) -DEFENCODING(("ISO2022JP", /* IANA, RFC 1468 */ +DEFENCODING(("ISO2022JP", /* IANA, RFC 1468, JDK 1.1 */ "csISO2022JP", /* IANA */ - /*"ISO2022JP", JDK 1.1 */ ), iso2022_jp, + ISO2022_JP, {iso2022_jp_mbtowc, nullptr}, {iso2022_jp_wctomb, iso2022_jp_reset}) DEFENCODING(("ISO2022JP1", /* RFC 2237 */ ), iso2022_jp1, + ISO2022_JP1, {iso2022_jp1_mbtowc, nullptr}, {iso2022_jp1_wctomb, iso2022_jp1_reset}) DEFENCODING(("ISO2022JP2", /* IANA, RFC 1554 */ "csISO2022JP2", /* IANA */ ), iso2022_jp2, + ISO2022_JP2, {iso2022_jp2_mbtowc, nullptr}, {iso2022_jp2_wctomb, iso2022_jp2_reset}) DEFENCODING(("ISO2022JPMS", ), iso2022_jpms, + ISO2022_JPMS, {iso2022_jpms_mbtowc, nullptr}, {iso2022_jpms_wctomb, iso2022_jpms_reset}) DEFCODEPAGE(50221, iso2022_jpms) @@ -796,6 +914,7 @@ DEFENCODING(("EUCCN", /* glibc, IRIX */ "DECHANZI", /* OSF/1 */ ), euc_cn, + GB2312, {euc_cn_mbtowc, nullptr}, {euc_cn_wctomb, nullptr}) DEFCODEPAGE(51936, euc_cn) @@ -803,44 +922,51 @@ DEFCODEPAGE(51936, euc_cn) DEFENCODING(("GBK", /* IANA, JDK 1.1 */ ), ces_gbk, + GBK, {ces_gbk_mbtowc, nullptr}, {ces_gbk_wctomb, nullptr}) DEFENCODING(("MS936", /* IANA */ "WINDOWS936", /* IANA */ ), cp936, + CP936, // Chinese developer use CP936 more often than MS936 {cp936_mbtowc, nullptr}, {cp936_wctomb, nullptr}) DEFCODEPAGE(936, cp936) DEFENCODING(("GB18030:2005", ), gb18030_2005, + GB18030_2005, {gb18030_2005_mbtowc, nullptr}, {gb18030_2005_wctomb, nullptr}) DEFENCODING(("GB18030", /* IANA, glibc */ "GB18030:2022", ), gb18030_2022, + GB18030_2022, {gb18030_2022_mbtowc, nullptr}, {gb18030_2022_wctomb, nullptr}) +DEFINDEX(GB18030, GB18030_2022) + DEFCODEPAGE(54936, gb18030_2022) -DEFENCODING(("ISO2022CN", /* IANA, RFC 1922 */ - "csISO2022CN", - /*"ISO2022CN", JDK 1.1 */ +DEFENCODING(("ISO2022CN", /* IANA, RFC 1922, JDK 1.1 */ + "csISO2022CN", /* IANA */ ), iso2022_cn, + ISO2022_CN, {iso2022_cn_mbtowc, nullptr}, {iso2022_cn_wctomb, iso2022_cn_reset}) DEFENCODING(("ISO2022CNEXT", /* IANA, RFC 1922 */ ), iso2022_cn_ext, + ISO2022_CN_EXT, {iso2022_cn_ext_mbtowc, nullptr}, {iso2022_cn_ext_wctomb, iso2022_cn_ext_reset}) DEFENCODING(("HZ", /* RFC 1843 */ "HZGB2312", /* IANA, RFC 1842 */ - /*"CP52936", Windows */ ), hz, + HZ, {hz_mbtowc, nullptr}, {hz_wctomb, hz_reset}) DEFCODEPAGE(52936, hz) @@ -851,6 +977,7 @@ DEFENCODING(("EUCTW", /* glibc, HPUX, IRIX, OSF/1 */ "CNS11643", /* Solaris */ ), euc_tw, + EUC_TW, {euc_tw_mbtowc, nullptr}, {euc_tw_wctomb, nullptr}) DEFCODEPAGE(51950, euc_tw) @@ -861,32 +988,40 @@ DEFENCODING(("BIG5", /* IANA, JDK 1.1, glibc */ "csBig5", /* IANA */ ), ces_big5, + BIG5, {ces_big5_mbtowc, nullptr}, {ces_big5_wctomb, nullptr}) DEFENCODING(("WINDOWS950", /* JDK 1.1 */ ), cp950, + WINDOWS950, {cp950_mbtowc, nullptr}, {cp950_wctomb, nullptr}) DEFCODEPAGE(950, cp950) DEFENCODING(("BIG5HKSCS:1999", ), big5hkscs1999, + BIG5HKSCS_1999, {big5hkscs1999_mbtowc, big5hkscs1999_flushwc}, {big5hkscs1999_wctomb, big5hkscs1999_reset}) DEFENCODING(("BIG5HKSCS:2001", ), big5hkscs2001, + BIG5HKSCS_2001, {big5hkscs2001_mbtowc, big5hkscs2001_flushwc}, {big5hkscs2001_wctomb, big5hkscs2001_reset}) DEFENCODING(("BIG5HKSCS:2004", ), big5hkscs2004, + BIG5HKSCS_2004, {big5hkscs2004_mbtowc, big5hkscs2004_flushwc}, {big5hkscs2004_wctomb, big5hkscs2004_reset}) DEFENCODING(("BIG5HKSCS", /* IANA, glibc */ "BIG5HKSCS:2008", ), big5hkscs2008, + BIG5HKSCS_2008, {big5hkscs2008_mbtowc, big5hkscs2008_flushwc}, {big5hkscs2008_wctomb, big5hkscs2008_reset}) +DEFINDEX(BIG5HKSCS, BIG5HKSCS_2008) + DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ "csEUCKR", /* IANA */ "IBMEUCKR", /* AIX */ @@ -894,6 +1029,7 @@ DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ "5601", /* Solaris */ ), euc_kr, + EUC_KR, {euc_kr_mbtowc, nullptr}, {euc_kr_wctomb, nullptr}) DEFCODEPAGE(51949, euc_kr) @@ -901,6 +1037,7 @@ DEFCODEPAGE(51949, euc_kr) DEFENCODING(("UHC", /* glibc */ ), cp949, + UHC, {cp949_mbtowc, nullptr}, {cp949_wctomb, nullptr}) DEFCODEPAGE(949, cp949) @@ -909,34 +1046,36 @@ DEFENCODING(("JOHAB", /* glibc */ "KOKR.JOHAP92", /* Solaris */ ), johab, + JOHAB, {johab_mbtowc, nullptr}, {johab_wctomb, nullptr}) DEFCODEPAGE(1361, johab) -DEFENCODING(("ISO2022KR", /* IANA, RFC 1557 */ +DEFENCODING(("ISO2022KR", /* IANA, RFC 1557, JDK 1.1 */ "csISO2022KR", /* IANA */ - /*"ISO2022KR", JDK 1.1 */ - /*"CP50225", Windows */ ), iso2022_kr, + ISO2022_KR, {iso2022_kr_mbtowc, nullptr}, {iso2022_kr_wctomb, iso2022_kr_reset}) DEFCODEPAGE(50225, iso2022_kr) DEFENCODING(("DECKANJI", ), dec_kanji, + DEC_KANJI, {dec_kanji_mbtowc, nullptr}, {dec_kanji_wctomb, nullptr}) DEFENCODING(("DECHANYU", /* OSF/1 */ ), dec_hanyu, + DEC_HANYU, {dec_hanyu_mbtowc, nullptr}, {dec_hanyu_wctomb, nullptr}) /* Encodings used by system dependent locales on AIX. */ - DEFENCODING(("IBM856", /* AIX */ ), cp856, + IBM856, {cp856_mbtowc, nullptr}, {cp856_wctomb, nullptr}) DEFCODEPAGE(856, cp856) @@ -944,6 +1083,7 @@ DEFCODEPAGE(856, cp856) DEFENCODING(("IBM922", /* AIX */ ), cp922, + IBM922, {cp922_mbtowc, nullptr}, {cp922_wctomb, nullptr}) DEFCODEPAGE(922, cp922) @@ -951,6 +1091,7 @@ DEFCODEPAGE(922, cp922) DEFENCODING(("IBM943", /* AIX */ ), cp943, + IBM943, {cp943_mbtowc, nullptr}, {cp943_wctomb, nullptr}) DEFCODEPAGE(943, cp943) @@ -958,6 +1099,7 @@ DEFCODEPAGE(943, cp943) DEFENCODING(("IBM1046", /* AIX */ ), cp1046, + IBM1046, {cp1046_mbtowc, nullptr}, {cp1046_wctomb, nullptr}) DEFCODEPAGE(1046, cp1046) @@ -965,6 +1107,7 @@ DEFCODEPAGE(1046, cp1046) DEFENCODING(("IBM1124", /* AIX */ ), cp1124, + IBM1124, {cp1124_mbtowc, nullptr}, {cp1124_wctomb, nullptr}) DEFCODEPAGE(1124, cp1124) @@ -972,6 +1115,7 @@ DEFCODEPAGE(1124, cp1124) DEFENCODING(("IBM1129", /* AIX */ ), cp1129, + IBM1129, {cp1129_mbtowc, nullptr}, {cp1129_wctomb, nullptr}) DEFCODEPAGE(1129, cp1129) @@ -980,6 +1124,7 @@ DEFENCODING(("IBM1161", /* glibc */ "csIBM1161", /* glibc */ ), cp1161, + IBM1161, {cp1161_mbtowc, nullptr}, {cp1161_wctomb, nullptr}) DEFCODEPAGE(1161, cp1161) @@ -988,6 +1133,7 @@ DEFENCODING(("IBM1162", /* glibc */ "csIBM1162", /* glibc */ ), cp1162, + IBM1162, {cp1162_mbtowc, nullptr}, {cp1162_wctomb, nullptr}) DEFCODEPAGE(1162, cp1162) @@ -996,17 +1142,18 @@ DEFENCODING(("IBM1163", /* glibc */ "csIBM1163", /* glibc */ ), cp1163, + IBM1163, {cp1163_mbtowc, nullptr}, {cp1163_wctomb, nullptr}) DEFCODEPAGE(1163, cp1163) -/* Encodings used by system dependent locales on MSDOS. */ - +/* Encodings used by system dependent locales on MS-DOS. */ DEFENCODING(("IBM437", /* IANA */ "437", /* IANA */ "csPC8CodePage437", /* IANA */ ), cp437, + CP437, {cp437_mbtowc, nullptr}, {cp437_wctomb, nullptr}) DEFCODEPAGE(437, cp437) @@ -1014,6 +1161,7 @@ DEFCODEPAGE(437, cp437) DEFENCODING(("IBM737", /* Windows */ ), cp737, + CP737, {cp737_mbtowc, nullptr}, {cp737_wctomb, nullptr}) DEFCODEPAGE(737, cp737) @@ -1022,6 +1170,7 @@ DEFENCODING(("IBM775", /* IANA */ "csPC775Baltic", /* IANA */ ), cp775, + CP775, {cp775_mbtowc, nullptr}, {cp775_wctomb, nullptr}) DEFCODEPAGE(775, cp775) @@ -1031,6 +1180,7 @@ DEFENCODING(("IBM852", /* IANA */ "csPCp852", /* IANA */ ), cp852, + CP852, {cp852_mbtowc, nullptr}, {cp852_wctomb, nullptr}) DEFCODEPAGE(852, cp852) @@ -1041,6 +1191,7 @@ DEFENCODING(("IBM853", "csIBM853" /* I don't know */ ), cp853, + CP853, {cp853_mbtowc, nullptr}, {cp853_wctomb, nullptr}) DEFCODEPAGE(853, cp853) @@ -1050,6 +1201,7 @@ DEFENCODING(("IBM855", /* IANA */ "csIBM855", /* IANA */ ), cp855, + CP855, {cp855_mbtowc, nullptr}, {cp855_wctomb, nullptr}) DEFCODEPAGE(855, cp855) @@ -1059,6 +1211,7 @@ DEFENCODING(("IBM857", /* IANA */ "csIBM857", /* IANA */ ), cp857, + CP857, {cp857_mbtowc, nullptr}, {cp857_wctomb, nullptr}) DEFCODEPAGE(857, cp857) @@ -1068,6 +1221,7 @@ DEFENCODING(("IBM858", "IBM00858", /* Windows */ "csIBM858"), cp858, + CP858, {cp858_mbtowc, nullptr}, {cp858_wctomb, nullptr}) DEFCODEPAGE(858, cp858) @@ -1077,6 +1231,7 @@ DEFENCODING(("IBM860", /* IANA */ "csIBM860", /* IANA */ ), cp860, + CP860, {cp860_mbtowc, nullptr}, {cp860_wctomb, nullptr}) DEFCODEPAGE(860, cp860) @@ -1087,6 +1242,7 @@ DEFENCODING(("IBM861", /* IANA */ "csIBM861", /* IANA */ ), cp861, + CP861, {cp861_mbtowc, nullptr}, {cp861_wctomb, nullptr}) DEFCODEPAGE(861, cp861) @@ -1096,6 +1252,7 @@ DEFENCODING(("IBM863", /* IANA */ "csIBM863", /* IANA */ ), cp863, + CP863, {cp863_mbtowc, nullptr}, {cp863_wctomb, nullptr}) DEFCODEPAGE(863, cp863) @@ -1104,6 +1261,7 @@ DEFENCODING(("IBM864", /* IANA */ "csIBM864", /* IANA */ ), cp864, + CP864, {cp864_mbtowc, nullptr}, {cp864_wctomb, nullptr}) DEFCODEPAGE(864, cp864) @@ -1113,6 +1271,7 @@ DEFENCODING(("IBM865", /* IANA */ "csIBM865", /* IANA */ ), cp865, + CP865, {cp865_mbtowc, nullptr}, {cp865_wctomb, nullptr}) DEFCODEPAGE(865, cp865) @@ -1123,6 +1282,7 @@ DEFENCODING(("IBM869", /* IANA */ "csIBM869", /* IANA */ ), cp869, + CP869, {cp869_mbtowc, nullptr}, {cp869_wctomb, nullptr}) DEFCODEPAGE(869, cp869) @@ -1133,12 +1293,12 @@ DEFENCODING(("IBM1125", "csIBM1125" /* I don't know */ ), cp1125, + CP1125, {cp1125_mbtowc, nullptr}, {cp1125_wctomb, nullptr}) DEFCODEPAGE(1125, cp1125) /* Encodings used by system dependent locales on z/OS. */ - DEFENCODING(("IBM037", /* IANA */ "EBCDICCPUS", /* IANA */ "EBCDICCPCA", /* IANA */ @@ -1147,6 +1307,7 @@ DEFENCODING(("IBM037", /* IANA */ "csIBM037", /* IANA */ ), ebcdic037, + EBCDIC_037, {ebcdic037_mbtowc, nullptr}, {ebcdic037_wctomb, nullptr}) DEFCODEPAGE(37, ebcdic037) @@ -1155,6 +1316,7 @@ DEFENCODING(("IBM273", /* IANA */ "csIBM273", /* IANA */ ), ebcdic273, + EBCDIC_273, {ebcdic273_mbtowc, nullptr}, {ebcdic273_wctomb, nullptr}) DEFCODEPAGE(273, ebcdic273) @@ -1165,6 +1327,7 @@ DEFENCODING(("IBM277", /* IANA */ "csIBM277", /* IANA */ ), ebcdic277, + EBCDIC_277, {ebcdic277_mbtowc, nullptr}, {ebcdic277_wctomb, nullptr}) DEFCODEPAGE(277, ebcdic277) @@ -1175,6 +1338,7 @@ DEFENCODING(("IBM278", /* IANA */ "csIBM278", /* IANA */ ), ebcdic278, + EBCDIC_278, {ebcdic278_mbtowc, nullptr}, {ebcdic278_wctomb, nullptr}) DEFCODEPAGE(278, ebcdic278) @@ -1184,129 +1348,144 @@ DEFENCODING(("IBM280", /* IANA */ "csIBM280", /* IANA */ ), ebcdic280, + EBCDIC_280, {ebcdic280_mbtowc, nullptr}, {ebcdic280_wctomb, nullptr}) DEFCODEPAGE(280, ebcdic280) DEFENCODING(("IBM282", ), ebcdic282, + EBCDIC_282, {ebcdic282_mbtowc, nullptr}, {ebcdic282_wctomb, nullptr}) DEFCODEPAGE(282, ebcdic282) DEFENCODING(("IBM284", /* IANA */ - "EBCDICCPES", /* IANA */ + "EBCDICCPES", /* IANA */ "csIBM284", /* IANA */ ), ebcdic284, + EBCDIC_284, {ebcdic284_mbtowc, nullptr}, {ebcdic284_wctomb, nullptr}) DEFCODEPAGE(284, ebcdic284) DEFENCODING(("IBM285", /* IANA */ "CP285", /* IANA */ - "EBCDICCPGB", /* IANA */ + "EBCDICCPGB", /* IANA */ "csIBM285", /* IANA */ ), ebcdic285, + EBCDIC_285, {ebcdic285_mbtowc, nullptr}, {ebcdic285_wctomb, nullptr}) DEFCODEPAGE(285, ebcdic285) DEFENCODING(("IBM297", /* IANA */ - "EBCDICCPFR", /* IANA */ + "EBCDICCPFR", /* IANA */ "csIBM297", /* IANA */ ), ebcdic297, + EBCDIC_297, {ebcdic297_mbtowc, nullptr}, {ebcdic297_wctomb, nullptr}) DEFCODEPAGE(297, ebcdic297) DEFENCODING(("IBM423", /* IANA */ - "EBCDICCPGR", /* IANA */ + "EBCDICCPGR", /* IANA */ "csIBM423", /* IANA */ ), ebcdic423, + EBCDIC_423, {ebcdic423_mbtowc, nullptr}, {ebcdic423_wctomb, nullptr}) DEFCODEPAGE(423, ebcdic423) DEFENCODING(("IBM424", /* IANA */ - "EBCDICCPHE", /* IANA */ + "EBCDICCPHE", /* IANA */ "csIBM424", /* IANA */ ), ebcdic424, + EBCDIC_424, {ebcdic424_mbtowc, nullptr}, {ebcdic424_wctomb, nullptr}) DEFCODEPAGE(424, ebcdic424) DEFENCODING(("IBM425", ), ebcdic425, + EBCDIC_425, {ebcdic425_mbtowc, nullptr}, {ebcdic425_wctomb, nullptr}) DEFCODEPAGE(425, ebcdic425) DEFENCODING(("IBM500", /* IANA */ - "EBCDICCPBE", /* IANA */ - "EBCDICCPCH", /* IANA */ + "EBCDICCPBE", /* IANA */ + "EBCDICCPCH", /* IANA */ "csIBM500", /* IANA */ ), ebcdic500, + EBCDIC_500, {ebcdic500_mbtowc, nullptr}, {ebcdic500_wctomb, nullptr}) DEFCODEPAGE(500, ebcdic500) DEFENCODING(("IBM838", - "IBMTHAI", /* IANA */ + "IBMTHAI", /* IANA */ "csIBMThai", /* IANA */ ), ebcdic838, + EBCDIC_838, {ebcdic838_mbtowc, nullptr}, {ebcdic838_wctomb, nullptr}) DEFCODEPAGE(838, ebcdic838) DEFENCODING(("IBM870", /* IANA */ "CP870", /* IANA */ - "EBCDICCPROECE", /* IANA */ - "EBCDICCPYU", /* IANA */ + "EBCDICCPROECE", /* IANA */ + "EBCDICCPYU", /* IANA */ "csIBM870", /* IANA */ ), ebcdic870, + EBCDIC_870, {ebcdic870_mbtowc, nullptr}, {ebcdic870_wctomb, nullptr}) DEFCODEPAGE(870, ebcdic870) DEFENCODING(("IBM871", /* IANA */ - "EBCDICCPIS", /* IANA */ + "EBCDICCPIS", /* IANA */ "csIBM871", /* IANA */ ), ebcdic871, + EBCDIC_871, {ebcdic871_mbtowc, nullptr}, {ebcdic871_wctomb, nullptr}) DEFCODEPAGE(871, ebcdic871) DEFENCODING(("IBM875", /* glibc */ - "EBCDICGREEK", /* glibc */ + "EBCDICGREEK", /* glibc */ ), ebcdic875, + EBCDIC_875, {ebcdic875_mbtowc, nullptr}, {ebcdic875_wctomb, nullptr}) DEFCODEPAGE(875, ebcdic875) DEFENCODING(("IBM880", /* IANA */ - "EBCDICCYRILLIC", /* IANA */ + "EBCDICCYRILLIC", /* IANA */ "csIBM880", /* IANA */ ), ebcdic880, + EBCDIC_880, {ebcdic880_mbtowc, nullptr}, {ebcdic880_wctomb, nullptr}) DEFCODEPAGE(880, ebcdic880) DEFENCODING(("IBM905", /* IANA */ - "EBCDICCPTR", /* IANA */ + "EBCDICCPTR", /* IANA */ "csIBM905", /* IANA */ ), ebcdic905, + EBCDIC_905, {ebcdic905_mbtowc, nullptr}, {ebcdic905_wctomb, nullptr}) DEFCODEPAGE(905, ebcdic905) @@ -1315,10 +1494,11 @@ DEFENCODING(("IBM924", "IBM00924", /* IANA */ "CCSID00924", /* IANA */ "CP00924", /* IANA */ - "EBCDICLATIN9EURO", /* IANA */ + "EBCDICLATIN9EURO", /* IANA */ "csIBM00924", /* IANA */ ), ebcdic924, + EBCDIC_924, {ebcdic924_mbtowc, nullptr}, {ebcdic924_wctomb, nullptr}) DEFCODEPAGE(924, ebcdic924) @@ -1326,6 +1506,7 @@ DEFCODEPAGE(924, ebcdic924) DEFENCODING(("IBM1025", /* glibc */ ), ebcdic1025, + EBCDIC_1025, {ebcdic1025_mbtowc, nullptr}, {ebcdic1025_wctomb, nullptr}) DEFCODEPAGE(1025, ebcdic1025) @@ -1334,6 +1515,7 @@ DEFENCODING(("IBM1026", /* IANA */ "csIBM1026", /* IANA */ ), ebcdic1026, + EBCDIC_1026, {ebcdic1026_mbtowc, nullptr}, {ebcdic1026_wctomb, nullptr}) DEFCODEPAGE(1026, ebcdic1026) @@ -1342,6 +1524,7 @@ DEFENCODING(("IBM1047", /* IANA */ "csIBM1047", /* IANA */ ), ebcdic1047, + EBCDIC_1047, {ebcdic1047_mbtowc, nullptr}, {ebcdic1047_wctomb, nullptr}) DEFCODEPAGE(1047, ebcdic1047) @@ -1349,6 +1532,7 @@ DEFCODEPAGE(1047, ebcdic1047) DEFENCODING(("IBM1097", /* glibc */ ), ebcdic1097, + EBCDIC_1097, {ebcdic1097_mbtowc, nullptr}, {ebcdic1097_wctomb, nullptr}) DEFCODEPAGE(1097, ebcdic1097) @@ -1356,6 +1540,7 @@ DEFCODEPAGE(1097, ebcdic1097) DEFENCODING(("IBM1112", /* glibc */ ), ebcdic1112, + EBCDIC_1112, {ebcdic1112_mbtowc, nullptr}, {ebcdic1112_wctomb, nullptr}) DEFCODEPAGE(1112, ebcdic1112) @@ -1363,6 +1548,7 @@ DEFCODEPAGE(1112, ebcdic1112) DEFENCODING(("IBM1122", /* glibc */ ), ebcdic1122, + EBCDIC_1122, {ebcdic1122_mbtowc, nullptr}, {ebcdic1122_wctomb, nullptr}) DEFCODEPAGE(1122, ebcdic1122) @@ -1370,6 +1556,7 @@ DEFCODEPAGE(1122, ebcdic1122) DEFENCODING(("IBM1123", /* glibc */ ), ebcdic1123, + EBCDIC_1123, {ebcdic1123_mbtowc, nullptr}, {ebcdic1123_wctomb, nullptr}) DEFCODEPAGE(1123, ebcdic1123) @@ -1377,6 +1564,7 @@ DEFCODEPAGE(1123, ebcdic1123) DEFENCODING(("IBM1130", /* glibc */ ), ebcdic1130, + EBCDIC_1130, {ebcdic1130_mbtowc, nullptr}, {ebcdic1130_wctomb, nullptr}) DEFCODEPAGE(1130, ebcdic1130) @@ -1384,6 +1572,7 @@ DEFCODEPAGE(1130, ebcdic1130) DEFENCODING(("IBM1132", /* glibc */ ), ebcdic1132, + EBCDIC_1132, {ebcdic1132_mbtowc, nullptr}, {ebcdic1132_wctomb, nullptr}) DEFCODEPAGE(1132, ebcdic1132) @@ -1391,128 +1580,139 @@ DEFCODEPAGE(1132, ebcdic1132) DEFENCODING(("IBM1137", /* glibc */ ), ebcdic1137, + EBCDIC_1137, {ebcdic1137_mbtowc, nullptr}, {ebcdic1137_wctomb, nullptr}) DEFCODEPAGE(1137, ebcdic1137) DEFENCODING(("IBM1140", - "IBM01140", /* IANA */ - "CCSID01140", /* IANA */ - "CP01140", /* IANA */ + "IBM01140", /* IANA */ + "CCSID01140", /* IANA */ + "CP01140", /* IANA */ "EBCDICUS37+EURO", /* IANA */ - "csIBM01140", /* IANA */ + "csIBM01140", /* IANA */ ), ebcdic1140, + EBCDIC_1140, {ebcdic1140_mbtowc, nullptr}, {ebcdic1140_wctomb, nullptr}) DEFCODEPAGE(1140, ebcdic1140) DEFENCODING(("IBM1141", - "IBM01141", /* IANA */ - "CCSID01141", /* IANA */ - "CP01141", /* IANA */ + "IBM01141", /* IANA */ + "CCSID01141", /* IANA */ + "CP01141", /* IANA */ "EBCDICDE273+EURO", /* IANA */ - "csIBM01141", /* IANA */ + "csIBM01141", /* IANA */ ), ebcdic1141, + EBCDIC_1141, {ebcdic1141_mbtowc, nullptr}, {ebcdic1141_wctomb, nullptr}) DEFCODEPAGE(1141, ebcdic1141) DEFENCODING(("IBM1142", - "IBM01142", /* IANA */ - "CCSID01142", /* IANA */ - "CP01142", /* IANA */ + "IBM01142", /* IANA */ + "CCSID01142", /* IANA */ + "CP01142", /* IANA */ "EBCDICDK277+EURO", /* IANA */ "EBCDICNO277+EURO", /* IANA */ - "csIBM01142", /* IANA */ + "csIBM01142", /* IANA */ ), ebcdic1142, + EBCDIC_1142, {ebcdic1142_mbtowc, nullptr}, {ebcdic1142_wctomb, nullptr}) DEFCODEPAGE(1142, ebcdic1142) DEFENCODING(("IBM1143", - "IBM01143", /* IANA */ - "CCSID01143", /* IANA */ - "CP01143", /* IANA */ + "IBM01143", /* IANA */ + "CCSID01143", /* IANA */ + "CP01143", /* IANA */ "EBCDICFI278+EURO", /* IANA */ "EBCDICSE278+EURO", /* IANA */ - "csIBM01143", /* IANA */ + "csIBM01143", /* IANA */ ), ebcdic1143, + EBCDIC_1143, {ebcdic1143_mbtowc, nullptr}, {ebcdic1143_wctomb, nullptr}) DEFCODEPAGE(1143, ebcdic1143) DEFENCODING(("IBM1144", - "IBM01144", /* IANA */ - "CCSID01144", /* IANA */ - "CP01144", /* IANA */ - "EBCDICIT280+EURO", /* IANA */ - "csPC8CodePage1144", /* IANA */ + "IBM01144", /* IANA */ + "CCSID01144", /* IANA */ + "CP01144", /* IANA */ + "EBCDICIT280+EURO", /* IANA */ + "csPC8CodePage1144", /* IANA */ ), ebcdic1144, + EBCDIC_1144, {ebcdic1144_mbtowc, nullptr}, {ebcdic1144_wctomb, nullptr}) DEFCODEPAGE(1144, ebcdic1144) DEFENCODING(("IBM1145", - "IBM01145", /* IANA */ - "CCSID01145", /* IANA */ - "CP01145", /* IANA */ + "IBM01145", /* IANA */ + "CCSID01145", /* IANA */ + "CP01145", /* IANA */ "EBCDICES284+EURO", /* IANA */ - "csIBM01145", /* IANA */ + "csIBM01145", /* IANA */ ), ebcdic1145, + EBCDIC_1145, {ebcdic1145_mbtowc, nullptr}, {ebcdic1145_wctomb, nullptr}) DEFCODEPAGE(1145, ebcdic1145) DEFENCODING(("IBM1146", - "IBM01146", /* IANA */ - "CCSID01146", /* IANA */ - "CP01146", /* IANA */ - "EBCDICGB285+EURO", /* IANA */ - "csPC8CodePage1146", /* IANA */ + "IBM01146", /* IANA */ + "CCSID01146", /* IANA */ + "CP01146", /* IANA */ + "EBCDICGB285+EURO", /* IANA */ + "csPC8CodePage1146", /* IANA */ ), ebcdic1146, + EBCDIC_1146, {ebcdic1146_mbtowc, nullptr}, {ebcdic1146_wctomb, nullptr}) DEFCODEPAGE(1146, ebcdic1146) DEFENCODING(("IBM1147", - "IBM01147", /* IANA */ - "CCSID01147", /* IANA */ - "CP01147", /* IANA */ + "IBM01147", /* IANA */ + "CCSID01147", /* IANA */ + "CP01147", /* IANA */ "EBCDICFR297+EURO", /* IANA */ - "csIBM01147", /* IANA */ + "csIBM01147", /* IANA */ ), ebcdic1147, + EBCDIC_1147, {ebcdic1147_mbtowc, nullptr}, {ebcdic1147_wctomb, nullptr}) DEFCODEPAGE(1147, ebcdic1147) DEFENCODING(("IBM1148", - "IBM01148", /* IANA */ - "CCSID01148", /* IANA */ - "CP01148", /* IANA */ + "IBM01148", /* IANA */ + "CCSID01148", /* IANA */ + "CP01148", /* IANA */ "EBCDICINTERNATIONAL500+EURO", /* IANA */ - "csIBM01148", /* IANA */ + "csIBM01148", /* IANA */ ), ebcdic1148, + EBCDIC_1148, {ebcdic1148_mbtowc, nullptr}, {ebcdic1148_wctomb, nullptr}) DEFCODEPAGE(1148, ebcdic1148) DEFENCODING(("IBM1149", - "IBM01149", /* IANA */ - "CCSID01149", /* IANA */ - "CP01149", /* IANA */ + "IBM01149", /* IANA */ + "CCSID01149", /* IANA */ + "CP01149", /* IANA */ "EBCDICIS871+EURO", /* IANA */ - "csIBM01149", /* IANA */ + "csIBM01149", /* IANA */ ), ebcdic1149, + EBCDIC_1149, {ebcdic1149_mbtowc, nullptr}, {ebcdic1149_wctomb, nullptr}) DEFCODEPAGE(1149, ebcdic1149) @@ -1520,6 +1720,7 @@ DEFCODEPAGE(1149, ebcdic1149) DEFENCODING(("IBM1153", /* glibc */ ), ebcdic1153, + EBCDIC_1153, {ebcdic1153_mbtowc, nullptr}, {ebcdic1153_wctomb, nullptr}) DEFCODEPAGE(1153, ebcdic1153) @@ -1527,6 +1728,7 @@ DEFCODEPAGE(1153, ebcdic1153) DEFENCODING(("IBM1154", /* glibc */ ), ebcdic1154, + EBCDIC_1154, {ebcdic1154_mbtowc, nullptr}, {ebcdic1154_wctomb, nullptr}) DEFCODEPAGE(1154, ebcdic1154) @@ -1534,6 +1736,7 @@ DEFCODEPAGE(1154, ebcdic1154) DEFENCODING(("IBM1155", /* glibc */ ), ebcdic1155, + EBCDIC_1155, {ebcdic1155_mbtowc, nullptr}, {ebcdic1155_wctomb, nullptr}) DEFCODEPAGE(1155, ebcdic1155) @@ -1541,6 +1744,7 @@ DEFCODEPAGE(1155, ebcdic1155) DEFENCODING(("IBM1156", /* glibc */ ), ebcdic1156, + EBCDIC_1156, {ebcdic1156_mbtowc, nullptr}, {ebcdic1156_wctomb, nullptr}) DEFCODEPAGE(1156, ebcdic1156) @@ -1548,6 +1752,7 @@ DEFCODEPAGE(1156, ebcdic1156) DEFENCODING(("IBM1157", /* glibc */ ), ebcdic1157, + EBCDIC_1157, {ebcdic1157_mbtowc, nullptr}, {ebcdic1157_wctomb, nullptr}) DEFCODEPAGE(1157, ebcdic1157) @@ -1555,6 +1760,7 @@ DEFCODEPAGE(1157, ebcdic1157) DEFENCODING(("IBM1158", /* glibc */ ), ebcdic1158, + EBCDIC_1158, {ebcdic1158_mbtowc, nullptr}, {ebcdic1158_wctomb, nullptr}) DEFCODEPAGE(1158, ebcdic1158) @@ -1562,6 +1768,7 @@ DEFCODEPAGE(1158, ebcdic1158) DEFENCODING(("IBM1160", /* glibc */ ), ebcdic1160, + EBCDIC_1160, {ebcdic1160_mbtowc, nullptr}, {ebcdic1160_wctomb, nullptr}) DEFCODEPAGE(1160, ebcdic1160) @@ -1569,12 +1776,14 @@ DEFCODEPAGE(1160, ebcdic1160) DEFENCODING(("IBM1164", /* glibc */ ), ebcdic1164, + EBCDIC_1164, {ebcdic1164_mbtowc, nullptr}, {ebcdic1164_wctomb, nullptr}) DEFCODEPAGE(1164, ebcdic1164) DEFENCODING(("IBM1165", ), ebcdic1165, + EBCDIC_1165, {ebcdic1165_mbtowc, nullptr}, {ebcdic1165_wctomb, nullptr}) DEFCODEPAGE(1165, ebcdic1165) @@ -1582,6 +1791,7 @@ DEFCODEPAGE(1165, ebcdic1165) DEFENCODING(("IBM1166", /* glibc */ ), ebcdic1166, + EBCDIC_1166, {ebcdic1166_mbtowc, nullptr}, {ebcdic1166_wctomb, nullptr}) DEFCODEPAGE(1166, ebcdic1166) @@ -1589,6 +1799,7 @@ DEFCODEPAGE(1166, ebcdic1166) DEFENCODING(("IBM4971", /* glibc */ ), ebcdic4971, + EBCDIC_4971, {ebcdic4971_mbtowc, nullptr}, {ebcdic4971_wctomb, nullptr}) DEFCODEPAGE(4971, ebcdic4971) @@ -1596,6 +1807,7 @@ DEFCODEPAGE(4971, ebcdic4971) DEFENCODING(("IBM12712", /* glibc */ ), ebcdic12712, + EBCDIC_12712, {ebcdic12712_mbtowc, nullptr}, {ebcdic12712_wctomb, nullptr}) DEFCODEPAGE(12712, ebcdic12712) @@ -1603,6 +1815,7 @@ DEFCODEPAGE(12712, ebcdic12712) DEFENCODING(("IBM16804", /* glibc */ ), ebcdic16804, + EBCDIC_16804, {ebcdic16804_mbtowc, nullptr}, {ebcdic16804_wctomb, nullptr}) DEFCODEPAGE(16804, ebcdic16804) @@ -1611,34 +1824,43 @@ DEFENCODING(("EUCJISX0213", "EUCJIS2004", /* x0213.org */ ), euc_jisx0213, + EUC_JISX0213, {euc_jisx0213_mbtowc, euc_jisx0213_flushwc}, {euc_jisx0213_wctomb, euc_jisx0213_reset}) DEFENCODING(("SHIFTJISX0213", "SHIFTJIS2004", /* x0213.org */ ), shift_jisx0213, + SHIFT_JISX0213, {shift_jisx0213_mbtowc, shift_jisx0213_flushwc}, {shift_jisx0213_wctomb, shift_jisx0213_reset}) DEFENCODING(("ISO2022JP3", "ISO2022JP2004", /* x0213.org */ ), iso2022_jp3, + ISO2022_JP3, {iso2022_jp3_mbtowc, iso2022_jp3_flushwc}, {iso2022_jp3_wctomb, iso2022_jp3_reset}) DEFENCODING(("BIG52003", ), big5_2003, + BIG5_2003, {big5_2003_mbtowc, nullptr}, {big5_2003_wctomb, nullptr}) DEFENCODING(("TDS565", "ISOIR230", ), tds565, + TDS565, {tds565_mbtowc, nullptr}, {tds565_wctomb, nullptr}) DEFENCODING(("ATARIST", "ATARI", ), atarist, + ATARIST, {atarist_mbtowc, nullptr}, {atarist_wctomb, nullptr}) +DEFINDEX(ATARI, ATARIST) + DEFENCODING(("RISCOSLATIN1", ), riscos1, + RISCOS_LATIN1, {riscos1_mbtowc, nullptr}, {riscos1_wctomb, nullptr}) diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index 5d3b2762..7eebb5a3 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 534 +#define TOTAL_KEYWORDS 555 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 39 -#define MIN_HASH_VALUE 21 -#define MAX_HASH_VALUE 2224 -/* maximum key range = 2204, duplicates = 0 */ +#define MIN_HASH_VALUE 7 +#define MAX_HASH_VALUE 2577 +/* maximum key range = 2571, duplicates = 0 */ class HashPool { @@ -52,19 +52,19 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 32, 2225, 33, 8, - 70, 126, 20, 6, 5, 113, 24, 168, 502, 2225, - 2225, 2225, 2225, 2225, 2225, 10, 261, 6, 57, 130, - 20, 243, 184, 5, 659, 82, 9, 94, 90, 124, - 8, 2225, 562, 5, 479, 608, 13, 294, 63, 16, - 5, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225 + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 0, 2578, 28, 4, + 58, 142, 16, 1, 0, 104, 18, 186, 721, 2578, + 2578, 2578, 2578, 2578, 2578, 6, 254, 0, 54, 16, + 13, 318, 81, 0, 736, 92, 707, 81, 17, 27, + 8, 2578, 628, 0, 446, 667, 22, 364, 41, 2, + 1, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, + 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578 }; unsigned int hval = len; @@ -104,2512 +104,2639 @@ HashPool::aliases_hash (const char *str, size_t len) struct stringpool_t { - char stringpool_str21[sizeof("L6")]; - char stringpool_str23[sizeof("L5")]; - char stringpool_str27[sizeof("L1")]; - char stringpool_str28[sizeof("CPIS")]; - char stringpool_str31[sizeof("5601")]; - char stringpool_str32[sizeof("1125")]; - char stringpool_str33[sizeof("646")]; - char stringpool_str35[sizeof("ASCII")]; - char stringpool_str37[sizeof("866")]; - char stringpool_str38[sizeof("865")]; - char stringpool_str39[sizeof("855")]; - char stringpool_str40[sizeof("861")]; - char stringpool_str44[sizeof("CSASCII")]; - char stringpool_str45[sizeof("VISCII")]; - char stringpool_str50[sizeof("CSVISCII")]; - char stringpool_str51[sizeof("L4")]; - char stringpool_str53[sizeof("L10")]; - char stringpool_str55[sizeof("CP285")]; - char stringpool_str57[sizeof("858")]; - char stringpool_str59[sizeof("L8")]; - char stringpool_str65[sizeof("860")]; - char stringpool_str66[sizeof("850")]; - char stringpool_str67[sizeof("CP01146")]; - char stringpool_str68[sizeof("CSUCS4")]; - char stringpool_str69[sizeof("CP01145")]; - char stringpool_str70[sizeof("CYRILLIC")]; - char stringpool_str73[sizeof("CP01141")]; - char stringpool_str97[sizeof("CP01144")]; - char stringpool_str99[sizeof("PCK")]; - char stringpool_str102[sizeof("862")]; - char stringpool_str103[sizeof("852")]; - char stringpool_str105[sizeof("CP01148")]; - char stringpool_str108[sizeof("VISCII1.11")]; - char stringpool_str113[sizeof("MAC")]; - char stringpool_str123[sizeof("CP01140")]; - char stringpool_str130[sizeof("LATIN6")]; - char stringpool_str132[sizeof("LATIN5")]; - char stringpool_str133[sizeof("CSKZ1048")]; - char stringpool_str136[sizeof("LATIN1")]; - char stringpool_str146[sizeof("857")]; - char stringpool_str150[sizeof("X0201")]; - char stringpool_str151[sizeof("L2")]; - char stringpool_str154[sizeof("KSC5601")]; - char stringpool_str158[sizeof("863")]; - char stringpool_str159[sizeof("853")]; - char stringpool_str160[sizeof("LATIN4")]; - char stringpool_str162[sizeof("CP1250")]; - char stringpool_str163[sizeof("CCSID01146")]; - char stringpool_str165[sizeof("CCSID01145")]; - char stringpool_str168[sizeof("LATIN8")]; - char stringpool_str169[sizeof("CCSID01141")]; - char stringpool_str174[sizeof("CYRILLICASIAN")]; - char stringpool_str182[sizeof("X0208")]; - char stringpool_str188[sizeof("CN")]; - char stringpool_str193[sizeof("CCSID01144")]; - char stringpool_str194[sizeof("KZ1048")]; - char stringpool_str195[sizeof("LATIN10")]; - char stringpool_str196[sizeof("HZ")]; - char stringpool_str197[sizeof("CP01142")]; - char stringpool_str198[sizeof("CP870")]; - char stringpool_str200[sizeof("869")]; - char stringpool_str201[sizeof("CCSID01148")]; - char stringpool_str203[sizeof("CSPCP852")]; - char stringpool_str208[sizeof("CSKSC56011987")]; - char stringpool_str209[sizeof("ECMA114")]; - char stringpool_str210[sizeof("MSANSI")]; - char stringpool_str213[sizeof("ANSI1251")]; - char stringpool_str217[sizeof("ECMA118")]; - char stringpool_str219[sizeof("CCSID01140")]; - char stringpool_str234[sizeof("ISO646CN")]; - char stringpool_str237[sizeof("L7")]; - char stringpool_str240[sizeof("MS936")]; - char stringpool_str249[sizeof("X0212")]; - char stringpool_str250[sizeof("ISO88596")]; - char stringpool_str252[sizeof("ISO88595")]; - char stringpool_str256[sizeof("ISO88591")]; - char stringpool_str259[sizeof("ISO885916")]; - char stringpool_str260[sizeof("LATIN2")]; - char stringpool_str261[sizeof("ISO885915")]; - char stringpool_str262[sizeof("437")]; - char stringpool_str263[sizeof("L3")]; - char stringpool_str265[sizeof("ISO885911")]; - char stringpool_str277[sizeof("CSBIG5")]; - char stringpool_str280[sizeof("ISO88594")]; - char stringpool_str282[sizeof("BIG5")]; - char stringpool_str283[sizeof("CP01147")]; - char stringpool_str288[sizeof("ISO88598")]; - char stringpool_str289[sizeof("ISO885914")]; - char stringpool_str293[sizeof("CCSID01142")]; - char stringpool_str304[sizeof("IBM1166")]; - char stringpool_str305[sizeof("IBM1156")]; - char stringpool_str306[sizeof("IBM1165")]; - char stringpool_str307[sizeof("IBM1155")]; - char stringpool_str309[sizeof("CP01143")]; - char stringpool_str310[sizeof("IBM1161")]; - char stringpool_str311[sizeof("IBM866")]; - char stringpool_str312[sizeof("IBM856")]; - char stringpool_str313[sizeof("IBM865")]; - char stringpool_str314[sizeof("IBM855")]; - char stringpool_str315[sizeof("ISO885910")]; - char stringpool_str317[sizeof("IBM861")]; - char stringpool_str319[sizeof("IBM1146")]; - char stringpool_str321[sizeof("IBM1145")]; - char stringpool_str325[sizeof("IBM1141")]; - char stringpool_str332[sizeof("CP00924")]; - char stringpool_str334[sizeof("IBM1164")]; - char stringpool_str335[sizeof("IBM1154")]; - char stringpool_str340[sizeof("ASMO708")]; - char stringpool_str341[sizeof("IBM864")]; - char stringpool_str343[sizeof("IBM1158")]; - char stringpool_str344[sizeof("IBM1046")]; - char stringpool_str345[sizeof("C99")]; - char stringpool_str346[sizeof("LATIN7")]; - char stringpool_str349[sizeof("IBM1144")]; - char stringpool_str350[sizeof("IBM858")]; - char stringpool_str353[sizeof("IBM01146")]; - char stringpool_str355[sizeof("IBM01145")]; - char stringpool_str357[sizeof("IBM1148")]; - char stringpool_str359[sizeof("IBM01141")]; - char stringpool_str360[sizeof("IBM1160")]; - char stringpool_str362[sizeof("CNBIG5")]; - char stringpool_str363[sizeof("MSEE")]; - char stringpool_str364[sizeof("CCSID853")]; - char stringpool_str367[sizeof("IBM860")]; - char stringpool_str368[sizeof("IBM850")]; - char stringpool_str371[sizeof("IBM1125")]; - char stringpool_str372[sizeof("LATIN3")]; - char stringpool_str374[sizeof("IBM425")]; - char stringpool_str375[sizeof("IBM1140")]; - char stringpool_str377[sizeof("IBM500")]; - char stringpool_str378[sizeof("IBM285")]; - char stringpool_str379[sizeof("CCSID01147")]; - char stringpool_str380[sizeof("ISO88592")]; - char stringpool_str383[sizeof("IBM01144")]; - char stringpool_str384[sizeof("IBM16804")]; - char stringpool_str386[sizeof("IBM880")]; - char stringpool_str388[sizeof("CSPC8CODEPAGE1146")]; - char stringpool_str390[sizeof("HP15CN")]; - char stringpool_str391[sizeof("IBM01148")]; - char stringpool_str393[sizeof("CP01149")]; - char stringpool_str394[sizeof("IBM1026")]; - char stringpool_str396[sizeof("IBM1025")]; - char stringpool_str397[sizeof("CNS11643")]; - char stringpool_str399[sizeof("IBM1124")]; - char stringpool_str402[sizeof("IBM424")]; - char stringpool_str403[sizeof("CSPC8CODEPAGE1144")]; - char stringpool_str405[sizeof("CCSID01143")]; - char stringpool_str406[sizeof("IBM284")]; - char stringpool_str409[sizeof("IBM01140")]; - char stringpool_str412[sizeof("CSIBM1161")]; - char stringpool_str413[sizeof("CSIBM866")]; - char stringpool_str415[sizeof("CSIBM865")]; - char stringpool_str416[sizeof("CSIBM855")]; - char stringpool_str418[sizeof("IBM00858")]; - char stringpool_str419[sizeof("CSIBM861")]; - char stringpool_str421[sizeof("IBM875")]; - char stringpool_str425[sizeof("IBM871")]; - char stringpool_str428[sizeof("CCSID00924")]; - char stringpool_str431[sizeof("IBM1131")]; - char stringpool_str432[sizeof("IBM280")]; - char stringpool_str434[sizeof("IBM1162")]; - char stringpool_str435[sizeof("XMACCE")]; - char stringpool_str437[sizeof("IBM1112")]; - char stringpool_str441[sizeof("IBM862")]; - char stringpool_str442[sizeof("IBM852")]; - char stringpool_str443[sizeof("CSIBM864")]; - char stringpool_str448[sizeof("ISO2022CN")]; - char stringpool_str449[sizeof("IBM1142")]; - char stringpool_str450[sizeof("CSUNICODE11")]; - char stringpool_str452[sizeof("CSIBM858")]; - char stringpool_str456[sizeof("LATIN9")]; - char stringpool_str457[sizeof("CSIBM01145")]; - char stringpool_str461[sizeof("CSIBM01141")]; - char stringpool_str463[sizeof("KSC56011987")]; - char stringpool_str466[sizeof("ISO88597")]; - char stringpool_str469[sizeof("CSIBM860")]; - char stringpool_str470[sizeof("IBM838")]; - char stringpool_str473[sizeof("CSIBM1125")]; - char stringpool_str475[sizeof("IBM870")]; - char stringpool_str478[sizeof("MACICELAND")]; - char stringpool_str479[sizeof("CSIBM500")]; - char stringpool_str480[sizeof("CSIBM285")]; - char stringpool_str481[sizeof("IBM1130")]; - char stringpool_str483[sizeof("IBM01142")]; - char stringpool_str485[sizeof("IBM905")]; - char stringpool_str488[sizeof("CSIBM880")]; - char stringpool_str489[sizeof("CCSID01149")]; - char stringpool_str490[sizeof("CSISO2022CN")]; - char stringpool_str492[sizeof("ISO88593")]; - char stringpool_str493[sizeof("CSIBM01148")]; - char stringpool_str494[sizeof("DECHANZI")]; - char stringpool_str495[sizeof("CSPC8CODEPAGE437")]; - char stringpool_str496[sizeof("CSIBM1026")]; - char stringpool_str497[sizeof("IBM1252")]; - char stringpool_str498[sizeof("EBCDICCPIS")]; - char stringpool_str499[sizeof("IBM1122")]; - char stringpool_str501[sizeof("ISO885913")]; - char stringpool_str503[sizeof("IBM278")]; - char stringpool_str504[sizeof("CSIBM424")]; - char stringpool_str506[sizeof("IBM282")]; - char stringpool_str508[sizeof("CSIBM284")]; - char stringpool_str509[sizeof("EBCDICCPCA")]; - char stringpool_str510[sizeof("IBM775")]; - char stringpool_str511[sizeof("CSIBM01140")]; - char stringpool_str513[sizeof("EBCDICCPFI")]; - char stringpool_str518[sizeof("KSC56011989")]; - char stringpool_str521[sizeof("IBM1157")]; - char stringpool_str526[sizeof("IBM921")]; - char stringpool_str527[sizeof("CSIBM871")]; - char stringpool_str528[sizeof("IBM857")]; - char stringpool_str532[sizeof("KOREAN")]; - char stringpool_str534[sizeof("CSIBM280")]; - char stringpool_str535[sizeof("IBM1147")]; - char stringpool_str536[sizeof("CSIBM1162")]; - char stringpool_str538[sizeof("PT154")]; - char stringpool_str539[sizeof("ANSIX3.41986")]; - char stringpool_str546[sizeof("IBM1163")]; - char stringpool_str547[sizeof("IBM1153")]; - char stringpool_str548[sizeof("CSPC775BALTIC")]; - char stringpool_str550[sizeof("IBM924")]; - char stringpool_str553[sizeof("IBM863")]; - char stringpool_str554[sizeof("IBM853")]; - char stringpool_str555[sizeof("IBM1132")]; - char stringpool_str556[sizeof("PTCP154")]; - char stringpool_str558[sizeof("ANSIX3.41968")]; - char stringpool_str559[sizeof("CSUNICODE11UTF7")]; - char stringpool_str560[sizeof("IBM1047")]; - char stringpool_str561[sizeof("IBM1143")]; - char stringpool_str562[sizeof("CSUNICODE")]; - char stringpool_str565[sizeof("TDS565")]; - char stringpool_str566[sizeof("HPROMAN8")]; - char stringpool_str567[sizeof("CSPTCP154")]; - char stringpool_str568[sizeof("BIG5HKSCS")]; - char stringpool_str569[sizeof("IBM01147")]; - char stringpool_str571[sizeof("BIGFIVE")]; - char stringpool_str576[sizeof("ISO88599")]; - char stringpool_str577[sizeof("CSIBM870")]; - char stringpool_str585[sizeof("CSIBM01142")]; - char stringpool_str587[sizeof("CSIBM905")]; - char stringpool_str589[sizeof("GBK")]; - char stringpool_str590[sizeof("IBM4971")]; - char stringpool_str591[sizeof("EBCDICCPNL")]; - char stringpool_str593[sizeof("ISOIR6")]; - char stringpool_str595[sizeof("IBM01143")]; - char stringpool_str605[sizeof("CSIBM278")]; - char stringpool_str608[sizeof("ISOIR166")]; - char stringpool_str610[sizeof("ISOIR165")]; + char stringpool_str7[sizeof("CSASCII")]; + char stringpool_str8[sizeof("CSVISCII")]; + char stringpool_str11[sizeof("ASCII")]; + char stringpool_str12[sizeof("CPIS")]; + char stringpool_str13[sizeof("5601")]; + char stringpool_str14[sizeof("1125")]; + char stringpool_str19[sizeof("646")]; + char stringpool_str21[sizeof("866")]; + char stringpool_str22[sizeof("865")]; + char stringpool_str23[sizeof("855")]; + char stringpool_str25[sizeof("861")]; + char stringpool_str28[sizeof("VISCII")]; + char stringpool_str33[sizeof("CP285")]; + char stringpool_str36[sizeof("CN")]; + char stringpool_str38[sizeof("CSUCS4")]; + char stringpool_str39[sizeof("CP01146")]; + char stringpool_str40[sizeof("858")]; + char stringpool_str41[sizeof("CP01145")]; + char stringpool_str47[sizeof("CP01141")]; + char stringpool_str48[sizeof("VISCII1.11")]; + char stringpool_str49[sizeof("860")]; + char stringpool_str50[sizeof("850")]; + char stringpool_str58[sizeof("ISO646CN")]; + char stringpool_str69[sizeof("ECMA114")]; + char stringpool_str71[sizeof("CP01144")]; + char stringpool_str73[sizeof("ECMA118")]; + char stringpool_str75[sizeof("CP01148")]; + char stringpool_str79[sizeof("862")]; + char stringpool_str80[sizeof("852")]; + char stringpool_str85[sizeof("HZ")]; + char stringpool_str90[sizeof("MAC")]; + char stringpool_str93[sizeof("CSKZ1048")]; + char stringpool_str95[sizeof("CP01140")]; + char stringpool_str102[sizeof("ANSI1251")]; + char stringpool_str103[sizeof("PCK")]; + char stringpool_str104[sizeof("MSANSI")]; + char stringpool_str110[sizeof("X0201")]; + char stringpool_str116[sizeof("CCSID01146")]; + char stringpool_str117[sizeof("MSEE")]; + char stringpool_str118[sizeof("CCSID01145")]; + char stringpool_str124[sizeof("CCSID01141")]; + char stringpool_str126[sizeof("857")]; + char stringpool_str129[sizeof("CP1250")]; + char stringpool_str130[sizeof("HP15CN")]; + char stringpool_str133[sizeof("CSUNICODE11")]; + char stringpool_str136[sizeof("KSC5601")]; + char stringpool_str138[sizeof("X0208")]; + char stringpool_str139[sizeof("CSUNICODE")]; + char stringpool_str140[sizeof("CSPC8CODEPAGE1146")]; + char stringpool_str148[sizeof("CCSID01144")]; + char stringpool_str151[sizeof("CSPCP852")]; + char stringpool_str152[sizeof("CCSID01148")]; + char stringpool_str153[sizeof("CHINESE")]; + char stringpool_str154[sizeof("CSKSC56011987")]; + char stringpool_str155[sizeof("CP01142")]; + char stringpool_str156[sizeof("CSPC8CODEPAGE1144")]; + char stringpool_str160[sizeof("XMACCE")]; + char stringpool_str163[sizeof("863")]; + char stringpool_str164[sizeof("853")]; + char stringpool_str172[sizeof("CCSID01140")]; + char stringpool_str173[sizeof("CP870")]; + char stringpool_str179[sizeof("KZ1048")]; + char stringpool_str181[sizeof("KOREAN")]; + char stringpool_str183[sizeof("DECHANZI")]; + char stringpool_str194[sizeof("X0212")]; + char stringpool_str207[sizeof("869")]; + char stringpool_str208[sizeof("ASMO708")]; + char stringpool_str221[sizeof("DOS862")]; + char stringpool_str228[sizeof("MS936")]; + char stringpool_str231[sizeof("ISO88596")]; + char stringpool_str232[sizeof("CCSID01142")]; + char stringpool_str233[sizeof("ISO88595")]; + char stringpool_str236[sizeof("ISO885916")]; + char stringpool_str237[sizeof("CSUNICODE11UTF7")]; + char stringpool_str238[sizeof("ISO885915")]; + char stringpool_str239[sizeof("ISO88591")]; + char stringpool_str243[sizeof("CSPC8CODEPAGE437")]; + char stringpool_str244[sizeof("ISO885911")]; + char stringpool_str245[sizeof("ISO2022CN")]; + char stringpool_str247[sizeof("CP01147")]; + char stringpool_str257[sizeof("CSISO2022CN")]; + char stringpool_str260[sizeof("BIG5")]; + char stringpool_str263[sizeof("ISO88594")]; + char stringpool_str264[sizeof("HPROMAN8")]; + char stringpool_str265[sizeof("437")]; + char stringpool_str267[sizeof("ISO88598")]; + char stringpool_str268[sizeof("ISO885914")]; + char stringpool_str269[sizeof("IBM1166")]; + char stringpool_str270[sizeof("IBM1156")]; + char stringpool_str271[sizeof("IBM1165")]; + char stringpool_str272[sizeof("IBM1155")]; + char stringpool_str277[sizeof("IBM1161")]; + char stringpool_str278[sizeof("IBM866")]; + char stringpool_str279[sizeof("IBM856")]; + char stringpool_str280[sizeof("IBM865")]; + char stringpool_str281[sizeof("IBM855")]; + char stringpool_str285[sizeof("IBM1146")]; + char stringpool_str286[sizeof("IBM861")]; + char stringpool_str287[sizeof("IBM1145")]; + char stringpool_str292[sizeof("ISO885910")]; + char stringpool_str293[sizeof("IBM1141")]; + char stringpool_str301[sizeof("IBM1164")]; + char stringpool_str302[sizeof("IBM1154")]; + char stringpool_str306[sizeof("IBM1158")]; + char stringpool_str309[sizeof("IBM1046")]; + char stringpool_str310[sizeof("IBM864")]; + char stringpool_str314[sizeof("IBM01146")]; + char stringpool_str315[sizeof("IBM858")]; + char stringpool_str316[sizeof("IBM01145")]; + char stringpool_str317[sizeof("IBM1144")]; + char stringpool_str319[sizeof("CP00924")]; + char stringpool_str321[sizeof("IBM1148")]; + char stringpool_str322[sizeof("IBM01141")]; + char stringpool_str323[sizeof("CP01143")]; + char stringpool_str324[sizeof("CCSID01147")]; + char stringpool_str325[sizeof("IBM1160")]; + char stringpool_str326[sizeof("CSBIG5")]; + char stringpool_str328[sizeof("BIGFIVE")]; + char stringpool_str329[sizeof("IBM1125")]; + char stringpool_str333[sizeof("CNS11643")]; + char stringpool_str334[sizeof("IBM860")]; + char stringpool_str335[sizeof("IBM850")]; + char stringpool_str336[sizeof("IBM425")]; + char stringpool_str338[sizeof("IBM285")]; + char stringpool_str341[sizeof("IBM1140")]; + char stringpool_str342[sizeof("EBCDICCPIS")]; + char stringpool_str343[sizeof("CNBIG5")]; + char stringpool_str344[sizeof("IBM16804")]; + char stringpool_str345[sizeof("IBM500")]; + char stringpool_str346[sizeof("IBM01144")]; + char stringpool_str347[sizeof("ISO88592")]; + char stringpool_str350[sizeof("IBM01148")]; + char stringpool_str351[sizeof("IBM1026")]; + char stringpool_str352[sizeof("IBM880")]; + char stringpool_str353[sizeof("IBM1025")]; + char stringpool_str354[sizeof("EBCDICCPCA")]; + char stringpool_str355[sizeof("EBCDICCPFI")]; + char stringpool_str358[sizeof("EBCDICCPES")]; + char stringpool_str359[sizeof("IBM1124")]; + char stringpool_str360[sizeof("CSIBM1161")]; + char stringpool_str361[sizeof("CSIBM866")]; + char stringpool_str363[sizeof("CSIBM865")]; + char stringpool_str364[sizeof("CSIBM855")]; + char stringpool_str365[sizeof("CCSID853")]; + char stringpool_str366[sizeof("IBM424")]; + char stringpool_str368[sizeof("IBM284")]; + char stringpool_str369[sizeof("CSIBM861")]; + char stringpool_str370[sizeof("IBM01140")]; + char stringpool_str373[sizeof("IBM00858")]; + char stringpool_str374[sizeof("EBCDICCPSE")]; + char stringpool_str375[sizeof("C99")]; + char stringpool_str384[sizeof("IBM875")]; + char stringpool_str385[sizeof("IBM1162")]; + char stringpool_str389[sizeof("IBM1112")]; + char stringpool_str390[sizeof("IBM871")]; + char stringpool_str392[sizeof("IBM280")]; + char stringpool_str393[sizeof("CSIBM864")]; + char stringpool_str394[sizeof("IBM862")]; + char stringpool_str395[sizeof("IBM852")]; + char stringpool_str396[sizeof("CCSID00924")]; + char stringpool_str398[sizeof("CSIBM858")]; + char stringpool_str399[sizeof("CSIBM01145")]; + char stringpool_str400[sizeof("CCSID01143")]; + char stringpool_str401[sizeof("IBM1142")]; + char stringpool_str405[sizeof("CSIBM01141")]; + char stringpool_str411[sizeof("CP01149")]; + char stringpool_str412[sizeof("CSIBM1125")]; + char stringpool_str413[sizeof("EBCDICCPNO")]; + char stringpool_str417[sizeof("CSIBM860")]; + char stringpool_str419[sizeof("IBM1131")]; + char stringpool_str421[sizeof("CSIBM285")]; + char stringpool_str424[sizeof("ANSIX3.41986")]; + char stringpool_str428[sizeof("CSIBM500")]; + char stringpool_str430[sizeof("IBM01142")]; + char stringpool_str433[sizeof("CSIBM01148")]; + char stringpool_str434[sizeof("CSIBM1026")]; + char stringpool_str435[sizeof("CSIBM880")]; + char stringpool_str437[sizeof("BIG5HKSCS")]; + char stringpool_str438[sizeof("IBM870")]; + char stringpool_str439[sizeof("ISO88597")]; + char stringpool_str440[sizeof("IBM1252")]; + char stringpool_str442[sizeof("ANSIX3.41968")]; + char stringpool_str443[sizeof("IBM1122")]; + char stringpool_str448[sizeof("KSC56011987")]; + char stringpool_str449[sizeof("CSIBM424")]; + char stringpool_str451[sizeof("CSIBM284")]; + char stringpool_str452[sizeof("IBM282")]; + char stringpool_str453[sizeof("CSIBM01140")]; + char stringpool_str455[sizeof("EBCDICCPHE")]; + char stringpool_str456[sizeof("IBM838")]; + char stringpool_str458[sizeof("IBM278")]; + char stringpool_str459[sizeof("EBCDICES284+EURO")]; + char stringpool_str467[sizeof("IBM1130")]; + char stringpool_str468[sizeof("CSIBM1162")]; + char stringpool_str470[sizeof("IBM775")]; + char stringpool_str473[sizeof("CSIBM871")]; + char stringpool_str475[sizeof("CSIBM280")]; + char stringpool_str476[sizeof("IBM905")]; + char stringpool_str478[sizeof("IBM1157")]; + char stringpool_str479[sizeof("CSWINDOWS1256")]; + char stringpool_str480[sizeof("CSWINDOWS1255")]; + char stringpool_str483[sizeof("CSWINDOWS1251")]; + char stringpool_str484[sizeof("TCVN")]; + char stringpool_str487[sizeof("IBM857")]; + char stringpool_str488[sizeof("CCSID01149")]; + char stringpool_str489[sizeof("EBCDICIS871+EURO")]; + char stringpool_str492[sizeof("PT154")]; + char stringpool_str493[sizeof("IBM1147")]; + char stringpool_str495[sizeof("CSWINDOWS1254")]; + char stringpool_str497[sizeof("CSWINDOWS1258")]; + char stringpool_str500[sizeof("CSPTCP154")]; + char stringpool_str504[sizeof("EBCDICCPCH")]; + char stringpool_str506[sizeof("PTCP154")]; + char stringpool_str507[sizeof("CSWINDOWS1250")]; + char stringpool_str508[sizeof("CSWINDOWS874")]; + char stringpool_str509[sizeof("TDS565")]; + char stringpool_str512[sizeof("IBM921")]; + char stringpool_str513[sizeof("CSIBM01142")]; + char stringpool_str515[sizeof("ISO88593")]; + char stringpool_str517[sizeof("IBM1047")]; + char stringpool_str520[sizeof("ISO885913")]; + char stringpool_str521[sizeof("CSIBM870")]; + char stringpool_str522[sizeof("IBM01147")]; + char stringpool_str527[sizeof("IBM1132")]; + char stringpool_str529[sizeof("CNGB")]; + char stringpool_str530[sizeof("KSC56011989")]; + char stringpool_str536[sizeof("IBM924")]; + char stringpool_str537[sizeof("CSWINDOWS1252")]; + char stringpool_str541[sizeof("CSIBM278")]; + char stringpool_str542[sizeof("EBCDICFI278+EURO")]; + char stringpool_str545[sizeof("EBCDICSE278+EURO")]; + char stringpool_str548[sizeof("IBM12712")]; + char stringpool_str553[sizeof("IBM1163")]; + char stringpool_str554[sizeof("IBM1153")]; + char stringpool_str559[sizeof("CSIBM905")]; + char stringpool_str562[sizeof("IBM863")]; + char stringpool_str563[sizeof("IBM853")]; + char stringpool_str566[sizeof("TIS620")]; + char stringpool_str569[sizeof("IBM1143")]; + char stringpool_str570[sizeof("CSIBM857")]; + char stringpool_str573[sizeof("EBCDICNO277+EURO")]; + char stringpool_str575[sizeof("IBM4971")]; + char stringpool_str580[sizeof("EBCDICCPDK")]; + char stringpool_str582[sizeof("CSGB2312")]; + char stringpool_str583[sizeof("CSWINDOWS1257")]; + char stringpool_str588[sizeof("CSMACINTOSH")]; + char stringpool_str594[sizeof("IBM00924")]; + char stringpool_str595[sizeof("TIS6200")]; + char stringpool_str598[sizeof("IBM01143")]; + char stringpool_str599[sizeof("EBCDICDE273+EURO")]; + char stringpool_str600[sizeof("CSIBM1047")]; + char stringpool_str603[sizeof("ISO88599")]; + char stringpool_str605[sizeof("CSIBM01147")]; + char stringpool_str610[sizeof("IBM367")]; char stringpool_str611[sizeof("IBM1123")]; - char stringpool_str612[sizeof("R8")]; - char stringpool_str613[sizeof("IBM12712")]; - char stringpool_str614[sizeof("IBM423")]; - char stringpool_str618[sizeof("IBM00924")]; - char stringpool_str620[sizeof("US")]; - char stringpool_str622[sizeof("CNGB")]; - char stringpool_str623[sizeof("EBCDICCPES")]; - char stringpool_str624[sizeof("CSGB2312")]; - char stringpool_str629[sizeof("IBM367")]; - char stringpool_str630[sizeof("CSIBM857")]; - char stringpool_str631[sizeof("TIS620")]; - char stringpool_str632[sizeof("ISOIR14")]; - char stringpool_str637[sizeof("IBM869")]; - char stringpool_str638[sizeof("ISOIR58")]; - char stringpool_str640[sizeof("IBM819")]; - char stringpool_str641[sizeof("IBM1137")]; - char stringpool_str642[sizeof("ISOIR101")]; - char stringpool_str644[sizeof("IBM437")]; - char stringpool_str645[sizeof("IBM1149")]; - char stringpool_str646[sizeof("USASCII")]; - char stringpool_str648[sizeof("CSIBM1163")]; - char stringpool_str649[sizeof("ARMSCII8")]; - char stringpool_str650[sizeof("IBM922")]; - char stringpool_str653[sizeof("ISOIR144")]; - char stringpool_str655[sizeof("CSIBM863")]; - char stringpool_str656[sizeof("CSIBM853")]; - char stringpool_str657[sizeof("IBM037")]; - char stringpool_str658[sizeof("UCS4")]; - char stringpool_str660[sizeof("ISOCELTIC")]; - char stringpool_str661[sizeof("ISOIR148")]; - char stringpool_str662[sizeof("CSIBM1047")]; - char stringpool_str665[sizeof("TIS6200")]; - char stringpool_str666[sizeof("ISO646US")]; - char stringpool_str667[sizeof("ISOIR110")]; - char stringpool_str668[sizeof("BIG52003")]; - char stringpool_str669[sizeof("TCVN")]; - char stringpool_str671[sizeof("CSIBM01147")]; - char stringpool_str673[sizeof("ISOIR126")]; - char stringpool_str675[sizeof("ISO646.IRV:1991")]; - char stringpool_str677[sizeof("JP")]; - char stringpool_str678[sizeof("SJIS")]; - char stringpool_str679[sizeof("IBM01149")]; - char stringpool_str681[sizeof("IBM277")]; - char stringpool_str682[sizeof("CHINESE")]; - char stringpool_str683[sizeof("IBMCP1133")]; - char stringpool_str692[sizeof("ISOIR100")]; - char stringpool_str693[sizeof("JAVA")]; - char stringpool_str695[sizeof("IBM1129")]; - char stringpool_str697[sizeof("CSIBM01143")]; - char stringpool_str701[sizeof("MSCYRL")]; - char stringpool_str704[sizeof("EBCDICCPDK")]; - char stringpool_str706[sizeof("IBM932")]; - char stringpool_str707[sizeof("IBM273")]; - char stringpool_str708[sizeof("IBM1097")]; - char stringpool_str712[sizeof("IBM943")]; - char stringpool_str716[sizeof("CSIBM423")]; - char stringpool_str720[sizeof("CSIBM00924")]; - char stringpool_str723[sizeof("ISO646JP")]; - char stringpool_str727[sizeof("ISO10646UCS4")]; - char stringpool_str733[sizeof("MACCYRILLIC")]; - char stringpool_str735[sizeof("ISOIR226")]; - char stringpool_str736[sizeof("IBM297")]; - char stringpool_str737[sizeof("IBM737")]; - char stringpool_str739[sizeof("CSIBM869")]; - char stringpool_str746[sizeof("EBCDICIS871+EURO")]; - char stringpool_str748[sizeof("EBCDICCPSE")]; - char stringpool_str749[sizeof("CSISOLATIN6")]; - char stringpool_str750[sizeof("CSISOLATIN5")]; - char stringpool_str751[sizeof("RK1048")]; - char stringpool_str752[sizeof("CSISOLATIN1")]; - char stringpool_str755[sizeof("CSISOLATINARABIC")]; - char stringpool_str757[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str758[sizeof("UCS2")]; - char stringpool_str759[sizeof("CSIBM037")]; - char stringpool_str760[sizeof("GB18030")]; - char stringpool_str764[sizeof("CSISOLATIN4")]; - char stringpool_str767[sizeof("ISOIR138")]; - char stringpool_str769[sizeof("ISO885916:2001")]; - char stringpool_str777[sizeof("ISO10646UCS2")]; - char stringpool_str781[sizeof("CSIBM01149")]; - char stringpool_str783[sizeof("CSIBM277")]; - char stringpool_str784[sizeof("GB2312")]; - char stringpool_str785[sizeof("ISO88595:1988")]; - char stringpool_str786[sizeof("ISO885915:1998")]; - char stringpool_str790[sizeof("TIS620.25291")]; - char stringpool_str792[sizeof("CSISO58GB231280")]; - char stringpool_str794[sizeof("MACTHAI")]; - char stringpool_str797[sizeof("TCVN57121")]; - char stringpool_str799[sizeof("ISO88594:1988")]; - char stringpool_str800[sizeof("ISO885914:1998")]; - char stringpool_str801[sizeof("UHC")]; - char stringpool_str802[sizeof("HZGB2312")]; - char stringpool_str803[sizeof("ISO88598:1988")]; - char stringpool_str806[sizeof("GB231280")]; - char stringpool_str807[sizeof("EBCDICFI278+EURO")]; - char stringpool_str808[sizeof("CSISO57GB1988")]; - char stringpool_str809[sizeof("CSIBM273")]; - char stringpool_str814[sizeof("CSISOLATIN2")]; - char stringpool_str816[sizeof("ISOIR57")]; - char stringpool_str818[sizeof("GB198880")]; - char stringpool_str819[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str821[sizeof("EBCDICCPNO")]; - char stringpool_str825[sizeof("ISOIR157")]; - char stringpool_str828[sizeof("EBCDICES284+EURO")]; - char stringpool_str830[sizeof("CSISOLATINGREEK")]; - char stringpool_str832[sizeof("SYSTEM1125")]; - char stringpool_str834[sizeof("ISOIR87")]; - char stringpool_str836[sizeof("STRK10482002")]; - char stringpool_str838[sizeof("CSIBM297")]; - char stringpool_str840[sizeof("ROMAN8")]; - char stringpool_str846[sizeof("TIS620.25331")]; - char stringpool_str847[sizeof("ISOIR230")]; - char stringpool_str850[sizeof("TCVN5712")]; - char stringpool_str855[sizeof("JIS0208")]; - char stringpool_str856[sizeof("ARABIC")]; - char stringpool_str857[sizeof("EBCDICCPCH")]; - char stringpool_str859[sizeof("ISO885910:1992")]; - char stringpool_str870[sizeof("CSISOLATIN3")]; - char stringpool_str871[sizeof("TIS620.25330")]; - char stringpool_str873[sizeof("ISO88596:1987")]; - char stringpool_str875[sizeof("MSKANJI")]; - char stringpool_str876[sizeof("ISO88591:1987")]; - char stringpool_str879[sizeof("WINDOWS1256")]; - char stringpool_str880[sizeof("WINDOWS1255")]; - char stringpool_str882[sizeof("WINDOWS1251")]; - char stringpool_str887[sizeof("JISX0201")]; - char stringpool_str889[sizeof("ISOIR127")]; - char stringpool_str894[sizeof("WINDOWS1254")]; - char stringpool_str898[sizeof("WINDOWS1258")]; - char stringpool_str905[sizeof("ISO88593:1988")]; - char stringpool_str907[sizeof("WINDOWS1250")]; - char stringpool_str909[sizeof("UCS4LE")]; - char stringpool_str911[sizeof("ELOT928")]; - char stringpool_str914[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str917[sizeof("EBCDICSE278+EURO")]; - char stringpool_str919[sizeof("JISX0208")]; - char stringpool_str921[sizeof("EBCDICDK277+EURO")]; - char stringpool_str925[sizeof("CSMACINTOSH")]; - char stringpool_str926[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str927[sizeof("EBCDICCPHE")]; - char stringpool_str928[sizeof("SDECKANJI")]; - char stringpool_str929[sizeof("EUCCN")]; - char stringpool_str935[sizeof("ISOIR159")]; - char stringpool_str937[sizeof("ISO2022JP")]; - char stringpool_str938[sizeof("ISO88592:1987")]; - char stringpool_str940[sizeof("ISOIR203")]; - char stringpool_str944[sizeof("WINDOWS1252")]; - char stringpool_str946[sizeof("ISO2022JP1")]; - char stringpool_str949[sizeof("ISOIR149")]; - char stringpool_str956[sizeof("IBMTHAI")]; - char stringpool_str957[sizeof("CSHPROMAN8")]; - char stringpool_str959[sizeof("UCS2LE")]; - char stringpool_str962[sizeof("ISOIR109")]; - char stringpool_str963[sizeof("TIS620.2533")]; - char stringpool_str966[sizeof("WINDOWS874")]; - char stringpool_str969[sizeof("EBCDICDE273+EURO")]; - char stringpool_str970[sizeof("ISO2022CNEXT")]; - char stringpool_str973[sizeof("MACARABIC")]; - char stringpool_str978[sizeof("CSISO14JISC6220RO")]; - char stringpool_str981[sizeof("ISO88597:1987")]; - char stringpool_str985[sizeof("CSISO87JISX0208")]; - char stringpool_str986[sizeof("JISX0212")]; + char stringpool_str618[sizeof("IBM423")]; + char stringpool_str619[sizeof("IBM1137")]; + char stringpool_str620[sizeof("IBM922")]; + char stringpool_str621[sizeof("CSWINDOWS1253")]; + char stringpool_str623[sizeof("SYSTEM1125")]; + char stringpool_str626[sizeof("IBM437")]; + char stringpool_str627[sizeof("MACTHAI")]; + char stringpool_str628[sizeof("EBCDICCPBE")]; + char stringpool_str630[sizeof("IBM277")]; + char stringpool_str634[sizeof("ISOIR6")]; + char stringpool_str636[sizeof("CSIBM1163")]; + char stringpool_str638[sizeof("IBM037")]; + char stringpool_str640[sizeof("ISOIR166")]; + char stringpool_str642[sizeof("ISOIR165")]; + char stringpool_str645[sizeof("CSIBM863")]; + char stringpool_str646[sizeof("CSIBM853")]; + char stringpool_str647[sizeof("TCVN57121")]; + char stringpool_str650[sizeof("IBM869")]; + char stringpool_str654[sizeof("IBM819")]; + char stringpool_str657[sizeof("IBM1149")]; + char stringpool_str661[sizeof("BIG52003")]; + char stringpool_str663[sizeof("XMACTHAI")]; + char stringpool_str664[sizeof("HZGB2312")]; + char stringpool_str665[sizeof("TIS620.25291")]; + char stringpool_str666[sizeof("R8")]; + char stringpool_str667[sizeof("GBK")]; + char stringpool_str669[sizeof("US")]; + char stringpool_str671[sizeof("ISOIR14")]; + char stringpool_str672[sizeof("ISOIR58")]; + char stringpool_str674[sizeof("USASCII")]; + char stringpool_str675[sizeof("EBCDICDK277+EURO")]; + char stringpool_str676[sizeof("ISOIR101")]; + char stringpool_str677[sizeof("CSIBM00924")]; + char stringpool_str678[sizeof("ARMSCII8")]; + char stringpool_str681[sizeof("CSIBM01143")]; + char stringpool_str685[sizeof("ISO646.IRV:1991")]; + char stringpool_str686[sizeof("IBM01149")]; + char stringpool_str687[sizeof("IBM1097")]; + char stringpool_str688[sizeof("ISOIR144")]; + char stringpool_str691[sizeof("ISO646US")]; + char stringpool_str692[sizeof("ISOIR148")]; + char stringpool_str693[sizeof("ISO2022CNEXT")]; + char stringpool_str696[sizeof("TCVN5712")]; + char stringpool_str698[sizeof("ISOIR126")]; + char stringpool_str699[sizeof("IBM1129")]; + char stringpool_str700[sizeof("ISOIR110")]; + char stringpool_str701[sizeof("CSIBM423")]; + char stringpool_str703[sizeof("UCS4")]; + char stringpool_str704[sizeof("IBM932")]; + char stringpool_str705[sizeof("IBMCP1133")]; + char stringpool_str706[sizeof("IBM273")]; + char stringpool_str709[sizeof("L6")]; + char stringpool_str711[sizeof("L5")]; + char stringpool_str712[sizeof("IBM297")]; + char stringpool_str713[sizeof("CSIBM277")]; + char stringpool_str714[sizeof("IBM737")]; + char stringpool_str717[sizeof("L1")]; + char stringpool_str719[sizeof("CSISO58GB231280")]; + char stringpool_str720[sizeof("ROMAN8")]; + char stringpool_str721[sizeof("CSIBM037")]; + char stringpool_str722[sizeof("EUCCN")]; + char stringpool_str724[sizeof("ISOIR100")]; + char stringpool_str733[sizeof("CSIBM869")]; + char stringpool_str736[sizeof("LATIN6")]; + char stringpool_str738[sizeof("LATIN5")]; + char stringpool_str739[sizeof("CSISO57GB1988")]; + char stringpool_str740[sizeof("SJIS")]; + char stringpool_str741[sizeof("L4")]; + char stringpool_str742[sizeof("L10")]; + char stringpool_str743[sizeof("ISO10646UCS4")]; + char stringpool_str744[sizeof("LATIN1")]; + char stringpool_str745[sizeof("L8")]; + char stringpool_str746[sizeof("IBM943")]; + char stringpool_str748[sizeof("MACINTOSH")]; + char stringpool_str749[sizeof("TIS620.25331")]; + char stringpool_str751[sizeof("UHC")]; + char stringpool_str752[sizeof("ISOIR226")]; + char stringpool_str754[sizeof("JP")]; + char stringpool_str758[sizeof("JAVA")]; + char stringpool_str760[sizeof("STRK10482002")]; + char stringpool_str768[sizeof("LATIN4")]; + char stringpool_str769[sizeof("CSIBM01149")]; + char stringpool_str772[sizeof("LATIN8")]; + char stringpool_str773[sizeof("TIS620.25330")]; + char stringpool_str776[sizeof("ISO646JP")]; + char stringpool_str785[sizeof("ISO10646UCS2")]; + char stringpool_str787[sizeof("UCS2")]; + char stringpool_str789[sizeof("CSIBM273")]; + char stringpool_str794[sizeof("IBMTHAI")]; + char stringpool_str795[sizeof("CSIBM297")]; + char stringpool_str797[sizeof("LATIN10")]; + char stringpool_str802[sizeof("UNICODE11")]; + char stringpool_str806[sizeof("RK1048")]; + char stringpool_str813[sizeof("CSHPROMAN8")]; + char stringpool_str818[sizeof("ISOIR138")]; + char stringpool_str823[sizeof("GB18030")]; + char stringpool_str825[sizeof("L2")]; + char stringpool_str827[sizeof("CSISO14JISC6220RO")]; + char stringpool_str840[sizeof("GB2312")]; + char stringpool_str844[sizeof("ISOIR57")]; + char stringpool_str847[sizeof("MSKANJI")]; + char stringpool_str849[sizeof("ISOIR157")]; + char stringpool_str852[sizeof("LATIN2")]; + char stringpool_str857[sizeof("EBCDICINTERNATIONAL500+EURO")]; + char stringpool_str858[sizeof("GB231280")]; + char stringpool_str861[sizeof("ISOIR87")]; + char stringpool_str868[sizeof("MACROMANIA")]; + char stringpool_str871[sizeof("MACROMAN")]; + char stringpool_str876[sizeof("GB198880")]; + char stringpool_str877[sizeof("CSIBMTHAI")]; + char stringpool_str881[sizeof("XMACICELANDIC")]; + char stringpool_str882[sizeof("DECKOREAN")]; + char stringpool_str883[sizeof("WINDOWS1256")]; + char stringpool_str884[sizeof("WINDOWS1255")]; + char stringpool_str886[sizeof("TIS620.2533")]; + char stringpool_str887[sizeof("WINDOWS1251")]; + char stringpool_str889[sizeof("EBCDICIT280+EURO")]; + char stringpool_str892[sizeof("ISOIR230")]; + char stringpool_str893[sizeof("JIS0208")]; + char stringpool_str894[sizeof("ARABIC")]; + char stringpool_str899[sizeof("WINDOWS1254")]; + char stringpool_str901[sizeof("WINDOWS1258")]; + char stringpool_str904[sizeof("TACTIS")]; + char stringpool_str906[sizeof("ISOIR127")]; + char stringpool_str907[sizeof("JISX0201")]; + char stringpool_str910[sizeof("XMACROMANIAN")]; + char stringpool_str911[sizeof("WINDOWS1250")]; + char stringpool_str914[sizeof("SDECKANJI")]; + char stringpool_str917[sizeof("L7")]; + char stringpool_str918[sizeof("CSISO87JISX0208")]; + char stringpool_str929[sizeof("DECKANJI")]; + char stringpool_str932[sizeof("MSGREEK")]; + char stringpool_str935[sizeof("JISX0208")]; + char stringpool_str941[sizeof("WINDOWS1252")]; + char stringpool_str943[sizeof("CNGBISOIR165")]; + char stringpool_str944[sizeof("LATIN7")]; + char stringpool_str950[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str951[sizeof("MACICELAND")]; + char stringpool_str953[sizeof("EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE")]; + char stringpool_str960[sizeof("CSISO2022KR")]; + char stringpool_str963[sizeof("ISO2022JP")]; + char stringpool_str964[sizeof("ISO2022JP1")]; + char stringpool_str965[sizeof("NEXTSTEP")]; + char stringpool_str966[sizeof("ISO885916:2001")]; + char stringpool_str968[sizeof("EBCDICCYRILLIC")]; + char stringpool_str971[sizeof("JISX0212.19900")]; + char stringpool_str973[sizeof("WINDOWS874")]; + char stringpool_str975[sizeof("UCS4BE")]; + char stringpool_str979[sizeof("IBMEUCCN")]; + char stringpool_str980[sizeof("ISO88595:1988")]; + char stringpool_str981[sizeof("ISO885915:1998")]; + char stringpool_str984[sizeof("CSISO2022JP")]; char stringpool_str987[sizeof("WINDOWS1257")]; - char stringpool_str989[sizeof("TACTIS")]; - char stringpool_str995[sizeof("JISX0212.19900")]; - char stringpool_str996[sizeof("EBCDICNO277+EURO")]; - char stringpool_str999[sizeof("MULELAO1")]; - char stringpool_str1000[sizeof("WINDOWS1253")]; - char stringpool_str1004[sizeof("EBCDICCPBE")]; - char stringpool_str1019[sizeof("MACROMANIA")]; - char stringpool_str1023[sizeof("ISO2022JP2004")]; - char stringpool_str1029[sizeof("WINDOWS950")]; - char stringpool_str1030[sizeof("ISO2022JPMS")]; - char stringpool_str1035[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str1038[sizeof("CSISO2022KR")]; - char stringpool_str1039[sizeof("CSISO159JISX02121990")]; - char stringpool_str1042[sizeof("ISOIR179")]; - char stringpool_str1043[sizeof("CSISOLATINHEBREW")]; - char stringpool_str1046[sizeof("DECKANJI")]; - char stringpool_str1048[sizeof("UNICODE11")]; - char stringpool_str1056[sizeof("ISO88597:2003")]; - char stringpool_str1058[sizeof("CSIBMTHAI")]; - char stringpool_str1061[sizeof("CSISO2022JP")]; - char stringpool_str1064[sizeof("JISX02011976")]; - char stringpool_str1066[sizeof("ATARI")]; - char stringpool_str1068[sizeof("EBCDICCYRILLIC")]; - char stringpool_str1070[sizeof("ISO2022JP2")]; - char stringpool_str1071[sizeof("GREEK8")]; - char stringpool_str1078[sizeof("BIG5HKSCS:2001")]; - char stringpool_str1082[sizeof("MACROMAN")]; - char stringpool_str1084[sizeof("CNGBISOIR165")]; - char stringpool_str1090[sizeof("BIG5HKSCS:2004")]; - char stringpool_str1091[sizeof("ISO88599:1989")]; - char stringpool_str1092[sizeof("MSGREEK")]; - char stringpool_str1093[sizeof("WINDOWS936")]; - char stringpool_str1094[sizeof("BIG5HKSCS:2008")]; - char stringpool_str1097[sizeof("ISOIR199")]; - char stringpool_str1101[sizeof("EBCDICCPUS")]; - char stringpool_str1102[sizeof("EBCDICLATIN9EURO")]; - char stringpool_str1104[sizeof("GREEK")]; - char stringpool_str1108[sizeof("JISX02081990")]; - char stringpool_str1110[sizeof("UTF16")]; - char stringpool_str1124[sizeof("CSISO2022JP2")]; - char stringpool_str1129[sizeof("JISX02121990")]; - char stringpool_str1134[sizeof("JISC62261983")]; - char stringpool_str1139[sizeof("UTF8")]; - char stringpool_str1142[sizeof("CPGR")]; - char stringpool_str1157[sizeof("UCS4SWAPPED")]; - char stringpool_str1161[sizeof("UCS4BE")]; - char stringpool_str1162[sizeof("JISC62201969RO")]; - char stringpool_str1177[sizeof("EBCDICIT280+EURO")]; - char stringpool_str1182[sizeof("ISO2022JP3")]; - char stringpool_str1184[sizeof("MACINTOSH")]; - char stringpool_str1193[sizeof("KOI8T")]; - char stringpool_str1197[sizeof("EBCDICGB285+EURO")]; - char stringpool_str1199[sizeof("MSARAB")]; - char stringpool_str1201[sizeof("JISX02081983")]; - char stringpool_str1204[sizeof("IBMEUCCN")]; - char stringpool_str1207[sizeof("UCS2SWAPPED")]; - char stringpool_str1211[sizeof("UCS2BE")]; - char stringpool_str1225[sizeof("RISCOSLATIN1")]; - char stringpool_str1238[sizeof("BIG5HKSCS:1999")]; - char stringpool_str1248[sizeof("EBCDICCPGB")]; - char stringpool_str1284[sizeof("DECKOREAN")]; - char stringpool_str1295[sizeof("CSKOI8R")]; - char stringpool_str1302[sizeof("EBCDICCPROECE")]; - char stringpool_str1311[sizeof("GEORGIANPS")]; - char stringpool_str1314[sizeof("EBCDICINTERNATIONAL500+EURO")]; - char stringpool_str1317[sizeof("UTF7")]; - char stringpool_str1320[sizeof("JOHAB")]; - char stringpool_str1330[sizeof("GEORGIANACADEMY")]; - char stringpool_str1337[sizeof("NEXTSTEP")]; - char stringpool_str1341[sizeof("MACGREEK")]; - char stringpool_str1343[sizeof("GB18030:2005")]; - char stringpool_str1358[sizeof("UTF32")]; - char stringpool_str1359[sizeof("KOI8R")]; - char stringpool_str1370[sizeof("SHIFTJIS")]; - char stringpool_str1376[sizeof("UTF16LE")]; - char stringpool_str1383[sizeof("CSSHIFTJIS")]; - char stringpool_str1401[sizeof("MACCROATIAN")]; - char stringpool_str1407[sizeof("GB18030:2022")]; - char stringpool_str1418[sizeof("EUCJP")]; - char stringpool_str1419[sizeof("EBCDICFR297+EURO")]; - char stringpool_str1422[sizeof("TCVN57121:1993")]; - char stringpool_str1439[sizeof("MSTURK")]; - char stringpool_str1446[sizeof("EBCDICCPIT")]; - char stringpool_str1450[sizeof("EBCDICUS37+EURO")]; - char stringpool_str1451[sizeof("KOI8U")]; - char stringpool_str1468[sizeof("ISO2022KR")]; - char stringpool_str1492[sizeof("SHIFTJIS2004")]; - char stringpool_str1524[sizeof("EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE")]; - char stringpool_str1536[sizeof("MACCENTRALEUROPE")]; - char stringpool_str1559[sizeof("UTF32LE")]; - char stringpool_str1592[sizeof("SHIFTJISX0213")]; - char stringpool_str1593[sizeof("EUCJIS2004")]; - char stringpool_str1600[sizeof("HEBREW")]; - char stringpool_str1617[sizeof("EBCDICGREEK")]; - char stringpool_str1620[sizeof("MSHEBR")]; - char stringpool_str1627[sizeof("EBCDICCPFR")]; - char stringpool_str1628[sizeof("UTF16BE")]; - char stringpool_str1651[sizeof("UNICODELITTLE")]; - char stringpool_str1693[sizeof("IBMEUCJP")]; - char stringpool_str1699[sizeof("CSEUCTW")]; - char stringpool_str1711[sizeof("DECHANYU")]; - char stringpool_str1715[sizeof("EBCDICCPYU")]; - char stringpool_str1718[sizeof("EUCJISX0213")]; - char stringpool_str1731[sizeof("MACUKRAINE")]; - char stringpool_str1735[sizeof("EBCDICCPWT")]; - char stringpool_str1765[sizeof("UNICODE11UTF7")]; - char stringpool_str1777[sizeof("UNICODEBIG")]; - char stringpool_str1810[sizeof("EUCTW")]; - char stringpool_str1811[sizeof("UTF32BE")]; - char stringpool_str1823[sizeof("WINBALTRIM")]; - char stringpool_str1838[sizeof("CSEUCKR")]; - char stringpool_str1850[sizeof("EBCDICCPGR")]; - char stringpool_str1867[sizeof("KOKR.JOHAP92")]; - char stringpool_str1949[sizeof("EUCKR")]; - char stringpool_str1968[sizeof("MACHEBREW")]; - char stringpool_str2011[sizeof("UCS4INTERNAL")]; - char stringpool_str2014[sizeof("KOI8RU")]; - char stringpool_str2026[sizeof("ATARIST")]; - char stringpool_str2061[sizeof("UCS2INTERNAL")]; - char stringpool_str2085[sizeof("IBMEUCTW")]; - char stringpool_str2086[sizeof("EBCDICCPTR")]; - char stringpool_str2223[sizeof("MACTURKISH")]; - char stringpool_str2224[sizeof("IBMEUCKR")]; + char stringpool_str990[sizeof("MACARABIC")]; + char stringpool_str991[sizeof("JISX0212")]; + char stringpool_str993[sizeof("L3")]; + char stringpool_str995[sizeof("ISO88594:1988")]; + char stringpool_str996[sizeof("ISO885914:1998")]; + char stringpool_str997[sizeof("ISO88598:1988")]; + char stringpool_str1002[sizeof("CSISO159JISX02121990")]; + char stringpool_str1006[sizeof("ISOIR203")]; + char stringpool_str1009[sizeof("EBCDICCPUS")]; + char stringpool_str1013[sizeof("ISOIR159")]; + char stringpool_str1015[sizeof("EBCDICGB285+EURO")]; + char stringpool_str1016[sizeof("EBCDICCPROECE")]; + char stringpool_str1017[sizeof("UCS2BE")]; + char stringpool_str1020[sizeof("LATIN3")]; + char stringpool_str1025[sizeof("WINDOWS1253")]; + char stringpool_str1026[sizeof("XMACARABIC")]; + char stringpool_str1028[sizeof("ISOIR149")]; + char stringpool_str1033[sizeof("ISO2022JP2004")]; + char stringpool_str1034[sizeof("KOI8T")]; + char stringpool_str1035[sizeof("CSISO2022JP2")]; + char stringpool_str1038[sizeof("ISO2022JPMS")]; + char stringpool_str1040[sizeof("ISOIR109")]; + char stringpool_str1048[sizeof("ISO885910:1992")]; + char stringpool_str1062[sizeof("WINDOWS950")]; + char stringpool_str1065[sizeof("ISO88596:1987")]; + char stringpool_str1069[sizeof("ISO88591:1987")]; + char stringpool_str1072[sizeof("ISO2022JP2")]; + char stringpool_str1085[sizeof("ATARI")]; + char stringpool_str1096[sizeof("GREEK8")]; + char stringpool_str1097[sizeof("JISX02011976")]; + char stringpool_str1108[sizeof("LATIN9")]; + char stringpool_str1111[sizeof("JISC62201969RO")]; + char stringpool_str1116[sizeof("ISOIR179")]; + char stringpool_str1121[sizeof("ISO88593:1988")]; + char stringpool_str1122[sizeof("UTF16")]; + char stringpool_str1123[sizeof("ISO88592:1987")]; + char stringpool_str1139[sizeof("JISX02081990")]; + char stringpool_str1147[sizeof("WINDOWS936")]; + char stringpool_str1150[sizeof("UCS4SWAPPED")]; + char stringpool_str1151[sizeof("GREEK")]; + char stringpool_str1153[sizeof("UTF8")]; + char stringpool_str1155[sizeof("JISX02121990")]; + char stringpool_str1167[sizeof("BIG5HKSCS:2001")]; + char stringpool_str1168[sizeof("EBCDICCPGB")]; + char stringpool_str1169[sizeof("ISO88597:1987")]; + char stringpool_str1178[sizeof("ISOCELTIC")]; + char stringpool_str1179[sizeof("BIG5HKSCS:2004")]; + char stringpool_str1181[sizeof("BIG5HKSCS:2008")]; + char stringpool_str1189[sizeof("CSPC775BALTIC")]; + char stringpool_str1192[sizeof("UCS2SWAPPED")]; + char stringpool_str1196[sizeof("JISC62261983")]; + char stringpool_str1198[sizeof("ISOIR199")]; + char stringpool_str1214[sizeof("CSISOLATIN6")]; + char stringpool_str1215[sizeof("CSISOLATIN5")]; + char stringpool_str1218[sizeof("CSISOLATIN1")]; + char stringpool_str1219[sizeof("CSISOLATINARABIC")]; + char stringpool_str1221[sizeof("CSISOLATINCYRILLIC")]; + char stringpool_str1228[sizeof("MACCROATIAN")]; + char stringpool_str1229[sizeof("MSARAB")]; + char stringpool_str1230[sizeof("CSISOLATIN4")]; + char stringpool_str1234[sizeof("EBCDICCPIT")]; + char stringpool_str1240[sizeof("ISO2022JP3")]; + char stringpool_str1252[sizeof("EBCDICFR297+EURO")]; + char stringpool_str1253[sizeof("JISX02081983")]; + char stringpool_str1257[sizeof("MACGREEK")]; + char stringpool_str1258[sizeof("XMACCROATIAN")]; + char stringpool_str1261[sizeof("ISO88597:2003")]; + char stringpool_str1268[sizeof("CPGR")]; + char stringpool_str1272[sizeof("CSISOLATIN2")]; + char stringpool_str1279[sizeof("EBCDICUS37+EURO")]; + char stringpool_str1282[sizeof("JOHAB")]; + char stringpool_str1284[sizeof("SHIFTJIS")]; + char stringpool_str1286[sizeof("CSSHIFTJIS")]; + char stringpool_str1293[sizeof("XMACGREEK")]; + char stringpool_str1308[sizeof("CSKOI8R")]; + char stringpool_str1310[sizeof("CSISOLATINGREEK")]; + char stringpool_str1321[sizeof("GEORGIANPS")]; + char stringpool_str1325[sizeof("UTF7")]; + char stringpool_str1326[sizeof("GEORGIANACADEMY")]; + char stringpool_str1333[sizeof("ISO88599:1989")]; + char stringpool_str1349[sizeof("BIG5HKSCS:1999")]; + char stringpool_str1356[sizeof("CSISOLATIN3")]; + char stringpool_str1376[sizeof("UTF32")]; + char stringpool_str1390[sizeof("SHIFTJIS2004")]; + char stringpool_str1398[sizeof("KOI8R")]; + char stringpool_str1405[sizeof("EBCDICGREEK")]; + char stringpool_str1410[sizeof("UTF16BE")]; + char stringpool_str1424[sizeof("CYRILLIC")]; + char stringpool_str1428[sizeof("UCS4LE")]; + char stringpool_str1440[sizeof("EUCJP")]; + char stringpool_str1452[sizeof("CYRILLICASIAN")]; + char stringpool_str1456[sizeof("ELOT928")]; + char stringpool_str1470[sizeof("UCS2LE")]; + char stringpool_str1475[sizeof("HEBREW")]; + char stringpool_str1476[sizeof("KOI8U")]; + char stringpool_str1500[sizeof("SHIFTJISX0213")]; + char stringpool_str1511[sizeof("TCVN57121:1993")]; + char stringpool_str1518[sizeof("DECHANYU")]; + char stringpool_str1520[sizeof("MULELAO1")]; + char stringpool_str1526[sizeof("EBCDICLATIN9EURO")]; + char stringpool_str1539[sizeof("MACUKRAINE")]; + char stringpool_str1559[sizeof("ISO2022KR")]; + char stringpool_str1562[sizeof("XMACUKRAINIAN")]; + char stringpool_str1566[sizeof("MSTURK")]; + char stringpool_str1573[sizeof("UNICODE11UTF7")]; + char stringpool_str1575[sizeof("EUCJIS2004")]; + char stringpool_str1583[sizeof("CSISOLATINHEBREW")]; + char stringpool_str1598[sizeof("EBCDICCPWT")]; + char stringpool_str1606[sizeof("UTF32BE")]; + char stringpool_str1608[sizeof("GB18030:2005")]; + char stringpool_str1611[sizeof("EBCDICCPFR")]; + char stringpool_str1613[sizeof("MSHEBR")]; + char stringpool_str1615[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str1617[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str1665[sizeof("GB18030:2022")]; + char stringpool_str1675[sizeof("KOKR.JOHAP92")]; + char stringpool_str1678[sizeof("EBCDICCPYU")]; + char stringpool_str1681[sizeof("UNICODEBIG")]; + char stringpool_str1697[sizeof("IBMEUCJP")]; + char stringpool_str1703[sizeof("EUCJISX0213")]; + char stringpool_str1773[sizeof("EBCDICCPNL")]; + char stringpool_str1819[sizeof("MACHEBREW")]; + char stringpool_str1830[sizeof("RISCOSLATIN1")]; + char stringpool_str1848[sizeof("CSEUCTW")]; + char stringpool_str1855[sizeof("XMACHEBREW")]; + char stringpool_str1862[sizeof("EUCTW")]; + char stringpool_str1863[sizeof("UTF16LE")]; + char stringpool_str1916[sizeof("EBCDICCPGR")]; + char stringpool_str1939[sizeof("MACCENTRALEUROPE")]; + char stringpool_str1963[sizeof("UNICODELITTLE")]; + char stringpool_str1979[sizeof("ATARIST")]; + char stringpool_str2022[sizeof("CSEUCKR")]; + char stringpool_str2036[sizeof("EUCKR")]; + char stringpool_str2044[sizeof("EBCDICCPTR")]; + char stringpool_str2047[sizeof("XMACTURKISH")]; + char stringpool_str2059[sizeof("UTF32LE")]; + char stringpool_str2092[sizeof("MACTURKISH")]; + char stringpool_str2105[sizeof("KOI8RU")]; + char stringpool_str2119[sizeof("IBMEUCTW")]; + char stringpool_str2131[sizeof("MSCYRL")]; + char stringpool_str2142[sizeof("MACCYRILLIC")]; + char stringpool_str2178[sizeof("XMACCYRILLIC")]; + char stringpool_str2228[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str2293[sizeof("IBMEUCKR")]; + char stringpool_str2526[sizeof("UCS4INTERNAL")]; + char stringpool_str2568[sizeof("UCS2INTERNAL")]; + char stringpool_str2577[sizeof("WINBALTRIM")]; }; static const struct stringpool_t stringpool_contents = { - "L6", - "L5", - "L1", + "CSASCII", + "CSVISCII", + "ASCII", "CPIS", "5601", "1125", "646", - "ASCII", "866", "865", "855", "861", - "CSASCII", "VISCII", - "CSVISCII", - "L4", - "L10", "CP285", - "858", - "L8", - "860", - "850", - "CP01146", + "CN", "CSUCS4", + "CP01146", + "858", "CP01145", - "CYRILLIC", "CP01141", + "VISCII1.11", + "860", + "850", + "ISO646CN", + "ECMA114", "CP01144", - "PCK", + "ECMA118", + "CP01148", "862", "852", - "CP01148", - "VISCII1.11", + "HZ", "MAC", - "CP01140", - "LATIN6", - "LATIN5", "CSKZ1048", - "LATIN1", - "857", + "CP01140", + "ANSI1251", + "PCK", + "MSANSI", "X0201", - "L2", - "KSC5601", - "863", - "853", - "LATIN4", - "CP1250", "CCSID01146", + "MSEE", "CCSID01145", - "LATIN8", "CCSID01141", - "CYRILLICASIAN", + "857", + "CP1250", + "HP15CN", + "CSUNICODE11", + "KSC5601", "X0208", - "CN", + "CSUNICODE", + "CSPC8CODEPAGE1146", "CCSID01144", - "KZ1048", - "LATIN10", - "HZ", - "CP01142", - "CP870", - "869", - "CCSID01148", "CSPCP852", + "CCSID01148", + "CHINESE", "CSKSC56011987", - "ECMA114", - "MSANSI", - "ANSI1251", - "ECMA118", + "CP01142", + "CSPC8CODEPAGE1144", + "XMACCE", + "863", + "853", "CCSID01140", - "ISO646CN", - "L7", - "MS936", + "CP870", + "KZ1048", + "KOREAN", + "DECHANZI", "X0212", + "869", + "ASMO708", + "DOS862", + "MS936", "ISO88596", + "CCSID01142", "ISO88595", - "ISO88591", "ISO885916", - "LATIN2", + "CSUNICODE11UTF7", "ISO885915", - "437", - "L3", + "ISO88591", + "CSPC8CODEPAGE437", "ISO885911", - "CSBIG5", - "ISO88594", - "BIG5", + "ISO2022CN", "CP01147", + "CSISO2022CN", + "BIG5", + "ISO88594", + "HPROMAN8", + "437", "ISO88598", "ISO885914", - "CCSID01142", "IBM1166", "IBM1156", "IBM1165", "IBM1155", - "CP01143", "IBM1161", "IBM866", "IBM856", "IBM865", "IBM855", - "ISO885910", - "IBM861", "IBM1146", + "IBM861", "IBM1145", + "ISO885910", "IBM1141", - "CP00924", "IBM1164", "IBM1154", - "ASMO708", - "IBM864", "IBM1158", "IBM1046", - "C99", - "LATIN7", - "IBM1144", - "IBM858", + "IBM864", "IBM01146", + "IBM858", "IBM01145", + "IBM1144", + "CP00924", "IBM1148", "IBM01141", + "CP01143", + "CCSID01147", "IBM1160", - "CNBIG5", - "MSEE", - "CCSID853", + "CSBIG5", + "BIGFIVE", + "IBM1125", + "CNS11643", "IBM860", "IBM850", - "IBM1125", - "LATIN3", "IBM425", + "IBM285", "IBM1140", + "EBCDICCPIS", + "CNBIG5", + "IBM16804", "IBM500", - "IBM285", - "CCSID01147", - "ISO88592", "IBM01144", - "IBM16804", - "IBM880", - "CSPC8CODEPAGE1146", - "HP15CN", + "ISO88592", "IBM01148", - "CP01149", "IBM1026", + "IBM880", "IBM1025", - "CNS11643", + "EBCDICCPCA", + "EBCDICCPFI", + "EBCDICCPES", "IBM1124", - "IBM424", - "CSPC8CODEPAGE1144", - "CCSID01143", - "IBM284", - "IBM01140", "CSIBM1161", "CSIBM866", "CSIBM865", "CSIBM855", - "IBM00858", + "CCSID853", + "IBM424", + "IBM284", "CSIBM861", + "IBM01140", + "IBM00858", + "EBCDICCPSE", + "C99", "IBM875", - "IBM871", - "CCSID00924", - "IBM1131", - "IBM280", "IBM1162", - "XMACCE", "IBM1112", + "IBM871", + "IBM280", + "CSIBM864", "IBM862", "IBM852", - "CSIBM864", - "ISO2022CN", - "IBM1142", - "CSUNICODE11", + "CCSID00924", "CSIBM858", - "LATIN9", "CSIBM01145", + "CCSID01143", + "IBM1142", "CSIBM01141", - "KSC56011987", - "ISO88597", - "CSIBM860", - "IBM838", + "CP01149", "CSIBM1125", - "IBM870", - "MACICELAND", - "CSIBM500", + "EBCDICCPNO", + "CSIBM860", + "IBM1131", "CSIBM285", - "IBM1130", + "ANSIX3.41986", + "CSIBM500", "IBM01142", - "IBM905", - "CSIBM880", - "CCSID01149", - "CSISO2022CN", - "ISO88593", "CSIBM01148", - "DECHANZI", - "CSPC8CODEPAGE437", "CSIBM1026", + "CSIBM880", + "BIG5HKSCS", + "IBM870", + "ISO88597", "IBM1252", - "EBCDICCPIS", + "ANSIX3.41968", "IBM1122", - "ISO885913", - "IBM278", + "KSC56011987", "CSIBM424", - "IBM282", "CSIBM284", - "EBCDICCPCA", - "IBM775", + "IBM282", "CSIBM01140", - "EBCDICCPFI", - "KSC56011989", - "IBM1157", - "IBM921", + "EBCDICCPHE", + "IBM838", + "IBM278", + "EBCDICES284+EURO", + "IBM1130", + "CSIBM1162", + "IBM775", "CSIBM871", - "IBM857", - "KOREAN", "CSIBM280", - "IBM1147", - "CSIBM1162", + "IBM905", + "IBM1157", + "CSWINDOWS1256", + "CSWINDOWS1255", + "CSWINDOWS1251", + "TCVN", + "IBM857", + "CCSID01149", + "EBCDICIS871+EURO", "PT154", - "ANSIX3.41986", + "IBM1147", + "CSWINDOWS1254", + "CSWINDOWS1258", + "CSPTCP154", + "EBCDICCPCH", + "PTCP154", + "CSWINDOWS1250", + "CSWINDOWS874", + "TDS565", + "IBM921", + "CSIBM01142", + "ISO88593", + "IBM1047", + "ISO885913", + "CSIBM870", + "IBM01147", + "IBM1132", + "CNGB", + "KSC56011989", + "IBM924", + "CSWINDOWS1252", + "CSIBM278", + "EBCDICFI278+EURO", + "EBCDICSE278+EURO", + "IBM12712", "IBM1163", "IBM1153", - "CSPC775BALTIC", - "IBM924", + "CSIBM905", "IBM863", "IBM853", - "IBM1132", - "PTCP154", - "ANSIX3.41968", - "CSUNICODE11UTF7", - "IBM1047", + "TIS620", "IBM1143", - "CSUNICODE", - "TDS565", - "HPROMAN8", - "CSPTCP154", - "BIG5HKSCS", - "IBM01147", - "BIGFIVE", - "ISO88599", - "CSIBM870", - "CSIBM01142", - "CSIBM905", - "GBK", + "CSIBM857", + "EBCDICNO277+EURO", "IBM4971", - "EBCDICCPNL", - "ISOIR6", + "EBCDICCPDK", + "CSGB2312", + "CSWINDOWS1257", + "CSMACINTOSH", + "IBM00924", + "TIS6200", "IBM01143", - "CSIBM278", + "EBCDICDE273+EURO", + "CSIBM1047", + "ISO88599", + "CSIBM01147", + "IBM367", + "IBM1123", + "IBM423", + "IBM1137", + "IBM922", + "CSWINDOWS1253", + "SYSTEM1125", + "IBM437", + "MACTHAI", + "EBCDICCPBE", + "IBM277", + "ISOIR6", + "CSIBM1163", + "IBM037", "ISOIR166", "ISOIR165", - "IBM1123", + "CSIBM863", + "CSIBM853", + "TCVN57121", + "IBM869", + "IBM819", + "IBM1149", + "BIG52003", + "XMACTHAI", + "HZGB2312", + "TIS620.25291", "R8", - "IBM12712", - "IBM423", - "IBM00924", + "GBK", "US", - "CNGB", - "EBCDICCPES", - "CSGB2312", - "IBM367", - "CSIBM857", - "TIS620", "ISOIR14", - "IBM869", "ISOIR58", - "IBM819", - "IBM1137", - "ISOIR101", - "IBM437", - "IBM1149", "USASCII", - "CSIBM1163", + "EBCDICDK277+EURO", + "ISOIR101", + "CSIBM00924", "ARMSCII8", - "IBM922", + "CSIBM01143", + "ISO646.IRV:1991", + "IBM01149", + "IBM1097", "ISOIR144", - "CSIBM863", - "CSIBM853", - "IBM037", - "UCS4", - "ISOCELTIC", - "ISOIR148", - "CSIBM1047", - "TIS6200", "ISO646US", - "ISOIR110", - "BIG52003", - "TCVN", - "CSIBM01147", + "ISOIR148", + "ISO2022CNEXT", + "TCVN5712", "ISOIR126", - "ISO646.IRV:1991", - "JP", - "SJIS", - "IBM01149", - "IBM277", - "CHINESE", - "IBMCP1133", - "ISOIR100", - "JAVA", "IBM1129", - "CSIBM01143", - "MSCYRL", - "EBCDICCPDK", + "ISOIR110", + "CSIBM423", + "UCS4", "IBM932", + "IBMCP1133", "IBM273", - "IBM1097", - "IBM943", - "CSIBM423", - "CSIBM00924", - "ISO646JP", - "ISO10646UCS4", - "MACCYRILLIC", - "ISOIR226", + "L6", + "L5", "IBM297", + "CSIBM277", "IBM737", + "L1", + "CSISO58GB231280", + "ROMAN8", + "CSIBM037", + "EUCCN", + "ISOIR100", "CSIBM869", - "EBCDICIS871+EURO", - "EBCDICCPSE", - "CSISOLATIN6", - "CSISOLATIN5", - "RK1048", - "CSISOLATIN1", - "CSISOLATINARABIC", - "CSISOLATINCYRILLIC", + "LATIN6", + "LATIN5", + "CSISO57GB1988", + "SJIS", + "L4", + "L10", + "ISO10646UCS4", + "LATIN1", + "L8", + "IBM943", + "MACINTOSH", + "TIS620.25331", + "UHC", + "ISOIR226", + "JP", + "JAVA", + "STRK10482002", + "LATIN4", + "CSIBM01149", + "LATIN8", + "TIS620.25330", + "ISO646JP", + "ISO10646UCS2", "UCS2", - "CSIBM037", - "GB18030", - "CSISOLATIN4", + "CSIBM273", + "IBMTHAI", + "CSIBM297", + "LATIN10", + "UNICODE11", + "RK1048", + "CSHPROMAN8", "ISOIR138", - "ISO885916:2001", - "ISO10646UCS2", - "CSIBM01149", - "CSIBM277", + "GB18030", + "L2", + "CSISO14JISC6220RO", "GB2312", - "ISO88595:1988", - "ISO885915:1998", - "TIS620.25291", - "CSISO58GB231280", - "MACTHAI", - "TCVN57121", - "ISO88594:1988", - "ISO885914:1998", - "UHC", - "HZGB2312", - "ISO88598:1988", - "GB231280", - "EBCDICFI278+EURO", - "CSISO57GB1988", - "CSIBM273", - "CSISOLATIN2", "ISOIR57", - "GB198880", - "CSPC850MULTILINGUAL", - "EBCDICCPNO", + "MSKANJI", "ISOIR157", - "EBCDICES284+EURO", - "CSISOLATINGREEK", - "SYSTEM1125", + "LATIN2", + "EBCDICINTERNATIONAL500+EURO", + "GB231280", "ISOIR87", - "STRK10482002", - "CSIBM297", - "ROMAN8", - "TIS620.25331", - "ISOIR230", - "TCVN5712", - "JIS0208", - "ARABIC", - "EBCDICCPCH", - "ISO885910:1992", - "CSISOLATIN3", - "TIS620.25330", - "ISO88596:1987", - "MSKANJI", - "ISO88591:1987", + "MACROMANIA", + "MACROMAN", + "GB198880", + "CSIBMTHAI", + "XMACICELANDIC", + "DECKOREAN", "WINDOWS1256", "WINDOWS1255", + "TIS620.2533", "WINDOWS1251", - "JISX0201", - "ISOIR127", + "EBCDICIT280+EURO", + "ISOIR230", + "JIS0208", + "ARABIC", "WINDOWS1254", "WINDOWS1258", - "ISO88593:1988", + "TACTIS", + "ISOIR127", + "JISX0201", + "XMACROMANIAN", "WINDOWS1250", - "UCS4LE", - "ELOT928", - "CSHALFWIDTHKATAKANA", - "EBCDICSE278+EURO", - "JISX0208", - "EBCDICDK277+EURO", - "CSMACINTOSH", - "CSPC862LATINHEBREW", - "EBCDICCPHE", "SDECKANJI", - "EUCCN", - "ISOIR159", - "ISO2022JP", - "ISO88592:1987", - "ISOIR203", + "L7", + "CSISO87JISX0208", + "DECKANJI", + "MSGREEK", + "JISX0208", "WINDOWS1252", + "CNGBISOIR165", + "LATIN7", + "CSEUCPKDFMTJAPANESE", + "MACICELAND", + "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE", + "CSISO2022KR", + "ISO2022JP", "ISO2022JP1", - "ISOIR149", - "IBMTHAI", - "CSHPROMAN8", - "UCS2LE", - "ISOIR109", - "TIS620.2533", + "NEXTSTEP", + "ISO885916:2001", + "EBCDICCYRILLIC", + "JISX0212.19900", "WINDOWS874", - "EBCDICDE273+EURO", - "ISO2022CNEXT", + "UCS4BE", + "IBMEUCCN", + "ISO88595:1988", + "ISO885915:1998", + "CSISO2022JP", + "WINDOWS1257", "MACARABIC", - "CSISO14JISC6220RO", - "ISO88597:1987", - "CSISO87JISX0208", "JISX0212", - "WINDOWS1257", - "TACTIS", - "JISX0212.19900", - "EBCDICNO277+EURO", - "MULELAO1", + "L3", + "ISO88594:1988", + "ISO885914:1998", + "ISO88598:1988", + "CSISO159JISX02121990", + "ISOIR203", + "EBCDICCPUS", + "ISOIR159", + "EBCDICGB285+EURO", + "EBCDICCPROECE", + "UCS2BE", + "LATIN3", "WINDOWS1253", - "EBCDICCPBE", - "MACROMANIA", + "XMACARABIC", + "ISOIR149", "ISO2022JP2004", - "WINDOWS950", + "KOI8T", + "CSISO2022JP2", "ISO2022JPMS", - "CSEUCPKDFMTJAPANESE", - "CSISO2022KR", - "CSISO159JISX02121990", - "ISOIR179", - "CSISOLATINHEBREW", - "DECKANJI", - "UNICODE11", - "ISO88597:2003", - "CSIBMTHAI", - "CSISO2022JP", - "JISX02011976", - "ATARI", - "EBCDICCYRILLIC", + "ISOIR109", + "ISO885910:1992", + "WINDOWS950", + "ISO88596:1987", + "ISO88591:1987", "ISO2022JP2", + "ATARI", "GREEK8", - "BIG5HKSCS:2001", - "MACROMAN", - "CNGBISOIR165", - "BIG5HKSCS:2004", - "ISO88599:1989", - "MSGREEK", - "WINDOWS936", - "BIG5HKSCS:2008", - "ISOIR199", - "EBCDICCPUS", - "EBCDICLATIN9EURO", - "GREEK", + "JISX02011976", + "LATIN9", + "JISC62201969RO", + "ISOIR179", + "ISO88593:1988", + "UTF16", + "ISO88592:1987", "JISX02081990", - "UTF16", - "CSISO2022JP2", + "WINDOWS936", + "UCS4SWAPPED", + "GREEK", + "UTF8", "JISX02121990", + "BIG5HKSCS:2001", + "EBCDICCPGB", + "ISO88597:1987", + "ISOCELTIC", + "BIG5HKSCS:2004", + "BIG5HKSCS:2008", + "CSPC775BALTIC", + "UCS2SWAPPED", "JISC62261983", - "UTF8", - "CPGR", - "UCS4SWAPPED", - "UCS4BE", - "JISC62201969RO", - "EBCDICIT280+EURO", - "ISO2022JP3", - "MACINTOSH", - "KOI8T", - "EBCDICGB285+EURO", + "ISOIR199", + "CSISOLATIN6", + "CSISOLATIN5", + "CSISOLATIN1", + "CSISOLATINARABIC", + "CSISOLATINCYRILLIC", + "MACCROATIAN", "MSARAB", + "CSISOLATIN4", + "EBCDICCPIT", + "ISO2022JP3", + "EBCDICFR297+EURO", "JISX02081983", - "IBMEUCCN", - "UCS2SWAPPED", - "UCS2BE", - "RISCOSLATIN1", - "BIG5HKSCS:1999", - "EBCDICCPGB", - "DECKOREAN", + "MACGREEK", + "XMACCROATIAN", + "ISO88597:2003", + "CPGR", + "CSISOLATIN2", + "EBCDICUS37+EURO", + "JOHAB", + "SHIFTJIS", + "CSSHIFTJIS", + "XMACGREEK", "CSKOI8R", - "EBCDICCPROECE", + "CSISOLATINGREEK", "GEORGIANPS", - "EBCDICINTERNATIONAL500+EURO", "UTF7", - "JOHAB", "GEORGIANACADEMY", - "NEXTSTEP", - "MACGREEK", - "GB18030:2005", + "ISO88599:1989", + "BIG5HKSCS:1999", + "CSISOLATIN3", "UTF32", + "SHIFTJIS2004", "KOI8R", - "SHIFTJIS", - "UTF16LE", - "CSSHIFTJIS", - "MACCROATIAN", - "GB18030:2022", + "EBCDICGREEK", + "UTF16BE", + "CYRILLIC", + "UCS4LE", "EUCJP", - "EBCDICFR297+EURO", - "TCVN57121:1993", - "MSTURK", - "EBCDICCPIT", - "EBCDICUS37+EURO", + "CYRILLICASIAN", + "ELOT928", + "UCS2LE", + "HEBREW", "KOI8U", - "ISO2022KR", - "SHIFTJIS2004", - "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE", - "MACCENTRALEUROPE", - "UTF32LE", "SHIFTJISX0213", - "EUCJIS2004", - "HEBREW", - "EBCDICGREEK", - "MSHEBR", - "EBCDICCPFR", - "UTF16BE", - "UNICODELITTLE", - "IBMEUCJP", - "CSEUCTW", + "TCVN57121:1993", "DECHANYU", - "EBCDICCPYU", - "EUCJISX0213", + "MULELAO1", + "EBCDICLATIN9EURO", "MACUKRAINE", - "EBCDICCPWT", + "ISO2022KR", + "XMACUKRAINIAN", + "MSTURK", "UNICODE11UTF7", - "UNICODEBIG", - "EUCTW", + "EUCJIS2004", + "CSISOLATINHEBREW", + "EBCDICCPWT", "UTF32BE", - "WINBALTRIM", - "CSEUCKR", - "EBCDICCPGR", + "GB18030:2005", + "EBCDICCPFR", + "MSHEBR", + "CSHALFWIDTHKATAKANA", + "CSPC862LATINHEBREW", + "GB18030:2022", "KOKR.JOHAP92", - "EUCKR", + "EBCDICCPYU", + "UNICODEBIG", + "IBMEUCJP", + "EUCJISX0213", + "EBCDICCPNL", "MACHEBREW", - "UCS4INTERNAL", - "KOI8RU", + "RISCOSLATIN1", + "CSEUCTW", + "XMACHEBREW", + "EUCTW", + "UTF16LE", + "EBCDICCPGR", + "MACCENTRALEUROPE", + "UNICODELITTLE", "ATARIST", - "UCS2INTERNAL", - "IBMEUCTW", + "CSEUCKR", + "EUCKR", "EBCDICCPTR", + "XMACTURKISH", + "UTF32LE", "MACTURKISH", - "IBMEUCKR" + "KOI8RU", + "IBMEUCTW", + "MSCYRL", + "MACCYRILLIC", + "XMACCYRILLIC", + "CSPC850MULTILINGUAL", + "IBMEUCKR", + "UCS4INTERNAL", + "UCS2INTERNAL", + "WINBALTRIM" }; #define stringpool ((const char *) &stringpool_contents) static const struct alias aliases[] = { - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 114 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_iso8859_10}, - {-1}, -#line 108 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str23, ei_iso8859_9}, - {-1}, {-1}, {-1}, -#line 58 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str27, ei_iso8859_1}, -#line 363 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_cp861}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 21 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str7, ei_ascii}, +#line 238 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str8, ei_viscii}, {-1}, {-1}, -#line 315 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str31, ei_euc_kr}, -#line 378 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, ei_cp1125}, -#line 22 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str33, ei_ascii}, - {-1}, #line 13 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str35, ei_ascii}, - {-1}, -#line 168 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str37, ei_cp866}, -#line 371 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_cp865}, -#line 349 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str39, ei_cp855}, -#line 362 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_cp861}, - {-1}, {-1}, {-1}, -#line 21 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str44, ei_ascii}, -#line 215 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_viscii}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str11, ei_ascii}, +#line 384 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str12, ei_cp861}, +#line 336 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str13, ei_euc_kr}, +#line 399 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str14, ei_cp1125}, {-1}, {-1}, {-1}, {-1}, -#line 217 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_viscii}, -#line 76 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_iso8859_4}, - {-1}, -#line 136 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str53, ei_iso8859_16}, +#line 22 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str19, ei_ascii}, {-1}, -#line 405 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_ebcdic285}, +#line 178 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_cp866}, +#line 392 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_cp865}, +#line 370 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str23, ei_cp855}, {-1}, -#line 355 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_cp858}, +#line 383 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str25, ei_cp861}, + {-1}, {-1}, +#line 236 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_viscii}, + {-1}, {-1}, {-1}, {-1}, +#line 426 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str33, ei_ebcdic285}, + {-1}, {-1}, +#line 269 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_iso646_cn}, {-1}, -#line 126 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str59, ei_iso8859_14}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 359 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str65, ei_cp860}, -#line 162 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str66, ei_cp850}, -#line 500 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str67, ei_ebcdic1146}, #line 35 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str68, ei_ucs4}, -#line 494 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str69, ei_ebcdic1145}, -#line 81 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str70, ei_iso8859_5}, - {-1}, {-1}, -#line 468 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_ucs4}, +#line 521 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str39, ei_ebcdic1146}, +#line 376 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_cp858}, +#line 515 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str41, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 488 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str97, ei_ebcdic1144}, +#line 489 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str47, ei_ebcdic1141}, +#line 237 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_viscii}, +#line 380 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_cp860}, +#line 171 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_cp850}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 267 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 270 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str99, ei_sjis}, - {-1}, {-1}, -#line 165 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp862}, -#line 342 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_cp852}, +#line 86 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str69, ei_iso8859_6}, {-1}, -#line 512 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str105, ei_ebcdic1148}, - {-1}, {-1}, -#line 216 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_viscii}, - {-1}, {-1}, {-1}, {-1}, -#line 173 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_mac_roman}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 462 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str123, ei_ebcdic1140}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 113 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_iso8859_10}, +#line 509 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_ebcdic1144}, {-1}, -#line 107 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str132, ei_iso8859_9}, -#line 203 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_rk1048}, - {-1}, {-1}, -#line 57 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 352 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str146, ei_cp857}, +#line 94 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_iso8859_7}, + {-1}, +#line 533 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_ebcdic1148}, {-1}, {-1}, {-1}, -#line 229 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str150, ei_jisx0201}, -#line 64 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_iso8859_2}, +#line 174 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_cp862}, +#line 363 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, ei_cp852}, + {-1}, {-1}, {-1}, {-1}, +#line 316 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str85, ei_hz}, + {-1}, {-1}, {-1}, {-1}, +#line 183 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str90, ei_mac_roman}, {-1}, {-1}, -#line 255 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_ksc5601}, - {-1}, {-1}, {-1}, -#line 366 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str158, ei_cp863}, -#line 345 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str159, ei_cp853}, -#line 75 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_iso8859_4}, +#line 223 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_rk1048}, + {-1}, +#line 483 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_ebcdic1140}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 148 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp1251}, +#line 291 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_sjis}, +#line 152 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, ei_cp1252}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 250 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str110, ei_jisx0201}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 520 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str116, ei_ebcdic1146}, +#line 144 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str117, ei_cp1250}, +#line 514 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_ebcdic1145}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 488 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_ebcdic1141}, {-1}, +#line 373 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_cp857}, + {-1}, {-1}, #line 141 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str162, ei_cp1250}, -#line 499 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_ebcdic1146}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str129, ei_cp1250}, +#line 305 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_euc_cn}, + {-1}, {-1}, +#line 30 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_ucs2be}, + {-1}, {-1}, +#line 276 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, ei_ksc5601}, {-1}, -#line 493 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str165, ei_ebcdic1145}, +#line 256 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, ei_jisx0208}, +#line 26 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_ucs2}, +#line 523 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, ei_ebcdic1146}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 508 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str148, ei_ebcdic1144}, {-1}, {-1}, -#line 125 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str168, ei_iso8859_14}, -#line 467 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str169, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, -#line 198 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, ei_pt154}, +#line 364 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_cp852}, +#line 532 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_ebcdic1148}, +#line 303 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_euc_cn}, +#line 280 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_ksc5601}, +#line 495 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_ebcdic1142}, +#line 511 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_ebcdic1144}, + {-1}, {-1}, {-1}, +#line 186 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_mac_centraleurope}, + {-1}, {-1}, +#line 387 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_cp863}, +#line 366 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_cp853}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 235 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str182, ei_jisx0208}, +#line 482 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_ebcdic1140}, +#line 447 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_ebcdic870}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 248 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str188, ei_iso646_cn}, - {-1}, {-1}, {-1}, {-1}, -#line 487 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str193, ei_ebcdic1144}, -#line 202 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_rk1048}, -#line 135 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str195, ei_iso8859_16}, -#line 295 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str196, ei_hz}, -#line 474 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_ebcdic1142}, -#line 426 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str198, ei_ebcdic870}, +#line 222 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_rk1048}, {-1}, -#line 374 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_cp869}, -#line 511 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ebcdic1148}, +#line 281 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_ksc5601}, {-1}, -#line 343 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_cp852}, - {-1}, {-1}, {-1}, {-1}, -#line 259 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_ksc5601}, -#line 86 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_iso8859_6}, -#line 149 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_cp1252}, - {-1}, {-1}, -#line 146 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str213, ei_cp1251}, - {-1}, {-1}, {-1}, -#line 94 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_iso8859_7}, +#line 306 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 461 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str219, ei_ebcdic1140}, +#line 263 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_jisx0212}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 246 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str234, ei_iso646_cn}, - {-1}, {-1}, -#line 120 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_iso8859_13}, + {-1}, {-1}, {-1}, +#line 395 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_cp869}, +#line 87 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 176 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_cp862}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 308 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_cp936}, {-1}, {-1}, -#line 287 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str240, ei_cp936}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 242 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_jisx0212}, #line 83 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str250, ei_iso8859_6}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_iso8859_6}, +#line 494 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_ebcdic1142}, #line 78 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str252, ei_iso8859_5}, - {-1}, {-1}, {-1}, -#line 53 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str256, ei_iso8859_1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_iso8859_5}, {-1}, {-1}, #line 132 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str259, ei_iso8859_16}, -#line 63 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_iso8859_2}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_iso8859_16}, +#line 46 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_utf7}, #line 128 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_iso8859_15}, -#line 336 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_cp437}, -#line 70 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_iso8859_3}, - {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_iso8859_15}, +#line 53 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 358 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_cp437}, #line 116 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_11}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_iso8859_11}, +#line 313 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_iso2022_cn}, + {-1}, +#line 527 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_ebcdic1147}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 314 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_iso2022_cn}, {-1}, {-1}, -#line 304 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_ces_big5}, +#line 322 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_ces_big5}, {-1}, {-1}, #line 72 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_iso8859_4}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_iso8859_4}, +#line 207 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_hp_roman8}, +#line 357 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_cp437}, {-1}, -#line 301 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_ces_big5}, -#line 506 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str283, ei_ebcdic1147}, - {-1}, {-1}, {-1}, {-1}, #line 99 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str288, ei_iso8859_8}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_iso8859_8}, #line 122 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_iso8859_14}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_iso8859_14}, +#line 551 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_ebcdic1166}, +#line 545 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_ebcdic1156}, +#line 550 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_ebcdic1165}, +#line 544 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_ebcdic1155}, + {-1}, {-1}, {-1}, {-1}, +#line 350 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_cp1161}, +#line 177 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_cp866}, +#line 344 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_cp856}, +#line 391 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_cp865}, +#line 369 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_cp855}, {-1}, {-1}, {-1}, -#line 473 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1142}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 518 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ebcdic1146}, +#line 382 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_cp861}, +#line 512 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_ebcdic1145}, + {-1}, {-1}, {-1}, {-1}, +#line 110 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_iso8859_10}, +#line 486 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 549 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_ebcdic1164}, +#line 543 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ebcdic1154}, + {-1}, {-1}, {-1}, +#line 547 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str306, ei_ebcdic1158}, + {-1}, {-1}, +#line 347 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_cp1046}, +#line 389 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp864}, + {-1}, {-1}, {-1}, +#line 519 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_ebcdic1146}, +#line 375 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_cp858}, +#line 513 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_ebcdic1145}, +#line 506 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_ebcdic1144}, + {-1}, +#line 465 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ebcdic924}, {-1}, #line 530 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_ebcdic1166}, -#line 524 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str305, ei_ebcdic1156}, -#line 529 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str306, ei_ebcdic1165}, -#line 523 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str307, ei_ebcdic1155}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ebcdic1148}, +#line 487 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_ebcdic1141}, +#line 502 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_ebcdic1143}, +#line 526 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_ebcdic1147}, +#line 548 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ebcdic1160}, +#line 325 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str326, ei_ces_big5}, {-1}, -#line 481 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_ebcdic1143}, -#line 329 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp1161}, -#line 167 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_cp866}, #line 323 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str312, ei_cp856}, -#line 370 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str313, ei_cp865}, -#line 348 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_cp855}, -#line 110 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_iso8859_10}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_ces_big5}, +#line 398 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str329, ei_cp1125}, + {-1}, {-1}, {-1}, +#line 321 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_euc_tw}, +#line 379 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_cp860}, +#line 170 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_cp850}, +#line 438 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_ebcdic425}, {-1}, -#line 361 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_cp861}, +#line 425 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_ebcdic285}, + {-1}, {-1}, +#line 480 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_ebcdic1140}, +#line 452 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_ebcdic871}, +#line 324 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_ces_big5}, +#line 554 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_ebcdic16804}, +#line 439 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_ebcdic500}, +#line 507 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_ebcdic1144}, +#line 60 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_iso8859_2}, + {-1}, {-1}, +#line 531 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_ebcdic1148}, +#line 469 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_ebcdic1026}, +#line 456 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_ebcdic880}, +#line 468 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_ebcdic1025}, +#line 404 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_ebcdic037}, +#line 415 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic278}, + {-1}, {-1}, +#line 423 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_ebcdic284}, +#line 348 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_cp1124}, +#line 351 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_cp1161}, +#line 179 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_cp866}, {-1}, -#line 497 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ebcdic1146}, +#line 393 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_cp865}, +#line 371 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_cp855}, +#line 367 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_cp853}, +#line 435 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_ebcdic424}, {-1}, -#line 491 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ebcdic1145}, +#line 422 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_ebcdic284}, +#line 385 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str369, ei_cp861}, +#line 481 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_ebcdic1140}, + {-1}, {-1}, +#line 377 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_cp858}, +#line 416 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_ebcdic278}, +#line 51 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_c99}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 454 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ebcdic875}, +#line 352 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str385, ei_cp1162}, {-1}, {-1}, {-1}, -#line 465 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 444 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_ebcdic924}, - {-1}, -#line 528 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_ebcdic1164}, -#line 522 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_ebcdic1154}, - {-1}, {-1}, {-1}, {-1}, -#line 87 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str340, ei_iso8859_6}, -#line 368 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_cp864}, +#line 474 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_ebcdic1112}, +#line 451 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_ebcdic871}, {-1}, -#line 526 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_ebcdic1158}, -#line 326 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_cp1046}, -#line 51 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_c99}, -#line 119 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_iso8859_13}, - {-1}, {-1}, -#line 485 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str349, ei_ebcdic1144}, -#line 354 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_cp858}, - {-1}, {-1}, -#line 498 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_ebcdic1146}, +#line 418 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ebcdic280}, +#line 390 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_cp864}, +#line 173 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_cp862}, +#line 362 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_cp852}, +#line 464 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_ebcdic924}, {-1}, +#line 378 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_cp858}, +#line 517 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_ebcdic1145}, +#line 501 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str400, ei_ebcdic1143}, #line 492 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic1145}, - {-1}, -#line 509 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str357, ei_ebcdic1148}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_ebcdic1142}, + {-1}, {-1}, {-1}, +#line 491 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 539 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_ebcdic1149}, +#line 401 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1125}, +#line 412 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_ebcdic277}, + {-1}, {-1}, {-1}, +#line 381 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_cp860}, {-1}, -#line 466 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_ebcdic1141}, -#line 527 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_ebcdic1160}, +#line 180 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp1131}, {-1}, -#line 303 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_ces_big5}, -#line 143 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_cp1250}, -#line 346 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_cp853}, - {-1}, {-1}, -#line 358 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str367, ei_cp860}, -#line 161 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_cp850}, +#line 428 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic285}, {-1}, {-1}, -#line 377 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str371, ei_cp1125}, -#line 69 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str372, ei_iso8859_3}, - {-1}, -#line 417 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_ebcdic425}, -#line 459 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_ebcdic1140}, +#line 18 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_ascii}, + {-1}, {-1}, {-1}, +#line 442 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_ebcdic500}, {-1}, -#line 418 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str377, ei_ebcdic500}, -#line 404 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str378, ei_ebcdic285}, -#line 505 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str379, ei_ebcdic1147}, -#line 60 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str380, ei_iso8859_2}, +#line 493 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_ebcdic1142}, {-1}, {-1}, -#line 486 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str383, ei_ebcdic1144}, -#line 533 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ebcdic16804}, +#line 535 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_ebcdic1148}, +#line 470 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_ebcdic1026}, +#line 458 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ebcdic880}, {-1}, -#line 435 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_ebcdic880}, +#line 330 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_big5hkscs2008}, +#line 446 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_ebcdic870}, +#line 90 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso8859_7}, +#line 151 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_cp1252}, {-1}, -#line 502 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str388, ei_ebcdic1146}, +#line 17 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_ascii}, +#line 475 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str443, ei_ebcdic1122}, + {-1}, {-1}, {-1}, {-1}, +#line 277 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_ksc5601}, +#line 437 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic424}, {-1}, -#line 284 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_euc_cn}, -#line 510 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str391, ei_ebcdic1148}, +#line 424 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_ebcdic284}, +#line 421 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_ebcdic282}, +#line 485 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_ebcdic1140}, {-1}, -#line 518 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_ebcdic1149}, -#line 448 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_ebcdic1026}, +#line 436 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_ebcdic424}, +#line 443 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_ebcdic838}, {-1}, -#line 447 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_ebcdic1025}, -#line 300 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str397, ei_euc_tw}, +#line 414 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_ebcdic278}, +#line 516 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_ebcdic1145}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 477 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_ebcdic1130}, +#line 353 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_cp1162}, {-1}, -#line 327 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_cp1124}, +#line 360 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str470, ei_cp775}, {-1}, {-1}, -#line 414 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_ebcdic424}, -#line 490 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str403, ei_ebcdic1144}, +#line 453 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_ebcdic871}, {-1}, -#line 480 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_ebcdic1143}, -#line 401 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str406, ei_ebcdic284}, +#line 420 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_ebcdic280}, +#line 459 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_ebcdic905}, + {-1}, +#line 546 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_ebcdic1157}, +#line 163 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_cp1256}, +#line 160 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_cp1255}, {-1}, {-1}, -#line 460 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str409, ei_ebcdic1140}, +#line 146 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_cp1251}, +#line 239 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_tcvn}, {-1}, {-1}, -#line 330 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1161}, -#line 169 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_cp866}, - {-1}, #line 372 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str415, ei_cp865}, -#line 350 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str416, ei_cp855}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_cp857}, +#line 538 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_ebcdic1149}, +#line 540 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ebcdic1149}, + {-1}, {-1}, +#line 216 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_pt154}, +#line 524 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_ebcdic1147}, {-1}, -#line 356 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_cp858}, -#line 364 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp861}, +#line 157 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_cp1254}, {-1}, -#line 433 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic875}, - {-1}, {-1}, {-1}, -#line 430 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str425, ei_ebcdic871}, +#line 169 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_cp1258}, {-1}, {-1}, -#line 443 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_ebcdic924}, +#line 219 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_pt154}, + {-1}, {-1}, {-1}, +#line 441 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_ebcdic500}, + {-1}, +#line 217 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_pt154}, +#line 142 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_cp1250}, +#line 235 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_cp874}, +#line 562 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_tds565}, {-1}, {-1}, -#line 170 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_cp1131}, -#line 397 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str432, ei_ebcdic280}, +#line 121 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_iso8859_13}, +#line 498 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ebcdic1142}, {-1}, -#line 331 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_cp1162}, -#line 176 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_mac_centraleurope}, +#line 66 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_iso8859_3}, {-1}, -#line 453 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_ebcdic1112}, - {-1}, {-1}, {-1}, -#line 164 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str441, ei_cp862}, -#line 341 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_cp852}, -#line 369 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str443, ei_cp864}, - {-1}, {-1}, {-1}, {-1}, -#line 292 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_iso2022_cn}, #line 471 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic1142}, -#line 30 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_ucs2be}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str517, ei_ebcdic1047}, + {-1}, {-1}, +#line 117 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_iso8859_13}, +#line 450 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_ebcdic870}, +#line 525 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_ebcdic1147}, + {-1}, {-1}, {-1}, {-1}, +#line 478 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_ebcdic1132}, {-1}, -#line 357 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_cp858}, - {-1}, {-1}, {-1}, -#line 131 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_iso8859_15}, -#line 496 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_ebcdic1145}, +#line 301 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_euc_cn}, +#line 278 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 462 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_ebcdic924}, +#line 150 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_cp1252}, {-1}, {-1}, {-1}, -#line 470 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_ebcdic1141}, - {-1}, -#line 256 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_ksc5601}, +#line 417 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_ebcdic278}, +#line 503 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_ebcdic1143}, {-1}, {-1}, -#line 90 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_iso8859_7}, +#line 504 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_ebcdic1143}, {-1}, {-1}, -#line 360 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str469, ei_cp860}, -#line 422 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str470, ei_ebcdic838}, +#line 553 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_ebcdic12712}, + {-1}, {-1}, {-1}, {-1}, +#line 354 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_cp1163}, +#line 542 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_ebcdic1153}, + {-1}, {-1}, {-1}, {-1}, +#line 461 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_ebcdic905}, {-1}, {-1}, -#line 380 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_cp1125}, - {-1}, -#line 425 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_ebcdic870}, +#line 386 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_cp863}, +#line 365 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_cp853}, {-1}, {-1}, -#line 177 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_mac_iceland}, -#line 421 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_ebcdic500}, -#line 407 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_ebcdic285}, -#line 456 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str481, ei_ebcdic1130}, +#line 226 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_tis620}, + {-1}, {-1}, +#line 499 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_ebcdic1143}, +#line 374 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_cp857}, + {-1}, {-1}, +#line 497 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str573, ei_ebcdic1142}, {-1}, -#line 472 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_ebcdic1142}, +#line 552 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_ebcdic4971}, + {-1}, {-1}, {-1}, {-1}, +#line 411 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_ebcdic277}, {-1}, -#line 438 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str485, ei_ebcdic905}, +#line 302 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_euc_cn}, +#line 166 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_cp1257}, + {-1}, {-1}, {-1}, {-1}, +#line 184 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 463 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_ebcdic924}, +#line 227 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_tis620}, {-1}, {-1}, -#line 437 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_ebcdic880}, -#line 517 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ebcdic1149}, -#line 293 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_iso2022_cn}, +#line 500 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_ebcdic1143}, +#line 490 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_ebcdic1141}, +#line 472 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_ebcdic1047}, + {-1}, {-1}, +#line 104 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_iso8859_9}, {-1}, -#line 66 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_iso8859_3}, -#line 514 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_ebcdic1148}, -#line 285 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str494, ei_euc_cn}, -#line 337 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_cp437}, -#line 449 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ebcdic1026}, -#line 148 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_cp1252}, -#line 431 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str498, ei_ebcdic871}, -#line 454 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str499, ei_ebcdic1122}, +#line 529 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_ebcdic1147}, + {-1}, {-1}, {-1}, {-1}, +#line 19 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_ascii}, +#line 476 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_ebcdic1123}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 432 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_ebcdic423}, +#line 479 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str619, ei_ebcdic1137}, +#line 345 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_cp922}, +#line 154 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_cp1253}, {-1}, -#line 117 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str501, ei_iso8859_13}, +#line 400 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str623, ei_cp1125}, + {-1}, {-1}, +#line 356 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_cp437}, +#line 205 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_mac_thai}, +#line 440 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str628, ei_ebcdic500}, {-1}, -#line 393 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str503, ei_ebcdic278}, -#line 416 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_ebcdic424}, +#line 410 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_ebcdic277}, + {-1}, {-1}, {-1}, +#line 16 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str634, ei_ascii}, {-1}, -#line 400 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_ebcdic282}, +#line 355 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_cp1163}, {-1}, -#line 403 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_ebcdic284}, -#line 383 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_ebcdic037}, -#line 339 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_cp775}, -#line 464 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str511, ei_ebcdic1140}, +#line 402 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_ebcdic037}, + {-1}, +#line 231 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_tis620}, {-1}, +#line 274 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_isoir165}, + {-1}, {-1}, +#line 388 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_cp863}, +#line 368 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_cp853}, +#line 241 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_tcvn}, + {-1}, {-1}, #line 394 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ebcdic278}, - {-1}, {-1}, {-1}, {-1}, -#line 257 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str518, ei_ksc5601}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_cp869}, + {-1}, {-1}, {-1}, +#line 56 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str654, ei_iso8859_1}, {-1}, {-1}, -#line 525 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_ebcdic1157}, - {-1}, {-1}, {-1}, {-1}, -#line 121 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str526, ei_iso8859_13}, -#line 432 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_ebcdic871}, -#line 351 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str528, ei_cp857}, +#line 536 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_ebcdic1149}, {-1}, {-1}, {-1}, -#line 260 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str532, ei_ksc5601}, +#line 561 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_big5_2003}, {-1}, -#line 399 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str534, ei_ebcdic280}, -#line 503 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str535, ei_ebcdic1147}, -#line 332 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_cp1162}, +#line 206 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_mac_thai}, +#line 317 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_hz}, +#line 228 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str665, ei_tis620}, +#line 209 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_hp_roman8}, +#line 307 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_ces_gbk}, {-1}, -#line 196 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_pt154}, -#line 18 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str539, ei_ascii}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 333 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp1163}, -#line 521 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str547, ei_ebcdic1153}, -#line 340 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_cp775}, +#line 20 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_ascii}, {-1}, -#line 441 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str550, ei_ebcdic924}, +#line 245 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_iso646_jp}, +#line 272 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str672, ei_gb2312}, + {-1}, +#line 12 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str674, ei_ascii}, +#line 496 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str675, ei_ebcdic1142}, +#line 62 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_iso8859_2}, +#line 467 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_ebcdic924}, +#line 212 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str678, ei_armscii_8}, {-1}, {-1}, -#line 365 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_cp863}, -#line 344 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_cp853}, -#line 457 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_ebcdic1132}, -#line 197 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_pt154}, +#line 505 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_ebcdic1143}, + {-1}, {-1}, {-1}, +#line 15 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_ascii}, +#line 537 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_ebcdic1149}, +#line 473 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_ebcdic1097}, +#line 80 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str688, ei_iso8859_5}, + {-1}, {-1}, +#line 14 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_ascii}, +#line 106 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_iso8859_9}, +#line 315 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_iso2022_cn_ext}, + {-1}, {-1}, +#line 240 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_tcvn}, + {-1}, +#line 93 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str698, ei_iso8859_7}, +#line 349 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_cp1129}, +#line 74 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str700, ei_iso8859_4}, +#line 434 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_ebcdic423}, + {-1}, +#line 33 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str703, ei_ucs4}, +#line 292 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_cp932}, +#line 225 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str705, ei_cp1133}, +#line 408 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_ebcdic273}, + {-1}, {-1}, +#line 114 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_iso8859_10}, + {-1}, +#line 108 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_iso8859_9}, +#line 429 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_ebcdic297}, +#line 413 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_ebcdic277}, +#line 359 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str714, ei_cp737}, + {-1}, {-1}, +#line 58 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_iso8859_1}, {-1}, -#line 17 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_ascii}, -#line 46 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_utf7}, -#line 450 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str560, ei_ebcdic1047}, -#line 478 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_ebcdic1143}, -#line 26 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_ucs2}, +#line 273 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str719, ei_gb2312}, +#line 208 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_hp_roman8}, +#line 407 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_ebcdic037}, +#line 299 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str722, ei_euc_cn}, + {-1}, +#line 55 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str724, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 397 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str733, ei_cp869}, {-1}, {-1}, -#line 541 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str565, ei_tds565}, -#line 187 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_hp_roman8}, -#line 199 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str567, ei_pt154}, -#line 309 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str568, ei_big5hkscs2008}, -#line 504 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_ebcdic1147}, +#line 113 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str736, ei_iso8859_10}, {-1}, -#line 302 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str571, ei_ces_big5}, - {-1}, {-1}, {-1}, {-1}, -#line 104 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso8859_9}, -#line 429 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_ebcdic870}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 477 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str585, ei_ebcdic1142}, +#line 107 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str738, ei_iso8859_9}, +#line 270 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_iso646_cn}, +#line 288 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str740, ei_sjis}, +#line 76 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str741, ei_iso8859_4}, +#line 136 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_iso8859_16}, +#line 34 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str743, ei_ucs4}, +#line 57 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str744, ei_iso8859_1}, +#line 126 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_iso8859_14}, +#line 346 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_cp943}, {-1}, -#line 440 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str587, ei_ebcdic905}, +#line 182 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str748, ei_mac_roman}, +#line 230 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_tis620}, {-1}, -#line 286 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str589, ei_ces_gbk}, -#line 531 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str590, ei_ebcdic4971}, -#line 385 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str591, ei_ebcdic037}, +#line 337 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_cp949}, +#line 134 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str752, ei_iso8859_16}, {-1}, -#line 16 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str593, ei_ascii}, +#line 246 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str754, ei_iso646_jp}, + {-1}, {-1}, {-1}, +#line 52 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_java}, {-1}, -#line 479 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_ebcdic1143}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 396 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_ebcdic278}, +#line 221 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_rk1048}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 75 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_iso8859_4}, +#line 541 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_ebcdic1149}, {-1}, {-1}, -#line 211 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_tis620}, +#line 125 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str772, ei_iso8859_14}, +#line 229 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str773, ei_tis620}, + {-1}, {-1}, +#line 244 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str776, ei_iso646_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 25 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_ucs2}, {-1}, -#line 253 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_isoir165}, -#line 455 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_ebcdic1123}, -#line 189 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_hp_roman8}, -#line 532 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str613, ei_ebcdic12712}, -#line 411 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str614, ei_ebcdic423}, - {-1}, {-1}, {-1}, -#line 442 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_ebcdic924}, +#line 24 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_ucs2}, {-1}, -#line 20 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_ascii}, +#line 409 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str789, ei_ebcdic273}, + {-1}, {-1}, {-1}, {-1}, +#line 444 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_ebcdic838}, +#line 431 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str795, ei_ebcdic297}, {-1}, -#line 280 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str622, ei_euc_cn}, -#line 402 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str623, ei_ebcdic284}, -#line 281 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_euc_cn}, +#line 135 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str797, ei_iso8859_16}, {-1}, {-1}, {-1}, {-1}, -#line 19 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str629, ei_ascii}, -#line 353 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_cp857}, -#line 206 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str631, ei_tis620}, -#line 224 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_iso646_jp}, +#line 29 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_ucs2be}, + {-1}, {-1}, {-1}, +#line 220 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_rk1048}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 210 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_hp_roman8}, {-1}, {-1}, {-1}, {-1}, -#line 373 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str637, ei_cp869}, -#line 251 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_gb2312}, - {-1}, -#line 56 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_iso8859_1}, -#line 458 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str641, ei_ebcdic1137}, -#line 62 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_iso8859_2}, +#line 101 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_iso8859_8}, + {-1}, {-1}, {-1}, {-1}, +#line 311 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_gb18030_2022}, {-1}, -#line 335 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_cp437}, -#line 515 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_ebcdic1149}, -#line 12 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_ascii}, +#line 64 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_iso8859_2}, {-1}, -#line 334 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str648, ei_cp1163}, -#line 192 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str649, ei_armscii_8}, -#line 324 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_cp922}, +#line 247 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str827, ei_iso646_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 300 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str840, ei_euc_cn}, + {-1}, {-1}, {-1}, +#line 268 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str844, ei_iso646_cn}, {-1}, {-1}, -#line 80 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_iso8859_5}, - {-1}, -#line 367 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str655, ei_cp863}, -#line 347 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str656, ei_cp853}, -#line 381 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_ebcdic037}, -#line 33 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str658, ei_ucs4}, +#line 289 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str847, ei_sjis}, {-1}, -#line 127 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str660, ei_iso8859_14}, -#line 106 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_iso8859_9}, -#line 451 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str662, ei_ebcdic1047}, +#line 112 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_iso8859_10}, {-1}, {-1}, -#line 207 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str665, ei_tis620}, -#line 14 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_ascii}, -#line 74 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_iso8859_4}, -#line 540 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str668, ei_big5_2003}, -#line 218 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_tcvn}, - {-1}, -#line 508 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_ebcdic1147}, - {-1}, -#line 93 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str673, ei_iso8859_7}, - {-1}, -#line 15 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str675, ei_ascii}, +#line 63 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_iso8859_2}, + {-1}, {-1}, {-1}, {-1}, +#line 534 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ebcdic1148}, +#line 271 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str858, ei_gb2312}, + {-1}, {-1}, +#line 257 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str861, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 191 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str868, ei_mac_romania}, + {-1}, {-1}, +#line 181 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str871, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, +#line 266 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str876, ei_iso646_cn}, +#line 445 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str877, ei_ebcdic838}, + {-1}, {-1}, {-1}, +#line 188 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str881, ei_mac_iceland}, +#line 335 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_euc_kr}, +#line 162 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_cp1256}, +#line 159 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_cp1255}, {-1}, -#line 225 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_iso646_jp}, -#line 267 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str678, ei_sjis}, -#line 516 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_ebcdic1149}, +#line 233 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str886, ei_tis620}, +#line 145 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_cp1251}, {-1}, -#line 389 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_ebcdic277}, -#line 282 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_euc_cn}, -#line 205 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str683, ei_cp1133}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 55 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_iso8859_1}, -#line 52 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_java}, +#line 510 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_ebcdic1144}, + {-1}, {-1}, +#line 563 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str892, ei_tds565}, +#line 255 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str893, ei_jisx0208}, +#line 88 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, +#line 156 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str899, ei_cp1254}, {-1}, -#line 328 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str695, ei_cp1129}, +#line 168 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str901, ei_cp1258}, + {-1}, {-1}, +#line 232 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str904, ei_tis620}, {-1}, -#line 484 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_ebcdic1143}, - {-1}, {-1}, {-1}, -#line 145 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_cp1251}, +#line 85 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_iso8859_6}, +#line 248 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_jisx0201}, {-1}, {-1}, -#line 390 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_ebcdic277}, +#line 192 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str910, ei_mac_romania}, +#line 143 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str911, ei_cp1250}, + {-1}, {-1}, +#line 286 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_euc_jp}, + {-1}, {-1}, +#line 120 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_iso8859_13}, +#line 259 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str918, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 271 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_cp932}, -#line 387 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str707, ei_ebcdic273}, -#line 452 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str708, ei_ebcdic1097}, - {-1}, {-1}, {-1}, -#line 325 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_cp943}, - {-1}, {-1}, {-1}, -#line 413 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str716, ei_ebcdic423}, - {-1}, {-1}, {-1}, -#line 446 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_ebcdic924}, +#line 342 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str929, ei_dec_kanji}, {-1}, {-1}, -#line 223 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str723, ei_iso646_jp}, - {-1}, {-1}, {-1}, -#line 34 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str727, ei_ucs4}, +#line 155 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str932, ei_cp1253}, + {-1}, {-1}, +#line 252 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 180 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str733, ei_mac_cyrillic}, +#line 149 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str941, ei_cp1252}, {-1}, -#line 134 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str735, ei_iso8859_16}, -#line 408 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str736, ei_ebcdic297}, -#line 338 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str737, ei_cp737}, +#line 275 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str943, ei_isoir165}, +#line 119 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 284 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str950, ei_euc_jp}, +#line 187 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str951, ei_mac_iceland}, {-1}, -#line 376 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_cp869}, +#line 283 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 519 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_ebcdic1149}, - {-1}, -#line 395 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str748, ei_ebcdic278}, -#line 115 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_iso8859_10}, -#line 109 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str750, ei_iso8859_9}, -#line 200 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_rk1048}, -#line 59 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str752, ei_iso8859_1}, +#line 341 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str960, ei_iso2022_kr}, {-1}, {-1}, -#line 89 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str755, ei_iso8859_6}, +#line 293 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_iso2022_jp}, +#line 295 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str964, ei_iso2022_jp1}, +#line 211 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str965, ei_nextstep}, +#line 133 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_iso8859_16}, {-1}, -#line 82 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str757, ei_iso8859_5}, -#line 24 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_ucs2}, -#line 386 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str759, ei_ebcdic037}, -#line 290 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_gb18030_2022}, - {-1}, {-1}, {-1}, -#line 77 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_iso8859_4}, +#line 457 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str968, ei_ebcdic880}, {-1}, {-1}, -#line 101 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_iso8859_8}, +#line 261 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str971, ei_jisx0212}, {-1}, -#line 133 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_iso8859_16}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 25 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str777, ei_ucs2}, - {-1}, {-1}, {-1}, -#line 520 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str781, ei_ebcdic1149}, +#line 234 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_cp874}, {-1}, -#line 392 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_ebcdic277}, -#line 279 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str784, ei_euc_cn}, +#line 36 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str975, ei_ucs4be}, + {-1}, {-1}, {-1}, +#line 304 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str979, ei_euc_cn}, #line 79 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_iso8859_5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str980, ei_iso8859_5}, #line 129 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str786, ei_iso8859_15}, - {-1}, {-1}, {-1}, -#line 208 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_tis620}, - {-1}, -#line 252 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str792, ei_gb2312}, - {-1}, -#line 186 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_mac_thai}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_iso8859_15}, + {-1}, {-1}, +#line 294 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str984, ei_iso2022_jp}, + {-1}, {-1}, +#line 165 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str987, ei_cp1257}, {-1}, {-1}, -#line 220 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str797, ei_tcvn}, +#line 203 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str990, ei_mac_arabic}, +#line 260 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str991, ei_jisx0212}, + {-1}, +#line 70 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_iso8859_3}, {-1}, #line 73 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_iso8859_4}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_iso8859_4}, #line 123 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str800, ei_iso8859_14}, -#line 316 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str801, ei_cp949}, -#line 296 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_hz}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_iso8859_14}, #line 100 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str803, ei_iso8859_8}, - {-1}, {-1}, -#line 250 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_gb2312}, -#line 482 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_ebcdic1143}, -#line 249 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str808, ei_iso646_cn}, -#line 388 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str809, ei_ebcdic273}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, -#line 65 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str814, ei_iso8859_2}, - {-1}, -#line 247 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str816, ei_iso646_cn}, - {-1}, -#line 245 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_iso646_cn}, -#line 163 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str819, ei_cp850}, - {-1}, -#line 391 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str821, ei_ebcdic277}, +#line 265 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1002, ei_jisx0212}, {-1}, {-1}, {-1}, -#line 112 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_iso8859_10}, +#line 130 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1006, ei_iso8859_15}, {-1}, {-1}, -#line 495 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str828, ei_ebcdic1145}, - {-1}, -#line 98 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_iso8859_7}, - {-1}, -#line 379 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str832, ei_cp1125}, - {-1}, -#line 236 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str834, ei_jisx0208}, - {-1}, -#line 201 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str836, ei_rk1048}, - {-1}, -#line 410 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str838, ei_ebcdic297}, +#line 403 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_ebcdic037}, + {-1}, {-1}, {-1}, +#line 264 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_jisx0212}, {-1}, -#line 188 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str840, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 210 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str846, ei_tis620}, -#line 542 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str847, ei_tds565}, +#line 522 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1015, ei_ebcdic1146}, +#line 448 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1016, ei_ebcdic870}, +#line 27 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1017, ei_ucs2be}, {-1}, {-1}, -#line 219 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str850, ei_tcvn}, +#line 69 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_iso8859_3}, {-1}, {-1}, {-1}, {-1}, -#line 234 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str855, ei_jisx0208}, -#line 88 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str856, ei_iso8859_6}, -#line 420 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ebcdic500}, +#line 153 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1025, ei_cp1253}, +#line 204 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1026, ei_mac_arabic}, + {-1}, +#line 279 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1028, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, +#line 560 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1033, ei_iso2022_jp3}, +#line 215 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1034, ei_koi8_t}, +#line 297 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_iso2022_jp2}, + {-1}, {-1}, +#line 298 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1038, ei_iso2022_jpms}, {-1}, +#line 68 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1040, ei_iso8859_3}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 111 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str859, ei_iso8859_10}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1048, ei_iso8859_10}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 71 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str870, ei_iso8859_3}, -#line 209 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str871, ei_tis620}, - {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 326 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1062, ei_cp950}, + {-1}, {-1}, #line 84 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str873, ei_iso8859_6}, - {-1}, -#line 268 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str875, ei_sjis}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1065, ei_iso8859_6}, + {-1}, {-1}, {-1}, #line 54 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str876, ei_iso8859_1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1069, ei_iso8859_1}, {-1}, {-1}, -#line 156 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str879, ei_cp1256}, -#line 154 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str880, ei_cp1255}, - {-1}, -#line 144 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_cp1251}, - {-1}, {-1}, {-1}, {-1}, -#line 227 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_jisx0201}, - {-1}, -#line 85 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, -#line 152 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp1254}, +#line 296 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_iso2022_jp2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 160 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str898, ei_cp1258}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 67 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str905, ei_iso8859_3}, - {-1}, -#line 142 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_cp1250}, +#line 565 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1085, ei_atarist}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 37 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_ucs4le}, +#line 96 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_iso8859_7}, +#line 249 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_jisx0201}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 95 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str911, ei_iso8859_7}, - {-1}, {-1}, -#line 230 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_jisx0201}, +#line 131 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1108, ei_iso8859_15}, {-1}, {-1}, -#line 483 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_ebcdic1143}, - {-1}, -#line 231 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str919, ei_jisx0208}, - {-1}, -#line 475 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str921, ei_ebcdic1142}, - {-1}, {-1}, {-1}, -#line 174 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str925, ei_mac_roman}, -#line 166 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str926, ei_cp862}, -#line 415 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str927, ei_ebcdic424}, -#line 265 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str928, ei_euc_jp}, -#line 278 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str929, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, #line 243 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_jisx0212}, - {-1}, -#line 272 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str937, ei_iso2022_jp}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1111, ei_iso646_jp}, + {-1}, {-1}, {-1}, {-1}, +#line 118 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1116, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, +#line 67 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1121, ei_iso8859_3}, +#line 38 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1122, ei_utf16}, #line 61 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str938, ei_iso8859_2}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1123, ei_iso8859_2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 254 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1139, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 309 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1147, ei_cp936}, + {-1}, {-1}, +#line 50 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1150, ei_ucs4swapped}, +#line 97 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1151, ei_iso8859_7}, {-1}, -#line 130 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str940, ei_iso8859_15}, - {-1}, {-1}, {-1}, -#line 147 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_cp1252}, +#line 23 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1153, ei_utf8}, {-1}, -#line 274 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str946, ei_iso2022_jp1}, +#line 262 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1155, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 258 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str949, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 423 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str956, ei_ebcdic838}, -#line 190 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str957, ei_hp_roman8}, +#line 328 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1167, ei_big5hkscs2001}, +#line 427 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1168, ei_ebcdic285}, +#line 91 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1169, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 127 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1178, ei_iso8859_14}, +#line 329 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1179, ei_big5hkscs2004}, {-1}, -#line 31 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str959, ei_ucs2le}, - {-1}, {-1}, -#line 68 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str962, ei_iso8859_3}, -#line 213 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_tis620}, - {-1}, {-1}, -#line 214 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_cp874}, - {-1}, {-1}, -#line 469 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str969, ei_ebcdic1141}, -#line 294 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str970, ei_iso2022_cn_ext}, - {-1}, {-1}, -#line 185 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_mac_arabic}, - {-1}, {-1}, {-1}, {-1}, -#line 226 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str978, ei_iso646_jp}, +#line 331 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1181, ei_big5hkscs2008}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 361 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1189, ei_cp775}, {-1}, {-1}, -#line 91 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_iso8859_7}, +#line 48 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1192, ei_ucs2swapped}, {-1}, {-1}, {-1}, -#line 238 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_jisx0208}, -#line 239 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str986, ei_jisx0212}, -#line 158 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str987, ei_cp1257}, +#line 258 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1196, ei_jisx0208}, {-1}, -#line 212 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str989, ei_tis620}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 240 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_jisx0212}, -#line 476 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_ebcdic1142}, +#line 124 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1198, ei_iso8859_14}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 115 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1214, ei_iso8859_10}, +#line 109 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1215, ei_iso8859_9}, {-1}, {-1}, -#line 204 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str999, ei_mulelao}, -#line 150 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_cp1253}, +#line 59 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1218, ei_iso8859_1}, +#line 89 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1219, ei_iso8859_6}, + {-1}, +#line 82 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1221, ei_iso8859_5}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 189 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1228, ei_mac_croatian}, +#line 164 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1229, ei_cp1256}, +#line 77 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1230, ei_iso8859_4}, {-1}, {-1}, {-1}, #line 419 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1004, ei_ebcdic500}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1234, ei_ebcdic280}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 179 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_mac_romania}, - {-1}, {-1}, {-1}, -#line 539 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1023, ei_iso2022_jp3}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 305 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1029, ei_cp950}, -#line 277 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1030, ei_iso2022_jpms}, - {-1}, {-1}, {-1}, {-1}, -#line 263 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_euc_jp}, - {-1}, {-1}, -#line 320 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1038, ei_iso2022_kr}, -#line 244 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1039, ei_jisx0212}, +#line 559 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1240, ei_iso2022_jp3}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1042, ei_iso8859_13}, -#line 103 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1043, ei_iso8859_8}, +#line 528 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1252, ei_ebcdic1147}, +#line 253 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1253, ei_jisx0208}, + {-1}, {-1}, {-1}, +#line 197 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1257, ei_mac_greek}, +#line 190 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1258, ei_mac_croatian}, {-1}, {-1}, -#line 321 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1046, ei_dec_kanji}, - {-1}, -#line 29 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1048, ei_ucs2be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 92 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1056, ei_iso8859_7}, - {-1}, -#line 424 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1058, ei_ebcdic838}, - {-1}, {-1}, -#line 273 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1061, ei_iso2022_jp}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1261, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 396 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1268, ei_cp869}, + {-1}, {-1}, {-1}, +#line 65 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1272, ei_iso8859_2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 484 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_ebcdic1140}, {-1}, {-1}, -#line 228 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1064, ei_jisx0201}, - {-1}, -#line 544 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1066, ei_atarist}, +#line 338 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1282, ei_johab}, {-1}, -#line 436 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1068, ei_ebcdic880}, +#line 287 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1284, ei_sjis}, {-1}, -#line 275 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1070, ei_iso2022_jp2}, -#line 96 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1071, ei_iso8859_7}, +#line 290 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1286, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 307 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1078, ei_big5hkscs2001}, - {-1}, {-1}, {-1}, -#line 171 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1082, ei_mac_roman}, - {-1}, -#line 254 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1084, ei_isoir165}, +#line 198 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1293, ei_mac_greek}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_big5hkscs2004}, -#line 105 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1091, ei_iso8859_9}, -#line 151 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1092, ei_cp1253}, -#line 288 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1093, ei_cp936}, -#line 310 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_big5hkscs2008}, - {-1}, {-1}, -#line 124 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_iso8859_14}, - {-1}, {-1}, {-1}, -#line 382 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1101, ei_ebcdic037}, -#line 445 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1102, ei_ebcdic924}, +#line 138 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1308, ei_koi8_r}, {-1}, -#line 97 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1104, ei_iso8859_7}, +#line 98 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1310, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 214 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1321, ei_georgian_ps}, {-1}, {-1}, {-1}, -#line 233 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1108, ei_jisx0208}, +#line 44 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1325, ei_utf7}, +#line 213 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1326, ei_georgian_academy}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 105 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1333, ei_iso8859_9}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 327 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1349, ei_big5hkscs1999}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 71 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1356, ei_iso8859_3}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 38 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1110, ei_utf16}, +#line 41 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_utf32}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 276 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1124, ei_iso2022_jp2}, - {-1}, {-1}, {-1}, {-1}, -#line 241 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1129, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, -#line 237 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1134, ei_jisx0208}, +#line 558 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1390, ei_shift_jisx0213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 137 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_koi8_r}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 455 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1405, ei_ebcdic875}, {-1}, {-1}, {-1}, {-1}, -#line 23 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1139, ei_utf8}, - {-1}, {-1}, -#line 375 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1142, ei_cp869}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 50 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1157, ei_ucs4swapped}, - {-1}, {-1}, {-1}, -#line 36 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1161, ei_ucs4be}, -#line 222 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1162, ei_iso646_jp}, +#line 39 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1410, ei_utf16be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 489 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1177, ei_ebcdic1144}, {-1}, {-1}, {-1}, {-1}, -#line 538 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1182, ei_iso2022_jp3}, - {-1}, -#line 172 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1184, ei_mac_roman}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 195 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1193, ei_koi8_t}, +#line 81 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1424, ei_iso8859_5}, {-1}, {-1}, {-1}, -#line 501 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1197, ei_ebcdic1146}, - {-1}, -#line 157 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1199, ei_cp1256}, - {-1}, -#line 232 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1201, ei_jisx0208}, +#line 37 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1428, ei_ucs4le}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 283 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1204, ei_euc_cn}, +#line 282 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1440, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 48 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_ucs2swapped}, +#line 218 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1452, ei_pt154}, {-1}, {-1}, {-1}, -#line 27 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1211, ei_ucs2be}, +#line 95 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1456, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 545 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1225, ei_riscos1}, +#line 31 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1470, ei_ucs2le}, + {-1}, {-1}, {-1}, {-1}, +#line 102 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1475, ei_iso8859_8}, +#line 139 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1476, ei_koi8_u}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 306 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1238, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 406 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_ebcdic285}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 557 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1500, ei_shift_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 242 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 343 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1518, ei_dec_hanyu}, + {-1}, +#line 224 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1520, ei_mulelao}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 466 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1526, ei_ebcdic924}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 195 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1539, ei_mac_ukraine}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 314 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1284, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 138 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1295, ei_koi8_r}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 427 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1302, ei_ebcdic870}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 194 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1311, ei_georgian_ps}, - {-1}, {-1}, -#line 513 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_ebcdic1148}, - {-1}, {-1}, -#line 44 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1317, ei_utf7}, +#line 340 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1559, ei_iso2022_kr}, {-1}, {-1}, -#line 317 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1320, ei_johab}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 193 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1330, ei_georgian_academy}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 191 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1337, ei_nextstep}, +#line 196 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1562, ei_mac_ukraine}, {-1}, {-1}, {-1}, -#line 182 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_mac_greek}, +#line 158 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1566, ei_cp1254}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 45 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1573, ei_utf7}, {-1}, -#line 289 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1343, ei_gb18030_2005}, +#line 556 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1575, ei_euc_jisx0213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 103 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1583, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 41 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1358, ei_utf32}, -#line 137 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1359, ei_koi8_r}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 405 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1598, ei_ebcdic037}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 42 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1606, ei_utf32be}, {-1}, -#line 266 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1370, ei_sjis}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 40 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_utf16le}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 269 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1383, ei_sjis}, +#line 310 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1608, ei_gb18030_2005}, + {-1}, {-1}, +#line 430 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1611, ei_ebcdic297}, + {-1}, +#line 161 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1613, ei_cp1255}, + {-1}, +#line 251 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_jisx0201}, + {-1}, +#line 175 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1617, ei_cp862}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 178 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1401, ei_mac_croatian}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 291 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1407, ei_gb18030_2022}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 261 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1418, ei_euc_jp}, -#line 507 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1419, ei_ebcdic1147}, {-1}, {-1}, -#line 221 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1422, ei_tcvn}, +#line 312 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1665, ei_gb18030_2022}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 339 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1675, ei_johab}, + {-1}, {-1}, +#line 449 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1678, ei_ebcdic870}, + {-1}, {-1}, +#line 28 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1681, ei_ucs2be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 153 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1439, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 398 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1446, ei_ebcdic280}, - {-1}, {-1}, {-1}, -#line 463 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1450, ei_ebcdic1140}, -#line 139 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1451, ei_koi8_u}, +#line 285 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1697, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 555 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1703, ei_euc_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 319 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1468, ei_iso2022_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 537 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1492, ei_shift_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 262 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1524, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 175 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1536, ei_mac_centraleurope}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 406 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1773, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 43 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1559, ei_utf32le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 536 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1592, ei_shift_jisx0213}, -#line 535 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1593, ei_euc_jisx0213}, +#line 201 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1819, ei_mac_hebrew}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 566 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1830, ei_riscos1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 319 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1848, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 102 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1600, ei_iso8859_8}, +#line 202 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1855, ei_mac_hebrew}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 318 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1862, ei_euc_tw}, +#line 40 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1863, ei_utf16le}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 434 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1617, ei_ebcdic875}, - {-1}, {-1}, -#line 155 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1620, ei_cp1255}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 409 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1627, ei_ebcdic297}, -#line 39 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1628, ei_utf16be}, +#line 433 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1916, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 185 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1939, ei_mac_centraleurope}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, #line 32 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1651, ei_ucs2le}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1963, ei_ucs2le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 564 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1979, ei_atarist}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 264 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1693, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 298 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1699, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 333 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2022, ei_euc_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 332 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2036, ei_euc_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 460 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2044, ei_ebcdic905}, {-1}, {-1}, -#line 322 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1711, ei_dec_hanyu}, - {-1}, {-1}, {-1}, -#line 428 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1715, ei_ebcdic870}, +#line 200 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2047, ei_mac_turkish}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 534 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1718, ei_euc_jisx0213}, +#line 43 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2059, ei_utf32le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 181 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1731, ei_mac_ukraine}, - {-1}, {-1}, {-1}, -#line 384 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1735, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 199 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2092, ei_mac_turkish}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 45 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1765, ei_utf7}, + {-1}, {-1}, {-1}, +#line 140 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2105, ei_koi8_ru}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 320 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2119, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 28 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1777, ei_ucs2be}, +#line 147 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2131, ei_cp1251}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 193 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2142, ei_mac_cyrillic}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 297 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1810, ei_euc_tw}, -#line 42 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1811, ei_utf32be}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 159 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1823, ei_cp1257}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 194 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2178, ei_mac_cyrillic}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 312 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1838, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 412 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1850, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 318 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1867, ei_johab}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 172 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2228, ei_cp850}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -2617,39 +2744,21 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 311 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1949, ei_euc_kr}, + {-1}, +#line 334 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2293, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 184 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1968, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2011, ei_ucs4internal}, - {-1}, {-1}, -#line 140 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2014, ei_koi8_ru}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 543 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2026, ei_atarist}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 47 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2061, ei_ucs2internal}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 299 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2085, ei_euc_tw}, -#line 439 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2086, ei_ebcdic905}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -2663,13 +2772,19 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 49 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2526, ei_ucs4internal}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 183 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2223, ei_mac_turkish}, -#line 313 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2224, ei_euc_kr} + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 47 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2568, ei_ucs2internal}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 167 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2577, ei_cp1257} }; const struct alias * diff --git a/lib/generated/indexes.hpp.shippet b/lib/generated/indexes.hpp.shippet new file mode 100644 index 00000000..1c253091 --- /dev/null +++ b/lib/generated/indexes.hpp.shippet @@ -0,0 +1,207 @@ +namespace cppp::base::encoding +{ + enum class Encodings + { + ARMSCII8 = 66, + ASCII = 0, + ATARIST = 196, + BIG5 = 102, + BIG5HKSCS_1999 = 104, + BIG5HKSCS_2001 = 105, + BIG5HKSCS_2004 = 106, + BIG5HKSCS_2008 = 107, + BIG5_2003 = 194, + C99 = 19, + CNGBISOIR165 = 84, + CP1125 = 137, + CP437 = 123, + CP737 = 124, + CP775 = 125, + CP852 = 126, + CP853 = 127, + CP855 = 128, + CP857 = 129, + CP858 = 130, + CP860 = 131, + CP861 = 132, + CP863 = 133, + CP864 = 134, + CP865 = 135, + CP869 = 136, + CP936 = 95, + DEC_HANYU = 113, + DEC_KANJI = 112, + EBCDIC_037 = 138, + EBCDIC_1025 = 158, + EBCDIC_1026 = 159, + EBCDIC_1047 = 160, + EBCDIC_1097 = 161, + EBCDIC_1112 = 162, + EBCDIC_1122 = 163, + EBCDIC_1123 = 164, + EBCDIC_1130 = 165, + EBCDIC_1132 = 166, + EBCDIC_1137 = 167, + EBCDIC_1140 = 168, + EBCDIC_1141 = 169, + EBCDIC_1142 = 170, + EBCDIC_1143 = 171, + EBCDIC_1144 = 172, + EBCDIC_1145 = 173, + EBCDIC_1146 = 174, + EBCDIC_1147 = 175, + EBCDIC_1148 = 176, + EBCDIC_1149 = 177, + EBCDIC_1153 = 178, + EBCDIC_1154 = 179, + EBCDIC_1155 = 180, + EBCDIC_1156 = 181, + EBCDIC_1157 = 182, + EBCDIC_1158 = 183, + EBCDIC_1160 = 184, + EBCDIC_1164 = 185, + EBCDIC_1165 = 186, + EBCDIC_1166 = 187, + EBCDIC_12712 = 189, + EBCDIC_16804 = 190, + EBCDIC_273 = 139, + EBCDIC_277 = 140, + EBCDIC_278 = 141, + EBCDIC_280 = 142, + EBCDIC_282 = 143, + EBCDIC_284 = 144, + EBCDIC_285 = 145, + EBCDIC_297 = 146, + EBCDIC_423 = 147, + EBCDIC_424 = 148, + EBCDIC_425 = 149, + EBCDIC_4971 = 188, + EBCDIC_500 = 150, + EBCDIC_838 = 151, + EBCDIC_870 = 152, + EBCDIC_871 = 153, + EBCDIC_875 = 154, + EBCDIC_880 = 155, + EBCDIC_905 = 156, + EBCDIC_924 = 157, + EUC_JISX0213 = 191, + EUC_JP = 86, + EUC_KR = 108, + EUC_TW = 101, + GB18030_2005 = 96, + GB18030_2022 = 97, + GB1988_80 = 82, + GB2312 = 93, + GB2312_80 = 83, + GBK = 94, + GEORGIANACADEMY = 67, + GEORGIANPS = 68, + HPROMAN8 = 64, + HZ = 100, + IBM1046 = 117, + IBM1124 = 118, + IBM1129 = 119, + IBM1131 = 51, + IBM1161 = 120, + IBM1162 = 121, + IBM1163 = 122, + IBM850 = 48, + IBM856 = 114, + IBM862 = 49, + IBM866 = 50, + IBM922 = 115, + IBM932 = 88, + IBM943 = 116, + IBMCP1133 = 73, + ISO2022_CN = 98, + ISO2022_CN_EXT = 99, + ISO2022_JP = 89, + ISO2022_JP1 = 90, + ISO2022_JP2 = 91, + ISO2022_JP3 = 193, + ISO2022_JPMS = 92, + ISO2022_KR = 111, + ISO8859_1 = 21, + ISO8859_10 = 30, + ISO8859_11 = 31, + ISO8859_13 = 32, + ISO8859_14 = 33, + ISO8859_15 = 34, + ISO8859_16 = 35, + ISO8859_2 = 22, + ISO8859_3 = 23, + ISO8859_4 = 24, + ISO8859_5 = 25, + ISO8859_6 = 26, + ISO8859_7 = 27, + ISO8859_8 = 28, + ISO8859_9 = 29, + JAVA = 20, + JISX0201 = 79, + JISX0208 = 80, + JISX0212 = 81, + JOHAB = 110, + JP = 78, + KOI8T = 69, + KOI8_R = 36, + KOI8_RU = 38, + KOI8_U = 37, + KOREAN = 85, + MACINTOSH = 52, + MAC_ARABIC = 62, + MAC_CENTRALEUROPE = 53, + MAC_CROATIAN = 55, + MAC_CYRILLIC = 57, + MAC_GREEK = 59, + MAC_HEBREW = 61, + MAC_ICELAND = 54, + MAC_ROMANIA = 56, + MAC_THAI = 63, + MAC_TURKISH = 60, + MAC_UKRAINE = 58, + MSANSI = 41, + MSARAB = 45, + MSCYRL = 40, + MSEE = 39, + MSGREEK = 42, + MSHEBR = 44, + MSTURK = 43, + MULELAO1 = 72, + NEXTSTEP = 65, + PT154 = 70, + RISCOS_LATIN1 = 197, + RK1048 = 71, + SHIFT_JIS = 87, + SHIFT_JISX0213 = 192, + TCVN = 77, + TDS565 = 195, + TIS620 = 74, + UCS2 = 2, + UCS2BE = 3, + UCS2LE = 4, + UCS2_INTERNAL = 15, + UCS2_SWAPPED = 16, + UCS4 = 5, + UCS4BE = 6, + UCS4LE = 7, + UCS4_INTERNAL = 17, + UCS4_SWAPPED = 18, + UHC = 109, + UTF16 = 8, + UTF16BE = 9, + UTF16LE = 10, + UTF32 = 11, + UTF32BE = 12, + UTF32LE = 13, + UTF7 = 14, + UTF8 = 1, + VISCII = 76, + WINBALTRIM = 46, + WINDOWS1258 = 47, + WINDOWS874 = 75, + WINDOWS950 = 103, + ATARI = ATARIST, + BIG5HKSCS = BIG5HKSCS_2008, + GB18030 = GB18030_2022, + }; +} // cppp::base::encoding diff --git a/lib/iconv.cpp b/lib/iconv.cpp index ad44c08a..59e68f04 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -47,37 +47,43 @@ namespace cppp::base::reiconv struct wctomb_funcs ofuncs; // conversion unicode -> multibyte }; -#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, #define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) enum { #include "encodings.h.snippet" }; +#undef DEFINDEX #undef DEFCODEPAGE #undef DEFENCODING -#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, #define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, name) static struct encoding const all_encodings[] = { #include "encodings.h.snippet" }; +#undef DEFINDEX #undef DEFENCODING #undef DEFCODEPAGE -#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) #define DEFCODEPAGE(codepage, xxx) {codepage, ei_##xxx}, +#define DEFINDEX(alias, name) static const std::map codepage_to_eindex = { #include "encodings.h.snippet" }; +#undef DEFINDEX #undef DEFENCODING #undef DEFCODEPAGE @@ -225,8 +231,8 @@ namespace cppp::base::reiconv constexpr const size_t TEMP_BUFFER_SIZE = 4096; - _CPPP_API int convert(const iconv_t& cd, const char *start, size_t inlength, char **resultp, - size_t *lengthp, bool strict) + _CPPP_API int convert(iconv_t cd, const char *start, size_t inlength, char **resultp, + size_t *lengthp) { size_t length; char* result; @@ -378,13 +384,11 @@ namespace cppp::base::reiconv return -1; } - int ret = convert(cd, start, inlength, resultp, lengthp, strict); + int ret = convert(cd, start, inlength, resultp, lengthp); iconv_close(cd); return ret; } -#if 0 - _CPPP_API int convert(int tocode_cp, int fromcode_cp, const char* start, size_t inlength, char** resultp, size_t* lengthp, bool strict) { @@ -399,8 +403,6 @@ namespace cppp::base::reiconv return ret; } -#endif - _CPPP_API bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp) { if (resultp == nullptr || lengthp == nullptr) diff --git a/repo.json b/repo.json index ae884ba4..e439b449 100644 --- a/repo.json +++ b/repo.json @@ -2,5 +2,13 @@ "name": "cppp-reiconv", "version": "3.0.0", "description": "C+++ character set conversion library.", - "license": "LGPL-3.0" + "license": "LGPL-3.0", + "hooks": { + "build": { + "run": ".rubisco/build.yml" + }, + "test": { + "run": ".rubisco/test.yml" + } + } } diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index 06de5470..3d4ce1d6 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -89,15 +89,16 @@ int main(int argc, char* argv[]) fprintf(aliases_file, "%%pic\n"); fprintf(aliases_file, "%%%%\n"); -#define DEFENCODING(xxx_names, xxx, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - { \ - static const char *const names[] = BRACIFY xxx_names; \ - emit_encoding(aliases_file, names, sizeof(names) / sizeof(names[0]), #xxx); \ +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + { \ + static const char *const names[] = BRACIFY xxx_names; \ + emit_encoding(aliases_file, names, sizeof(names) / sizeof(names[0]), #xxx); \ } #define DEFCODEPAGE(codepage, xxx) -#define BRACIFY(...) \ - { \ - __VA_ARGS__ \ +#define DEFINDEX(alias, index) +#define BRACIFY(...) \ + { \ + __VA_ARGS__ \ } #include "encodings.h.snippet" diff --git a/tools/genindexes.cpp b/tools/genindexes.cpp new file mode 100644 index 00000000..b7c032d1 --- /dev/null +++ b/tools/genindexes.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2023 The C++ Plus Project. + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +/* Generate indexes enum. */ + +#include +#include +#include + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) + + enum + { + #include "encodings.h.snippet" + }; + +#undef DEFINDEX +#undef DEFCODEPAGE +#undef DEFENCODING + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) { #xxx_index, ei_##xxx }, +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) + +std::map enum_data = +{ + #include "encodings.h.snippet" +}; + +#undef DEFINDEX +#undef DEFCODEPAGE +#undef DEFENCODING + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) {#alias, #index}, + +std::map aliases = +{ + #include "encodings.h.snippet" +}; + +#undef DEFINDEX +#undef DEFCODEPAGE +#undef DEFENCODING + +int main() +{ + std::cout << "namespace cppp::base::encoding\n"; + std::cout << "{\n"; + std::cout << " enum class Encodings\n"; + std::cout << " {\n"; + for (auto& it : enum_data) + { + std::cout << " " << it.first << " = " << it.second << ",\n"; + } + for (auto& it : aliases) + { + std::cout << " " << it.first << " = " << it.second << ",\n"; + } + std::cout << " };\n"; + std::cout << "} // cppp::base::encoding\n"; + + return EXIT_SUCCESS; +} From 21ee492d5045945e788d1763cd8f665323319d32 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 24 Aug 2024 16:44:26 +0800 Subject: [PATCH 35/77] Add `Encoding` class. 1. Add `Encoding` class. 2. Now `iconv_close` return void instead of int. 3. Remove autodetection of encoding. 4. Change `reiconv_version`'s type. 5. Remove ASCII converters. --- CMakeLists.txt | 4 + benchmark/benchmark.cpp | 234 ++++++++++ benchmark/benchmark.hpp | 33 ++ benchmark/glib_iconv.cpp | 165 +++++++ benchmark/libiconv_iconv.cpp | 173 +++++++ benchmark/test_string.hpp | 743 +++++++++++++++++++++++++++++++ include/cppp/reiconv.hpp.in | 228 +++++----- lib/iconv.cpp | 237 ++++------ tests/_iconv.hpp | 2 +- tests/check-ascii-converters.cpp | 103 ----- tests/reiconv-test.hpp | 7 +- tests/table-from.hpp | 5 +- tests/table-to.hpp | 5 +- tests/tests.cmake | 8 - 14 files changed, 1552 insertions(+), 395 deletions(-) create mode 100644 benchmark/benchmark.cpp create mode 100644 benchmark/benchmark.hpp create mode 100644 benchmark/glib_iconv.cpp create mode 100644 benchmark/libiconv_iconv.cpp create mode 100644 benchmark/test_string.hpp delete mode 100644 tests/check-ascii-converters.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bfc9c6da..dbda1456 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,6 +91,10 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/encodings/reiconv.hpp.i include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") include_directories("${output_includedir}") +add_compile_definitions(VERSION_MAJOR=${PROJECT_VERSION_MAJOR}) +add_compile_definitions(VERSION_MINOR=${PROJECT_VERSION_MINOR}) +add_compile_definitions(VERSION_PATCH=${PROJECT_VERSION_PATCH}) + # Add library. cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" TRUE TRUE "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") diff --git a/benchmark/benchmark.cpp b/benchmark/benchmark.cpp new file mode 100644 index 00000000..d662898b --- /dev/null +++ b/benchmark/benchmark.cpp @@ -0,0 +1,234 @@ +#include "benchmark.hpp" +#include "cppp/encodings/reiconv.hpp" +#include "test_string.hpp" + +#include +#include +#include + +#include +#include + +static void reiconv_handle_open_by_name(benchmark::State& state) +{ + using namespace cppp::base; + auto inbuf = reiconv::InputBuffer(simple_test_string_utf8); + for (auto _: state) + { + auto s = reiconv::convert("UTF-8", "GB18030", inbuf); + free(s.buffer); + } +} + +BENCHMARK(reiconv_handle_open_by_name); + +static void reiconv_handle_open_by_codepage(benchmark::State& state) +{ + using namespace cppp::base; + auto inbuf = reiconv::InputBuffer(simple_test_string_utf8); + for (auto _: state) + { + auto s = reiconv::convert(65001, 54936, inbuf); + free(s.buffer); + } +} + +BENCHMARK(reiconv_handle_open_by_codepage); + +static void reiconv_handle_open_by_index(benchmark::State& state) +{ + using namespace cppp::base; + auto inbuf = reiconv::InputBuffer(simple_test_string_utf8); + for (auto _: state) + { + auto s = reiconv::convert(encoding::Encodings::UTF8, encoding::Encodings::GB18030, inbuf); + free(s.buffer); + } +} + +BENCHMARK(reiconv_handle_open_by_index); + +static void glibc_iconv_dynamic_length(benchmark::State& state) +{ + char* output = nullptr; + std::size_t length = 0; + if(glibc_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length) != 0) + { + free(output); + throw std::runtime_error("glibc_iconv_string failed"); + } + free(output); + + for (auto _: state) + { + output = nullptr; + length = 0; + glibc_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length); + free(output); + } +} + +BENCHMARK(glibc_iconv_dynamic_length); + +static void libiconv_iconv_dynamic_length(benchmark::State& state) +{ + char* output = nullptr; + std::size_t length = 0; + if(libiconv_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length) != 0) + { + free(output); + throw std::runtime_error("libiconv_iconv_string failed"); + } + free(output); + + for (auto _: state) + { + output = nullptr; + length = 0; + libiconv_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length); + free(output); + } +} + +BENCHMARK(libiconv_iconv_dynamic_length); + +static void glibc_iconv_static_length(benchmark::State& state) +{ + char* output = nullptr; + std::size_t length = 0; + glibc_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); + free(output); + + for (auto _: state) + { + output = nullptr; + length = 0; + glibc_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); + free(output); + } +} + +static void libiconv_static_length(benchmark::State& state) +{ + char* output = nullptr; + std::size_t length = 0; + libiconv_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); + free(output); + + for (auto _: state) + { + output = nullptr; + length = 0; + libiconv_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); + free(output); + } +} + +static void libicu_static_length(benchmark::State& state) +{ + UErrorCode status{ U_ZERO_ERROR }; + size_t enough_size = 24; + char* output = (char*)malloc(enough_size); + memset(output, 0, enough_size); + int len = ucnv_convert("GB18030", + "UTF-8", + output, + enough_size, + simple_test_string_utf8, + 1, + &status); + + if (U_FAILURE(status)) + { + free(output); + throw std::runtime_error("ucnv_convert failed"); + } + free(output); + + for (auto _: state) + { + output = (char*)malloc(enough_size); + memset(output, 0, enough_size); + len = ucnv_convert("GB18030", + NULL, + output, + enough_size, + simple_test_string_utf8, + 1, + &status); + free(output); + } +} + +BENCHMARK(libicu_static_length); + + + +constexpr std::size_t big_test_string_utf8_len = sizeof(big_test_string_utf8) - 1; + +static void reiconv_convert(benchmark::State& state) +{ + using namespace cppp::base; + auto inbuf = reiconv::InputBuffer((const std::byte*)big_test_string_utf8, big_test_string_utf8_len); + for (auto _: state) + { + auto s = reiconv::convert(encoding::Encodings::UTF8, encoding::Encodings::GB18030, inbuf); + free(s.buffer); + } +} + +BENCHMARK(reiconv_convert); + +static void glibc_convert(benchmark::State& state) +{ + char* output = nullptr; + std::size_t length = 0; + for (auto _: state) + { + output = nullptr; + length = 0; + glibc_iconv_string("GB18030", "UTF-8", big_test_string_utf8, big_test_string_utf8 + big_test_string_utf8_len, &output, &length); + free(output); + } +} + +BENCHMARK(glibc_convert); + +static void libiconv_convert(benchmark::State& state) +{ + char* output = nullptr; + std::size_t length = 0; + for (auto _: state) + { + output = nullptr; + length = 0; + libiconv_iconv_string("GB18030", "UTF-8", big_test_string_utf8, big_test_string_utf8 + big_test_string_utf8_len, &output, &length); + free(output); + } +} + +BENCHMARK(libiconv_convert); + +static void libicu_convert(benchmark::State& state) +{ + UErrorCode status{ U_ZERO_ERROR }; + size_t enough_size = big_test_string_utf8_len * 4; + char* output = nullptr; + for (auto _: state) + { + output = (char*)malloc(enough_size); + memset(output, 0, enough_size); + ucnv_convert("GB18030", + NULL, + output, + enough_size, + big_test_string_utf8, + big_test_string_utf8_len, + &status); + free(output); + } +} + +BENCHMARK(libicu_convert); + +BENCHMARK_MAIN(); diff --git a/benchmark/benchmark.hpp b/benchmark/benchmark.hpp new file mode 100644 index 00000000..4e418e07 --- /dev/null +++ b/benchmark/benchmark.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include + +#include + +extern int glibc_iconv_string(const char* tocode, + const char* fromcode, + const char* start, + const char* end, + char** resultp, + std::size_t* lengthp); + +extern void glibc_static_size_convert(const char* tocode, + const char* fromcode, + const char* data, + std::size_t size, + char** resultp, + std::size_t result_size); + +extern int libiconv_iconv_string(const char* tocode, + const char* fromcode, + const char* start, + const char* end, + char** resultp, + std::size_t* lengthp); + +extern void libiconv_static_size_convert(const char* tocode, + const char* fromcode, + const char* data, + std::size_t size, + char** resultp, + std::size_t result_size); diff --git a/benchmark/glib_iconv.cpp b/benchmark/glib_iconv.cpp new file mode 100644 index 00000000..7f2f7f86 --- /dev/null +++ b/benchmark/glib_iconv.cpp @@ -0,0 +1,165 @@ +#include "benchmark.hpp" + +#include "/usr/include/iconv.h" + +#include +#include + +#ifdef iconv +#warning iconv is defined. Please make sure you are including glibc iconv instead of libiconv. +#warning Trying to link with glibc iconv. This may cause linker errors. + +#undef iconv_t +#undef iconv_open +#undef iconv +#undef iconv_close + +extern "C" +{ + typedef void* iconv_t; + extern int iconv_close(iconv_t __cd); + extern iconv_t iconv_open(const char* __tocode, const char* __fromcode); + extern size_t iconv(iconv_t __cd, + char** __inbuf, + size_t* __inbytesleft, + char** __outbuf, + size_t* __outbytesleft); +} +#endif + +constexpr std::size_t tmpbufsize = 4096; + +// iconv_string without autodetection. Link with glibc iconv. +// See https://git.savannah.gnu.org/cgit/libiconv.git/tree/extras/iconv_string.c +int glibc_iconv_string(const char* tocode, const char* fromcode, + const char* start, const char* end, + char** resultp, std::size_t* lengthp) +{ + iconv_t cd = ::iconv_open(tocode,fromcode); + std::size_t length; + char* result; + /* Determine the length we need. */ + { + std::size_t count = 0; + char tmpbuf[tmpbufsize]; + const char* inptr = start; + std::size_t insize = end-start; + while (insize > 0) + { + char* outptr = tmpbuf; + std::size_t outsize = tmpbufsize; + std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + if (res == (std::size_t)(-1) && errno != E2BIG) + { + int saved_errno = (errno == EINVAL ? EILSEQ : errno); + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + count += outptr-tmpbuf; + } + { + char* outptr = tmpbuf; + std::size_t outsize = tmpbufsize; + std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + int saved_errno = errno; + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + count += outptr-tmpbuf; + } + length = count; + } + if (lengthp != nullptr) + { + *lengthp = length; + } + if (resultp == nullptr) + { + ::iconv_close(cd); + return 0; + } + result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp,length)); + *resultp = result; + if (length == 0) + { + ::iconv_close(cd); + return 0; + } + if (result == nullptr) + { + ::iconv_close(cd); + errno = ENOMEM; + return -1; + } + ::iconv(cd,nullptr,nullptr,nullptr,nullptr); /* return to the initial state */ + /* Do the conversion for real. */ + { + const char* inptr = start; + std::size_t insize = end-start; + char* outptr = result; + std::size_t outsize = length; + while (insize > 0) + { + std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + if (errno == EINVAL) + { + break; + } + else + { + int saved_errno = errno; + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + } + } + { + std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + int saved_errno = errno; + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + } + if (outsize != 0) std::abort(); + } + ::iconv_close(cd); + return 0; +} + +void glibc_static_size_convert(const char* tocode, + const char* fromcode, + const char* data, + std::size_t size, + char** resultp, + std::size_t result_size) +{ + iconv_t cd = ::iconv_open(tocode,fromcode); + if (cd == (iconv_t)(-1)) + { + *resultp = nullptr; + std::abort(); + } + *resultp = (char*)malloc(result_size); + char* inptr = (char*)data; + char* outptr = *resultp; + std::size_t insize = size; + std::size_t outsize = result_size; + std::size_t res = ::iconv(cd,&inptr,&insize,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + ::iconv_close(cd); + free(*resultp); + std::abort(); + } + ::iconv_close(cd); +} diff --git a/benchmark/libiconv_iconv.cpp b/benchmark/libiconv_iconv.cpp new file mode 100644 index 00000000..c3ef1285 --- /dev/null +++ b/benchmark/libiconv_iconv.cpp @@ -0,0 +1,173 @@ +#include "benchmark.hpp" + +#include "/usr/local/include/iconv.h" + +#include +#include + +#ifndef iconv +#warning iconv is not defined. Please make sure you are including libiconv instead of glibc iconv. +#warning Trying to link with libiconv. This may cause linker errors. + +#undef iconv_t +#undef iconv_open +#undef iconv +#undef iconv_close + +#define iconv_t libiconv_t +#define iconv_open libiconv_open +#define iconv libiconv +#define iconv_close libiconv_close + +extern "C" +{ + typedef void* iconv_t; + extern int iconv_close(iconv_t cd); + extern iconv_t iconv_open(const char* tocode, const char* fromcode); + extern size_t iconv(iconv_t cd, + char** inbuf, + size_t* inbytesleft, + char** outbuf, + size_t* outbytesleft); +} +#endif + +constexpr std::size_t tmpbufsize = 4096; + +// iconv_string without autodetection. Link with libiconv. +// See https://git.savannah.gnu.org/cgit/libiconv.git/tree/extras/iconv_string.c +int libiconv_iconv_string(const char* tocode, + const char* fromcode, + const char* start, + const char* end, + char** resultp, + std::size_t* lengthp) +{ + iconv_t cd = ::iconv_open(tocode,fromcode); + std::size_t length; + char* result; + /* Determine the length we need. */ + { + std::size_t count = 0; + char tmpbuf[tmpbufsize]; + const char* inptr = start; + std::size_t insize = end-start; + while (insize > 0) + { + char* outptr = tmpbuf; + std::size_t outsize = tmpbufsize; + std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + if (res == (std::size_t)(-1) && errno != E2BIG) + { + int saved_errno = (errno == EINVAL ? EILSEQ : errno); + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + count += outptr-tmpbuf; + } + { + char* outptr = tmpbuf; + std::size_t outsize = tmpbufsize; + std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + int saved_errno = errno; + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + count += outptr-tmpbuf; + } + length = count; + } + if (lengthp != nullptr) + { + *lengthp = length; + } + if (resultp == nullptr) + { + ::iconv_close(cd); + return 0; + } + result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp,length)); + *resultp = result; + if (length == 0) + { + ::iconv_close(cd); + return 0; + } + if (result == nullptr) + { + ::iconv_close(cd); + errno = ENOMEM; + return -1; + } + ::iconv(cd,nullptr,nullptr,nullptr,nullptr); /* return to the initial state */ + /* Do the conversion for real. */ + { + const char* inptr = start; + std::size_t insize = end-start; + char* outptr = result; + std::size_t outsize = length; + while (insize > 0) + { + std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + if (errno == EINVAL) + { + break; + } + else + { + int saved_errno = errno; + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + } + } + { + std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + int saved_errno = errno; + ::iconv_close(cd); + errno = saved_errno; + return -1; + } + } + if (outsize != 0) std::abort(); + } + ::iconv_close(cd); + return 0; +} + +void libiconv_static_size_convert(const char* tocode, + const char* fromcode, + const char* data, + std::size_t size, + char** resultp, + std::size_t result_size) +{ + iconv_t cd = ::iconv_open(tocode,fromcode); + if (cd == (iconv_t)(-1)) + { + *resultp = nullptr; + std::abort(); + } + *resultp = (char*)malloc(result_size); + char* inptr = (char*)data; + char* outptr = *resultp; + std::size_t insize = size; + std::size_t outsize = result_size; + std::size_t res = ::iconv(cd,&inptr,&insize,&outptr,&outsize); + if (res == (std::size_t)(-1)) + { + ::iconv_close(cd); + free(*resultp); + std::abort(); + } + ::iconv_close(cd); +} diff --git a/benchmark/test_string.hpp b/benchmark/test_string.hpp new file mode 100644 index 00000000..36781dd9 --- /dev/null +++ b/benchmark/test_string.hpp @@ -0,0 +1,743 @@ +constexpr const char* simple_test_string_utf8 = "S"; + +#define _big_test_string_utf8 "\ +The quick brown fox jumps over the lazy dog.\ +01234567893378458181145141919810314159265358979323846271828182845904\ +!@#$%^&*()_+\"'\ +\xe6\xb7\xb7\xe6\xb2\x8c\xe6\x9c\xaa\xe5\x88\x86\xe5\xa4\xa9\xe5\x9c\xb0\xe4\xb9\xb1\xef\xbc\x8c\xe8\x8c\xab\xe8\x8c\xab\xe6\xb8\xba\xe6\xb8\xba\xe6\x97\xa0\xe4\xba\xba\xe8\xa7\x81\xe3\x80\x82\ +\xe8\x87\xaa\xe4\xbb\x8e\xe7\x9b\x98\xe5\x8f\xa4\xe7\xa0\xb4\xe9\xb8\xbf\xe8\x92\x99\xef\xbc\x8c\xe5\xbc\x80\xe8\xbe\x9f\xe4\xbb\x8e\xe5\x85\xb9\xe6\xb8\x85\xe6\xb5\x8a\xe8\xbe\xa8\xe3\x80\x82\ +\xe8\xa6\x86\xe8\xbd\xbd\xe7\xbe\xa4\xe7\x94\x9f\xe4\xbb\xb0\xe8\x87\xb3\xe4\xbb\x81\xef\xbc\x8c\xe5\x8f\x91\xe6\x98\x8e\xe4\xb8\x87\xe7\x89\xa9\xe7\x9a\x86\xe6\x88\x90\xe5\x96\x84\xe3\x80\x82\ +\xe6\xac\xb2\xe7\x9f\xa5\xe9\x80\xa0\xe5\x8c\x96\xe4\xbc\x9a\xe5\x85\x83\xe5\x8a\x9f\xef\xbc\x8c\xe9\xa1\xbb\xe7\x9c\x8b\xe8\xa5\xbf\xe6\xb8\xb8\xe9\x87\x8a\xe5\x8e\x84\xe4\xbc\xa0\xe3\x80\x82\ +\xe7\x81\xab\xe7\x9c\xbc\xe9\x87\x91\xe7\x9d\x9b\xe8\xaf\x86\xe5\x96\x84\xe6\x81\xb6\xef\xbc\x8c\xe5\x8d\xb4\xe6\x9c\x89\xe7\xb4\xa7\xe7\xae\x8d\xe5\x8f\x97\xe6\x8a\x98\xe7\xa3\xa8\xe3\x80\x82\ +\xe8\x99\xbd\xe6\x9c\x89\xe4\xb8\x8a\xe5\xa4\xa9\xe5\x85\xa5\xe5\x9c\xb0\xe8\x83\xbd\xef\xbc\x8c\xe6\x97\xa0\xe5\xa5\x88\xe5\x94\x90\xe5\x83\xa7\xe5\x81\x9a\xe5\xa9\x86\xe5\xa9\x86\xe3\x80\x82\ +\xe6\x82\x9f\xe7\xa9\xba\xe6\x81\x83\xe8\x83\xbd\xe9\x97\xb9\xe5\xa4\xa9\xe5\xba\xad\xef\xbc\x8c\xe7\x8e\x89\xe5\xb8\x9d\xe6\x97\xa0\xe5\xa5\x88\xe5\xb0\x81\xe5\xa4\xa7\xe5\x9c\xa3\xe3\x80\x82\ +\xe8\xb0\x81\xe7\x9f\xa5\xe8\x9f\xa0\xe6\xa1\x83\xe4\xbc\x9a\xe6\x97\xa0\xe7\xbc\x98\xef\xbc\x8c\xe4\xb8\x8d\xe5\xa6\x82\xe7\x8c\xb4\xe7\x8e\x8b\xe6\xb0\xb4\xe5\xb8\x98\xe6\xb4\x9e\xe3\x80\x82\ +\xe4\xb8\x80\xe6\xa0\xb9\xe9\x87\x91\xe7\xae\x8d\xe6\x84\x81\xe9\xac\xbc\xe7\xa5\x9e\xef\xbc\x8c\xe9\x87\x91\xe8\xa7\x84\xe7\x8e\x89\xe5\xbe\x8b\xe4\xb8\x8d\xe6\x9d\x9f\xe8\xba\xab\xe3\x80\x82\ +\xe4\xbc\x97\xe7\xa5\x9e\xe4\xb9\x8b\xe4\xb8\xad\xe8\x83\xbd\xe9\xbd\x90\xe5\x88\x97\xef\xbc\x8c\xe7\x8e\x89\xe5\xb8\x9d\xe9\x9d\xa2\xe5\x89\x8d\xe7\xa7\xb0\xe8\x80\x81\xe5\xad\x99\xe3\x80\x82\ +\xe6\x9c\xac\xe6\x98\xaf\xe7\x99\xbd\xe9\xaa\xa8\xe9\xaa\xb7\xe9\xab\x85\xe5\xa0\x86\xef\xbc\x8c\xe6\x91\x87\xe8\xba\xab\xe4\xb8\x80\xe5\x8f\x98\xe6\x9f\xb3\xe5\x8f\xb6\xe7\x9c\x89\xe3\x80\x82\ +\xe5\x85\xab\xe6\x88\x92\xe6\x97\xa0\xe8\x83\xbd\xe8\xbf\xb7\xe5\xbf\x83\xe7\xaa\x8d\xef\xbc\x8c\xe8\xbf\x98\xe4\xba\x8f\xe6\x82\x9f\xe7\xa9\xba\xe8\xbe\xa8\xe7\x9c\x9f\xe4\xbc\xaa\xe3\x80\x82\ +\xe6\x9c\xa8\xe7\xad\x8f\xe9\xa3\x98\xe6\xb5\x81\xe6\x88\x98\xe9\x82\xaa\xe9\xa3\x8e\xef\xbc\x8c\xe5\xad\xa6\xe5\xbe\x97\xe9\x92\xbb\xe5\xa4\xa9\xe5\x85\xa5\xe5\x9c\xb0\xe8\x83\xbd\xe3\x80\x82\ +\xe8\x8b\xa5\xe9\x9d\x9e\xe4\xb8\x83\xe5\x91\xa8\xe7\x81\xab\xe7\x86\xac\xe7\x85\x8e\xef\xbc\x8c\xe5\x93\xaa\xe5\xbe\x97\xe7\x81\xab\xe7\x9c\xbc\xe5\x92\x8c\xe9\x87\x91\xe7\x9d\x9b\xef\xbc\x9f\ +\xe5\x9c\xa3\xe5\x83\xa7\xe5\x8a\xaa\xe5\x8a\x9b\xe5\x8f\x96\xe7\xbb\x8f\xe7\xbc\x96\xef\xbc\x8c\xe8\xa5\xbf\xe5\xae\x87\xe5\x91\xa8\xe6\xb5\x81\xe5\x8d\x81\xe5\x9b\x9b\xe5\xb9\xb4\xe3\x80\x82\ +\xe8\x8b\xa6\xe5\x8e\x86\xe7\xa8\x8b\xe9\x80\x94\xe9\x81\xad\xe6\x82\xa3\xe9\x9a\xbe\xef\xbc\x8c\xe5\xa4\x9a\xe7\xbb\x8f\xe5\xb1\xb1\xe6\xb0\xb4\xe5\x8f\x97\xe8\xbf\x8d\xe9\x82\x85\xe3\x80\x82\ +\xe5\x8a\x9f\xe5\xae\x8c\xe5\x85\xab\xe4\xb9\x9d\xe8\xbf\x98\xe5\x8a\xa0\xe4\xb9\x9d\xef\xbc\x8c\xe8\xa1\x8c\xe6\xbb\xa1\xe4\xb8\x89\xe5\x8d\x83\xe5\x8f\x8a\xe5\xa4\xa7\xe5\x8d\x83\xe3\x80\x82\ +\xe5\xa4\xa7\xe8\xa7\x89\xe5\xa6\x99\xe6\x96\x87\xe5\x9b\x9e\xe4\xb8\x8a\xe5\x9b\xbd\xef\xbc\x8c\xe8\x87\xb3\xe4\xbb\x8a\xe4\xb8\x9c\xe5\x9c\x9f\xe6\xb0\xb8\xe7\x95\x99\xe4\xbc\xa0\xe3\x80\x82\ +It is possible to implement a substantial subset of the Unicode Standard as “wide ASCII”\ + with little change to existing programming practice. However, the Unicode Standard also\ + provides for languages and writing systems that have more complex behavior than English\ + does. Whether one is implementing a new operating system from the ground up or\ + enhancing existing programming environments or applications, it is necessary to examine\ + many aspects of current programming practice and conventions to deal with this more\ + complex behavior.\ + This chapter covers a series of short, self-contained topics that are useful for implementers.\ + The information and examples presented here are meant to help implementers understand\ + and apply the design and features of the Unicode Standard. That is, they are meant to pro\ +mote good practice in implementations conforming to the Unicode Standard.\ + These recommended guidelines are not normative and are not binding on the imple\ +menter, but are intended to represent best practice. When implementing the Unicode\ + Standard, it is important to look not only at the letter of the conformance rules, but also at\ + their spirit. Many of the following guidelines have been created specifically to assist people\ + who run into issues with conformant implementations, while reflecting the requirements\ + of actual usage.\ +\xe5\xbc\x80\xe8\xbe\x9f\xe9\xb8\xbf\xe8\x92\x99\xef\xbc\x8c\xe8\xb0\x81\xe4\xb8\xba\xe6\x83\x85\xe7\xa7\x8d\xef\xbc\x9f\xe9\x83\xbd\xe5\x8f\xaa\xe4\xb8\xba\xe9\xa3\x8e\xe6\x9c\x88\xe6\x83\x85\xe6\xb5\x93\xe3\x80\x82\xe8\xb6\x81\xe7\x9d\x80\xe8\xbf\x99\xe5\xa5\x88\xe4\xbd\x95\xe5\xa4\xa9\xe3\x80\x81\xe4\xbc\xa4\xe6\x80\x80\xe6\x97\xa5\xe3\x80\x81\xe5\xaf\x82\xe5\xaf\xa5\xe6\x97\xb6\xef\xbc\x8c\xe8\xaf\x95\xe9\x81\xa3\xe6\x84\x9a\xe8\xa1\xb7\xe3\x80\x82\xe5\x9b\xa0\xe6\xad\xa4\xe4\xb8\x8a\xef\xbc\x8c\xe6\xbc\x94\xe5\x87\xba\xe8\xbf\x99\xe6\x80\x80\xe9\x87\x91\xe6\x82\xbc\xe7\x8e\x89\xe7\x9a\x84\xe3\x80\x8a\xe7\xba\xa2\xe6\xa5\xbc\xe6\xa2\xa6\xe3\x80\x8b\ +\xe4\xb8\x80\xe5\xb8\x86\xe9\xa3\x8e\xe9\x9b\xa8\xe8\xb7\xaf\xe4\xb8\x89\xe5\x8d\x83\xef\xbc\x8c\xe6\x8a\x8a\xe9\xaa\xa8\xe8\x82\x89\xe5\xae\xb6\xe5\x9b\xad\xe9\xbd\x90\xe6\x9d\xa5\xe6\x8a\x9b\xe9\x97\xaa\xe3\x80\x82\xe6\x81\x90\xe5\x93\xad\xe6\x8d\x9f\xe6\xae\x8b\xe5\xb9\xb4\xef\xbc\x8c\xe5\x91\x8a\xe7\x88\xb9\xe5\xa8\x98\xef\xbc\x8c\xe4\xbc\x91\xe6\x8a\x8a\xe5\x84\xbf\xe6\x82\xac\xe5\xbf\xb5\xe3\x80\x82\xe8\x87\xaa\xe5\x8f\xa4\xe7\xa9\xb7\xe9\x80\x9a\xe7\x9a\x86\xe6\x9c\x89\xe5\xae\x9a\xef\xbc\x8c\xe7\xa6\xbb\xe5\x90\x88\xe5\xb2\x82\xe6\x97\xa0\xe7\xbc\x98\xef\xbc\x9f\xe4\xbb\x8e\xe4\xbb\x8a\xe5\x88\x86\xe4\xb8\xa4\xe5\x9c\xb0\xef\xbc\x8c\xe5\x90\x84\xe8\x87\xaa\xe4\xbf\x9d\xe5\xb9\xb3\xe5\xae\x89\xe3\x80\x82\xe5\xa5\xb4\xe5\x8e\xbb\xe4\xb9\x9f\xef\xbc\x8c\xe8\x8e\xab\xe7\x89\xb5\xe8\xbf\x9e\xe3\x80\x82\ +The prepended concatenation marks always have a visible display. These are visible format\ + characters which span groups of numbers, particularly for the Arabic script—for example,\ + U+0601 arabic sign sanah, the Arabic year sign. See “Signs Spanning Numbers” in\ + Section 9.2, Arabic for more discussion of the use and display of these signs.\ + The other two notable sets of format characters that exceptionally are not ignored in fall\ +back display consist of the interlinear annotation characters, U+FFF9 interlinear anno\ +tation anchor through U+FFFB interlinear annotation terminator, and the\ + Egyptian hieroglyph format controls, U+13430 egyptian hieroglyph vertical joiner\ + through U+13438 egyptian hieroglyph end segment. These characters should have a\ + visible glyph display for fallback rendering, because if they are not displayed, it is too easy\ + to misread the resulting displayed text. See “Annotation Characters” in Section 23.8, Spe\ +cials, as well as Section 11.4, Egyptian Hieroglyphs for more discussion of the use and dis\ +play of these characters.\ +When converting text from one character encoding to another, a conversion algorithm\ + may encounter unconvertible code units. This is most commonly caused by some sort of\ + corruption of the source data, so that it does not correctly follow the specification for that\ + character encoding. Examples include dropping a byte in a multibyte encoding such as\ + Shift-JIS, improper concatenation of strings, a mismatch between an encoding declaration\ + and actual encoding of text, use of non-shortest form for UTF-8, and so on.\ + When a conversion algorithm encounters such unconvertible data, the usual practice is\ + either to throw an exception or to use a defined substitution character to represent the\ + unconvertible data. In the case of conversion to one of the encoding forms of the Unicode\ + Standard, the substitution character is defined as U+FFFD replacement character.\ + For conversion between different encoding forms of the Unicode Standard, “U+FFFD Sub\ +stitution of Maximal Subparts” in Section 3.9, Unicode Encoding Forms defines a practice\ + for the use of U+FFFD which is consistent with the W3C standard for encoding. It is useful\ + to apply the same practice to the conversion from non-Unicode encodings to an encoding\ + form of the Unicode Standard.\ + This practice is more secure because it does not result in the conversion consuming parts\ + of valid sequences as though they were invalid. It also guarantees at least one replacement\ + character will occur for each instance of an invalid sequence in the original text. Further\ +more, this practice can be defined consistently for better interoperability between different\ + implementations of conversion.\ + For full consistency, it is important for conversion implementations to agree on 1) the\ + exact set of well-formed sequences for the source encoding, 2) all of the mappings for valid\ + sequences, and 3) the details of the practice for handling ill-formed sequences\\ +\u8bdd\u8bf4\u4f17\u4eba\u95fb\u5f97\u5b9d\u7434\u5c06\u7d20\u6614\u6240\u7ecf\u8fc7\u5404\u7701\u5185\u53e4\u8ff9\u4e3a\u9898\uff0c\u505a\u4e86\u5341\u9996\u6000\u53e4\u7edd\u53e5\uff0c\u5185\u9690\u5341\u7269\uff0c\u7686\u8bf4\uff1a\u201c\u8fd9\u81ea\u7136\u65b0\u5de7\u3002\u201d\u90fd\u4e89\u7740\u770b\u65f6\uff0c\u53ea\u89c1\u5199\u9053\u662f\uff1a\ +\u8d64\u58c1\u6000\u53e4\ +\u8d64\u58c1\u6c89\u57cb\u6c34\u4e0d\u6d41\uff0c\u5f92\u7559\u540d\u59d3\u8f7d\u7a7a\u821f\u3002\u55a7\u9617\u4e00\u70ac\u60b2\u98ce\u51b7\uff0c\u65e0\u9650\u82f1\u9b42\u5728\u5185\u6e38\u3002\ +\u4ea4\u8dbe\u6000\u53e4\ +\u94dc\u67f1\u91d1\u57ce\u632f\u7eaa\u7eb2\uff0c\u58f0\u4f20\u6d77\u5916\u64ad\u620e\u7f8c\u3002\u9a6c\u63f4\u81ea\u662f\u529f\u52b3\u5927\uff0c\u94c1\u7b1b\u65e0\u70e6\u8bf4\u5b50\u623f\u3002\ +\u949f\u5c71\u6000\u53e4\ +\u540d\u5229\u4f55\u66fe\u4f34\u5973\u8eab\uff0c\u65e0\u7aef\u88ab\u8bcf\u51fa\u51e1\u5c18\u3002\u7275\u8fde\u5927\u62b5\u96be\u4f11\u7edd\uff0c\u83ab\u6028\u4ed6\u4eba\u5632\u7b11\u9891\u3002\ +\u6dee\u9634\u6000\u53e4\ +\u58ee\u58eb\u987b\u9632\u6076\u72ac\u6b3a\uff0c\u4e09\u9f50\u4f4d\u5b9a\u76d6\u68fa\u65f6\u3002\u5bc4\u8a00\u4e16\u4fd7\u4f11\u8f7b\u9119\uff0c\u4e00\u996d\u4e4b\u6069\u6b7b\u4e5f\u77e5\u3002\ +\u5e7f\u9675\u6000\u53e4\ +\u8749\u566a\u9e26\u6816\u8f6c\u773c\u8fc7\uff0c\u968b\u5824\u98ce\u666f\u8fd1\u5982\u4f55\uff1f\u53ea\u7f18\u5360\u5c3d\u98ce\u6d41\u53f7\uff0c\u60f9\u5f97\u7eb7\u7eb7\u53e3\u820c\u591a\u3002\ +\u6843\u53f6\u6e21\u6000\u53e4\ +\u8870\u8349\u95f2\u82b1\u6620\u6d45\u6c60\uff0c\u6843\u679d\u6843\u53f6\u603b\u5206\u79bb\u3002\u516d\u671d\u6881\u680b\u591a\u5982\u8bb8\uff0c\u5c0f\u7167\u7a7a\u60ac\u58c1\u4e0a\u9898\u3002\ +\u9752\u51a2\u6000\u53e4\ +\u9ed1\u6c34\u832b\u832b\u54bd\u4e0d\u6d41\uff0c\u51b0\u5f26\u62e8\u5c3d\u66f2\u4e2d\u6101\u3002\u6c49\u5bb6\u5236\u5ea6\u8bda\u582a\u7b11\uff0c\u6a17\u680e\u5e94\u60ed\u4e07\u53e4\u7f9e\u3002\ +\u9a6c\u5d6c\u6000\u53e4\ +\u5bc2\u5bde\u8102\u75d5\u79ef\u6c57\u5149\uff0c\u6e29\u67d4\u4e00\u65e6\u4ed8\u4e1c\u6d0b\u3002\u53ea\u56e0\u9057\u5f97\u98ce\u6d41\u8ff9\uff0c\u6b64\u65e5\u8863\u88f3\u5c1a\u6709\u9999\u3002\ +\u84b2\u4e1c\u5bfa\u6000\u53e4\ +\u5c0f\u7ea2\u9aa8\u8d31\u4e00\u8eab\u8f7b\uff0c\u79c1\u6396\u5077\u643a\u5f3a\u64ae\u6210\u3002\u867d\u88ab\u592b\u4eba\u65f6\u540a\u8d77\uff0c\u5df2\u7ecf\u52fe\u5f15\u5f7c\u540c\u884c\u3002\ +\u6885\u82b1\u89c2\u6000\u53e4\ +\u4e0d\u5728\u6885\u8fb9\u5728\u67f3\u8fb9\uff0c\u4e2a\u4e2d\u8c01\u62fe\u753b\u5a75\u5a1f\uff1f\u56e2\u5706\u83ab\u5fc6\u6625\u9999\u5230\uff0c\u4e00\u522b\u897f\u98ce\u53c8\u4e00\u5e74\u3002\ +\u4f17\u4eba\u770b\u4e86\uff0c\u90fd\u79f0\u5947\u5999\u3002\u5b9d\u9497\u5148\u8bf4\u9053\uff1a\u201c\u524d\u516b\u9996\u90fd\u662f\u53f2\u9274\u4e0a\u6709\u636e\u7684\uff0c\u540e\u4e8c\u9996\u5374\u65e0\u8003\u3002\u6211\u4eec\u4e5f\u4e0d\u5927\u61c2\u5f97\uff0c\u4e0d\u5982\u53e6\u505a\u4e24\u9996\u4e3a\u662f\u3002\u201d\u9edb\u7389\u5fd9\u62e6\u7740\uff1a\u201c\u8fd9\u5b9d\u59d0\u59d0\u4e5f\u5fd2\u80f6\u67f1\u9f13\u745f\u3001\u77eb\u63c9\u9020\u4f5c\u4e86\u3002\u4e24\u9996\u867d\u4e8e\u53f2\u9274\u4e0a\u65e0\u8003\uff0c\u54b1\u4eec\u867d\u4e0d\u66fe\u770b\u8fd9\u4e9b\u5916\u4f20\uff0c\u4e0d\u77e5\u5e95\u91cc\uff0c\u96be\u9053\u54b1\u4eec\u8fde\u4e24\u672c\u620f\u4e5f\u6ca1\u89c1\u8fc7\u4e0d\u6210\uff1f\u90a3\u4e09\u5c81\u7684\u5b69\u5b50\u4e5f\u77e5\u9053\uff0c\u4f55\u51b5\u54b1\u4eec\uff1f\u201d\u63a2\u6625\u4fbf\u9053\uff1a\u201c\u8fd9\u8bdd\u6b63\u662f\u4e86\u3002\u201d\u674e\u7ea8\u53c8\u9053\uff1a\u201c\u51b5\u4e14\u4ed6\u539f\u8d70\u5230\u8fd9\u4e2a\u5730\u65b9\u7684\u3002\u8fd9\u4e24\u4ef6\u4e8b\u867d\u65e0\u8003\uff0c\u53e4\u5f80\u4eca\u6765\uff0c\u4ee5\u8bb9\u4f20\u8bb9\uff0c\u597d\u4e8b\u8005\u7adf\u6545\u610f\u7684\u5f04\u51fa\u8fd9\u53e4\u8ff9\u6765\u4ee5\u611a\u4eba\u3002\u6bd4\u5982\u90a3\u5e74\u4e0a\u4eac\u7684\u65f6\u8282\uff0c\u4fbf\u662f\u5173\u592b\u5b50\u7684\u575f\uff0c\u5012\u89c1\u4e86\u4e09\u56db\u5904\u3002\u5173\u592b\u4eba\u4e00\u8eab\u4e8b\u4e1a\u7686\u662f\u6709\u636e\u7684\uff0c\u5982\u4f55\u53c8\u6709\u8bb8\u591a\u7684\u575f\uff1f\u81ea\u7136\u662f\u540e\u6765\u4eba\u656c\u7231\u4ed6\u751f\u524d\u4e3a\u4eba\uff0c\u53ea\u6015\u4ece\u8fd9\u656c\u7231\u4e0a\u7a7f\u51ff\u51fa\u6765\u4e5f\u662f\u6709\u7684\u3002\u53ca\u81f3\u770b\u300a\u5e7f\u8206\u8bb0\u300b\u4e0a\uff0c\u4e0d\u6b62\u5173\u592b\u5b50\u7684\u575f\u591a\u6709\uff0c\u53e4\u6765\u6709\u540d\u671b\u7684\u4eba\uff0c\u90a3\u575f\u5c31\u4e0d\u5c11\u3002\u65e0\u8003\u7684\u53e4\u8ff9\u66f4\u591a\u3002\u5982\u4eca\u8fd9\u4e24\u9996\u8bd7\u867d\u65e0\u8003\uff0c\u51e1\u8bf4\u4e66\u5531\u620f\uff0c\u751a\u81f3\u4e8e\u6c42\u7684\u7b7e\u4e0a\u90fd\u6709\u3002\u8001\u5c11\u7537\u5973\u4fd7\u8bed\u53e3\u5934\uff0c\u4eba\u4eba\u7686\u77e5\u7686\u8bf4\u7684\u3002\u51b5\u4e14\u53c8\u5e76\u4e0d\u662f\u770b\u4e86\u300a\u897f\u53a2\u8bb0\u300b\u3001\u300a\u7261\u4e39\u4ead\u300b\u7684\u8bcd\u66f2\uff0c\u6015\u770b\u4e86\u90aa\u4e66\u4e86\u3002\u8fd9\u4e5f\u65e0\u59a8\uff0c\u53ea\u7ba1\u7559\u7740\u3002\u201d\u5b9d\u9497\u542c\u8bf4\uff0c\u65b9\u7f62\u4e86\u3002\u5927\u5bb6\u731c\u4e86\u4e00\u56de\uff0c\u7686\u4e0d\u662f\u7684\u3002\ +\u51ac\u65e5\u5929\u77ed\uff0c\u89c9\u5f97\u53c8\u662f\u5403\u665a\u996d\u65f6\u5019\uff0c\u4e00\u9f50\u5f80\u524d\u5934\u6765\u5403\u665a\u996d\u3002\u56e0\u6709\u4eba\u56de\u738b\u592b\u4eba\u8bf4\uff1a\u201c\u88ad\u4eba\u7684\u54e5\u54e5\u82b1\u81ea\u82b3\uff0c\u5728\u5916\u5934\u56de\u8fdb\u6765\u8bf4\uff0c\u4ed6\u6bcd\u4eb2\u75c5\u91cd\u4e86\uff0c\u60f3\u4ed6\u5973\u513f\u3002\u4ed6\u6765\u6c42\u6069\u5178\uff0c\u63a5\u88ad\u4eba\u5bb6\u53bb\u8d70\u8d70\u3002\u201d\u738b\u592b\u4eba\u542c\u4e86\uff0c\u4fbf\u8bf4\uff1a\u201c\u4eba\u5bb6\u6bcd\u5973\u4e00\u573a\uff0c\u5c82\u6709\u4e0d\u8bb8\u4ed6\u53bb\u7684\u5462\u3002\u201d\u4e00\u9762\u5c31\u53eb\u4e86\u51e4\u59d0\u6765\u544a\u8bc9\u4e86\uff0c\u547d\u4ed6\u914c\u91cf\u529e\u7406\u3002\u51e4\u59d0\u513f\u7b54\u5e94\u4e86\uff0c\u56de\u81f3\u5c4b\u91cc\uff0c\u4fbf\u547d\u5468\u745e\u5bb6\u7684\u53bb\u544a\u8bc9\u88ad\u4eba\u539f\u6545\u3002\u5429\u5490\u5468\u745e\u5bb6\u7684\uff1a\u201c\u518d\u5c06\u8ddf\u7740\u51fa\u95e8\u7684\u5ab3\u5987\u4f20\u4e00\u4e2a\uff0c\u4f60\u4eec\u4e24\u4e2a\u4eba\uff0c\u518d\u5e26\u4e24\u4e2a\u5c0f\u4e2b\u5934\u5b50\uff0c\u8ddf\u4e86\u88ad\u4eba\u53bb\u3002\u5206\u5934\u6d3e\u56db\u4e2a\u6709\u5e74\u7eaa\u7684\u8ddf\u8f66\u3002\u8981\u4e00\u8f86\u5927\u8f66\uff0c\u4f60\u4eec\u5e26\u7740\u5750\uff0c\u4e00\u8f86\u5c0f\u8f66\uff0c\u7ed9\u4e2b\u5934\u4eec\u5750\u3002\u201d\u5468\u745e\u5bb6\u7684\u7b54\u5e94\u4e86\uff0c\u624d\u8981\u53bb\uff0c\u51e4\u59d0\u53c8\u9053\uff1a\u201c\u90a3\u88ad\u4eba\u662f\u4e2a\u7701\u4e8b\u7684\uff0c\u4f60\u544a\u8bc9\u8bf4\u6211\u7684\u8bdd\uff1a\u53eb\u4ed6\u7a7f\u51e0\u4ef6\u989c\u8272\u597d\u8863\u88f3\uff0c\u5927\u5927\u7684\u5305\u4e00\u5305\u88b1\u8863\u88f3\u62ff\u7740\uff0c\u5305\u88b1\u8981\u597d\u597d\u7684\uff0c\u62ff\u624b\u7089\u4e5f\u62ff\u597d\u7684\u3002\u4e34\u8d70\u65f6\uff0c\u53eb\u4ed6\u5148\u5230\u8fd9\u91cc\u6765\u6211\u77a7\u3002\u201d\u5468\u745e\u5bb6\u7684\u7b54\u5e94\u53bb\u4e86\u3002\ +\u534a\u65e5\uff0c\u679c\u89c1\u88ad\u4eba\u7a7f\u6234\u4e86\uff0c\u4e24\u4e2a\u4e2b\u5934\u548c\u5468\u745e\u5bb6\u7684\u62ff\u7740\u624b\u7089\u548c\u8863\u5305\u3002\u51e4\u59d0\u770b\u88ad\u4eba\u5934\u4e0a\u6234\u7740\u51e0\u679d\u91d1\u9497\u73e0\u948f\uff0c\u5012\u4e5f\u534e\u4e3d\uff0c\u53c8\u770b\u8eab\u4e0a\u7a7f\u7740\u6843\u7ea2\u767e\u82b1\u523b\u4e1d\u94f6\u9f20\u8884\uff0c\u8471\u7eff\u76d8\u91d1\u5f69\u7ee3\u9526\u88d9\uff0c\u5916\u9762\u7a7f\u7740\u9752\u7f0e\u7070\u9f20\u8902\u3002\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u8fd9\u4e09\u4ef6\u8863\u88f3\u90fd\u662f\u592a\u592a\u7684\uff0c\u8d4f\u4e86\u4f60\u5012\u662f\u597d\u7684\u3002\u4f46\u8fd9\u8902\u5b50\u592a\u7d20\u4e86\u4e9b\uff0c\u5982\u4eca\u7a7f\u7740\u4e5f\u51b7\uff0c\u4f60\u8be5\u7a7f\u4e00\u4ef6\u5927\u6bdb\u7684\u3002\u201d\u88ad\u4eba\u7b11\u9053\uff1a\u201c\u592a\u592a\u5c31\u7ed9\u4e86\u8fd9\u4ef6\u7070\u9f20\u7684\uff0c\u8fd8\u6709\u4ef6\u94f6\u9f20\u7684\u3002\u8bf4\u8d76\u5e74\u4e0b\u518d\u7ed9\u5927\u6bdb\u7684\u5462\u3002\u201d\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u6211\u5012\u6709\u4e00\u4ef6\u5927\u6bdb\u7684\uff0c\u6211\u5acc\u98ce\u6bdb\u51fa\u7684\u4e0d\u597d\u4e86\u6b63\u8981\u6539\u53bb\uff0c\u4e5f\u7f62\uff0c\u5148\u7ed9\u4f60\u7a7f\u53bb\u7f62\u3002\u7b49\u5e74\u4e0b\u592a\u592a\u7ed9\u4f60\u505a\u7684\u65f6\u8282\uff0c\u6211\u518d\u6539\u7f62\u3002\u53ea\u5f53\u4f60\u8fd8\u6211\u7684\u4e00\u6837\u3002\u201d\u4f17\u4eba\u90fd\u7b11\u9053\uff1a\u201c\u5976\u5976\u60ef\u4f1a\u8bf4\u8fd9\u8bdd\u3002\u6210\u5e74\u5bb6\u5927\u624b\u5927\u811a\u7684\uff0c\u66ff\u592a\u592a\u4e0d\u77e5\u80cc\u5730\u91cc\u8d54\u57ab\u4e86\u591a\u5c11\u4e1c\u897f\uff0c\u771f\u771f\u8d54\u7684\u662f\u8bf4\u4e0d\u51fa\u6765\u7684\uff0c\u90a3\u91cc\u53c8\u548c\u592a\u592a\u7b97\u53bb\uff1f\u504f\u8fd9\u4f1a\u5b50\u53c8\u8bf4\u8fd9\u5c0f\u6c14\u8bdd\u53d6\u7b11\u6765\u4e86\u3002\u201d\u51e4\u59d0\u513f\u7b11\u9053\uff1a\u201c\u592a\u592a\u90a3\u91cc\u60f3\u7684\u5230\u8fd9\u4e9b\uff1f\u7a76\u7adf\u8fd9\u53c8\u4e0d\u662f\u6b63\u7ecf\u4e8b\u3002\u518d\u4e0d\u7167\u7ba1\uff0c\u4e5f\u662f\u5927\u5bb6\u7684\u4f53\u9762\uff1b\u8bf4\u4e0d\u5f97\u6211\u81ea\u5df1\u5403\u4e9b\u4e8f\uff0c\u628a\u4f17\u4eba\u6253\u626e\u4f53\u7edf\u4e86\uff0c\u5b81\u53ef\u6211\u5f97\u4e2a\u597d\u540d\u513f\u4e5f\u7f62\u4e86\u3002\u4e00\u4e2a\u4e00\u4e2a\u2018\u70e7\u7cca\u4e86\u7684\u5377\u5b50\u2019\u4f3c\u7684\uff0c\u4eba\u5148\u7b11\u8bdd\u6211\uff0c\u8bf4\u6211\u5f53\u5bb6\u5012\u628a\u4eba\u5f04\u51fa\u4e2a\u82b1\u5b50\u6765\u4e86\u3002\u201d\u4f17\u4eba\u542c\u4e86\uff0c\u90fd\u53f9\u8bf4\uff1a\u201c\u8c01\u4f3c\u5976\u5976\u8fd9\u4e48\u7740\u5723\u660e\uff0c\u5728\u4e0a\u4f53\u8d34\u592a\u592a\uff0c\u5728\u4e0b\u53c8\u75bc\u987e\u4e0b\u4eba\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u53ea\u89c1\u51e4\u59d0\u547d\u5e73\u513f\u5c06\u6628\u65e5\u90a3\u4ef6\u77f3\u9752\u523b\u4e1d\u516b\u56e2\u5929\u9a6c\u76ae\u8902\u5b50\u62ff\u51fa\u6765\uff0c\u7ed9\u4e86\u88ad\u4eba\u3002\u53c8\u770b\u5305\u88b1\uff0c\u53ea\u5f97\u4e00\u4e2a\u5f39\u58a8\u82b1\u7eeb\u6c34\u7ea2\u7ef8\u91cc\u7684\u5939\u5305\u88b1\uff0c\u91cc\u9762\u53ea\u89c1\u5305\u7740\u4e24\u4ef6\u534a\u65e7\u7ef5\u8884\u5408\u76ae\u8902\u5b50\u3002\u51e4\u59d0\u53c8\u547d\u5e73\u513f\u628a\u4e00\u4e2a\u7389\u8272\u7ef8\u91cc\u7684\u54c6\u7f57\u5462\u5305\u88b1\u62ff\u51fa\u6765\uff0c\u53c8\u547d\u5305\u4e0a\u4e00\u4ef6\u96ea\u8902\u5b50\u3002\ +\u5e73\u513f\u8d70\u53bb\u62ff\u4e86\u51fa\u6765\uff0c\u4e00\u4ef6\u662f\u4ef6\u65e7\u5927\u7ea2\u7329\u7329\u6be1\u7684\uff0c\u4e00\u4ef6\u662f\u534a\u65e7\u5927\u7ea2\u7fbd\u7f0e\u7684\u3002\u88ad\u4eba\u9053\uff1a\u201c\u4e00\u4ef6\u5c31\u5f53\u4e0d\u8d77\u4e86\u3002\u201d\u5e73\u513f\u7b11\u9053\uff1a\u201c\u4f60\u62ff\u8fd9\u7329\u7329\u6be1\u7684\u3002\u628a\u8fd9\u4ef6\u987a\u624b\u5e26\u51fa\u6765\uff0c\u53eb\u4eba\u7ed9\u90a2\u5927\u59d1\u5a18\u9001\u53bb\uff0c\u6628\u513f\u90a3\u4e48\u5927\u96ea\uff0c\u4eba\u4eba\u90fd\u7a7f\u7740\u4e0d\u662f\u7329\u7329\u6be1\u3001\u90fd\u662f\u7fbd\u7f0e\u7684\uff0c\u5341\u6765\u4ef6\u5927\u7ea2\u8863\u88f3\uff0c\u6620\u7740\u5927\u96ea\uff0c\u597d\u4e0d\u9f50\u6574\u3002\u53ea\u6709\u4ed6\u7a7f\u7740\u90a3\u51e0\u4ef6\u65e7\u8863\u88f3\uff0c\u8d8a\u53d1\u663e\u7684\u62f1\u80a9\u7f29\u80cc\uff0c\u597d\u4e0d\u53ef\u601c\u89c1\u7684\uff0c\u5982\u4eca\u628a\u8fd9\u4ef6\u7ed9\u4ed6\u7f62\u3002\u201d\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u6211\u7684\u4e1c\u897f\uff0c\u4ed6\u79c1\u81ea\u5c31\u8981\u7ed9\u4eba\u3002\u6211\u4e00\u4e2a\u8fd8\u82b1\u4e0d\u591f\uff0c\u518d\u6dfb\u4e0a\u4f60\u63d0\u7740\uff0c\u66f4\u597d\u4e86\uff01\u201d\u4f17\u4eba\u7b11\u9053\uff1a\u201c\u8fd9\u90fd\u662f\u5976\u5976\u7d20\u65e5\u5b5d\u656c\u592a\u592a\uff0c\u75bc\u7231\u4e0b\u4eba\u3002\u8981\u662f\u5976\u5976\u7d20\u65e5\u662f\u5c0f\u6c14\u7684\uff0c\u6536\u7740\u4e1c\u897f\u4e3a\u4e8b\u7684\uff0c\u4e0d\u987e\u4e0b\u4eba\u7684\uff0c\u59d1\u5a18\u90a3\u91cc\u6562\u8fd9\u4e48\u7740\uff1f\u201d\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u6240\u4ee5\u77e5\u9053\u6211\u7684\uff0c\u4e5f\u5c31\u662f\u4ed6\u8fd8\u77e5\u4e09\u5206\u7f62\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u53c8\u5631\u5490\u88ad\u4eba\u9053\uff1a\u201c\u4f60\u5988\u8981\u597d\u4e86\u5c31\u7f62\uff0c\u8981\u4e0d\u4e2d\u7528\u4e86\uff0c\u53ea\u5f97\u4f4f\u4e0b\uff0c\u6253\u53d1\u4eba\u6765\u56de\u6211\uff0c\u6211\u518d\u53e6\u6253\u53d1\u4eba\u7ed9\u4f60\u9001\u94fa\u76d6\u53bb\u3002\u53ef\u522b\u4f7f\u4ed6\u4eec\u7684\u94fa\u76d6\u548c\u68b3\u5934\u7684\u5bb6\u4f19\u3002\u201d\u53c8\u5429\u5490\u5468\u745e\u5bb6\u7684\u9053\uff1a\u201c\u4f60\u4eec\u81ea\u7136\u662f\u77e5\u9053\u8fd9\u91cc\u7684\u89c4\u77e9\u7684\uff0c\u4e5f\u4e0d\u7528\u6211\u5429\u5490\u4e86\u3002\u201d\u5468\u745e\u5bb6\u7684\u7b54\u5e94\uff1a\u201c\u90fd\u77e5\u9053\uff1a\u6211\u4eec\u8fd9\u53bb\u5230\u90a3\u91cc\uff0c\u603b\u53eb\u4ed6\u4eec\u7684\u4eba\u56de\u907f\u3002\u8981\u4f4f\u4e0b\uff0c\u5fc5\u662f\u53e6\u8981\u4e00\u4e24\u95f4\u5185\u623f\u7684\u3002\u201d\u8bf4\u7740\uff0c\u8ddf\u4e86\u88ad\u4eba\u51fa\u53bb\uff0c\u53c8\u5429\u5490\u5c0f\u53ae\u9884\u5907\u706f\u7b3c\uff0c\u9042\u5750\u8f66\u5f80\u82b1\u81ea\u82b3\u5bb6\u6765\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\ +\u8fd9\u91cc\u51e4\u59d0\u53c8\u5c06\u6021\u7ea2\u9662\u7684\u5b37\u5b37\u5524\u4e86\u4e24\u4e2a\u6765\uff0c\u5429\u5490\u9053\uff1a\u201c\u88ad\u4eba\u53ea\u6015\u4e0d\u6765\u5bb6\u4e86\u3002\u4f60\u4eec\u7d20\u65e5\u77e5\u9053\u90a3\u4e2a\u5927\u4e2b\u5934\u77e5\u597d\u6b79\uff0c\u6d3e\u51fa\u6765\u5728\u5b9d\u7389\u5c4b\u91cc\u4e0a\u591c\u3002\u4f60\u4eec\u4e5f\u597d\u751f\u7167\u7ba1\u7740\uff0c\u522b\u7531\u7740\u5b9d\u7389\u80e1\u95f9\u3002\u201d\u4e24\u4e2a\u5b37\u5b37\u7b54\u5e94\u7740\u53bb\u4e86\uff0c\u4e00\u65f6\u6765\u56de\u8bf4\uff1a\u201c\u6d3e\u4e86\u6674\u96ef\u548c\u9e9d\u6708\u5728\u5c4b\u91cc\uff0c\u6211\u4eec\u56db\u4e2a\u4eba\u539f\u662f\u8f6e\u6d41\u7740\u5e26\u7ba1\u4e0a\u591c\u7684\u3002\u201d\u51e4\u59d0\u542c\u4e86\u70b9\u5934\uff0c\u53c8\u8bf4\u9053\uff1a\u201c\u665a\u4e0a\u50ac\u4ed6\u65e9\u7761\uff0c\u65e9\u4e0a\u50ac\u4ed6\u65e9\u8d77\u3002\u201d\u8001\u5b37\u5b37\u4eec\u7b54\u5e94\u4e86\uff0c\u81ea\u56de\u56ed\u53bb\u3002\u4e00\u65f6\u679c\u6709\u5468\u745e\u5bb6\u7684\u5e26\u4e86\u4fe1\u56de\u51e4\u59d0\u8bf4\uff1a\u201c\u88ad\u4eba\u4e4b\u6bcd\u4e1a\u5df2\u505c\u5e8a\uff0c\u4e0d\u80fd\u56de\u6765\u3002\u201d\u51e4\u59d0\u56de\u660e\u4e86\u738b\u592b\u4eba\uff0c\u4e00\u9762\u7740\u4eba\u5f80\u5927\u89c2\u56ed\u53bb\u53d6\u4ed6\u7684\u94fa\u76d6\u5986\u5941\u3002\u5b9d\u7389\u770b\u7740\u6674\u96ef\u9e9d\u6708\u4e8c\u4eba\u6253\u70b9\u59a5\u5f53\u3002\ +\u9001\u53bb\u4e4b\u540e\uff0c\u6674\u96ef\u9e9d\u6708\u7686\u5378\u7f62\u6b8b\u5986\uff0c\u8131\u6362\u8fc7\u88d9\u8884\u3002\u6674\u96ef\u53ea\u5728\u718f\u7b3c\u4e0a\u56f4\u5750\uff0c\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u4f60\u4eca\u513f\u522b\u88c5\u5c0f\u59d0\u4e86\uff0c\u6211\u529d\u4f60\u4e5f\u52a8\u4e00\u52a8\u513f\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u7b49\u4f60\u4eec\u90fd\u53bb\u51c0\u4e86\uff0c\u6211\u518d\u52a8\u4e0d\u8fdf\u3002\u6709\u4f60\u4eec\u4e00\u65e5\uff0c\u6211\u4e14\u53d7\u7528\u4e00\u65e5\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u597d\u59d0\u59d0\uff0c\u6211\u94fa\u5e8a\uff0c\u4f60\u628a\u90a3\u7a7f\u955c\u7684\u5957\u5b50\u653e\u4e0b\u6765\uff0c\u4e0a\u5934\u7684\u5212\u5b50\u5212\u4e0a\u3002\u4f60\u7684\u8eab\u91cf\u6bd4\u6211\u9ad8\u4e9b\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u53bb\u7ed9\u5b9d\u7389\u94fa\u5e8a\u3002\u6674\u96ef\u55d0\u4e86\u4e00\u58f0\uff0c\u7b11\u9053\uff1a\u201c\u4eba\u5bb6\u624d\u5750\u6696\u548c\u4e86\uff0c\u4f60\u5c31\u6765\u95f9\u3002\u201d\u6b64\u65f6\u5b9d\u7389\u6b63\u5750\u7740\u7eb3\u95f7\uff0c\u60f3\u88ad\u4eba\u4e4b\u6bcd\u4e0d\u77e5\u662f\u6b7b\u662f\u6d3b\uff0c\u5ffd\u542c\u89c1\u6674\u96ef\u5982\u6b64\u8bf4\uff0c\u4fbf\u81ea\u5df1\u8d77\u8eab\u51fa\u53bb\uff0c\u653e\u4e0b\u955c\u5957\uff0c\u5212\u4e0a\u6d88\u606f\u3002\u8fdb\u6765\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u6696\u548c\u7f62\uff0c\u6211\u90fd\u5f04\u5b8c\u4e86\u3002\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u7ec8\u4e45\u6696\u548c\u4e0d\u6210\uff0c\u6211\u53c8\u60f3\u8d77\u6765\uff0c\u6c64\u5a46\u5b50\u8fd8\u6ca1\u62ff\u6765\u5462\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u96be\u4e3a\u4f60\u60f3\u7740\uff01\u4ed6\u7d20\u65e5\u53c8\u4e0d\u8981\u6c64\u58f6\uff0c\u54b1\u4eec\u90a3\u718f\u7b3c\u4e0a\u53c8\u6696\u548c\uff0c\u6bd4\u4e0d\u5f97\u90a3\u5c4b\u91cc\u7095\u51c9\uff0c\u4eca\u513f\u53ef\u4ee5\u4e0d\u7528\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u4e24\u4e2a\u90fd\u5728\u90a3\u4e0a\u5934\u7761\u4e86\uff0c\u6211\u8fd9\u5916\u8fb9\u6ca1\u4e2a\u4eba\uff0c\u6211\u602a\u6015\u7684\uff0c\u4e00\u591c\u4e5f\u7761\u4e0d\u7740\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u6211\u662f\u5728\u8fd9\u91cc\u7761\u7684\uff0c\u9e9d\u6708\uff0c\u4f60\u53eb\u4ed6\u5f80\u5916\u8fb9\u7761\u53bb\u3002\u201d\u8bf4\u8bdd\u4e4b\u95f4\uff0c\u5929\u5df2\u4e00\u66f4\uff0c\u9e9d\u6708\u65e9\u5df2\u653e\u4e0b\u5e18\u5e54\uff0c\u79fb\u706f\u70b7\u9999\uff0c\u4f0f\u4f8d\u5b9d\u7389\u5367\u4e0b\uff0c\u4e8c\u4eba\u65b9\u7761\u3002\u6674\u96ef\u81ea\u5728\u718f\u7b3c\u4e0a\uff0c\u9e9d\u6708\u4fbf\u5728\u6696\u9601\u5916\u8fb9\u3002\ +\u81f3\u4e09\u66f4\u4ee5\u540e\uff0c\u5b9d\u7389\u7761\u68a6\u4e4b\u4e2d\uff0c\u4fbf\u53eb\u88ad\u4eba\u3002\u53eb\u4e86\u4e24\u58f0\uff0c\u65e0\u4eba\u7b54\u5e94\uff0c\u81ea\u5df1\u9192\u4e86\uff0c\u65b9\u60f3\u8d77\u88ad\u4eba\u4e0d\u5728\u5bb6\uff0c\u81ea\u5df1\u4e5f\u597d\u7b11\u8d77\u6765\u3002\u6674\u96ef\u5df2\u9192\uff0c\u56e0\u5524\u9e9d\u6708\u9053\uff1a\u201c\u8fde\u6211\u90fd\u9192\u4e86\uff0c\u4ed6\u5b88\u5728\u65c1\u8fb9\u8fd8\u4e0d\u77e5\u9053\uff0c\u771f\u662f\u633a\u6b7b\u5c38\u5462\uff01\u201d\u9e9d\u6708\u7ffb\u8eab\u6253\u4e2a\u54c8\u4ec0\uff0c\u7b11\u9053\uff1a\u201c\u4ed6\u53eb\u88ad\u4eba\uff0c\u4e0e\u6211\u4ec0\u4e48\u76f8\u5e72\uff01\u201d\u56e0\u95ee\uff1a\u201c\u505a\u4ec0\u4e48\uff1f\u201d\u5b9d\u7389\u8bf4\u8981\u5403\u8336\u3002\u9e9d\u6708\u5fd9\u8d77\u6765\uff0c\u5355\u7a7f\u7740\u7ea2\u7ef8\u5c0f\u68c9\u8884\u513f\u3002\u5b9d\u7389\u9053\uff1a\u201c\u62ab\u4e86\u6211\u7684\u76ae\u8884\u518d\u53bb\uff0c\u4ed4\u7ec6\u51b7\u7740\u3002\u201d\u9e9d\u6708\u542c\u8bf4\uff0c\u56de\u624b\u4fbf\u628a\u5b9d\u7389\u62ab\u7740\u8d77\u6765\u7684\u4e00\u4ef6\u8c82\u988f\u6ee1\u895f\u6696\u8884\u62ab\u4e0a\uff0c\u4e0b\u53bb\u5411\u76c6\u5185\u6d17\u6d17\u624b\uff0c\u5148\u5012\u4e86\u4e00\u949f\u6e29\u6c34\uff0c\u62ff\u4e86\u5927\u6f31\u76c2\uff0c\u5b9d\u7389\u6f31\u4e86\u53e3\u3002\u7136\u540e\u624d\u5411\u8336\u6876\u4e0a\u53d6\u4e86\u8336\u7897\uff0c\u5148\u7528\u6e29\u6c34\u8fc7\u4e86\uff0c\u5411\u6696\u58f6\u4e2d\u5012\u4e86\u534a\u7897\u8336\uff0c\u9012\u7ed9\u5b9d\u7389\u5403\u4e86\uff0c\u81ea\u5df1\u4e5f\u6f31\u4e86\u4e00\u6f31\uff0c\u5403\u4e86\u534a\u7897\u3002\u6674\u96ef\u7b11\u9053\uff1a\u201c\u597d\u59b9\u59b9\uff0c\u4e5f\u8d4f\u6211\u4e00\u53e3\u513f\u5462\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u8d8a\u53d1\u4e0a\u8138\u513f\u4e86\uff01\u201d\u6674\u96ef\u9053\uff1a\u201c\u597d\u59b9\u59b9\uff0c\u660e\u513f\u665a\u4e0a\u4f60\u522b\u52a8\uff0c\u6211\u4f0f\u4f8d\u4f60\u4e00\u591c\uff0c\u5982\u4f55\uff1f\u201d\u9e9d\u6708\u542c\u8bf4\uff0c\u53ea\u5f97\u4e5f\u4f0f\u4f8d\u4ed6\u6f31\u4e86\u53e3\uff0c\u5012\u4e86\u534a\u7897\u8336\u7ed9\u4ed6\u5403\u4e86\u3002\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u4e24\u4e2a\u522b\u7761\uff0c\u8bf4\u7740\u8bdd\u513f\uff0c\u6211\u51fa\u53bb\u8d70\u8d70\u56de\u6765\u3002\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u5916\u5934\u6709\u4e2a\u9b3c\u7b49\u7740\u5462\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u5916\u5934\u81ea\u7136\u6709\u5927\u6708\u4eae\u7684\u3002\u6211\u4eec\u8bf4\u7740\u8bdd\uff0c\u4f60\u53ea\u7ba1\u53bb\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u4fbf\u55fd\u4e86\u4e24\u58f0\u3002\u9e9d\u6708\u4fbf\u5f00\u4e86\u540e\u623f\u95e8\uff0c\u63ed\u8d77\u6be1\u5e18\u4e00\u770b\uff0c\u679c\u7136\u597d\u6708\u8272\u3002\u6674\u96ef\u7b49\u4ed6\u51fa\u53bb\uff0c\u4fbf\u6b32\u552c\u4ed6\u73a9\u800d\uff0c\u4ed7\u7740\u7d20\u65e5\u6bd4\u522b\u4eba\u6c14\u58ee\uff0c\u4e0d\u754f\u5bd2\u51b7\uff0c\u4e5f\u4e0d\u62ab\u8863\uff0c\u53ea\u7a7f\u7740\u5c0f\u8884\u4fbf\u8e51\u624b\u8e51\u811a\u7684\u4e0b\u4e86\u718f\u7b3c\uff0c\u968f\u540e\u51fa\u6765\u3002\u5b9d\u7389\u529d\u9053\uff1a\u201c\u7f62\u5440\uff0c\u51bb\u7740\u4e0d\u662f\u73a9\u7684\uff01\u201d\u6674\u96ef\u53ea\u6446\u624b\uff0c\u968f\u540e\u51fa\u4e86\u5c4b\u95e8\uff0c\u53ea\u89c1\u6708\u5149\u5982\u6c34\u3002\u5ffd\u542c\u4e00\u9635\u5fae\u98ce\uff0c\u53ea\u89c9\u4fb5\u808c\u900f\u9aa8\uff0c\u4e0d\u7981\u6bdb\u9aa8\u609a\u7136\u3002\u5fc3\u4e0b\u81ea\u601d\u9053\uff1a\u201c\u602a\u9053\u4eba\u8bf4\u70ed\u8eab\u5b50\u4e0d\u53ef\u88ab\u98ce\u5439\uff0c\u8fd9\u4e00\u51b7\u679c\u7136\u5229\u5bb3\u3002\u201d\u4e00\u9762\u6b63\u8981\u552c\u4ed6\uff0c\u53ea\u542c\u5b9d\u7389\u5728\u5185\u9ad8\u58f0\u8bf4\u9053\uff1a\u201c\u6674\u96ef\u51fa\u6765\u4e86\u3002\u201d\ +\u6674\u96ef\u5fd9\u56de\u8eab\u8fdb\u6765\uff0c\u7b11\u9053\uff1a\u201c\u90a3\u91cc\u5c31\u552c\u6b7b\u4e86\u4ed6\u4e86\uff1f\u504f\u60ef\u4f1a\u8fd9\u4e48\u874e\u874e\u87ab\u87ab\u8001\u5a46\u5b50\u7684\u6837\u513f\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u5012\u4e0d\u662f\u6015\u552c\u574f\u4e86\u4ed6\u3002\u5934\u4e00\u4ef6\u4f60\u51bb\u7740\u4e5f\u4e0d\u597d\uff0c\u4e8c\u5219\u4ed6\u4e0d\u9632\uff0c\u4e0d\u514d\u4e00\u558a\uff0c\u5018\u6216\u60ca\u9192\u4e86\u522b\u4eba\uff0c\u4e0d\u8bf4\u54b1\u4eec\u662f\u73a9\u610f\u513f\uff0c\u5012\u53cd\u8bf4\u88ad\u4eba\u624d\u53bb\u4e86\u4e00\u591c\uff0c\u4f60\u4eec\u5c31\u89c1\u795e\u89c1\u9b3c\u7684\u3002\u4f60\u6765\u628a\u6211\u8fd9\u8fb9\u7684\u88ab\u6396\u6396\u7f62\u3002\u201d\u6674\u96ef\u542c\u8bf4\uff0c\u5c31\u4e0a\u6765\u6396\u4e86\u4e00\u6396\uff0c\u4f38\u624b\u8fdb\u53bb\u5c31\u6e25\u4e00\u6e25\u3002\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u597d\u51b7\u624b\uff0c\u6211\u8bf4\u770b\u51bb\u7740\u3002\u201d\u4e00\u9762\u53c8\u89c1\u6674\u96ef\u4e24\u816e\u5982\u80ed\u8102\u4e00\u822c\uff0c\u7528\u624b\u6478\u4e00\u6478\uff0c\u4e5f\u89c9\u51b0\u51b7\u3002\u5b9d\u7389\u9053\uff1a\u201c\u5feb\u8fdb\u88ab\u6765\u6e25\u6e25\u7f62\u3002\u201d\u4e00\u8bed\u672a\u4e86\uff0c\u53ea\u542c\u54af\u5654\u7684\u4e00\u58f0\u95e8\u54cd\uff0c\u9e9d\u6708\u614c\u614c\u5f20\u5f20\u7684\u7b11\u7740\u8fdb\u6765\uff0c\u8bf4\u7740\u7b11\u9053\uff1a\u201c\u552c\u6211\u4e00\u8df3\u597d\u7684\uff01\u9ed1\u5f71\u5b50\u91cc\uff0c\u5c71\u5b50\u77f3\u540e\u5934\uff0c\u53ea\u89c1\u4e00\u4e2a\u4eba\u8e72\u7740\u3002\u6211\u624d\u8981\u53eb\u558a\uff0c\u539f\u6765\u662f\u90a3\u4e2a\u5927\u9526\u9e21\uff0c\u89c1\u4e86\u4eba\uff0c\u4e00\u98de\u98de\u5230\u4eae\u5904\u6765\uff0c\u6211\u624d\u89c1\u4e86\u3002\u8981\u5192\u5192\u5931\u5931\u4e00\u56b7\uff0c\u5012\u95f9\u8d77\u4eba\u6765\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u6d17\u624b\uff0c\u53c8\u7b11\u9053\uff1a\u201c\u8bf4\u6674\u96ef\u51fa\u53bb\u4e86\uff1f\u6211\u600e\u4e48\u6ca1\u89c1\u3002\u4e00\u5b9a\u662f\u8981\u552c\u6211\u53bb\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8fd9\u4e0d\u662f\u4ed6\uff1f\u5728\u8fd9\u91cc\u6e25\u7740\u5462\u3002\u6211\u82e5\u4e0d\u56b7\u7684\u5feb\uff0c\u53ef\u662f\u5012\u552c\u4e00\u8df3\u3002\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u4e5f\u4e0d\u7528\u6211\u552c\u53bb\uff0c\u8fd9\u5c0f\u8e44\u5b50\u5df2\u7ecf\u81ea\u60ca\u81ea\u602a\u7684\u4e86\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u4ecd\u56de\u81ea\u5df1\u88ab\u4e2d\u53bb\u3002\u9e9d\u6708\u8bf4\uff1a\u201c\u4f60\u5c31\u8fd9\u4e48\u2018\u8dd1\u89e3\u9a6c\u2019\u7684\u6253\u626e\u513f\uff0c\u4f36\u4f36\u4fd0\u4fd0\u7684\u51fa\u53bb\u4e86\u4e0d\u6210\uff1f\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u53ef\u4e0d\u5c31\u662f\u8fd9\u4e48\u51fa\u53bb\u4e86\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u4f60\u6b7b\u4e0d\u62e3\u597d\u65e5\u5b50\uff01\u4f60\u51fa\u53bb\u81ea\u7ad9\u4e00\u7ad9\uff0c\u77a7\u628a\u76ae\u4e0d\u51bb\u7834\u4e86\u4f60\u7684\u3002\u201d\u8bf4\u7740\u53c8\u5c06\u706b\u76c6\u4e0a\u7684\u94dc\u7f69\u63ed\u8d77\uff0c\u62ff\u7070\u9539\u91cd\u5c06\u719f\u70ad\u57cb\u4e86\u4e00\u57cb\uff0c\u62c8\u4e86\u4e24\u5757\u901f\u9999\u653e\u4e0a\uff0c\u4ecd\u65e7\u7f69\u4e86\u3002\u81f3\u5c4f\u540e\uff0c\u91cd\u5254\u4eae\u4e86\u706f\uff0c\u65b9\u624d\u7761\u4e0b\u3002\ +\u6674\u96ef\u56e0\u65b9\u624d\u4e00\u51b7\uff0c\u5982\u4eca\u53c8\u4e00\u6696\uff0c\u4e0d\u89c9\u6253\u4e86\u4e24\u4e2a\u568f\u55b7\u3002\u5b9d\u7389\u53f9\u9053\uff1a\u201c\u5982\u4f55\uff1f\u5230\u5e95\u4f24\u4e86\u98ce\u4e86\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u4ed6\u65e9\u8d77\u5c31\u56b7\u4e0d\u53d7\u7528\uff0c\u4e00\u65e5\u4e5f\u6ca1\u5403\u7897\u6b63\u7ecf\u996d\u3002\u4ed6\u8fd9\u4f1a\u5b50\u4e0d\u8bf4\u4fdd\u517b\u7740\u4e9b\uff0c\u8fd8\u8981\u6349\u5f04\u4eba\uff0c\u660e\u513f\u75c5\u4e86\uff0c\u53eb\u4ed6\u81ea\u4f5c\u81ea\u53d7\u3002\u201d\u5b9d\u7389\u95ee\u9053\uff1a\u201c\u5934\u4e0a\u70ed\u4e0d\u70ed\uff1f\u201d\u6674\u96ef\u55fd\u4e86\u4e24\u58f0\uff0c\u8bf4\u9053\uff1a\u201c\u4e0d\u76f8\u5e72\uff0c\u90a3\u91cc\u8fd9\u4e48\u5a07\u5ae9\u8d77\u6765\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u53ea\u542c\u5916\u95f4\u5c4b\u91cc\u69c5\u4e0a\u7684\u81ea\u9e23\u949f\u201c\u5f53\u5f53\u201d\u7684\u4e24\u58f0\uff0c\u5916\u95f4\u503c\u5bbf\u7684\u8001\u5b37\u5b37\u55fd\u4e86\u4e24\u58f0\uff0c\u56e0\u8bf4\u9053\uff1a\u201c\u59d1\u5a18\u4eec\u7761\u7f62\uff0c\u660e\u513f\u518d\u8bf4\u7b11\u7f62\u3002\u201d\u5b9d\u7389\u65b9\u6084\u6084\u7684\u7b11\u9053\uff1a\u201c\u54b1\u4eec\u522b\u8bf4\u8bdd\u4e86\uff0c\u770b\u53c8\u60f9\u4ed6\u4eec\u8bf4\u8bdd\u3002\u201d\u8bf4\u7740\uff0c\u65b9\u5927\u5bb6\u7761\u4e86\u3002\ +\u81f3\u6b21\u65e5\u8d77\u6765\uff0c\u6674\u96ef\u679c\u89c9\u6709\u4e9b\u9f3b\u585e\u58f0\u91cd\uff0c\u61d2\u6020\u52a8\u5f39\u3002\u5b9d\u7389\u9053\uff1a\u201c\u5feb\u522b\u58f0\u5f20\u3002\u592a\u592a\u77e5\u9053\u4e86\uff0c\u53c8\u8981\u53eb\u4f60\u642c\u56de\u5bb6\u53bb\u517b\u7740\u3002\u5bb6\u91cc\u7eb5\u597d\uff0c\u5230\u5e95\u51b7\u4e9b\uff0c\u4e0d\u5982\u5728\u8fd9\u91cc\u3002\u4f60\u5c31\u5728\u91cc\u95f4\u5c4b\u91cc\u8eba\u7740\uff0c\u6211\u53eb\u4eba\u8bf7\u4e86\u5927\u592b\uff0c\u6084\u6084\u7684\u4ece\u540e\u95e8\u8fdb\u6765\u77a7\u77a7\u5c31\u662f\u4e86\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u867d\u8fd9\u4e48\u8bf4\uff0c\u4f60\u5230\u5e95\u8981\u544a\u8bc9\u5927\u5976\u5976\u4e00\u58f0\u513f\u3002\u4e0d\u7136\u4e00\u65f6\u5927\u592b\u6765\u4e86\uff0c\u4eba\u95ee\u8d77\u6765\u600e\u4e48\u8bf4\u5462\uff1f\u201d\u5b9d\u7389\u542c\u4e86\u6709\u7406\uff0c\u4fbf\u5524\u4e00\u4e2a\u8001\u5b37\u5b37\u6765\u5429\u5490\u9053\uff1a\u201c\u4f60\u56de\u5927\u5976\u5976\u53bb\uff0c\u5c31\u8bf4\u6674\u96ef\u767d\u51b7\u7740\u4e86\u4e9b\uff0c\u4e0d\u662f\u4ec0\u4e48\u5927\u75c5\u3002\u88ad\u4eba\u53c8\u4e0d\u5728\u5bb6\uff0c\u4ed6\u82e5\u5bb6\u53bb\u517b\u75c5\uff0c\u8fd9\u91cc\u66f4\u6ca1\u6709\u4eba\u4e86\u3002\u4f20\u4e00\u4e2a\u5927\u592b\uff0c\u4ece\u540e\u95e8\u6084\u6084\u7684\u8fdb\u6765\u77a7\u77a7\uff0c\u522b\u56de\u592a\u592a\u4e86\u3002\u201d\u8001\u5b37\u5b37\u53bb\u4e86\uff0c\u534a\u65e5\u56de\u6765\u8bf4\uff1a\u201c\u5927\u5976\u5976\u77e5\u9053\u4e86\u3002\u8bf4\u4e24\u5242\u836f\u597d\u4e86\u4fbf\u7f62\uff0c\u82e5\u4e0d\u597d\u65f6\uff0c\u8fd8\u662f\u51fa\u53bb\u4e3a\u662f\u3002\u5982\u4eca\u7684\u65f6\u6c14\u4e0d\u597d\uff0c\u6cbe\u67d3\u4e86\u522b\u4eba\u4e8b\u5c0f\uff0c\u59d1\u5a18\u4eec\u7684\u8eab\u5b50\u8981\u7d27\u3002\u201d\u6674\u96ef\u7761\u5728\u6696\u9601\u91cc\uff0c\u53ea\u7ba1\u54b3\u55fd\uff0c\u542c\u4e86\u8fd9\u8bdd\uff0c\u6c14\u7684\u56b7\u9053\uff1a\u201c\u6211\u90a3\u91cc\u5c31\u5bb3\u761f\u75c5\u4e86\uff1f\u751f\u6015\u62db\u4e86\u4eba\u3002\u6211\u79bb\u4e86\u8fd9\u91cc\uff0c\u770b\u4f60\u4eec\u8fd9\u4e00\u8f88\u5b50\u90fd\u522b\u5934\u75bc\u8111\u70ed\u7684\uff01\u201d\u8bf4\u7740\uff0c\u4fbf\u771f\u8981\u8d77\u6765\u3002\u5b9d\u7389\u5fd9\u6309\u4ed6\uff0c\u7b11\u9053\uff1a\u201c\u522b\u751f\u6c14\uff0c\u8fd9\u539f\u662f\u4ed6\u7684\u8d23\u4efb\uff0c\u751f\u6015\u592a\u592a\u77e5\u9053\u4e86\u8bf4\u4ed6\u3002\u4e0d\u8fc7\u767d\u8bf4\u4e00\u53e5\u3002\u4f60\u7d20\u6614\u53c8\u7231\u751f\u6c14\uff0c\u5982\u4eca\u809d\u706b\u81ea\u7136\u53c8\u76db\u4e86\u3002\u201d\ +\u6b63\u8bf4\u65f6\uff0c\u4eba\u56de\u5927\u592b\u6765\u4e86\u3002\u5b9d\u7389\u4fbf\u8d70\u8fc7\u6765\uff0c\u907f\u5728\u4e66\u67b6\u540e\u9762\u3002\u53ea\u89c1\u4e24\u4e09\u4e2a\u540e\u95e8\u53e3\u7684\u8001\u5a46\u5b50\u5e26\u4e86\u4e00\u4e2a\u592a\u533b\u8fdb\u6765\u3002\u8fd9\u91cc\u7684\u4e2b\u5934\u90fd\u56de\u907f\u4e86\uff0c\u6709\u4e09\u56db\u4e2a\u8001\u5b37\u5b37\u653e\u4e0b\u6696\u9601\u4e0a\u7684\u5927\u7ea2\u7ee3\u5e54\uff0c\u6674\u96ef\u4ece\u5e54\u4e2d\u5355\u4f38\u51fa\u624b\u6765\u3002\u90a3\u5927\u592b\u89c1\u8fd9\u53ea\u624b\u4e0a\u6709\u4e24\u6839\u6307\u7532\uff0c\u8db3\u6709\u4e8c\u4e09\u5bf8\u957f\uff0c\u5c1a\u6709\u91d1\u51e4\u4ed9\u82b1\u67d3\u7684\u901a\u7ea2\u7684\u75d5\u8ff9\uff0c\u4fbf\u56de\u8fc7\u5934\u6765\u3002\u6709\u4e00\u4e2a\u8001\u5b37\u5b37\u5fd9\u62ff\u4e86\u4e00\u5757\u7ee2\u5b50\u63a9\u4e0a\u4e86\u3002\u90a3\u5927\u592b\u65b9\u8bca\u4e86\u4e00\u56de\u8109\uff0c\u8d77\u8eab\u5230\u5916\u95f4\uff0c\u5411\u5b37\u5b37\u4eec\u8bf4\u9053\uff1a\u201c\u5c0f\u59d0\u7684\u75c7\u662f\u5916\u611f\u5185\u6ede\u3002\u8fd1\u65e5\u65f6\u6c14\u4e0d\u597d\uff0c\u7adf\u7b97\u662f\u4e2a\u5c0f\u4f24\u5bd2\u3002\u5e78\u4e8f\u662f\u5c0f\u59d0\uff0c\u7d20\u65e5\u996e\u98df\u6709\u9650\uff0c\u98ce\u5bd2\u4e5f\u4e0d\u5927\uff0c\u4e0d\u8fc7\u662f\u6c14\u8840\u539f\u5f31\uff0c\u5076\u7136\u6cbe\u67d3\u4e86\u4e9b\uff0c\u5403\u4e24\u5242\u836f\u758f\u6563\u758f\u6563\u5c31\u597d\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u53c8\u968f\u5a46\u5b50\u4eec\u51fa\u53bb\u3002\u5f7c\u65f6\u674e\u7ea8\u5df2\u9063\u4eba\u77e5\u4f1a\u8fc7\u540e\u95e8\u4e0a\u7684\u4eba\u53ca\u5404\u5904\u4e2b\u9b1f\u56de\u907f\u3002\u5927\u592b\u53ea\u89c1\u4e86\u56ed\u4e2d\u666f\u81f4\uff0c\u5e76\u4e0d\u66fe\u89c1\u4e00\u4e2a\u5973\u5b50\u3002\u4e00\u65f6\u51fa\u4e86\u56ed\u95e8\uff0c\u5c31\u5728\u5b88\u56ed\u95e8\u7684\u5c0f\u53ae\u4eec\u7684\u73ed\u623f\u5185\u5750\u4e86\uff0c\u5f00\u4e86\u836f\u65b9\u3002\u8001\u5b37\u5b37\u9053\uff1a\u201c\u8001\u7237\u4e14\u522b\u53bb\uff0c\u6211\u4eec\u5c0f\u7237\u7f57\u55e6\uff0c\u6050\u6015\u8fd8\u6709\u8bdd\u95ee\u3002\u201d\u90a3\u592a\u533b\u5fd9\u9053\uff1a\u201c\u65b9\u624d\u4e0d\u662f\u5c0f\u59d0\uff0c\u662f\u4f4d\u7237\u4e0d\u6210\uff1f\u90a3\u5c4b\u5b50\u7adf\u662f\u7ee3\u623f\uff0c\u53c8\u662f\u653e\u4e0b\u5e54\u5b50\u6765\u77a7\u7684\uff0c\u5982\u4f55\u662f\u4f4d\u7237\u5462\uff1f\u201d\u8001\u5b37\u5b37\u7b11\u9053\uff1a\u201c\u6211\u7684\u8001\u7237\uff0c\u602a\u9053\u5c0f\u5b50\u624d\u8bf4\uff1a\u2018\u4eca\u513f\u8bf7\u4e86\u4e00\u4f4d\u65b0\u592a\u533b\u6765\u4e86\u3002\u2019\u771f\u4e0d\u77e5\u6211\u4eec\u5bb6\u7684\u4e8b\u3002\u90a3\u5c4b\u5b50\u662f\u6211\u4eec\u5c0f\u54e5\u513f\u7684\uff0c\u90a3\u4eba\u662f\u5c4b\u91cc\u7684\u4e2b\u5934\uff0c\u5012\u662f\u4e2a\u2018\u5927\u59d0\u2019\uff0c\u90a3\u91cc\u7684\u5c0f\u59d0\u7684\u7ee3\u623f\uff1f\u5c0f\u59d0\u75c5\u4e86\uff0c\u4f60\u90a3\u4e48\u5bb9\u6613\u5c31\u8fdb\u53bb\u4e86\uff1f\u201d\u8bf4\u7740\uff0c\u62ff\u4e86\u836f\u65b9\u8fdb\u53bb\u3002\ +\u5b9d\u7389\u770b\u65f6\uff0c\u4e0a\u9762\u6709\u7d2b\u82cf\u3001\u6854\u6897\u3001\u9632\u98ce\u3001\u8346\u82a5\u7b49\u836f\uff0c\u540e\u9762\u53c8\u6709\u67b3\u5b9e\u3001\u9ebb\u9ec4\u3002\u5b9d\u7389\u9053\uff1a\u201c\u8be5\u6b7b\u8be5\u6b7b\uff0c\u4ed6\u62ff\u7740\u5973\u5b69\u513f\u4eec\u4e5f\u8c61\u6211\u4eec\u4e00\u6837\u7684\u6cbb\u6cd5\uff0c\u5982\u4f55\u4f7f\u5f97\uff1f\u51ed\u4ed6\u6709\u4ec0\u4e48\u5185\u6ede\uff0c\u8fd9\u67b3\u5b9e\u3001\u9ebb\u9ec4\u5982\u4f55\u7981\u5f97\uff1f\u8c01\u8bf7\u4e86\u6765\u7684\uff1f\u5feb\u6253\u53d1\u4ed6\u53bb\u7f62\uff0c\u518d\u8bf7\u4e00\u4e2a\u719f\u7684\u6765\u7f62\u3002\u201d\u8001\u5b37\u5b37\u9053\uff1a\u201c\u7528\u836f\u597d\u4e0d\u597d\uff0c\u6211\u4eec\u4e0d\u77e5\u9053\u3002\u5982\u4eca\u518d\u53eb\u5c0f\u53ae\u53bb\u8bf7\u738b\u5927\u592b\u53bb\u5012\u5bb9\u6613\uff0c\u53ea\u662f\u8fd9\u4e2a\u5927\u592b\u53c8\u4e0d\u662f\u544a\u8bc9\u603b\u7ba1\u623f\u8bf7\u7684\uff0c\u8fd9\u9a6c\u94b1\u662f\u8981\u7ed9\u4ed6\u7684\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u7ed9\u4ed6\u591a\u5c11\uff1f\u201d\u5a46\u5b50\u9053\uff1a\u201c\u5c11\u4e86\u4e0d\u597d\uff0c\u770b\u6765\u5f97\u4e00\u4e24\u94f6\u5b50\uff0c\u624d\u662f\u6211\u4eec\u8fd9\u6837\u95e8\u6237\u7684\u793c\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u738b\u5927\u592b\u6765\u4e86\uff0c\u7ed9\u4ed6\u591a\u5c11\uff1f\u201d\u5a46\u5b50\u7b11\u9053\uff1a\u201c\u738b\u5927\u592b\u548c\u5f20\u5927\u592b\u6bcf\u5e38\u6765\u4e86\uff0c\u4e5f\u5e76\u6ca1\u4e2a\u7ed9\u94b1\u7684\uff0c\u4e0d\u8fc7\u6bcf\u5e74\u56db\u8282\u4e00\u4e2a\u8db8\u513f\u9001\u793c\uff0c\u90a3\u662f\u4e00\u5b9a\u7684\u5e74\u4f8b\u3002\u8fd9\u4e2a\u4eba\u65b0\u6765\u4e86\u4e00\u6b21\uff0c\u987b\u5f97\u7ed9\u4ed6\u4e00\u4e24\u94f6\u5b50\u3002\u201d\u5b9d\u7389\u542c\u8bf4\uff0c\u5c31\u547d\u9e9d\u6708\u53bb\u53d6\u94f6\u5b50\u3002\ +\u9e9d\u6708\u9053\uff1a\u201c\u82b1\u5927\u59d0\u59d0\u8fd8\u4e0d\u77e5\u6401\u5728\u90a3\u91cc\u5462\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u6211\u5e38\u89c1\u7740\u5728\u90a3\u5c0f\u87ba\u7538\u67dc\u5b50\u91cc\u62ff\u94f6\u5b50\uff0c\u6211\u548c\u4f60\u627e\u53bb\u3002\u201d\u8bf4\u7740\u4e8c\u4eba\u6765\u81f3\u88ad\u4eba\u5806\u4e1c\u897f\u7684\u5c4b\u5185\uff0c\u5f00\u4e86\u87ba\u7538\u67dc\u5b50\u3002\u4e0a\u4e00\u69c5\u90fd\u662f\u4e9b\u7b14\u58a8\u3001\u6247\u5b50\u3001\u9999\u997c\u3001\u5404\u8272\u8377\u5305\u3001\u6c57\u5dfe\u7b49\u7c7b\u7684\u4e1c\u897f\uff0c\u4e0b\u4e00\u69c5\u5374\u6709\u51e0\u4e32\u94b1\u3002\u4e8e\u662f\u5f00\u4e86\u62bd\u5c49\uff0c\u624d\u770b\u89c1\u4e00\u4e2a\u5c0f\u7b38\u7ba9\u5185\u653e\u7740\u51e0\u5757\u94f6\u5b50\uff0c\u5012\u4e5f\u6709\u6225\u5b50\u3002\u9e9d\u6708\u4fbf\u62ff\u4e86\u4e00\u5757\u94f6\uff0c\u63d0\u8d77\u6225\u5b50\u6765\u95ee\u5b9d\u7389\uff1a\u201c\u90a3\u662f\u4e00\u4e24\u7684\u661f\u513f\uff1f\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u4f60\u95ee\u7684\u6211\u6709\u8da3\u513f\uff0c\u4f60\u5012\u6210\u4e86\u662f\u624d\u6765\u7684\u4e86\u3002\u201d\u9e9d\u6708\u4e5f\u7b11\u4e86\uff0c\u53c8\u8981\u53bb\u95ee\u4eba\u3002\u5b9d\u7389\u9053\uff1a\u201c\u62e3\u90a3\u5927\u7684\u7ed9\u4ed6\u4e00\u5757\u5c31\u662f\u4e86\u3002\u53c8\u4e0d\u505a\u4e70\u5356\uff0c\u7b97\u8fd9\u4e9b\u505a\u4ec0\u4e48\u3002\u201d\u9e9d\u6708\u542c\u4e86\uff0c\u4fbf\u653e\u4e0b\u6225\u5b50\uff0c\u62e3\u4e86\u4e00\u5757\u6382\u4e86\u4e00\u6382\uff0c\u7b11\u9053\uff1a\u201c\u8fd9\u4e00\u5757\u53ea\u6015\u662f\u4e00\u4e24\u4e86\u3002\u5b81\u53ef\u591a\u4e9b\u597d\uff0c\u522b\u5c11\u4e86\u53eb\u90a3\u7a77\u5c0f\u5b50\u7b11\u8bdd\uff1a\u4e0d\u8bf4\u54b1\u4eec\u4e0d\u8ba4\u5f97\u6225\u5b50\uff0c\u5012\u8bf4\u54b1\u4eec\u6709\u5fc3\u5c0f\u6c14\u4f3c\u7684\u3002\u201d\u90a3\u5a46\u5b50\u7ad9\u5728\u95e8\u53e3\u7b11\u9053\uff1a\u201c\u90a3\u662f\u4e94\u4e24\u7684\u952d\u5b50\u5939\u4e86\u534a\u4e2a\uff0c\u8fd9\u4e00\u5757\u81f3\u5c11\u8fd8\u6709\u4e8c\u4e24\u5462\u3002\u8fd9\u4f1a\u5b50\u53c8\u6ca1\u5939\u526a\uff0c\u59d1\u5a18\u6536\u4e86\u8fd9\u5757\uff0c\u62e3\u4e00\u5757\u5c0f\u4e9b\u7684\u3002\u201d\u9e9d\u6708\u65e9\u5173\u4e86\u67dc\u5b50\u51fa\u6765\uff0c\u7b11\u9053\uff1a\u201c\u8c01\u53c8\u627e\u53bb\u5462\uff0c\u591a\u5c11\u4f60\u62ff\u4e86\u53bb\u5c31\u5b8c\u4e86\uff01\u201d\u5b9d\u7389\u9053\uff1a\u201c\u4f60\u5feb\u53eb\u7119\u8317\u518d\u8bf7\u4e2a\u5927\u592b\u6765\u7f62\u3002\u201d\u5a46\u5b50\u63a5\u4e86\u94f6\u5b50\uff0c\u81ea\u53bb\u6599\u7406\u3002\ +\u4e00\u65f6\u7119\u8317\u679c\u8bf7\u4e86\u738b\u5927\u592b\u6765\uff0c\u5148\u8bca\u4e86\u8109\uff0c\u540e\u8bf4\u75c5\u75c7\uff0c\u4e5f\u4e0e\u524d\u5934\u4e0d\u540c\u3002\u65b9\u5b50\u4e0a\u679c\u7136\u6ca1\u6709\u67b3\u5b9e\u3001\u9ebb\u9ec4\u7b49\u836f\uff0c\u5012\u6709\u5f53\u5f52\u3001\u9648\u76ae\u3001\u767d\u828d\u7b49\u836f\u3002\u90a3\u5206\u4e24\u8f83\u5148\u4e5f\u51cf\u4e86\u4e9b\u3002\u5b9d\u7389\u559c\u9053\uff1a\u201c\u8fd9\u624d\u662f\u5973\u5b69\u513f\u4eec\u7684\u836f\u3002\u867d\u758f\u6563\uff0c\u4e5f\u4e0d\u53ef\u592a\u8fc7\u3002\u65e7\u5e74\u6211\u75c5\u4e86\uff0c\u5374\u662f\u4f24\u5bd2\uff0c\u5185\u91cc\u996e\u98df\u505c\u6ede\uff0c\u4ed6\u77a7\u4e86\u8fd8\u8bf4\u6211\u7981\u4e0d\u8d77\u9ebb\u9ec4\u3001\u77f3\u818f\u3001\u67b3\u5b9e\u7b49\u72fc\u864e\u836f\u3002\u6211\u548c\u4f60\u4eec\u5c31\u5982\u79cb\u5929\u82b8\u513f\u8fdb\u6211\u7684\u90a3\u624d\u5f00\u7684\u767d\u6d77\u68e0\u4f3c\u7684\uff1b\u6211\u7981\u4e0d\u8d77\u7684\u836f\uff0c\u4f60\u4eec\u90a3\u91cc\u7ecf\u5f97\u8d77\uff1f\u6bd4\u5982\u4eba\u5bb6\u575f\u91cc\u7684\u5927\u6768\u6811\uff0c\u770b\u7740\u679d\u53f6\u8302\u76db\uff0c\u90fd\u662f\u7a7a\u5fc3\u5b50\u7684\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u91ce\u575f\u91cc\u53ea\u6709\u6768\u6811\uff0c\u96be\u9053\u5c31\u6ca1\u6709\u677e\u67cf\u4e0d\u6210\uff1f\u6700\u8ba8\u4eba\u5acc\u7684\u662f\u6768\u6811\uff0c\u90a3\u4e48\u5927\u6811\u53ea\u4e00\u70b9\u5b50\u53f6\u5b50\uff0c\u6ca1\u4e00\u70b9\u98ce\u513f\u4ed6\u4e5f\u662f\u4e71\u54cd\u3002\u4f60\u504f\u8981\u6bd4\u4ed6\uff0c\u4f60\u4e5f\u592a\u4e0b\u6d41\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u677e\u67cf\u4e0d\u6562\u6bd4\u3002\u8fde\u5b54\u592b\u5b50\u90fd\u8bf4\uff1a\u2018\u5c81\u5bd2\u7136\u540e\u77e5\u677e\u67cf\u4e4b\u540e\u96d5\u2019\u5462\uff0c\u53ef\u77e5\u8fd9\u4e24\u4ef6\u4e1c\u897f\u9ad8\u96c5\u3002\u4e0d\u5bb3\u81ca\u7684\u624d\u62ff\u4ed6\u6df7\u6bd4\u5462\u3002\u201d\ +\u8bf4\u7740\uff0c\u53ea\u89c1\u8001\u5a46\u5b50\u53d6\u4e86\u836f\u6765\u3002\u5b9d\u7389\u547d\u628a\u714e\u836f\u7684\u94f6\u94de\u5b50\u627e\u4e86\u51fa\u6765\uff0c\u5c31\u547d\u5728\u706b\u76c6\u4e0a\u714e\u3002\u6674\u96ef\u56e0\u8bf4\uff1a\u201c\u6b63\u7ecf\u7ed9\u4ed6\u4eec\u8336\u623f\u91cc\u714e\u53bb\u7f62\u54a7\uff0c\u5f04\u7684\u8fd9\u5c4b\u91cc\u836f\u6c14\uff0c\u5982\u4f55\u4f7f\u5f97\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u836f\u6c14\u6bd4\u4e00\u5207\u7684\u82b1\u9999\u8fd8\u9999\u5462\u3002\u795e\u4ed9\u91c7\u836f\u70e7\u836f\uff0c\u518d\u8005\u9ad8\u4eba\u9038\u58eb\u91c7\u836f\u6cbb\u836f\uff0c\u5219\u5999\u7684\u4e00\u4ef6\u4e1c\u897f\u3002\u8fd9\u5c4b\u91cc\u6211\u6b63\u60f3\u5404\u8272\u90fd\u9f50\u4e86\uff0c\u5c31\u53ea\u5c11\u836f\u9999\uff0c\u5982\u4eca\u6070\u5168\u4e86\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u65e9\u547d\u4eba\u7168\u4e0a\u3002\u53c8\u5631\u5490\u9e9d\u6708\u6253\u70b9\u4e9b\u4e1c\u897f\uff0c\u53eb\u4e2a\u8001\u5b37\u5b37\u53bb\u770b\u88ad\u4eba\uff0c\u529d\u4ed6\u5c11\u54ed\u3002\u4e00\u4e00\u59a5\u5f53\uff0c\u65b9\u8fc7\u524d\u8fb9\u6765\u8d3e\u6bcd\u738b\u592b\u4eba\u5904\u8bf7\u5b89\u5403\u996d\u3002\ +\u6b63\u503c\u51e4\u59d0\u513f\u548c\u8d3e\u6bcd\u738b\u592b\u4eba\u5546\u8bae\u9053\uff1a\u201c\u5929\u53c8\u77ed\uff0c\u53c8\u51b7\uff0c\u4e0d\u5982\u4ee5\u540e\u5927\u5ac2\u5b50\u5e26\u7740\u59d1\u5a18\u4eec\u5728\u56ed\u5b50\u91cc\u5403\u996d\u3002\u7b49\u5929\u6696\u548c\u4e86\uff0c\u518d\u6765\u56de\u7684\u8dd1\uff0c\u4e5f\u4e0d\u59a8\u3002\u201d\u738b\u592b\u4eba\u7b11\u9053\uff1a\u201c\u8fd9\u4e5f\u662f\u597d\u4e3b\u610f\u3002\u522e\u98ce\u4e0b\u96ea\u5012\u4fbf\u5b9c\u3002\u5403\u4e1c\u897f\u53d7\u4e86\u51b7\u6c14\u4e5f\u4e0d\u597d\uff0c\u7a7a\u5fc3\u8d70\u6765\uff0c\u4e00\u809a\u5b50\u51b7\u6c14\uff0c\u538b\u4e0a\u4e9b\u4e1c\u897f\u4e5f\u4e0d\u597d\u3002\u4e0d\u5982\u56ed\u5b50\u540e\u95e8\u91cc\u5934\u7684\u4e94\u95f4\u5927\u5c4b\u5b50\uff0c\u6a2a\u7ad6\u6709\u5973\u4eba\u4eec\u4e0a\u591c\u7684\uff0c\u6311\u4e24\u4e2a\u5973\u53a8\u5b50\u5728\u90a3\u91cc\u5355\u7ed9\u4ed6\u59d0\u59b9\u5f04\u996d\u3002\u65b0\u9c9c\u83dc\u852c\u662f\u6709\u5206\u4f8b\u7684\uff0c\u5728\u603b\u7ba1\u8d26\u623f\u91cc\u652f\u4e86\u53bb\uff0c\u6216\u8981\u94b1\u8981\u4e1c\u897f\u3002\u90a3\u4e9b\u91ce\u9e21\u7350\u72cd\u5404\u6837\u91ce\u5473\uff0c\u5206\u4e9b\u7ed9\u4ed6\u4eec\u5c31\u662f\u4e86\u3002\u201d\u8d3e\u6bcd\u9053\uff1a\u201c\u6211\u4e5f\u6b63\u60f3\u7740\u5462\uff0c\u5c31\u6015\u53c8\u6dfb\u53a8\u623f\u4e8b\u591a\u4e9b\u3002\u201d\u51e4\u59d0\u9053\uff1a\u201c\u5e76\u4e0d\u4e8b\u591a\uff1a\u4e00\u6837\u7684\u5206\u4f8b\uff0c\u8fd9\u91cc\u6dfb\u4e86\uff0c\u90a3\u91cc\u51cf\u4e86\u3002\u5c31\u4fbf\u591a\u8d39\u4e9b\u4e8b\uff0c\u5c0f\u59d1\u5a18\u4eec\u53d7\u4e86\u51b7\u6c14\uff0c\u522b\u4eba\u8fd8\u53ef\uff0c\u7b2c\u4e00\uff0c\u6797\u59b9\u59b9\u5982\u4f55\u7981\u5f97\u4f4f\uff1f\u5c31\u8fde\u5b9d\u7389\u5144\u5f1f\u4e5f\u7981\u4e0d\u4f4f\u3002\u51b5\u517c\u4f17\u4f4d\u59d1\u5a18\u90fd\u4e0d\u662f\u7ed3\u5b9e\u8eab\u5b50\u3002\u201d\u51e4\u59d0\u513f\u8bf4\u6bd5\uff0c\u672a\u77e5\u8d3e\u6bcd\u4f55\u8a00\uff0c\u4e14\u542c\u4e0b\u56de\u5206\u89e3\u3002\ +\u8d3e\u6bcd\u9053\uff1a\u201c\u6b63\u662f\u8fd9\u8bdd\u4e86\u3002\u4e0a\u6b21\u6211\u8981\u8bf4\u8fd9\u8bdd\uff0c\u6211\u89c1\u4f60\u4eec\u7684\u5927\u4e8b\u591a\uff0c\u5982\u4eca\u53c8\u6dfb\u51fa\u8fd9\u4e9b\u4e8b\u6765\uff0c\u4f60\u4eec\u56fa\u7136\u4e0d\u6562\u62b1\u6028\uff0c\u672a\u514d\u60f3\u7740\u6211\u53ea\u987e\u75bc\u8fd9\u4e9b\u5c0f\u5b59\u5b50\u5b59\u5973\u513f\u4eec\uff0c\u5c31\u4e0d\u4f53\u8d34\u4f60\u4eec\u8fd9\u5f53\u5bb6\u4eba\u4e86\u3002\u4f60\u65e2\u8fd9\u4e48\u8bf4\u51fa\u6765\uff0c\u66f4\u597d\u4e86\u3002\u201d\u56e0\u6b64\u65f6\u859b\u59e8\u5988\u674e\u5a76\u90fd\u5728\u5ea7\uff0c\u90a2\u592b\u4eba\u53ca\u5c24\u6c0f\u5a46\u5ab3\u4e5f\u90fd\u8fc7\u6765\u8bf7\u5b89\uff0c\u8fd8\u672a\u8fc7\u53bb\uff0c\u8d3e\u6bcd\u5411\u738b\u592b\u4eba\u7b49\u8bf4\u9053\uff1a\u201c\u4eca\u513f\u6211\u624d\u8bf4\u8fd9\u8bdd\uff0c\u7d20\u65e5\u6211\u4e0d\u8bf4\uff0c\u4e00\u5219\u6015\u901e\u4e86\u51e4\u4e2b\u5934\u7684\u8138\uff0c\u4e8c\u5219\u4f17\u4eba\u4e0d\u4f0f\u3002\u4eca\u65e5\u4f60\u4eec\u90fd\u5728\u8fd9\u91cc\uff0c\u90fd\u662f\u7ecf\u8fc7\u59af\u5a0c\u59d1\u5ac2\u7684\uff0c\u8fd8\u6709\u4ed6\u8fd9\u6837\u60f3\u7684\u5230\u7684\u6ca1\u6709\uff1f\u201d\u859b\u59e8\u5988\u3001\u674e\u5a76\u3001\u5c24\u6c0f\u7b49\u9f50\u7b11\u8bf4\uff1a\u201c\u771f\u4e2a\u5c11\u6709\u3002\u522b\u4eba\u4e0d\u8fc7\u662f\u793c\u4e0a\u9762\u5b50\u60c5\u513f\uff0c\u5b9e\u5728\u4ed6\u662f\u771f\u75bc\u5c0f\u53d4\u5b50\u5c0f\u59d1\u5b50\u3002\u5c31\u662f\u8001\u592a\u592a\u8ddf\u524d\uff0c\u4e5f\u662f\u771f\u5b5d\u987a\u3002\u201d\u8d3e\u6bcd\u70b9\u5934\u53f9\u9053\uff1a\u201c\u6211\u867d\u75bc\u4ed6\uff0c\u6211\u53c8\u6015\u4ed6\u592a\u4f36\u4fd0\u4e5f\u4e0d\u662f\u597d\u4e8b\u3002\u201d\u51e4\u59d0\u513f\u5fd9\u7b11\u9053\uff1a\u201c\u8fd9\u8bdd\u8001\u7956\u5b97\u8bf4\u5dee\u4e86\u3002\u4e16\u4eba\u90fd\u8bf4\u592a\u4f36\u4fd0\u806a\u660e\uff0c\u6015\u6d3b\u4e0d\u957f\u3002\u4e16\u4eba\u90fd\u8bf4\u5f97\uff0c\u4eba\u4eba\u90fd\u4fe1\uff0c\u72ec\u8001\u7956\u5b97\u4e0d\u5f53\u8bf4\uff0c\u4e0d\u5f53\u4fe1\u3002\u8001\u7956\u5b97\u53ea\u6709\u4f36\u4fd0\u806a\u660e\u8fc7\u6211\u5341\u500d\u7684\uff0c\u600e\u4e48\u5982\u4eca\u8fd9\u6837\u798f\u5bff\u53cc\u5168\u7684\uff1f\u53ea\u6015\u6211\u660e\u513f\u8fd8\u80dc\u8001\u7956\u5b97\u4e00\u500d\u5462\uff01\u6211\u6d3b\u4e00\u5343\u5c81\u540e\uff0c\u7b49\u8001\u7956\u5b97\u5f52\u4e86\u897f\uff0c\u6211\u624d\u6b7b\u5462\u3002\u201d\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4f17\u4eba\u90fd\u6b7b\u4e86\uff0c\u5355\u5269\u4e0b\u54b1\u4eec\u4e24\u4e2a\u8001\u5996\u7cbe\uff0c\u6709\u4ec0\u4e48\u610f\u601d\u3002\u201d\u8bf4\u7684\u4f17\u4eba\u90fd\u7b11\u4e86\u3002\ +\u5b9d\u7389\u56e0\u8bb0\u6302\u7740\u6674\u96ef\u88ad\u4eba\u7b49\u4e8b\uff0c\u4fbf\u5148\u56de\u56ed\u91cc\u6765\u3002\u5230\u623f\u4e2d\uff0c\u836f\u9999\u6ee1\u5c4b\uff0c\u4e00\u4eba\u4e0d\u89c1\uff0c\u53ea\u89c1\u6674\u96ef\u72ec\u5367\u4e8e\u7095\u4e0a\uff0c\u8138\u9762\u70e7\u7684\u98de\u7ea2\uff0c\u53c8\u6478\u4e86\u4e00\u6478\uff0c\u53ea\u89c9\u70eb\u624b\u3002\u5fd9\u53c8\u5411\u7089\u4e0a\u5c06\u624b\u70d8\u6696\uff0c\u4f38\u8fdb\u88ab\u53bb\u6478\u4e86\u4e00\u6478\u8eab\u4e0a\uff0c\u4e5f\u662f\u706b\u70e7\u3002\u56e0\u8bf4\u9053\uff1a\u201c\u522b\u4eba\u53bb\u4e86\u4e5f\u7f62\uff0c\u9e9d\u6708\u79cb\u7eb9\u4e5f\u8fd9\u6837\u65e0\u60c5\uff0c\u5404\u81ea\u53bb\u4e86\uff1f\u201d\u6674\u96ef\u9053\uff1a\u201c\u79cb\u7eb9\u662f\u6211\u64b5\u4e86\u4ed6\u53bb\u5403\u996d\u7684\uff0c\u9e9d\u6708\u662f\u65b9\u624d\u5e73\u513f\u6765\u627e\u4ed6\u51fa\u53bb\u4e86\u3002\u4e24\u4eba\u9b3c\u9b3c\u795f\u795f\u7684\uff0c\u4e0d\u77e5\u8bf4\u4ec0\u4e48\u3002\u5fc5\u662f\u8bf4\u6211\u75c5\u4e86\u4e0d\u51fa\u53bb\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u5e73\u513f\u4e0d\u662f\u90a3\u6837\u4eba\u3002\u51b5\u4e14\u4ed6\u5e76\u4e0d\u77e5\u4f60\u75c5\u7279\u6765\u77a7\u4f60\uff0c\u60f3\u6765\u4e00\u5b9a\u662f\u627e\u9e9d\u6708\u6765\u8bf4\u8bdd\uff0c\u5076\u7136\u89c1\u4f60\u75c5\u4e86\uff0c\u968f\u53e3\u8bf4\u7279\u77a7\u4f60\u7684\u75c5\uff0c\u8fd9\u4e5f\u662f\u4eba\u60c5\u4e56\u89c9\u53d6\u548c\u7684\u5e38\u4e8b\u3002\u4fbf\u4e0d\u51fa\u53bb\uff0c\u6709\u4e0d\u662f\uff0c\u4e0e\u4ed6\u4f55\u5e72\uff1f\u4f60\u4eec\u7d20\u65e5\u53c8\u597d\uff0c\u65ad\u4e0d\u80af\u4e3a\u8fd9\u65e0\u5e72\u7684\u4e8b\u4f24\u548c\u6c14\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u8fd9\u8bdd\u4e5f\u662f\uff0c\u53ea\u662f\u7591\u4ed6\u4e3a\u4ec0\u4e48\u5ffd\u7136\u95f4\u7792\u8d77\u6211\u6765\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8ba9\u6211\u4ece\u540e\u95e8\u51fa\u53bb\uff0c\u5230\u90a3\u7a97\u6839\u4e0b\u542c\u542c\u8bf4\u4e9b\u4ec0\u4e48\uff0c\u6765\u544a\u8bc9\u4f60\u3002\u201d\u8bf4\u7740\uff0c\u679c\u7136\u4ece\u540e\u95e8\u51fa\u53bb\uff0c\u81f3\u7a97\u4e0b\u6f5c\u542c\u3002\ +\u53ea\u95fb\u9e9d\u6708\u6084\u95ee\u9053\uff1a\u201c\u4f60\u600e\u4e48\u5c31\u5f97\u4e86\u7684\uff1f\u201d\u5e73\u513f\u9053\uff1a\u201c\u90a3\u65e5\u6d17\u624b\u65f6\u4e0d\u89c1\u4e86\uff0c\u4e8c\u5976\u5976\u5c31\u4e0d\u8bb8\u5435\u56b7\uff0c\u51fa\u4e86\u56ed\u5b50\uff0c\u5373\u523b\u5c31\u4f20\u7ed9\u56ed\u91cc\u5404\u5904\u7684\u5988\u5988\u4eec\u5c0f\u5fc3\u67e5\u8bbf\u3002\u6211\u4eec\u53ea\u7591\u60d1\u90a2\u59d1\u5a18\u7684\u4e2b\u5934\uff0c\u672c\u6765\u53c8\u7a77\uff0c\u53ea\u6015\u5c0f\u5b69\u5b50\u5bb6\u6ca1\u89c1\u8fc7\uff0c\u62ff\u4e86\u8d77\u6765\u4e5f\u662f\u6709\u7684\u3002\u518d\u4e0d\u6599\u5b9a\u662f\u4f60\u4eec\u8fd9\u91cc\u7684\u3002\u5e78\u800c\u4e8c\u5976\u5976\u6ca1\u6709\u5728\u5c4b\u91cc\uff0c\u4f60\u4eec\u8fd9\u91cc\u7684\u5b8b\u5988\u5988\u53bb\u4e86\uff0c\u62ff\u7740\u8fd9\u652f\u956f\u5b50\uff0c\u8bf4\u662f\u5c0f\u4e2b\u5934\u5b50\u5760\u513f\u5077\u8d77\u6765\u7684\uff0c\u88ab\u4ed6\u770b\u89c1\uff0c\u6765\u56de\u4e8c\u5976\u5976\u7684\u3002\u6211\u8d76\u7740\u5fd9\u63a5\u4e86\u956f\u5b50\uff0c\u60f3\u4e86\u4e00\u60f3\uff1a\u5b9d\u7389\u662f\u504f\u5728\u4f60\u4eec\u8eab\u4e0a\u7559\u5fc3\u7528\u610f\uff0c\u4e89\u80dc\u8981\u5f3a\u7684\uff0c\u90a3\u4e00\u5e74\u6709\u4e00\u4e2a\u826f\u513f\u5077\u7389\uff0c\u521a\u51b7\u4e86\u4e00\u4e8c\u5e74\u95f4\uff0c\u8fd8\u6709\u4eba\u63d0\u8d77\u6765\u8d81\u613f\uff0c\u8fd9\u4f1a\u5b50\u53c8\u8dd1\u51fa\u4e00\u4e2a\u5077\u91d1\u5b50\u7684\u6765\u4e86\u3002\u800c\u4e14\u66f4\u5077\u5230\u8857\u574a\u5bb6\u53bb\u4e86\u3002\u504f\u662f\u4ed6\u8fd9\u6837\uff0c\u504f\u662f\u4ed6\u7684\u4eba\u6253\u5634\u3002\u6240\u4ee5\u6211\u5012\u5fd9\u53ee\u549b\u5b8b\u5988\uff0c\u5343\u4e07\u522b\u544a\u8bc9\u5b9d\u7389\uff0c\u53ea\u5f53\u6ca1\u6709\u8fd9\u4e8b\uff0c\u522b\u548c\u4e00\u4e2a\u4eba\u63d0\u8d77\u3002\u7b2c\u4e8c\u4ef6\uff0c\u8001\u592a\u592a\uff0c\u592a\u592a\u542c\u4e86\u4e5f\u751f\u6c14\u3002\u4e09\u5219\u88ad\u4eba\u548c\u4f60\u4eec\u4e5f\u4e0d\u597d\u770b\u3002\u6240\u4ee5\u6211\u56de\u4e8c\u5976\u5976\uff0c\u53ea\u8bf4\uff1a\u2018\u6211\u5f80\u5927\u5976\u5976\u90a3\u91cc\u53bb\u7684\uff0c\u8c01\u77e5\u956f\u5b50\u892a\u4e86\u53e3\uff0c\u4e22\u5728\u8349\u6839\u5e95\u4e0b\uff0c\u96ea\u6df1\u4e86\u6ca1\u770b\u89c1\u3002\u4eca\u513f\u96ea\u5316\u5c3d\u4e86\uff0c\u9ec4\u6f84\u6f84\u7684\u6620\u7740\u65e5\u5934\uff0c\u8fd8\u5728\u90a3\u91cc\u5462\uff0c\u6211\u5c31\u62e3\u4e86\u8d77\u6765\u3002\u2019\u4e8c\u5976\u5976\u4e5f\u5c31\u4fe1\u4e86\uff0c\u6240\u4ee5\u6211\u6765\u544a\u8bc9\u4f60\u4eec\u3002\u4f60\u4eec\u4ee5\u540e\u9632\u7740\u4ed6\u4e9b\uff0c\u522b\u4f7f\u5524\u4ed6\u5230\u522b\u5904\u53bb\u3002\u7b49\u88ad\u4eba\u56de\u6765\uff0c\u4f60\u4eec\u5546\u8bae\u7740\uff0c\u53d8\u4e2a\u6cd5\u5b50\u6253\u53d1\u51fa\u53bb\u5c31\u5b8c\u4e86\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u5c0f\u5a3c\u5987\u4e5f\u89c1\u8fc7\u4e9b\u4e1c\u897f\uff0c\u600e\u4e48\u8fd9\u4e48\u773c\u76ae\u5b50\u6d45\u3002\u201d\u5e73\u513f\u9053\uff1a\u201c\u7a76\u7adf\u8fd9\u956f\u5b50\u80fd\u591a\u5c11\u91cd\uff0c\u539f\u662f\u4e8c\u5976\u5976\u8bf4\u7684\uff0c\u8fd9\u53eb\u505a\u2018\u867e\u987b\u956f\u2019\uff0c\u5012\u662f\u8fd9\u9897\u73e0\u5b50\u8fd8\u7f62\u4e86\u3002\u6674\u96ef\u90a3\u8e44\u5b50\u662f\u5757\u7206\u70ad\uff0c\u8981\u544a\u8bc9\u4e86\u4ed6\uff0c\u4ed6\u662f\u5fcd\u4e0d\u4f4f\u7684\u3002\u4e00\u65f6\u6c14\u4e86\uff0c\u6216\u6253\u6216\u9a82\uff0c\u4f9d\u65e7\u56b7\u51fa\u6765\u4e0d\u597d\uff0c\u6240\u4ee5\u5355\u544a\u8bc9\u4f60\u7559\u5fc3\u5c31\u662f\u4e86\u3002\u201d\u8bf4\u7740\u4fbf\u4f5c\u8f9e\u800c\u53bb\u3002\ +\u5b9d\u7389\u542c\u4e86\uff0c\u53c8\u559c\u53c8\u6c14\u53c8\u53f9\u3002\u559c\u7684\u662f\u5e73\u513f\u7adf\u80fd\u4f53\u8d34\u81ea\u5df1\uff0c\u6c14\u7684\u662f\u5760\u513f\u5c0f\u7a83\uff0c\u53f9\u7684\u662f\u5760\u513f\u90a3\u6837\u4e00\u4e2a\u4f36\u4fd0\u4eba\uff0c\u4f5c\u51fa\u8fd9\u4e11\u4e8b\u6765\u3002\u56e0\u800c\u56de\u81f3\u623f\u4e2d\uff0c\u628a\u5e73\u513f\u4e4b\u8bdd\u4e00\u957f\u4e00\u77ed\u544a\u8bc9\u4e86\u6674\u96ef\u3002\u53c8\u8bf4\uff1a\u201c\u4ed6\u8bf4\u4f60\u662f\u4e2a\u8981\u5f3a\u7684\uff0c\u5982\u4eca\u75c5\u7740\uff0c\u542c\u4e86\u8fd9\u8bdd\u8d8a\u53d1\u8981\u6dfb\u75c5\uff0c\u7b49\u597d\u4e86\u518d\u544a\u8bc9\u4f60\u3002\u201d\u6674\u96ef\u542c\u4e86\uff0c\u679c\u7136\u6c14\u7684\u86fe\u7709\u5012\u8e59\uff0c\u51e4\u773c\u5706\u7741\uff0c\u5373\u65f6\u5c31\u53eb\u5760\u513f\u3002\u5b9d\u7389\u5fd9\u529d\u9053\uff1a\u201c\u4f60\u8fd9\u4e00\u558a\u51fa\u6765\uff0c\u5c82\u4e0d\u8f9c\u8d1f\u4e86\u5e73\u513f\u5f85\u4f60\u6211\u4e4b\u5fc3\u4e86\u3002\u4e0d\u5982\u9886\u4ed6\u8fd9\u4e2a\u60c5\uff0c\u8fc7\u540e\u6253\u53d1\u4ed6\u5c31\u5b8c\u4e86\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u867d\u5982\u6b64\u8bf4\uff0c\u53ea\u662f\u8fd9\u53e3\u6c14\u5982\u4f55\u5fcd\u5f97\uff01\u201d\u5b9d\u7389\u9053\uff1a\u201c\u8fd9\u6709\u4ec0\u4e48\u6c14\u7684\uff1f\u4f60\u53ea\u517b\u75c5\u5c31\u662f\u4e86\u3002\u201d\ +\u6674\u96ef\u670d\u4e86\u836f\uff0c\u81f3\u665a\u95f4\u53c8\u670d\u4e8c\u548c\uff0c\u591c\u95f4\u867d\u6709\u4e9b\u6c57\uff0c\u8fd8\u672a\u89c1\u6548\uff0c\u4ecd\u662f\u53d1\u70e7\uff0c\u5934\u75bc\u9f3b\u585e\u58f0\u91cd\u3002\u6b21\u65e5\uff0c\u738b\u592a\u533b\u53c8\u6765\u8bca\u89c6\uff0c\u53e6\u52a0\u51cf\u6c64\u5242\u3002\u867d\u7136\u7a0d\u51cf\u4e86\u70e7\uff0c\u4ecd\u662f\u5934\u75bc\u3002\u5b9d\u7389\u4fbf\u547d\u9e9d\u6708\uff1a\u201c\u53d6\u9f3b\u70df\u6765\uff0c\u7ed9\u4ed6\u55c5\u4e9b\u75db\u6253\u51e0\u4e2a\u568f\u55b7\uff0c\u5c31\u901a\u4e86\u5173\u7a8d\u3002\u201d\u9e9d\u6708\u679c\u771f\u53bb\u53d6\u4e86\u4e00\u4e2a\u91d1\u9576\u53cc\u6263\u91d1\u661f\u73bb\u7483\u7684\u4e00\u4e2a\u6241\u76d2\u6765\uff0c\u9012\u4e0e\u5b9d\u7389\u3002\u5b9d\u7389\u4fbf\u63ed\u7ffb\u76d2\u6247\uff0c\u91cc\u9762\u6709\u897f\u6d0b\u73d0\u7405\u7684\u9ec4\u53d1\u8d64\u8eab\u5973\u5b50\uff0c\u4e24\u808b\u53c8\u6709\u8089\u7fc5\uff0c\u91cc\u9762\u76db\u7740\u4e9b\u771f\u6b63\u6c6a\u6070\u6d0b\u70df\u3002\u6674\u96ef\u53ea\u987e\u770b\u753b\u513f\uff0c\u5b9d\u7389\u9053\uff1a\u201c\u55c5\u4e9b\uff0c\u8d70\u4e86\u6c14\u5c31\u4e0d\u597d\u4e86\u3002\u201d\u6674\u96ef\u542c\u8bf4\uff0c\u5fd9\u7528\u6307\u7532\u6311\u4e86\u4e9b\u55c5\u5165\u9f3b\u4e2d\uff0c\u4e0d\u600e\u6837\u3002\u4fbf\u53c8\u591a\u591a\u6311\u4e86\u4e9b\u55c5\u5165\u3002\u5ffd\u89c9\u9f3b\u4e2d\u4e00\u80a1\u9178\u8fa3\u900f\u5165\u56df\u95e8\uff0c\u63a5\u8fde\u6253\u4e86\u4e94\u516d\u4e2a\u568f\u55b7\uff0c\u773c\u6cea\u9f3b\u6d95\u767b\u65f6\u9f50\u6d41\u3002\u6674\u96ef\u5fd9\u6536\u4e86\u76d2\u5b50\uff0c\u7b11\u9053\uff1a\u201c\u4e86\u4e0d\u5f97\uff0c\u597d\u723d\u5feb\uff01\u62ff\u7eb8\u6765\u3002\u201d\u65e9\u6709\u5c0f\u4e2b\u5934\u5b50\u9012\u8fc7\u4e00\u642d\u5b50\u7ec6\u7eb8\uff0c\u6674\u96ef\u4fbf\u4e00\u5f20\u4e00\u5f20\u7684\u62ff\u6765\u9192\u9f3b\u5b50\u3002\u5b9d\u7389\u7b11\u95ee\uff1a\u201c\u5982\u4f55\uff1f\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u679c\u89c9\u901a\u5feb\u4e9b\uff0c\u53ea\u662f\u592a\u9633\u8fd8\u75bc\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8d8a\u6027\u5c3d\u7528\u897f\u6d0b\u836f\u6cbb\u4e00\u6cbb\uff0c\u53ea\u6015\u5c31\u597d\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u547d\u9e9d\u6708\uff1a\u201c\u548c\u4e8c\u5976\u5976\u8981\u53bb\uff0c\u5c31\u8bf4\u6211\u8bf4\u4e86\uff1a\u59d0\u59d0\u90a3\u91cc\u5e38\u6709\u90a3\u897f\u6d0b\u8d34\u5934\u75bc\u7684\u818f\u5b50\u836f\uff0c\u53eb\u505a\u2018\u4f9d\u5f17\u54ea\u2019\uff0c\u627e\u5bfb\u4e00\u70b9\u513f\u3002\u201d\u9e9d\u6708\u7b54\u5e94\u4e86\uff0c\u53bb\u4e86\u534a\u65e5\uff0c\u679c\u62ff\u4e86\u534a\u8282\u6765\u3002\u4fbf\u53bb\u627e\u4e86\u4e00\u5757\u7ea2\u7f0e\u5b50\u89d2\u513f\uff0c\u94f0\u4e86\u4e24\u5757\u6307\u9876\u5927\u7684\u5706\u5f0f\uff0c\u5c06\u90a3\u836f\u70e4\u548c\u4e86\uff0c\u7528\u7c2a\u633a\u644a\u4e0a\u3002\u6674\u96ef\u81ea\u62ff\u7740\u4e00\u9762\u9776\u955c\uff0c\u8d34\u5728\u4e24\u592a\u9633\u4e0a\u3002\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u75c5\u7684\u84ec\u5934\u9b3c\u4e00\u6837\uff0c\u5982\u4eca\u8d34\u4e86\u8fd9\u4e2a\uff0c\u5012\u4fcf\u76ae\u4e86\u3002\u4e8c\u5976\u5976\u8d34\u60ef\u4e86\uff0c\u5012\u4e0d\u5927\u663e\u3002\u201d\u8bf4\u6bd5\uff0c\u53c8\u5411\u5b9d\u7389\u9053\uff1a\u201c\u4e8c\u5976\u5976\u8bf4\u4e86\uff1a\u660e\u65e5\u662f\u8205\u8001\u7237\u751f\u65e5\uff0c\u592a\u592a\u8bf4\u4e86\u53eb\u4f60\u53bb\u5462\u3002\u660e\u513f\u7a7f\u4ec0\u4e48\u8863\u88f3\uff1f\u4eca\u513f\u665a\u4e0a\u597d\u6253\u70b9\u9f50\u5907\u4e86\uff0c\u7701\u5f97\u660e\u513f\u65e9\u8d77\u8d39\u624b\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u4ec0\u4e48\u987a\u624b\u5c31\u662f\u4ec0\u4e48\u7f62\u4e86\u3002\u4e00\u5e74\u95f9\u751f\u65e5\u4e5f\u95f9\u4e0d\u6e05\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u8d77\u8eab\u51fa\u623f\uff0c\u5f80\u60dc\u6625\u623f\u4e2d\u53bb\u770b\u753b\u3002\ +\u521a\u5230\u9662\u95e8\u5916\u8fb9\uff0c\u5ffd\u89c1\u5b9d\u7434\u7684\u5c0f\u4e2b\u9b1f\u540d\u5c0f\u87ba\u8005\u4ece\u90a3\u8fb9\u8fc7\u53bb\uff0c\u5b9d\u7389\u5fd9\u8d76\u4e0a\u95ee\uff1a\u201c\u90a3\u53bb\uff1f\u201d\u5c0f\u87ba\u7b11\u9053\uff1a\u201c\u6211\u4eec\u4e8c\u4f4d\u59d1\u5a18\u90fd\u5728\u6797\u59d1\u5a18\u623f\u91cc\u5462\uff0c\u6211\u5982\u4eca\u4e5f\u5f80\u90a3\u91cc\u53bb\u3002\u201d\u5b9d\u7389\u542c\u4e86\uff0c\u8f6c\u6b65\u4e5f\u4fbf\u540c\u4ed6\u5f80\u6f47\u6e58\u9986\u6765\u3002\u4e0d\u4f46\u5b9d\u9497\u59ca\u59b9\u5728\u6b64\uff0c\u4e14\u8fde\u90a2\u5cab\u70df\u4e5f\u5728\u90a3\u91cc\uff0c\u56db\u4eba\u56f4\u5750\u5728\u718f\u7b3c\u4e0a\u53d9\u5bb6\u5e38\u3002\u7d2b\u9e43\u5012\u5750\u5728\u6696\u9601\u91cc\uff0c\u4e34\u7a97\u4f5c\u9488\u9ef9\u3002\u4e00\u89c1\u4ed6\u6765\uff0c\u90fd\u7b11\u8bf4\uff1a\u201c\u53c8\u6765\u4e86\u4e00\u4e2a\uff01\u53ef\u6ca1\u4e86\u4f60\u7684\u5750\u5904\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u597d\u4e00\u5e45\u2018\u51ac\u95fa\u96c6\u8273\u56fe\u2019\uff01\u53ef\u60dc\u6211\u8fdf\u6765\u4e86\u4e00\u6b65\u3002\u6a2a\u7ad6\u8fd9\u5c4b\u5b50\u6bd4\u5404\u5c4b\u5b50\u6696\uff0c\u8fd9\u6905\u5b50\u5750\u7740\u5e76\u4e0d\u51b7\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u5750\u5728\u9edb\u7389\u5e38\u5750\u7684\u642d\u7740\u7070\u9f20\u6905\u642d\u7684\u4e00\u5f20\u6905\u4e0a\u3002\u56e0\u89c1\u6696\u9601\u4e4b\u4e2d\u6709\u4e00\u7389\u77f3\u6761\u76c6\uff0c\u91cc\u9762\u6512\u4e09\u805a\u4e94\u683d\u7740\u4e00\u76c6\u5355\u74e3\u6c34\u4ed9\uff0c\u70b9\u7740\u5ba3\u77f3\uff0c\u4fbf\u6781\u53e3\u8d5e\uff1a\u201c\u597d\u82b1\uff01\u8fd9\u5c4b\u5b50\u8d8a\u53d1\u6696\uff0c\u8fd9\u82b1\u9999\u7684\u8d8a\u6e05\u9999\u3002\u6628\u65e5\u672a\u89c1\u3002\u201d\u9edb\u7389\u56e0\u8bf4\u9053\uff1a\u201c\u8fd9\u662f\u4f60\u5bb6\u7684\u5927\u603b\u7ba1\u8d56\u5927\u5a76\u5b50\u9001\u859b\u4e8c\u59d1\u5a18\u7684\uff0c\u4e24\u76c6\u814a\u6885\uff0c\u4e24\u76c6\u6c34\u4ed9\u3002\u4ed6\u9001\u4e86\u6211\u4e00\u76c6\u6c34\u4ed9\uff0c\u4ed6\u9001\u4e86\u8549\u4e2b\u5934\u4e00\u76c6\u814a\u6885\u3002\u6211\u539f\u4e0d\u8981\u7684\uff0c\u53c8\u6050\u8f9c\u8d1f\u4e86\u4ed6\u7684\u5fc3\u3002\u4f60\u82e5\u8981\uff0c\u6211\u8f6c\u9001\u4f60\u5982\u4f55\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u6211\u5c4b\u91cc\u5374\u6709\u4e24\u76c6\uff0c\u53ea\u662f\u4e0d\u53ca\u8fd9\u4e2a\u3002\u7434\u59b9\u59b9\u9001\u4f60\u7684\uff0c\u5982\u4f55\u53c8\u8f6c\u9001\u4eba\uff0c\u8fd9\u4e2a\u65ad\u4f7f\u4e0d\u5f97\u3002\u201d\u9edb\u7389\u9053\uff1a\u201c\u6211\u4e00\u65e5\u836f\u540a\u5b50\u4e0d\u79bb\u706b\uff0c\u6211\u7adf\u662f\u836f\u57f9\u7740\u5462\uff0c\u90a3\u91cc\u8fd8\u6401\u7684\u4f4f\u82b1\u9999\u6765\u718f\uff1f\u8d8a\u53d1\u5f31\u4e86\u3002\u51b5\u4e14\u8fd9\u5c4b\u5b50\u91cc\u4e00\u80a1\u836f\u9999\uff0c\u53cd\u628a\u8fd9\u82b1\u9999\u6405\u574f\u4e86\u3002\u4e0d\u5982\u4f60\u62ac\u4e86\u53bb\uff0c\u8fd9\u82b1\u4e5f\u6e05\u51c0\u4e86\uff0c\u6ca1\u6742\u5473\u6765\u6405\u4ed6\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u6211\u5c4b\u91cc\u4eca\u513f\u4e5f\u6709\u75c5\u4eba\u714e\u836f\u5462\uff0c\u4f60\u600e\u4e48\u77e5\u9053\u7684\uff1f\u201d\u9edb\u7389\u7b11\u9053\uff1a\u201c\u8fd9\u8bdd\u5947\u4e86\uff0c\u6211\u539f\u662f\u65e0\u5fc3\u7684\u8bdd\uff0c\u8c01\u77e5\u4f60\u5c4b\u91cc\u7684\u4e8b\uff1f\u4f60\u4e0d\u65e9\u6765\u542c\u8bf4\u53e4\u8bb0\uff0c\u8fd9\u4f1a\u5b50\u6765\u4e86\uff0c\u81ea\u60ca\u81ea\u602a\u7684\u3002\u201d\ +\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u54b1\u4eec\u660e\u513f\u4e0b\u4e00\u793e\u53c8\u6709\u4e86\u9898\u76ee\u4e86\uff0c\u5c31\u548f\u6c34\u4ed9\u814a\u6885\u3002\u201d\u9edb\u7389\u542c\u4e86\uff0c\u7b11\u9053\uff1a\u201c\u7f62\uff0c\u7f62\uff01\u6211\u518d\u4e0d\u6562\u4f5c\u8bd7\u4e86\uff0c\u4f5c\u4e00\u56de\uff0c\u7f5a\u4e00\u56de\uff0c\u6ca1\u7684\u602a\u7f9e\u7684\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u4e24\u624b\u63e1\u8d77\u8138\u6765\u3002\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u4f55\u82e6\u6765\uff01\u53c8\u595a\u843d\u6211\u4f5c\u4ec0\u4e48\u3002\u6211\u8fd8\u4e0d\u6015\u81ca\u5462\uff0c\u4f60\u5012\u63e1\u8d77\u8138\u6765\u4e86\u3002\u201d\u5b9d\u9497\u56e0\u7b11\u9053\uff1a\u201c\u4e0b\u6b21\u6211\u9080\u4e00\u793e\uff0c\u56db\u4e2a\u8bd7\u9898\uff0c\u56db\u4e2a\u8bcd\u9898\u3002\u6bcf\u4eba\u56db\u9996\u8bd7\uff0c\u56db\u9615\u8bcd\u3002\u5934\u4e00\u4e2a\u8bd7\u9898\u300a\u548f\u3008\u592a\u6781\u56fe\u3009\u300b\uff0c\u9650\u4e00\u5148\u7684\u97f5\uff0c\u4e94\u8a00\u5f8b\uff0c\u8981\u628a\u4e00\u5148\u7684\u97f5\u90fd\u7528\u5c3d\u4e86\uff0c\u4e00\u4e2a\u4e0d\u8bb8\u5269\u3002\u201d\u5b9d\u7434\u7b11\u9053\uff1a\u201c\u8fd9\u4e00\u8bf4\uff0c\u53ef\u77e5\u662f\u59d0\u59d0\u4e0d\u662f\u771f\u5fc3\u8d77\u793e\u4e86\uff0c\u8fd9\u5206\u660e\u96be\u4eba\u3002\u82e5\u8bba\u8d77\u6765\uff0c\u4e5f\u5f3a\u626d\u7684\u51fa\u6765\uff0c\u4e0d\u8fc7\u98a0\u6765\u5012\u53bb\u5f04\u4e9b\u300a\u6613\u7ecf\u300b\u4e0a\u7684\u8bdd\u751f\u586b\uff0c\u7a76\u7adf\u6709\u4f55\u8da3\u5473\u3002\u6211\u516b\u5c81\u65f6\u8282\uff0c\u8ddf\u6211\u7236\u4eb2\u5230\u897f\u6d77\u6cbf\u5b50\u4e0a\u4e70\u6d0b\u8d27\uff0c\u8c01\u77e5\u6709\u4e2a\u771f\u771f\u56fd\u7684\u5973\u5b69\u5b50\uff0c\u624d\u5341\u4e94\u5c81\uff0c\u90a3\u8138\u9762\u5c31\u548c\u90a3\u897f\u6d0b\u753b\u4e0a\u7684\u7f8e\u4eba\u4e00\u6837\uff0c\u4e5f\u62ab\u7740\u9ec4\u5934\u53d1\uff0c\u6253\u7740\u8054\u5782\uff0c\u6ee1\u5934\u5e26\u7684\u90fd\u662f\u73ca\u745a\uff0c\u732b\u513f\u773c\uff0c\u7956\u6bcd\u7eff\u8fd9\u4e9b\u5b9d\u77f3\uff0c\u8eab\u4e0a\u7a7f\u7740\u91d1\u4e1d\u7ec7\u7684\u9501\u5b50\u7532\u6d0b\u9526\u8884\u8896\uff0c\u5e26\u7740\u502d\u5200\uff0c\u4e5f\u662f\u9576\u91d1\u5d4c\u5b9d\u7684\uff0c\u5b9e\u5728\u753b\u513f\u4e0a\u7684\u4e5f\u6ca1\u4ed6\u597d\u770b\u3002\u6709\u4eba\u8bf4\u4ed6\u901a\u4e2d\u56fd\u7684\u8bd7\u4e66\uff0c\u4f1a\u8bb2\u4e94\u7ecf\uff0c\u80fd\u4f5c\u8bd7\u586b\u8bcd\uff0c\u56e0\u6b64\u6211\u7236\u4eb2\u592e\u70e6\u4e86\u4e00\u4f4d\u901a\u4e8b\u5b98\uff0c\u70e6\u4ed6\u5199\u4e86\u4e00\u5f20\u5b57\uff0c\u5c31\u5199\u7684\u662f\u4ed6\u4f5c\u7684\u8bd7\u3002\u201d\u4f17\u4eba\u90fd\u79f0\u5947\u9053\u5f02\u3002\u5b9d\u7389\u5fd9\u7b11\u9053\uff1a\u201c\u597d\u59b9\u59b9\uff0c\u4f60\u62ff\u51fa\u6765\u6211\u77a7\u77a7\u3002\u201d\u5b9d\u7434\u7b11\u9053\uff1a\u201c\u5728\u5357\u4eac\u6536\u7740\u5462\uff0c\u6b64\u65f6\u90a3\u91cc\u53bb\u53d6\u6765\uff1f\u201d\u5b9d\u7389\u542c\u4e86\uff0c\u5927\u5931\u6240\u671b\uff0c\u4fbf\u8bf4\uff1a\u201c\u6ca1\u798f\u5f97\u89c1\u8fd9\u4e16\u9762\u3002\u201d\u9edb\u7389\u7b11\u62c9\u5b9d\u7434\u9053\uff1a\u201c\u4f60\u522b\u54c4\u6211\u4eec\u3002\u6211\u77e5\u9053\u4f60\u8fd9\u4e00\u6765\uff0c\u4f60\u7684\u8fd9\u4e9b\u4e1c\u897f\u672a\u5fc5\u653e\u5728\u5bb6\u91cc\uff0c\u81ea\u7136\u90fd\u662f\u8981\u5e26\u4e86\u6765\u7684\uff0c\u8fd9\u4f1a\u5b50\u53c8\u626f\u8c0e\u8bf4\u6ca1\u5e26\u6765\u3002\u4ed6\u4eec\u867d\u4fe1\uff0c\u6211\u662f\u4e0d\u4fe1\u7684\u3002\u201d\u5b9d\u7434\u4fbf\u7ea2\u4e86\u8138\uff0c\u4f4e\u5934\u5fae\u7b11\u4e0d\u8bed\u3002\u5b9d\u9497\u7b11\u9053\uff1a\u201c\u504f\u8fd9\u4e2a\u98a6\u513f\u60ef\u8bf4\u8fd9\u4e9b\u767d\u8bdd\uff0c\u628a\u4f60\u5c31\u4f36\u4fd0\u7684\u3002\u201d\u9edb\u7389\u9053\uff1a\u201c\u82e5\u5e26\u4e86\u6765\uff0c\u5c31\u7ed9\u6211\u4eec\u89c1\u8bc6\u89c1\u8bc6\u4e5f\u7f62\u4e86\u3002\u201d\u5b9d\u9497\u7b11\u9053\uff1a\u201c\u7bb1\u5b50\u7b3c\u5b50\u4e00\u5927\u5806\u8fd8\u6ca1\u7406\u6e05\uff0c\u77e5\u9053\u5728\u90a3\u4e2a\u91cc\u5934\u5462\uff01\u7b49\u8fc7\u65e5\u6536\u62fe\u6e05\u4e86\uff0c\u627e\u51fa\u6765\u5927\u5bb6\u518d\u770b\u5c31\u662f\u4e86\u3002\u201d\u53c8\u5411\u5b9d\u7434\u9053\uff1a\u201c\u4f60\u82e5\u8bb0\u5f97\uff0c\u4f55\u4e0d\u5ff5\u5ff5\u6211\u4eec\u542c\u542c\u3002\u201d\u5b9d\u7434\u65b9\u7b54\u9053\uff1a\u201c\u8bb0\u5f97\u662f\u9996\u4e94\u8a00\u5f8b\uff0c\u5916\u56fd\u7684\u5973\u5b50\u4e5f\u5c31\u96be\u4e3a\u4ed6\u4e86\u3002\u201d\u5b9d\u9497\u9053\uff1a\u201c\u4f60\u4e14\u522b\u5ff5\uff0c\u7b49\u628a\u4e91\u513f\u53eb\u4e86\u6765\uff0c\u4e5f\u53eb\u4ed6\u542c\u542c\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u53eb\u5c0f\u87ba\u6765\u5429\u5490\u9053\uff1a\u201c\u4f60\u5230\u6211\u90a3\u91cc\u53bb\uff0c\u5c31\u8bf4\u6211\u4eec\u8fd9\u91cc\u6709\u4e00\u4e2a\u5916\u56fd\u7f8e\u4eba\u6765\u4e86\uff0c\u4f5c\u7684\u597d\u8bd7\uff0c\u8bf7\u4f60\u8fd9\u2018\u8bd7\u75af\u5b50\u2019\u6765\u77a7\u53bb\uff0c\u518d\u628a\u6211\u4eec\u2018\u8bd7\u5446\u5b50\u2019\u4e5f\u5e26\u6765\u3002\u201d\u5c0f\u87ba\u7b11\u7740\u53bb\u4e86\u3002\ +\u534a\u65e5\uff0c\u53ea\u542c\u6e58\u4e91\u7b11\u95ee\uff1a\u201c\u90a3\u4e00\u4e2a\u5916\u56fd\u7f8e\u4eba\u6765\u4e86\uff1f\u201d\u4e00\u5934\u8bf4\uff0c\u4e00\u5934\u679c\u548c\u9999\u83f1\u6765\u4e86\u3002\u4f17\u4eba\u7b11\u9053\uff1a\u201c\u4eba\u672a\u89c1\u5f62\uff0c\u5148\u5df2\u95fb\u58f0\u3002\u201d\u5b9d\u7434\u7b49\u5fd9\u8ba9\u5750\uff0c\u9042\u628a\u65b9\u624d\u7684\u8bdd\u91cd\u53d9\u4e86\u4e00\u904d\u3002\u6e58\u4e91\u7b11\u9053\uff1a\u201c\u5feb\u5ff5\u6765\u542c\u542c\u3002\u201d\u5b9d\u7434\u56e0\u5ff5\u9053\uff1a\ +\u6628\u591c\u6731\u697c\u68a6\uff0c\u4eca\u5bb5\u6c34\u56fd\u541f\u3002\ +\u5c9b\u4e91\u84b8\u5927\u6d77\uff0c\u5c9a\u6c14\u63a5\u4e1b\u6797\u3002\ +\u6708\u672c\u65e0\u4eca\u53e4\uff0c\u60c5\u7f18\u81ea\u6d45\u6df1\u3002\ +\u6c49\u5357\u6625\u5386\u5386\uff0c\u7109\u5f97\u4e0d\u5173\u5fc3\u3002\u4f17\u4eba\u542c\u4e86\uff0c\u90fd\u9053\u201c\u96be\u4e3a\u4ed6\uff01\u7adf\u6bd4\u6211\u4eec\u4e2d\u56fd\u4eba\u8fd8\u5f3a\u3002\u201d\u4e00\u8bed\u672a\u4e86\uff0c\u53ea\u89c1\u9e9d\u6708\u8d70\u6765\u8bf4\uff1a\u201c\u592a\u592a\u6253\u53d1\u4eba\u6765\u544a\u8bc9\u4e8c\u7237\uff0c\u660e\u513f\u4e00\u65e9\u5f80\u8205\u8205\u90a3\u91cc\u53bb\uff0c\u5c31\u8bf4\u592a\u592a\u8eab\u4e0a\u4e0d\u5927\u597d\uff0c\u4e0d\u5f97\u4eb2\u81ea\u6765\u3002\u201d\u5b9d\u7389\u5fd9\u7ad9\u8d77\u6765\u7b54\u5e94\u9053\uff1a\u201c\u662f\u3002\u201d\u56e0\u95ee\u5b9d\u9497\u5b9d\u7434\u53ef\u53bb\u3002\u5b9d\u9497\u9053\uff1a\u201c\u6211\u4eec\u4e0d\u53bb\uff0c\u6628\u513f\u5355\u9001\u4e86\u793c\u53bb\u4e86\u3002\u201d\u5927\u5bb6\u8bf4\u4e86\u4e00\u56de\u65b9\u6563\u3002\ +\u5b9d\u7389\u56e0\u8ba9\u8bf8\u59ca\u59b9\u5148\u884c\uff0c\u81ea\u5df1\u843d\u540e\u3002\u9edb\u7389\u4fbf\u53c8\u53eb\u4f4f\u4ed6\u95ee\u9053\uff1a\u201c\u88ad\u4eba\u5230\u5e95\u591a\u65e9\u665a\u56de\u6765\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u81ea\u7136\u7b49\u9001\u4e86\u6ba1\u624d\u6765\u5462\u3002\u201d\u9edb\u7389\u8fd8\u6709\u8bdd\u8bf4\uff0c\u53c8\u4e0d\u66fe\u51fa\u53e3\uff0c\u51fa\u4e86\u4e00\u56de\u795e\uff0c\u4fbf\u8bf4\u9053\uff1a\u201c\u4f60\u53bb\u7f62\u3002\u201d\u5b9d\u7389\u4e5f\u89c9\u5fc3\u91cc\u6709\u8bb8\u591a\u8bdd\uff0c\u53ea\u662f\u53e3\u91cc\u4e0d\u77e5\u8981\u8bf4\u4ec0\u4e48\uff0c\u60f3\u4e86\u4e00\u60f3\uff0c\u4e5f\u7b11\u9053\uff1a\u201c\u660e\u513f\u518d\u8bf4\u7f62\u3002\u201d\u4e00\u9762\u4e0b\u4e86\u9636\u77f6\uff0c\u4f4e\u5934\u6b63\u6b32\u8fc8\u6b65\uff0c\u590d\u53c8\u5fd9\u56de\u8eab\u95ee\u9053\uff1a\u201c\u5982\u4eca\u7684\u591c\u8d8a\u53d1\u957f\u4e86\uff0c\u4f60\u4e00\u591c\u54b3\u55fd\u51e0\u904d\uff1f\u9192\u51e0\u6b21\uff1f\u201d\u9edb\u7389\u9053\uff1a\u201c\u6628\u513f\u591c\u91cc\u597d\u4e86\uff0c\u53ea\u55fd\u4e86\u4e24\u904d\uff0c\u5374\u53ea\u7761\u4e86\u56db\u66f4\u4e00\u4e2a\u66f4\u6b21\uff0c\u5c31\u518d\u4e0d\u80fd\u7761\u4e86\u3002\u201d\u5b9d\u7389\u53c8\u7b11\u9053\uff1a\u201c\u6b63\u662f\u6709\u53e5\u8981\u7d27\u7684\u8bdd\uff0c\u8fd9\u4f1a\u5b50\u624d\u60f3\u8d77\u6765\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u4fbf\u6328\u8fc7\u8eab\u6765\uff0c\u6084\u6084\u9053\uff1a\u201c\u6211\u60f3\u5b9d\u59d0\u59d0\u9001\u4f60\u7684\u71d5\u7a9d\uff0d\uff0d\u201d\u4e00\u8bed\u672a\u4e86\uff0c\u53ea\u89c1\u8d75\u59e8\u5a18\u8d70\u4e86\u8fdb\u6765\u77a7\u9edb\u7389\uff0c\u95ee\uff1a\u201c\u59d1\u5a18\u8fd9\u4e24\u5929\u597d\uff1f\u201d\u9edb\u7389\u4fbf\u77e5\u4ed6\u662f\u4ece\u63a2\u6625\u5904\u6765\uff0c\u4ece\u95e8\u524d\u8fc7\uff0c\u987a\u8def\u7684\u4eba\u60c5\u3002\u9edb\u7389\u5fd9\u966a\u7b11\u8ba9\u5750\uff0c\u8bf4\uff1a\u201c\u96be\u5f97\u59e8\u5a18\u60f3\u7740\uff0c\u602a\u51b7\u7684\uff0c\u4eb2\u8eab\u8d70\u6765\u3002\u201d\u53c8\u5fd9\u547d\u5012\u8336\uff0c\u4e00\u9762\u53c8\u4f7f\u773c\u8272\u4e0e\u5b9d\u7389\u3002\u5b9d\u7389\u4f1a\u610f\uff0c\u4fbf\u8d70\u4e86\u51fa\u6765\u3002\ +\u6b63\u503c\u5403\u665a\u996d\u65f6\uff0c\u89c1\u4e86\u738b\u592b\u4eba\uff0c\u738b\u592b\u4eba\u53c8\u5631\u4ed6\u65e9\u53bb\u3002\u5b9d\u7389\u56de\u6765\uff0c\u770b\u6674\u96ef\u5403\u4e86\u836f\u3002\u6b64\u5915\u5b9d\u7389\u4fbf\u4e0d\u547d\u6674\u96ef\u632a\u51fa\u6696\u9601\u6765\uff0c\u81ea\u5df1\u4fbf\u5728\u6674\u96ef\u5916\u8fb9\u3002\u53c8\u547d\u5c06\u718f\u7b3c\u62ac\u81f3\u6696\u9601\u524d\uff0c\u9e9d\u6708\u4fbf\u5728\u718f\u7b3c\u4e0a\u3002\u4e00\u5bbf\u65e0\u8bdd\u3002\ +\u81f3\u6b21\u65e5\uff0c\u5929\u672a\u660e\u65f6\uff0c\u6674\u96ef\u4fbf\u53eb\u9192\u9e9d\u6708\u9053\uff1a\u201c\u4f60\u4e5f\u8be5\u9192\u4e86\uff0c\u53ea\u662f\u7761\u4e0d\u591f\uff01\u4f60\u51fa\u53bb\u53eb\u4eba\u7ed9\u4ed6\u9884\u5907\u8336\u6c34\uff0c\u6211\u53eb\u9192\u4ed6\u5c31\u662f\u4e86\u3002\u201d\u9e9d\u6708\u5fd9\u62ab\u8863\u8d77\u6765\u9053\uff1a\u201c\u54b1\u4eec\u53eb\u8d77\u4ed6\u6765\uff0c\u7a7f\u597d\u8863\u88f3\uff0c\u62ac\u8fc7\u8fd9\u706b\u7bb1\u53bb\uff0c\u518d\u53eb\u4ed6\u4eec\u8fdb\u6765\u3002\u8001\u5b37\u5b37\u4eec\u5df2\u7ecf\u8bf4\u8fc7\uff0c\u4e0d\u53eb\u4ed6\u5728\u8fd9\u5c4b\u91cc\uff0c\u6015\u8fc7\u4e86\u75c5\u6c14\u3002\u5982\u4eca\u4ed6\u4eec\u89c1\u54b1\u4eec\u6324\u5728\u4e00\u5904\uff0c\u53c8\u8be5\u5520\u53e8\u4e86\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u6211\u4e5f\u662f\u8fd9\u4e48\u8bf4\u5462\u3002\u201d\u4e8c\u4eba\u624d\u53eb\u65f6\uff0c\u5b9d\u7389\u5df2\u9192\u4e86\uff0c\u5fd9\u8d77\u8eab\u62ab\u8863\u3002\u9e9d\u6708\u5148\u53eb\u8fdb\u5c0f\u4e2b\u5934\u5b50\u6765\uff0c\u6536\u62fe\u59a5\u5f53\u4e86\uff0c\u624d\u547d\u79cb\u7eb9\u6a80\u4e91\u7b49\u8fdb\u6765\uff0c\u4e00\u540c\u4f0f\u4f8d\u5b9d\u7389\u68b3\u6d17\u6bd5\u3002\u9e9d\u6708\u9053\uff1a\u201c\u5929\u53c8\u9634\u9634\u7684\uff0c\u53ea\u6015\u6709\u96ea\uff0c\u7a7f\u90a3\u4e00\u5957\u6be1\u7684\u7f62\u3002\u201d\u5b9d\u7389\u70b9\u5934\uff0c\u5373\u65f6\u6362\u4e86\u8863\u88f3\u3002\u5c0f\u4e2b\u5934\u4fbf\u7528\u5c0f\u8336\u76d8\u6367\u4e86\u4e00\u76d6\u7897\u5efa\u83b2\u7ea2\u67a3\u513f\u6c64\u6765\uff0c\u5b9d\u7389\u559d\u4e86\u4e24\u53e3\u3002\u9e9d\u6708\u53c8\u6367\u8fc7\u4e00\u5c0f\u789f\u6cd5\u5236\u7d2b\u59dc\u6765\uff0c\u5b9d\u7389\u5659\u4e86\u4e00\u5757\u3002\u53c8\u5631\u5490\u4e86\u6674\u96ef\u4e00\u56de\uff0c\u4fbf\u5f80\u8d3e\u6bcd\u5904\u6765\u3002\ +\u8d3e\u6bcd\u72b9\u672a\u8d77\u6765\uff0c\u77e5\u9053\u5b9d\u7389\u51fa\u95e8\uff0c\u4fbf\u5f00\u4e86\u623f\u95e8\uff0c\u547d\u5b9d\u7389\u8fdb\u53bb\u3002\u5b9d\u7389\u89c1\u8d3e\u6bcd\u8eab\u540e\u5b9d\u7434\u9762\u5411\u91cc\u4e5f\u7761\u672a\u9192\u3002\u8d3e\u6bcd\u89c1\u5b9d\u7389\u8eab\u4e0a\u7a7f\u7740\u8354\u8272\u54c6\u7f57\u5462\u7684\u5929\u9a6c\u7bad\u8896\uff0c\u5927\u7ea2\u7329\u7329\u6be1\u76d8\u91d1\u5f69\u7ee3\u77f3\u9752\u5986\u7f0e\u6cbf\u8fb9\u7684\u6392\u7a57\u8902\u5b50\u3002\u8d3e\u6bcd\u9053\uff1a\u201c\u4e0b\u96ea\u5462\u4e48\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u5929\u9634\u7740\uff0c\u8fd8\u6ca1\u4e0b\u5462\u3002\u201d\u8d3e\u6bcd\u4fbf\u547d\u9e33\u9e2f\u6765\uff1a\u201c\u628a\u6628\u513f\u90a3\u4e00\u4ef6\u4e4c\u4e91\u8c79\u7684\u6c05\u8863\u7ed9\u4ed6\u7f62\u3002\u201d\u9e33\u9e2f\u7b54\u5e94\u4e86\uff0c\u8d70\u53bb\u679c\u53d6\u4e86\u4e00\u4ef6\u6765\u3002\u5b9d\u7389\u770b\u65f6\uff0c\u91d1\u7fe0\u8f89\u714c\uff0c\u78a7\u5f69\u95ea\u707c\uff0c\u53c8\u4e0d\u4f3c\u5b9d\u7434\u6240\u62ab\u4e4b\u51eb\u9765\u88d8\u3002\u53ea\u542c\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u8fd9\u53eb\u4f5c\u2018\u96c0\u91d1\u5462\u2019\uff0c\u8fd9\u662f\u54e6\u5570\u65af\u56fd\u62ff\u5b54\u96c0\u6bdb\u62c8\u4e86\u7ebf\u7ec7\u7684\u3002\u524d\u513f\u628a\u90a3\u4e00\u4ef6\u91ce\u9e2d\u5b50\u7684\u7ed9\u4e86\u4f60\u5c0f\u59b9\u59b9\uff0c\u8fd9\u4ef6\u7ed9\u4f60\u7f62\u3002\u201d\u5b9d\u7389\u78d5\u4e86\u4e00\u4e2a\u5934\uff0c\u4fbf\u62ab\u5728\u8eab\u4e0a\u3002\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4f60\u5148\u7ed9\u4f60\u5a18\u77a7\u77a7\u53bb\u518d\u53bb\u3002\u201d\u5b9d\u7389\u7b54\u5e94\u4e86\uff0c\u4fbf\u51fa\u6765\uff0c\u53ea\u89c1\u9e33\u9e2f\u7ad9\u5728\u5730\u4e0b\u63c9\u773c\u775b\u3002\u56e0\u81ea\u90a3\u65e5\u9e33\u9e2f\u53d1\u8a93\u51b3\u7edd\u4e4b\u540e\uff0c\u4ed6\u603b\u4e0d\u548c\u5b9d\u7389\u8bb2\u8bdd\u3002\u5b9d\u7389\u6b63\u81ea\u65e5\u591c\u4e0d\u5b89\uff0c\u6b64\u65f6\u89c1\u4ed6\u53c8\u8981\u56de\u907f\uff0c\u5b9d\u7389\u4fbf\u4e0a\u6765\u7b11\u9053\uff1a\u201c\u597d\u59d0\u59d0\uff0c\u4f60\u77a7\u77a7\uff0c\u6211\u7a7f\u7740\u8fd9\u4e2a\u597d\u4e0d\u597d\u3002\u201d\u9e33\u9e2f\u4e00\u6454\u624b\uff0c\u4fbf\u8fdb\u8d3e\u6bcd\u623f\u4e2d\u6765\u4e86\u3002\u5b9d\u7389\u53ea\u5f97\u5230\u4e86\u738b\u592b\u4eba\u623f\u4e2d\uff0c\u4e0e\u738b\u592b\u4eba\u770b\u4e86\uff0c\u7136\u540e\u53c8\u56de\u81f3\u56ed\u4e2d\uff0c\u4e0e\u6674\u96ef\u9e9d\u6708\u770b\u8fc7\u540e\uff0c\u81f3\u8d3e\u6bcd\u623f\u4e2d\u56de\u8bf4\uff1a\u201c\u592a\u592a\u770b\u4e86\uff0c\u53ea\u8bf4\u53ef\u60dc\u4e86\u7684\uff0c\u53eb\u6211\u4ed4\u7ec6\u7a7f\uff0c\u522b\u906d\u8e0f\u4e86\u4ed6\u3002\u201d\u8d3e\u6bcd\u9053\uff1a\u201c\u5c31\u5269\u4e0b\u4e86\u8fd9\u4e00\u4ef6\uff0c\u4f60\u906d\u8e0f\u4e86\u4e5f\u518d\u6ca1\u4e86\u3002\u8fd9\u4f1a\u5b50\u7279\u7ed9\u4f60\u505a\u8fd9\u4e2a\u4e5f\u662f\u6ca1\u6709\u7684\u4e8b\u3002\u201d\u8bf4\u7740\u53c8\u5631\u5490\u4ed6\uff1a\u201c\u4e0d\u8bb8\u591a\u5403\u9152\uff0c\u65e9\u4e9b\u56de\u6765\u3002\u201d\u5b9d\u7389\u5e94\u4e86\u51e0\u4e2a\u201c\u662f\u201d\u3002\ +\u8001\u5b37\u5b37\u8ddf\u81f3\u5385\u4e0a\uff0c\u53ea\u89c1\u5b9d\u7389\u7684\u5976\u5144\u674e\u8d35\u548c\u738b\u8363\uff0c\u5f20\u82e5\u9526\uff0c\u8d75\u4ea6\u534e\u3001\u94b1\u542f\u3001\u5468\u745e\u516d\u4e2a\u4eba\uff0c\u5e26\u7740\u8317\u70df\uff0c\u4f34\u9e64\uff0c\u9504\u836f\uff0c\u626b\u7ea2\u56db\u4e2a\u5c0f\u53ae\uff0c\u80cc\u7740\u8863\u5305\uff0c\u62b1\u7740\u5750\u8925\uff0c\u7b3c\u7740\u4e00\u5339\u96d5\u978d\u5f69\u8f94\u7684\u767d\u9a6c\uff0c\u65e9\u5df2\u4f3a\u5019\u591a\u65f6\u4e86\u3002\u8001\u5b37\u5b37\u53c8\u5429\u5490\u4e86\u4ed6\u516d\u4eba\u4e9b\u8bdd\uff0c\u516d\u4e2a\u4eba\u5fd9\u7b54\u5e94\u4e86\u51e0\u4e2a\u201c\u662f\u201d\uff0c\u5fd9\u6367\u97ad\u5760\u956b\u3002\u5b9d\u7389\u6162\u6162\u7684\u4e0a\u4e86\u9a6c\uff0c\u674e\u8d35\u548c\u738b\u8363\u7b3c\u7740\u56bc\u73af\uff0c\u94b1\u542f\u5468\u745e\u4e8c\u4eba\u5728\u524d\u5f15\u5bfc\uff0c\u5f20\u82e5\u9526\uff0c\u8d75\u4ea6\u534e\u5728\u4e24\u8fb9\u7d27\u8d34\u5b9d\u7389\u540e\u8eab\u3002\u5b9d\u7389\u5728\u9a6c\u4e0a\u7b11\u9053\uff1a\u201c\u5468\u54e5\uff0c\u94b1\u54e5\uff0c\u54b1\u4eec\u6253\u8fd9\u89d2\u95e8\u8d70\u7f62\uff0c\u7701\u5f97\u5230\u4e86\u8001\u7237\u7684\u4e66\u623f\u95e8\u53e3\u53c8\u4e0b\u6765\u3002\u201d\u5468\u745e\u4fa7\u8eab\u7b11\u9053\uff1a\u201c\u8001\u7237\u4e0d\u5728\u5bb6\uff0c\u4e66\u623f\u5929\u5929\u9501\u7740\u7684\uff0c\u7237\u53ef\u4ee5\u4e0d\u7528\u4e0b\u6765\u7f62\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u867d\u9501\u7740\uff0c\u4e5f\u8981\u4e0b\u6765\u7684\u3002\u201d\u94b1\u542f\u674e\u8d35\u7b49\u90fd\u7b11\u9053\uff1a\u201c\u7237\u8bf4\u7684\u662f\u3002\u4fbf\u6258\u61d2\u4e0d\u4e0b\u6765\uff0c\u5018\u6216\u9047\u89c1\u8d56\u5927\u7237\u6797\u4e8c\u7237\uff0c\u867d\u4e0d\u597d\u8bf4\u7237\uff0c\u4e5f\u529d\u4e24\u53e5\u3002\u6709\u7684\u4e0d\u662f\uff0c\u90fd\u6d3e\u5728\u6211\u4eec\u8eab\u4e0a\uff0c\u53c8\u8bf4\u6211\u4eec\u4e0d\u6559\u7237\u793c\u4e86\u3002\u201d\u5468\u745e\u94b1\u542f\u4fbf\u4e00\u76f4\u51fa\u89d2\u95e8\u6765\u3002\ +\u6b63\u8bf4\u8bdd\u65f6\uff0c\u9876\u5934\u679c\u89c1\u8d56\u5927\u8fdb\u6765\u3002\u5b9d\u7389\u5fd9\u7b3c\u4f4f\u9a6c\uff0c\u610f\u6b32\u4e0b\u6765\u3002\u8d56\u5927\u5fd9\u4e0a\u6765\u62b1\u4f4f\u817f\u3002\u5b9d\u7389\u4fbf\u5728\u956b\u4e0a\u7ad9\u8d77\u6765\uff0c\u7b11\u643a\u4ed6\u7684\u624b\uff0c\u8bf4\u4e86\u51e0\u53e5\u8bdd\u3002\u63a5\u7740\u53c8\u89c1\u4e00\u4e2a\u5c0f\u53ae\u5e26\u7740\u4e8c\u4e09\u5341\u4e2a\u62ff\u626b\u5e1a\u7c38\u7b95\u7684\u4eba\u8fdb\u6765\uff0c\u89c1\u4e86\u5b9d\u7389\uff0c\u90fd\u987a\u5899\u5782\u624b\u7acb\u4f4f\uff0c\u72ec\u90a3\u4e3a\u9996\u7684\u5c0f\u53ae\u6253\u5343\u513f\uff0c\u8bf7\u4e86\u4e00\u4e2a\u5b89\u3002\u5b9d\u7389\u4e0d\u8bc6\u540d\u59d3\uff0c\u53ea\u5fae\u7b11\u70b9\u4e86\u70b9\u5934\u513f\u3002\u9a6c\u5df2\u8fc7\u53bb\uff0c\u90a3\u4eba\u65b9\u5e26\u4eba\u53bb\u4e86\u3002\u4e8e\u662f\u51fa\u4e86\u89d2\u95e8\uff0c\u95e8\u5916\u53c8\u6709\u674e\u8d35\u7b49\u516d\u4eba\u7684\u5c0f\u53ae\u5e76\u51e0\u4e2a\u9a6c\u592b\uff0c\u65e9\u9884\u5907\u4e0b\u5341\u6765\u5339\u9a6c\u4e13\u5019\u3002\u4e00\u51fa\u4e86\u89d2\u95e8\uff0c\u674e\u8d35\u7b49\u90fd\u5404\u4e0a\u4e86\u9a6c\uff0c\u524d\u5f15\u508d\u56f4\u7684\u4e00\u9635\u70df\u53bb\u4e86\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\ +\u8fd9\u91cc\u6674\u96ef\u5403\u4e86\u836f\uff0c\u4ecd\u4e0d\u89c1\u75c5\u9000\uff0c\u6025\u7684\u4e71\u9a82\u5927\u592b\uff0c\u8bf4\uff1a\u201c\u53ea\u4f1a\u9a97\u4eba\u7684\u94b1\uff0c\u4e00\u5242\u597d\u836f\u4e5f\u4e0d\u7ed9\u4eba\u5403\u3002\u201d\u9e9d\u6708\u7b11\u529d\u4ed6\u9053\uff1a\u201c\u4f60\u592a\u6027\u6025\u4e86\uff0c\u4fd7\u8bed\u8bf4\uff1a\u2018\u75c5\u6765\u5982\u5c71\u5012\uff0c\u75c5\u53bb\u5982\u62bd\u4e1d\u3002\u2019\u53c8\u4e0d\u662f\u8001\u541b\u7684\u4ed9\u4e39\uff0c\u90a3\u6709\u8fd9\u6837\u7075\u836f\uff01\u4f60\u53ea\u9759\u517b\u51e0\u5929\uff0c\u81ea\u7136\u597d\u4e86\u3002\u4f60\u8d8a\u6025\u8d8a\u7740\u624b\u3002\u201d\u6674\u96ef\u53c8\u9a82\u5c0f\u4e2b\u5934\u5b50\u4eec\uff1a\u201c\u90a3\u91cc\u94bb\u6c99\u53bb\u4e86\uff01\u7785\u6211\u75c5\u4e86\uff0c\u90fd\u5927\u80c6\u5b50\u8d70\u4e86\u3002\u660e\u513f\u6211\u597d\u4e86\uff0c\u4e00\u4e2a\u4e00\u4e2a\u7684\u624d\u63ed\u4f60\u4eec\u7684\u76ae\u5462\uff01\u201d\u552c\u7684\u5c0f\u4e2b\u5934\u5b50\u7bc6\u513f\u5fd9\u8fdb\u6765\u95ee\uff1a\u201c\u59d1\u5a18\u4f5c\u4ec0\u4e48\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u522b\u4eba\u90fd\u6b7b\u7edd\u4e86\uff0c\u5c31\u5269\u4e86\u4f60\u4e0d\u6210\uff1f\u201d\u8bf4\u7740\uff0c\u53ea\u89c1\u5760\u513f\u4e5f\u8e6d\u4e86\u8fdb\u6765\u3002\u6674\u96ef\u9053\uff1a\u201c\u4f60\u77a7\u77a7\u8fd9\u5c0f\u8e44\u5b50\uff0c\u4e0d\u95ee\u4ed6\u8fd8\u4e0d\u6765\u5462\u3002\u8fd9\u91cc\u53c8\u653e\u6708\u94b1\u4e86\uff0c\u53c8\u6563\u679c\u5b50\u4e86\uff0c\u4f60\u8be5\u8dd1\u5728\u5934\u91cc\u4e86\u3002\u4f60\u5f80\u524d\u4e9b\uff0c\u6211\u4e0d\u662f\u8001\u864e\u5403\u4e86\u4f60\uff01\u201d\u5760\u513f\u53ea\u5f97\u524d\u51d1\u3002\u6674\u96ef\u4fbf\u51b7\u4e0d\u9632\u6b20\u8eab\u4e00\u628a\u5c06\u4ed6\u7684\u624b\u6293\u4f4f\uff0c\u5411\u6795\u8fb9\u53d6\u4e86\u4e00\u4e08\u9752\uff0c\u5411\u4ed6\u624b\u4e0a\u4e71\u6233\uff0c\u53e3\u5185\u9a82\u9053\uff1a\u201c\u8981\u8fd9\u722a\u5b50\u4f5c\u4ec0\u4e48\uff1f\u62c8\u4e0d\u5f97\u9488\uff0c\u62ff\u4e0d\u52a8\u7ebf\uff0c\u53ea\u4f1a\u5077\u5634\u5403\u3002\u773c\u76ae\u5b50\u53c8\u6d45\uff0c\u722a\u5b50\u53c8\u8f7b\uff0c\u6253\u5634\u73b0\u4e16\u7684\uff0c\u4e0d\u5982\u6233\u70c2\u4e86\uff01\u201d\u5760\u513f\u75bc\u7684\u4e71\u54ed\u4e71\u558a\u3002\u9e9d\u6708\u5fd9\u62c9\u5f00\u5760\u513f\uff0c\u6309\u6674\u96ef\u7761\u4e0b\uff0c\u7b11\u9053\uff1a\u201c\u624d\u51fa\u4e86\u6c57\uff0c\u53c8\u4f5c\u6b7b\u3002\u7b49\u4f60\u597d\u4e86\uff0c\u8981\u6253\u591a\u5c11\u6253\u4e0d\u7684\uff1f\u8fd9\u4f1a\u5b50\u95f9\u4ec0\u4e48\uff01\u201d\u6674\u96ef\u4fbf\u547d\u4eba\u53eb\u5b8b\u5b37\u5b37\u8fdb\u6765\uff0c\u8bf4\u9053\uff1a\u201c\u5b9d\u4e8c\u7237\u624d\u544a\u8bc9\u4e86\u6211\uff0c\u53eb\u6211\u544a\u8bc9\u4f60\u4eec\uff0c\u5760\u513f\u5f88\u61d2\uff0c\u5b9d\u4e8c\u7237\u5f53\u9762\u4f7f\u4ed6\uff0c\u4ed6\u62e8\u5634\u513f\u4e0d\u52a8\uff0c\u8fde\u88ad\u4eba\u4f7f\u4ed6\uff0c\u4ed6\u80cc\u540e\u9a82\u4ed6\u3002\u4eca\u513f\u52a1\u5fc5\u6253\u53d1\u4ed6\u51fa\u53bb\uff0c\u660e\u513f\u5b9d\u4e8c\u7237\u4eb2\u81ea\u56de\u592a\u592a\u5c31\u662f\u4e86\u3002\u201d\u5b8b\u5b37\u5b37\u542c\u4e86\uff0c\u5fc3\u4e0b\u4fbf\u77e5\u956f\u5b50\u4e8b\u53d1\uff0c\u56e0\u7b11\u9053\uff1a\u201c\u867d\u5982\u6b64\u8bf4\uff0c\u4e5f\u7b49\u82b1\u59d1\u5a18\u56de\u6765\u77e5\u9053\u4e86\uff0c\u518d\u6253\u53d1\u4ed6\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u5b9d\u4e8c\u7237\u4eca\u513f\u5343\u53ee\u549b\u4e07\u5631\u5490\u7684\uff0c\u4ec0\u4e48\u2018\u82b1\u59d1\u5a18\u2019\u2018\u8349\u59d1\u5a18\u2019\uff0c\u6211\u4eec\u81ea\u7136\u6709\u9053\u7406\u3002\u4f60\u53ea\u4f9d\u6211\u7684\u8bdd\uff0c\u5feb\u53eb\u4ed6\u5bb6\u7684\u4eba\u6765\u9886\u4ed6\u51fa\u53bb\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u4e5f\u7f62\u4e86\uff0c\u65e9\u4e5f\u53bb\uff0c\u665a\u4e5f\u53bb\uff0c\u5e26\u4e86\u53bb\u65e9\u6e05\u9759\u4e00\u65e5\u3002\u201d\ +\u5b8b\u5b37\u5b37\u542c\u4e86\uff0c\u53ea\u5f97\u51fa\u53bb\u5524\u4e86\u4ed6\u6bcd\u4eb2\u6765\uff0c\u6253\u70b9\u4e86\u4ed6\u7684\u4e1c\u897f\uff0c\u53c8\u6765\u89c1\u6674\u96ef\u7b49\uff0c\u8bf4\u9053\uff1a\u201c\u59d1\u5a18\u4eec\u600e\u4e48\u4e86\uff0c\u4f60\u4f84\u5973\u513f\u4e0d\u597d\uff0c\u4f60\u4eec\u6559\u5bfc\u4ed6\uff0c\u600e\u4e48\u64b5\u51fa\u53bb\uff1f\u4e5f\u5230\u5e95\u7ed9\u6211\u4eec\u7559\u4e2a\u8138\u513f\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u4f60\u8fd9\u8bdd\u53ea\u7b49\u5b9d\u7389\u6765\u95ee\u4ed6\uff0c\u4e0e\u6211\u4eec\u65e0\u5e72\u3002\u201d\u90a3\u5ab3\u5987\u51b7\u7b11\u9053\uff1a\u201c\u6211\u6709\u80c6\u5b50\u95ee\u4ed6\u53bb\uff01\u4ed6\u90a3\u4e00\u4ef6\u4e8b\u4e0d\u662f\u542c\u59d1\u5a18\u4eec\u7684\u8c03\u505c\uff1f\u4ed6\u7eb5\u4f9d\u4e86\uff0c\u59d1\u5a18\u4eec\u4e0d\u4f9d\uff0c\u4e5f\u672a\u5fc5\u4e2d\u7528\u3002\u6bd4\u5982\u65b9\u624d\u8bf4\u8bdd\uff0c\u867d\u662f\u80cc\u5730\u91cc\uff0c\u59d1\u5a18\u5c31\u76f4\u53eb\u4ed6\u7684\u540d\u5b57\u3002\u5728\u59d1\u5a18\u4eec\u5c31\u4f7f\u5f97\uff0c\u5728\u6211\u4eec\u5c31\u6210\u4e86\u91ce\u4eba\u4e86\u3002\u201d\u6674\u96ef\u542c\u8bf4\uff0c\u4e00\u53d1\u6025\u7ea2\u4e86\u8138\uff0c\u8bf4\u9053\uff1a\u201c\u6211\u53eb\u4e86\u4ed6\u7684\u540d\u5b57\u4e86\uff0c\u4f60\u5728\u8001\u592a\u592a\u8ddf\u524d\u544a\u6211\u53bb\uff0c\u8bf4\u6211\u6492\u91ce\uff0c\u4e5f\u64b5\u51fa\u6211\u53bb\u3002\u201d\u9e9d\u6708\u5fd9\u9053\uff1a\u201c\u5ac2\u5b50\uff0c\u4f60\u53ea\u7ba1\u5e26\u4e86\u4eba\u51fa\u53bb\uff0c\u6709\u8bdd\u518d\u8bf4\u3002\u8fd9\u4e2a\u5730\u65b9\u5c82\u6709\u4f60\u53eb\u558a\u8bb2\u793c\u7684\uff1f\u4f60\u89c1\u8c01\u548c\u6211\u4eec\u8bb2\u8fc7\u793c\uff1f\u522b\u8bf4\u5ac2\u5b50\u4f60\uff0c\u5c31\u662f\u8d56\u5976\u5976\u6797\u5927\u5a18\uff0c\u4e5f\u5f97\u62c5\u5f85\u6211\u4eec\u4e09\u5206\u3002\u4fbf\u662f\u53eb\u540d\u5b57\uff0c\u4ece\u5c0f\u513f\u76f4\u5230\u5982\u4eca\uff0c\u90fd\u662f\u8001\u592a\u592a\u5429\u5490\u8fc7\u7684\uff0c\u4f60\u4eec\u4e5f\u77e5\u9053\u7684\uff0c\u6050\u6015\u96be\u517b\u6d3b\uff0c\u5df4\u5df4\u7684\u5199\u4e86\u4ed6\u7684\u5c0f\u540d\u513f\uff0c\u5404\u5904\u8d34\u7740\u53eb\u4e07\u4eba\u53eb\u53bb\uff0c\u4e3a\u7684\u662f\u597d\u517b\u6d3b\u3002\u8fde\u6311\u6c34\u6311\u7caa\u82b1\u5b50\u90fd\u53eb\u5f97\uff0c\u4f55\u51b5\u6211\u4eec\uff01\u8fde\u6628\u513f\u6797\u5927\u5a18\u53eb\u4e86\u4e00\u58f0\u2018\u7237\u2019\uff0c\u8001\u592a\u592a\u8fd8\u8bf4\u4ed6\u5462\uff0c\u6b64\u662f\u4e00\u4ef6\u3002\u4e8c\u5219\uff0c\u6211\u4eec\u8fd9\u4e9b\u4eba\u5e38\u56de\u8001\u592a\u592a\u7684\u8bdd\u53bb\uff0c\u53ef\u4e0d\u53eb\u7740\u540d\u5b57\u56de\u8bdd\uff0c\u96be\u9053\u4e5f\u79f0\u2019\u7237\u2019\uff1f\u90a3\u4e00\u65e5\u4e0d\u628a\u5b9d\u7389\u4e24\u4e2a\u5b57\u5ff5\u4e8c\u767e\u904d\uff0c\u504f\u5ac2\u5b50\u53c8\u6765\u6311\u8fd9\u4e2a\u4e86\uff01\u8fc7\u4e00\u65e5\u5ac2\u5b50\u95f2\u4e86\uff0c\u5728\u8001\u592a\u592a\uff0c\u592a\u592a\u8ddf\u524d\uff0c\u542c\u542c\u6211\u4eec\u5f53\u7740\u9762\u513f\u53eb\u4ed6\u5c31\u77e5\u9053\u4e86\u3002\u5ac2\u5b50\u539f\u4e5f\u4e0d\u5f97\u5728\u8001\u592a\u592a\uff0c\u592a\u592a\u8ddf\u524d\u5f53\u4e9b\u4f53\u7edf\u5dee\u4e8b\uff0c\u6210\u5e74\u5bb6\u53ea\u5728\u4e09\u95e8\u5916\u5934\u6df7\uff0c\u602a\u4e0d\u5f97\u4e0d\u77e5\u6211\u4eec\u91cc\u5934\u7684\u89c4\u77e9\u3002\u8fd9\u91cc\u4e0d\u662f\u5ac2\u5b50\u4e45\u7ad9\u7684\uff0c\u518d\u4e00\u4f1a\uff0c\u4e0d\u7528\u6211\u4eec\u8bf4\u8bdd\uff0c\u5c31\u6709\u4eba\u6765\u95ee\u4f60\u4e86\u3002\u6709\u4ec0\u4e48\u5206\u8bc1\u8bdd\uff0c\u4e14\u5e26\u4e86\u4ed6\u53bb\uff0c\u4f60\u56de\u4e86\u6797\u5927\u5a18\uff0c\u53eb\u4ed6\u6765\u627e\u4e8c\u7237\u8bf4\u8bdd\u3002\u5bb6\u91cc\u4e0a\u5343\u7684\u4eba\uff0c\u4f60\u4e5f\u8dd1\u6765\uff0c\u6211\u4e5f\u8dd1\u6765\uff0c\u6211\u4eec\u8ba4\u4eba\u95ee\u59d3\uff0c\u8fd8\u8ba4\u4e0d\u6e05\u5462\uff01\u201d\u8bf4\u7740\uff0c\u4fbf\u53eb\u5c0f\u4e2b\u5934\u5b50\uff1a\u201c\u62ff\u4e86\u64e6\u5730\u7684\u5e03\u6765\u64e6\u5730\uff01\u201d\u90a3\u5ab3\u5987\u542c\u4e86\uff0c\u65e0\u8a00\u53ef\u5bf9\uff0c\u4ea6\u4e0d\u6562\u4e45\u7acb\uff0c\u8d4c\u6c14\u5e26\u4e86\u5760\u513f\u5c31\u8d70\u3002\u5b8b\u5988\u5988\u5fd9\u9053\uff1a\u201c\u602a\u9053\u4f60\u8fd9\u5ac2\u5b50\u4e0d\u77e5\u89c4\u77e9\uff0c\u4f60\u5973\u513f\u5728\u8fd9\u5c4b\u91cc\u4e00\u573a\uff0c\u4e34\u53bb\u65f6\uff0c\u4e5f\u7ed9\u59d1\u5a18\u4eec\u78d5\u4e2a\u5934\u3002\u6ca1\u6709\u522b\u7684\u8c22\u793c\uff0c____\u4fbf\u6709\u8c22\u793c\uff0c\u4ed6\u4eec\u4e5f\u4e0d\u5e0c\u7f55\uff0c____\u4e0d\u8fc7\u78d5\u4e2a\u5934\uff0c\u5c3d\u4e86\u5fc3\u3002\u600e\u4e48\u8bf4\u8d70\u5c31\u8d70\uff1f\u201d\u5760\u513f\u542c\u4e86\uff0c\u53ea\u5f97\u7ffb\u8eab\u8fdb\u6765\uff0c\u7ed9\u4ed6\u4e24\u4e2a\u78d5\u4e86\u4e24\u4e2a\u5934\uff0c\u53c8\u627e\u79cb\u7eb9\u7b49\u3002\u4ed6\u4eec\u4e5f\u4e0d\u776c\u4ed6\u3002\u90a3\u5ab3\u5987\u55d0\u58f0\u53f9\u6c14\uff0c\u53e3\u4e0d\u6562\u8a00\uff0c\u62b1\u6068\u800c\u53bb\u3002\ +\u6674\u96ef\u65b9\u624d\u53c8\u95ea\u4e86\u98ce\uff0c\u7740\u4e86\u6c14\uff0c\u53cd\u89c9\u66f4\u4e0d\u597d\u4e86\uff0c\u7ffb\u817e\u81f3\u638c\u706f\uff0c\u521a\u5b89\u9759\u4e86\u4e9b\u3002\u53ea\u89c1\u5b9d\u7389\u56de\u6765\uff0c\u8fdb\u95e8\u5c31\u55d0\u58f0\u8dfa\u811a\u3002\u9e9d\u6708\u5fd9\u95ee\u539f\u6545\uff0c\u5b9d\u7389\u9053\uff1a\u201c\u4eca\u513f\u8001\u592a\u592a\u559c\u559c\u6b22\u6b22\u7684\u7ed9\u4e86\u8fd9\u4e2a\u8902\u5b50\uff0c\u8c01\u77e5\u4e0d\u9632\u540e\u895f\u5b50\u4e0a\u70e7\u4e86\u4e00\u5757\uff0c\u5e78\u800c\u5929\u665a\u4e86\uff0c\u8001\u592a\u592a\uff0c\u592a\u592a\u90fd\u4e0d\u7406\u8bba\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u8131\u4e0b\u6765\u3002\u9e9d\u6708\u77a7\u65f6\uff0c\u679c\u89c1\u6709\u6307\u9876\u5927\u7684\u70e7\u773c\uff0c\u8bf4\uff1a\u201c\u8fd9\u5fc5\u5b9a\u662f\u624b\u7089\u91cc\u7684\u706b\u8ff8\u4e0a\u4e86\u3002\u8fd9\u4e0d\u503c\u4ec0\u4e48\uff0c\u8d76\u7740\u53eb\u4eba\u6084\u6084\u7684\u62ff\u51fa\u53bb\uff0c\u53eb\u4e2a\u80fd\u5e72\u7ec7\u8865\u5320\u4eba\u7ec7\u4e0a\u5c31\u662f\u4e86\u3002\u201d\u8bf4\u7740\u4fbf\u7528\u5305\u88b1\u5305\u4e86\uff0c\u4ea4\u4e0e\u4e00\u4e2a\u5988\u5988\u9001\u51fa\u53bb\u3002\u8bf4\uff1a\u201c\u8d76\u5929\u4eae\u5c31\u6709\u624d\u597d\u3002\u5343\u4e07\u522b\u7ed9\u8001\u592a\u592a\uff0c\u592a\u592a\u77e5\u9053\u3002\u201d\u5a46\u5b50\u53bb\u4e86\u534a\u65e5\uff0c\u4ecd\u65e7\u62ff\u56de\u6765\uff0c\u8bf4\uff1a\u201c\u4e0d\u4f46\u80fd\u5e72\u7ec7\u8865\u5320\u4eba\uff0c\u5c31\u8fde\u88c1\u7f1d\u7ee3\u5320\u5e76\u4f5c\u5973\u5de5\u7684\u95ee\u4e86\uff0c\u90fd\u4e0d\u8ba4\u5f97\u8fd9\u662f\u4ec0\u4e48\uff0c\u90fd\u4e0d\u6562\u63fd\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u600e\u4e48\u6837\u5462\uff01\u660e\u513f\u4e0d\u7a7f\u4e5f\u7f62\u4e86\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u660e\u513f\u662f\u6b63\u65e5\u5b50\uff0c\u8001\u592a\u592a\uff0c\u592a\u592a\u8bf4\u4e86\uff0c\u8fd8\u53eb\u7a7f\u8fd9\u4e2a\u53bb\u5462\u3002\u504f\u5934\u4e00\u65e5\u70e7\u4e86\uff0c\u5c82\u4e0d\u626b\u5174\u3002\u201d\u6674\u96ef\u542c\u4e86\u534a\u65e5\uff0c\u5fcd\u4e0d\u4f4f\u7ffb\u8eab\u8bf4\u9053\uff1a\u201c\u62ff\u6765\u6211\u77a7\u77a7\u7f62\u3002\u6ca1\u4e2a\u798f\u6c14\u7a7f\u5c31\u7f62\u4e86\u3002\u8fd9\u4f1a\u5b50\u53c8\u7740\u6025\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8fd9\u8bdd\u5012\u8bf4\u7684\u662f\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u9012\u4e0e\u6674\u96ef\uff0c\u53c8\u79fb\u8fc7\u706f\u6765\uff0c\u7ec6\u770b\u4e86\u4e00\u4f1a\u3002\u6674\u96ef\u9053\uff1a\u201c\u8fd9\u662f\u5b54\u96c0\u91d1\u7ebf\u7ec7\u7684\uff0c\u5982\u4eca\u54b1\u4eec\u4e5f\u62ff\u5b54\u96c0\u91d1\u7ebf\u5c31\u50cf\u754c\u7ebf\u4f3c\u7684\u754c\u5bc6\u4e86\uff0c\u53ea\u6015\u8fd8\u53ef\u6df7\u5f97\u8fc7\u53bb\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u5b54\u96c0\u7ebf\u73b0\u6210\u7684\uff0c\u4f46\u8fd9\u91cc\u9664\u4e86\u4f60\uff0c\u8fd8\u6709\u8c01\u4f1a\u754c\u7ebf\uff1f\u201d\u6674\u96ef\u9053\uff1a\u201c\u8bf4\u4e0d\u5f97\uff0c\u6211\u6323\u547d\u7f62\u4e86\u3002\u201d\u5b9d\u7389\u5fd9\u9053\uff1a\u201c\u8fd9\u5982\u4f55\u4f7f\u5f97\uff01\u624d\u597d\u4e86\u4e9b\uff0c\u5982\u4f55\u505a\u5f97\u6d3b\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u4e0d\u7528\u4f60\u874e\u874e\u87ab\u87ab\u7684\uff0c\u6211\u81ea\u77e5\u9053\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u5750\u8d77\u6765\uff0c\u633d\u4e86\u4e00\u633d\u5934\u53d1\uff0c\u62ab\u4e86\u8863\u88f3\uff0c\u53ea\u89c9\u5934\u91cd\u8eab\u8f7b\uff0c\u6ee1\u773c\u91d1\u661f\u4e71\u8ff8\uff0c\u5b9e\u5b9e\u6491\u4e0d\u4f4f\u3002\u82e5\u4e0d\u505a\uff0c\u53c8\u6015\u5b9d\u7389\u7740\u6025\uff0c\u5c11\u4e0d\u5f97\u6068\u547d\u54ac\u7259\u6371\u7740\u3002\u4fbf\u547d\u9e9d\u6708\u53ea\u5e2e\u7740\u62c8\u7ebf\u3002\u6674\u96ef\u5148\u62ff\u4e86\u4e00\u6839\u6bd4\u4e00\u6bd4\uff0c\u7b11\u9053\uff1a\u201c\u8fd9\u867d\u4e0d\u5f88\u50cf\uff0c\u82e5\u8865\u4e0a\uff0c\u4e5f\u4e0d\u5f88\u663e\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u8fd9\u5c31\u5f88\u597d\uff0c\u90a3\u91cc\u53c8\u627e\u54e6\u5570\u5636\u56fd\u7684\u88c1\u7f1d\u53bb\u3002\u201d\u6674\u96ef\u5148\u5c06\u91cc\u5b50\u62c6\u5f00\uff0c\u7528\u8336\u676f\u53e3\u5927\u7684\u4e00\u4e2a\u7af9\u5f13\u9489\u7262\u5728\u80cc\u9762\uff0c\u518d\u5c06\u7834\u53e3\u56db\u8fb9\u7528\u91d1\u5200\u522e\u7684\u6563\u677e\u677e\u7684\uff0c\u7136\u540e\u7528\u9488\u7eab\u4e86\u4e24\u6761\uff0c\u5206\u51fa\u7ecf\u7eac\uff0c\u4ea6\u5982\u754c\u7ebf\u4e4b\u6cd5\uff0c\u5148\u754c\u51fa\u5730\u5b50\u540e\uff0c\u4f9d\u672c\u8863\u4e4b\u7eb9\u6765\u56de\u7ec7\u8865\u3002\u8865\u4e24\u9488\uff0c\u53c8\u770b\u770b\uff0c\u7ec7\u8865\u4e24\u9488\uff0c\u53c8\u7aef\u8be6\u7aef\u8be6\u3002\u65e0\u5948\u5934\u6655\u773c\u9ed1\uff0c\u6c14\u5598\u795e\u865a\uff0c\u8865\u4e0d\u4e0a\u4e09\u4e94\u9488\uff0c\u4f0f\u5728\u6795\u4e0a\u6b47\u4e00\u4f1a\u3002\u5b9d\u7389\u5728\u65c1\uff0c\u4e00\u65f6\u53c8\u95ee\uff1a\u201c\u5403\u4e9b\u6eda\u6c34\u4e0d\u5403\uff1f\u201d\u4e00\u65f6\u53c8\u547d\uff1a\u201c\u6b47\u4e00\u6b47\u3002\u201d\u4e00\u65f6\u53c8\u62ff\u4e00\u4ef6\u7070\u9f20\u6597\u7bf7\u66ff\u4ed6\u62ab\u5728\u80cc\u4e0a\uff0c\u4e00\u65f6\u53c8\u547d\u62ff\u4e2a\u62d0\u6795\u4e0e\u4ed6\u9760\u7740\u3002\u6025\u7684\u6674\u96ef\u592e\u9053\uff1a\u201c\u5c0f\u7956\u5b97\uff01\u4f60\u53ea\u7ba1\u7761\u7f62\u3002\u518d\u71ac\u4e0a\u534a\u591c\uff0c\u660e\u513f\u628a\u773c\u775b\u62a0\u6402\u4e86\uff0c\u600e\u4e48\u5904\uff01\u201d\u5b9d\u7389\u89c1\u4ed6\u7740\u6025\uff0c\u53ea\u5f97\u80e1\u4e71\u7761\u4e0b\uff0c\u4ecd\u7761\u4e0d\u7740\u3002\u4e00\u65f6\u53ea\u542c\u81ea\u9e23\u949f\u5df2\u6572\u4e86\u56db\u4e0b\uff0c\u521a\u521a\u8865\u5b8c\uff0c\u53c8\u7528\u5c0f\u7259\u5237\u6162\u6162\u7684\u5254\u51fa\u7ed2\u6bdb\u6765\u3002\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u5c31\u5f88\u597d\uff0c\u82e5\u4e0d\u7559\u5fc3\uff0c\u518d\u770b\u4e0d\u51fa\u7684\u3002\u201d\u5b9d\u7389\u5fd9\u8981\u4e86\u77a7\u77a7\uff0c\u8bf4\u9053\uff1a\u201c\u771f\u771f\u4e00\u6837\u4e86\u3002\u201d\u6674\u96ef\u5df2\u55fd\u4e86\u51e0\u9635\uff0c\u597d\u5bb9\u6613\u8865\u5b8c\u4e86\uff0c\u8bf4\u4e86\u4e00\u58f0\uff1a\u201c\u8865\u867d\u8865\u4e86\uff0c\u5230\u5e95\u4e0d\u50cf\uff0c\u6211\u4e5f\u518d\u4e0d\u80fd\u4e86\uff01\u201d\u55f3\u54df\u4e86\u4e00\u58f0\uff0c\u4fbf\u8eab\u4e0d\u7531\u4e3b\u5012\u4e0b\u3002\u8981\u77e5\u7aef\u7684\uff0c\u4e14\u542c\u4e0b\u56de\u5206\u89e3\u3002\ +\u8bdd\u8bf4\u5b9d\u7389\u89c1\u6674\u96ef\u5c06\u96c0\u88d8\u8865\u5b8c\uff0c\u5df2\u4f7f\u7684\u529b\u5c3d\u795e\u5371\uff0c\u5fd9\u547d\u5c0f\u4e2b\u5934\u5b50\u6765\u66ff\u4ed6\u6376\u7740\uff0c\u5f7c\u6b64\u6376\u6253\u4e86\u4e00\u4f1a\u6b47\u4e0b\u3002\u6ca1\u4e00\u987f\u996d\u7684\u5de5\u592b\uff0c\u5929\u5df2\u5927\u4eae\uff0c\u4e14\u4e0d\u51fa\u95e8\uff0c\u53ea\u53eb\u5feb\u4f20\u5927\u592b\u3002\u4e00\u65f6\u738b\u592a\u533b\u6765\u4e86\uff0c\u8bca\u4e86\u8109\uff0c\u7591\u60d1\u8bf4\u9053\uff1a\u201c\u6628\u65e5\u5df2\u597d\u4e86\u4e9b\uff0c\u4eca\u65e5\u5982\u4f55\u53cd\u865a\u5fae\u6d6e\u7f29\u8d77\u6765\uff0c\u6562\u662f\u5403\u591a\u4e86\u996e\u98df\uff1f\u4e0d\u7136\u5c31\u662f\u52b3\u4e86\u795e\u601d\u3002\u5916\u611f\u5374\u5012\u6e05\u4e86\uff0c\u8fd9\u6c57\u540e\u5931\u4e8e\u8c03\u517b\uff0c\u975e\u540c\u5c0f\u53ef\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u51fa\u53bb\u5f00\u4e86\u836f\u65b9\u8fdb\u6765\u3002\u5b9d\u7389\u770b\u65f6\uff0c\u5df2\u5c06\u758f\u6563\u9a71\u90aa\u8bf8\u836f\u51cf\u53bb\u4e86\uff0c\u5012\u6dfb\u4e86\u832f\u82d3\uff0c\u5730\u9ec4\uff0c\u5f53\u5f52\u7b49\u76ca\u795e\u517b\u8840\u4e4b\u5242\u3002\u5b9d\u7389\u5fd9\u547d\u4eba\u714e\u53bb\uff0c\u4e00\u9762\u53f9\u8bf4\uff1a\u201c\u8fd9\u600e\u4e48\u5904\uff01\u5018\u6216\u6709\u4e2a\u597d\u6b79\uff0c\u90fd\u662f\u6211\u7684\u7f6a\u5b7d\u3002\u201d\u6674\u96ef\u7761\u5728\u6795\u4e0a\u55d0\u9053\uff1a\u201c\u597d\u592a\u7237\uff01\u4f60\u5e72\u4f60\u7684\u53bb\u7f62\uff0c\u90a3\u91cc\u5c31\u5f97\u75e8\u75c5\u4e86\u3002\u201d\u5b9d\u7389\u65e0\u5948\uff0c\u53ea\u5f97\u53bb\u4e86\u3002\u81f3\u4e0b\u534a\u5929\uff0c\u8bf4\u8eab\u4e0a\u4e0d\u597d\u5c31\u56de\u6765\u4e86\u3002\u6674\u96ef\u6b64\u75c7\u867d\u91cd\uff0c\u5e78\u4e8f\u4ed6\u7d20\u4e60\u662f\u4e2a\u4f7f\u529b\u4e0d\u4f7f\u5fc3\u7684\uff0c\u518d\u7d20\u4e60\u996e\u98df\u6e05\u6de1\uff0c\u9965\u9971\u65e0\u4f24\u3002\u8fd9\u8d3e\u5b85\u4e2d\u7684\u98ce\u4fd7\u79d8\u6cd5\uff0c\u65e0\u8bba\u4e0a\u4e0b\uff0c\u53ea\u4e00\u7565\u6709\u4e9b\u4f24\u98ce\u54b3\u55fd\uff0c\u603b\u4ee5\u51c0\u997f\u4e3a\u4e3b\uff0c\u6b21\u5219\u670d\u836f\u8c03\u517b\u3002\u6545\u4e8e\u524d\u65e5\u4e00\u75c5\u65f6\uff0c\u51c0\u997f\u4e86\u4e24\u4e09\u65e5\uff0c\u53c8\u8c28\u614e\u670d\u836f\u8c03\u6cbb\uff0c\u5982\u4eca\u52b3\u788c\u4e86\u4e9b\uff0c\u53c8\u52a0\u500d\u57f9\u517b\u4e86\u51e0\u65e5\uff0c\u4fbf\u6e10\u6e10\u7684\u597d\u4e86\u3002\u8fd1\u65e5\u56ed\u4e2d\u59ca\u59b9\u7686\u5404\u5728\u623f\u4e2d\u5403\u996d\uff0c\u708a\u7228\u996e\u98df\u4ea6\u4fbf\uff0c\u5b9d\u7389\u81ea\u80fd\u53d8\u6cd5\u8981\u6c64\u8981\u7fb9\u8c03\u505c\uff0c\u4e0d\u5fc5\u7ec6\u8bf4\u3002\ +\u88ad\u4eba\u9001\u6bcd\u6ba1\u540e\uff0c\u4e1a\u5df2\u56de\u6765\uff0c\u9e9d\u6708\u4fbf\u5c06\u5e73\u513f\u6240\u8bf4\u5b8b\u5988\u5760\u513f\u4e00\u4e8b\uff0c\u5e76\u6674\u96ef\u64b5\u9010\u51fa\u53bb\u7b49\u8bdd\uff0c\u4e00\u4e00\u4e5f\u66fe\u56de\u8fc7\u5b9d\u7389\u3002\u88ad\u4eba\u4e5f\u6ca1\u522b\u8bf4\uff0c\u53ea\u8bf4\u592a\u6027\u6025\u4e86\u4e9b\u3002\u53ea\u56e0\u674e\u7ea8\u4ea6\u56e0\u65f6\u6c14\u611f\u5192\uff0c\u90a2\u592b\u4eba\u53c8\u6b63\u5bb3\u706b\u773c\uff0c\u8fce\u6625\u5cab\u70df\u7686\u8fc7\u53bb\u671d\u5915\u4f8d\u836f\uff0c\u674e\u5a76\u4e4b\u5f1f\u53c8\u63a5\u4e86\u674e\u5a76\u548c\u674e\u7eb9\u674e\u7eee\u5bb6\u53bb\u4f4f\u51e0\u65e5\uff0c\u5b9d\u7389\u53c8\u89c1\u88ad\u4eba\u5e38\u5e38\u601d\u6bcd\u542b\u60b2\uff0c\u6674\u96ef\u72b9\u672a\u5927\u6108\uff1a\u56e0\u6b64\u8bd7\u793e\u4e4b\u65e5\uff0c\u7686\u672a\u6709\u4eba\u4f5c\u5174\uff0c\u4fbf\u7a7a\u4e86\u51e0\u793e\u3002\ +\u5f53\u4e0b\u5df2\u662f\u814a\u6708\uff0c\u79bb\u5e74\u65e5\u8fd1\uff0c\u738b\u592b\u4eba\u4e0e\u51e4\u59d0\u6cbb\u529e\u5e74\u4e8b\u3002\u738b\u5b50\u817e\u5347\u4e86\u4e5d\u7701\u90fd\u68c0\u70b9\uff0c\u8d3e\u96e8\u6751\u8865\u6388\u4e86\u5927\u53f8\u9a6c\uff0c\u534f\u7406\u519b\u673a\u53c2\u8d5e\u671d\u653f\uff0c\u4e0d\u9898\u3002\ +\u4e14\u8bf4\u8d3e\u73cd\u90a3\u8fb9\uff0c\u5f00\u4e86\u5b97\u7960\uff0c\u7740\u4eba\u6253\u626b\uff0c\u6536\u62fe\u4f9b\u5668\uff0c\u8bf7\u795e\u4e3b\uff0c\u53c8\u6253\u626b\u4e0a\u623f\uff0c\u4ee5\u5907\u60ac\u4f9b\u9057\u771f\u5f71\u50cf\u3002\u6b64\u65f6\u8363\u5b81\u4e8c\u5e9c\u5185\u5916\u4e0a\u4e0b\uff0c\u7686\u662f\u5fd9\u5fd9\u788c\u788c\u3002\u8fd9\u65e5\u5b81\u5e9c\u4e2d\u5c24\u6c0f\u6b63\u8d77\u6765\u540c\u8d3e\u84c9\u4e4b\u59bb\u6253\u70b9\u9001\u8d3e\u6bcd\u8fd9\u8fb9\u9488\u7ebf\u793c\u7269\uff0c\u6b63\u503c\u4e2b\u5934\u6367\u4e86\u4e00\u8336\u76d8\u62bc\u5c81\u951e\u5b50\u8fdb\u6765\uff0c\u56de\u8bf4\uff1a\u201c\u5174\u513f\u56de\u5976\u5976\uff0c\u524d\u513f\u90a3\u4e00\u5305\u788e\u91d1\u5b50\u5171\u662f\u4e00\u767e\u4e94\u5341\u4e09\u4e24\u516d\u94b1\u4e03\u5206\uff0c\u91cc\u5934\u6210\u8272\u4e0d\u7b49\uff0c\u5171\u603b\u503e\u4e86\u4e8c\u767e\u4e8c\u5341\u4e2a\u951e\u5b50\u3002\u201d\u8bf4\u7740\u9012\u4e0a\u53bb\u3002\u5c24\u6c0f\u770b\u4e86\u770b\uff0c\u53ea\u89c1\u4e5f\u6709\u6885\u82b1\u5f0f\u7684\uff0c\u4e5f\u6709\u6d77\u68e0\u5f0f\u7684\uff0c\u4e5f\u6709\u7b14\u952d\u5982\u610f\u7684\uff0c\u4e5f\u6709\u516b\u5b9d\u8054\u6625\u7684\u3002\u5c24\u6c0f\u547d\uff1a\u201c\u6536\u8d77\u8fd9\u4e2a\u6765\uff0c\u53eb\u4ed6\u628a\u94f6\u951e\u5b50\u5feb\u5feb\u4ea4\u4e86\u8fdb\u6765\u3002\u201d\u4e2b\u9b1f\u7b54\u5e94\u53bb\u4e86\u3002\ +\u4e00\u65f6\u8d3e\u73cd\u8fdb\u6765\u5403\u996d\uff0c\u8d3e\u84c9\u4e4b\u59bb\u56de\u907f\u4e86\u3002\u8d3e\u73cd\u56e0\u95ee\u5c24\u6c0f\uff1a\u201c\u54b1\u4eec\u6625\u796d\u7684\u6069\u8d4f\u53ef\u9886\u4e86\u4e0d\u66fe\uff1f\u201d\u5c24\u6c0f\u9053\uff1a\u201c\u4eca\u513f\u6211\u6253\u53d1\u84c9\u513f\u5173\u53bb\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u54b1\u4eec\u5bb6\u867d\u4e0d\u7b49\u8fd9\u51e0\u4e24\u94f6\u5b50\u4f7f\uff0c\u591a\u5c11\u662f\u7687\u4e0a\u5929\u6069\u3002\u65e9\u5173\u4e86\u6765\uff0c\u7ed9\u90a3\u8fb9\u8001\u592a\u592a\u89c1\u8fc7\uff0c\u7f6e\u4e86\u7956\u5b97\u7684\u4f9b\uff0c\u4e0a\u9886\u7687\u4e0a\u7684\u6069\uff0c\u4e0b\u5219\u662f\u6258\u7956\u5b97\u7684\u798f\u3002\u54b1\u4eec\u90a3\u6015\u7528\u4e00\u4e07\u94f6\u5b50\u4f9b\u7956\u5b97\uff0c\u5230\u5e95\u4e0d\u5982\u8fd9\u4e2a\u53c8\u4f53\u9762\uff0c\u53c8\u662f\u6cbe\u6069\u9521\u798f\u7684\u3002\u9664\u54b1\u4eec\u8fd9\u6837\u4e00\u4e8c\u5bb6\u4e4b\u5916\uff0c\u90a3\u4e9b\u4e16\u88ad\u7a77\u5b98\u513f\u5bb6\uff0c\u82e5\u4e0d\u4ed7\u7740\u8fd9\u94f6\u5b50\uff0c\u62ff\u4ec0\u4e48\u4e0a\u4f9b\u8fc7\u5e74\uff1f\u771f\u6b63\u7687\u6069\u6d69\u5927\uff0c\u60f3\u7684\u5468\u5230\u3002\u201d\u5c24\u6c0f\u9053\uff1a\u201c\u6b63\u662f\u8fd9\u8bdd\u3002\u201d\ +\u4e8c\u4eba\u6b63\u8bf4\u7740\uff0c\u53ea\u89c1\u4eba\u56de\uff1a\u201c\u54e5\u513f\u6765\u4e86\u201d\u3002\u8d3e\u73cd\u4fbf\u547d\u53eb\u4ed6\u8fdb\u6765\u3002\u53ea\u89c1\u8d3e\u84c9\u6367\u4e86\u4e00\u4e2a\u5c0f\u9ec4\u5e03\u53e3\u888b\u8fdb\u6765\u3002\u8d3e\u73cd\u9053\uff1a\u201c\u600e\u4e48\u53bb\u4e86\u8fd9\u4e00\u65e5\u3002\u201d\u8d3e\u84c9\u966a\u7b11\u56de\u8bf4\uff1a\u201c\u4eca\u513f\u4e0d\u5728\u793c\u90e8\u5173\u9886\uff0c\u53c8\u5206\u5728\u5149\u7984\u5bfa\u5e93\u4e0a\uff0c\u56e0\u53c8\u5230\u4e86\u5149\u7984\u5bfa\u624d\u9886\u4e86\u4e0b\u6765\u3002\u5149\u7984\u5bfa\u7684\u5b98\u513f\u4eec\u90fd\u8bf4\u95ee\u7236\u4eb2\u597d\uff0c\u591a\u65e5\u4e0d\u89c1\uff0c\u90fd\u7740\u5b9e\u60f3\u5ff5\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u4ed6\u4eec\u90a3\u91cc\u662f\u60f3\u6211\u3002\u8fd9\u53c8\u5230\u4e86\u5e74\u4e0b\u4e86\uff0c\u4e0d\u662f\u60f3\u6211\u7684\u4e1c\u897f\uff0c\u5c31\u662f\u60f3\u6211\u7684\u620f\u9152\u4e86\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u77a7\u90a3\u9ec4\u5e03\u53e3\u888b\uff0c\u4e0a\u6709\u5370\u5c31\u662f\u201c\u7687\u6069\u6c38\u9521\u201d\u56db\u4e2a\u5927\u5b57\uff0c\u90a3\u4e00\u8fb9\u53c8\u6709\u793c\u90e8\u7960\u796d\u53f8\u7684\u5370\u8bb0\uff0c\u53c8\u5199\u7740\u4e00\u884c\u5c0f\u5b57\uff0c\u9053\u662f\u201c\u5b81\u56fd\u516c\u8d3e\u6f14\u8363\u56fd\u516c\u8d3e\u6e90\u6069\u8d50\u6c38\u8fdc\u6625\u796d\u8d4f\u5171\u4e8c\u5206\uff0c\u51c0\u6298\u94f6\u82e5\u5e72\u4e24\uff0c\u67d0\u5e74\u6708\u65e5\u9f99\u7981\u5c09\u5019\u8865\u4f8d\u536b\u8d3e\u84c9\u5f53\u5802\u9886\u8bab\uff0c\u503c\u5e74\u5bfa\u4e1e\u67d0\u4eba\u201d\uff0c\u4e0b\u9762\u4e00\u4e2a\u6731\u7b14\u82b1\u62bc\u3002\ +\u8d3e\u73cd\u5403\u8fc7\u996d\uff0c\u76e5\u6f31\u6bd5\uff0c\u6362\u4e86\u9774\u5e3d\uff0c\u547d\u8d3e\u84c9\u6367\u7740\u94f6\u5b50\u8ddf\u4e86\u6765\uff0c\u56de\u8fc7\u8d3e\u6bcd\u738b\u592b\u4eba\uff0c\u53c8\u81f3\u8fd9\u8fb9\u56de\u8fc7\u8d3e\u8d66\u90a2\u592b\u4eba\uff0c\u65b9\u56de\u5bb6\u53bb\uff0c\u53d6\u51fa\u94f6\u5b50\uff0c\u547d\u5c06\u53e3\u888b\u5411\u5b97\u7960\u5927\u7089\u5185\u711a\u4e86\u3002\u53c8\u547d\u8d3e\u84c9\u9053\uff1a\u201c\u4f60\u53bb\u95ee\u95ee\u4f60\u740f\u4e8c\u5a76\u5b50\uff0c\u6b63\u6708\u91cc\u8bf7\u5403\u5e74\u9152\u7684\u65e5\u5b50\u62df\u4e86\u6ca1\u6709\u3002\u82e5\u62df\u5b9a\u4e86\uff0c\u53eb\u4e66\u623f\u91cc\u660e\u767d\u5f00\u4e86\u5355\u5b50\u6765\uff0c\u54b1\u4eec\u518d\u8bf7\u65f6\uff0c\u5c31\u4e0d\u80fd\u91cd\u72af\u4e86\u3002\u65e7\u5e74\u4e0d\u7559\u5fc3\u91cd\u4e86\u51e0\u5bb6\uff0c\u4e0d\u8bf4\u54b1\u4eec\u4e0d\u7559\u795e\uff0c\u5012\u50cf\u4e24\u5b85\u5546\u8bae\u5b9a\u4e86\u9001\u865a\u60c5\u6015\u8d39\u4e8b\u4e00\u6837\u3002\u201d\u8d3e\u84c9\u5fd9\u7b54\u5e94\u4e86\u8fc7\u53bb\u3002\u4e00\u65f6\uff0c\u62ff\u4e86\u8bf7\u4eba\u5403\u5e74\u9152\u7684\u65e5\u671f\u5355\u5b50\u6765\u4e86\u3002\u8d3e\u73cd\u770b\u4e86\uff0c\u547d\u4ea4\u4e0e\u8d56\u5347\u53bb\u770b\u4e86\uff0c\u8bf7\u4eba\u522b\u91cd\u8fd9\u4e0a\u5934\u65e5\u5b50\u3002\u56e0\u5728\u5385\u4e0a\u770b\u7740\u5c0f\u53ae\u4eec\u62ac\u56f4\u5c4f\uff0c\u64e6\u62b9\u51e0\u6848\u91d1\u94f6\u4f9b\u5668\u3002\u53ea\u89c1\u5c0f\u53ae\u624b\u91cc\u62ff\u7740\u4e2a\u7980\u5e16\u5e76\u4e00\u7bc7\u5e10\u76ee\uff0c\u56de\u8bf4\uff1a\u201c\u9ed1\u5c71\u6751\u7684\u4e4c\u5e84\u5934\u6765\u4e86\u3002\u201d\ +\u8d3e\u73cd\u9053\uff1a\u201c\u8fd9\u4e2a\u8001\u780d\u5934\u7684\u4eca\u513f\u624d\u6765\u3002\u201d\u8bf4\u7740\uff0c\u8d3e\u84c9\u63a5\u8fc7\u7980\u5e16\u548c\u5e10\u76ee\uff0c\u5fd9\u5c55\u5f00\u6367\u7740\uff0c\u8d3e\u73cd\u5012\u80cc\u7740\u4e24\u624b\uff0c\u5411\u8d3e\u84c9\u624b\u5185\u53ea\u770b\u7ea2\u7980\u5e16\u4e0a\u5199\u7740\uff1a\u201c\u95e8\u4e0b\u5e84\u5934\u4e4c\u8fdb\u5b5d\u53e9\u8bf7\u7237\u3001\u5976\u5976\u4e07\u798f\u91d1\u5b89\uff0c\u5e76\u516c\u5b50\u5c0f\u59d0\u91d1\u5b89\u3002\u65b0\u6625\u5927\u559c\u5927\u798f\uff0c\u8363\u8d35\u5e73\u5b89\uff0c\u52a0\u5b98\u8fdb\u7984\uff0c\u4e07\u4e8b\u5982\u610f\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u5e84\u5bb6\u4eba\u6709\u4e9b\u610f\u601d\u3002\u201d\u8d3e\u84c9\u4e5f\u5fd9\u7b11\u8bf4\uff1a\u201c\u522b\u770b\u6587\u6cd5\uff0c\u53ea\u53d6\u4e2a\u5409\u5229\u7f62\u4e86\u3002\u201d\u4e00\u9762\u5fd9\u5c55\u5f00\u5355\u5b50\u770b\u65f6\uff0c\u53ea\u89c1\u4e0a\u9762\u5199\u7740\uff1a\u201c\u5927\u9e7f\u4e09\u5341\u53ea\uff0c\u7350\u5b50\u4e94\u5341\u53ea\uff0c\u72cd\u5b50\u4e94\u5341\u53ea\uff0c\u66b9\u732a\u4e8c\u5341\u4e2a\uff0c\u6c64\u732a\u4e8c\u5341\u4e2a\uff0c\u9f99\u732a\u4e8c\u5341\u4e2a\uff0c\u91ce\u732a\u4e8c\u5341\u4e2a\uff0c\u5bb6\u814a\u732a\u4e8c\u5341\u4e2a\uff0c\u91ce\u7f8a\u4e8c\u5341\u4e2a\uff0c\u9752\u7f8a\u4e8c\u5341\u4e2a\uff0c\u5bb6\u6c64\u7f8a\u4e8c\u5341\u4e2a\uff0c\u5bb6\u98ce\u7f8a\u4e8c\u5341\u4e2a\uff0c\u9c9f\u9cc7\u9c7c\u4e8c\u4e2a\uff0c\u5404\u8272\u6742\u9c7c\u4e8c\u767e\u65a4\uff0c\u6d3b\u9e21\uff0c\u9e2d\uff0c\u9e45\u5404\u4e8c\u767e\u53ea\uff0c\u98ce\u9e21\u3001\u9e2d\u3001\u9e45\u4e8c\u767e\u53ea\uff0c\u91ce\u9e21\uff0c\u5154\u5b50\u5404\u4e8c\u767e\u5bf9\uff0c\u718a\u638c\u4e8c\u5341\u5bf9\uff0c\u9e7f\u7b4b\u4e8c\u5341\u65a4\uff0c\u6d77\u53c2\u4e94\u5341\u65a4\uff0c\u9e7f\u820c\u4e94\u5341\u6761\uff0c\u725b\u820c\u4e94\u5341\u6761\uff0c\u86cf\u5e72\u4e8c\u5341\u65a4\uff0c\u699b\u3001\u677e\u3001\u6843\u3001\u674f\u7a70\u5404\u4e8c\u53e3\u888b\uff0c\u5927\u5bf9\u867e\u4e94\u5341\u5bf9\uff0c\u5e72\u867e\u4e8c\u767e\u65a4\uff0c\u94f6\u971c\u70ad\u4e0a\u7b49\u9009\u7528\u4e00\u5343\u65a4\uff0c\u4e2d\u7b49\u4e8c\u5343\u65a4\uff0c\u67f4\u70ad\u4e09\u4e07\u65a4\uff0c\u5fa1\u7530\u80ed\u8102\u7c73\u4e8c\u77f3\uff0c\u78a7\u7cef\u4e94\u5341\u659b\uff0c\u767d\u7cef\u4e94\u5341\u659b\uff0c\u7c89\u7cb3\u4e94\u5341\u659b\uff0c\u6742\u8272\u7cb1\u8c37\u5404\u4e94\u5341\u659b\uff0c\u4e0b\u7528\u5e38\u7c73\u4e00\u5343\u77f3\uff0c\u5404\u8272\u5e72\u83dc\u4e00\u8f66\uff0c\u5916\u5356\u7cb1\u8c37\uff0c\u7272\u53e3\u5404\u9879\u4e4b\u94f6\u5171\u6298\u94f6\u4e8c\u5343\u4e94\u767e\u4e24\u3002\u5916\u95e8\u4e0b\u5b5d\u656c\u54e5\u513f\u59d0\u513f\u987d\u610f\uff1a\u6d3b\u9e7f\u4e24\u5bf9\uff0c\u6d3b\u767d\u5154\u56db\u5bf9\uff0c\u9ed1\u5154\u56db\u5bf9\uff0c\u6d3b\u9526\u9e21\u4e24\u5bf9\uff0c\u897f\u6d0b\u9e2d\u4e24\u5bf9\u3002\u201d\ +\u8d3e\u73cd\u4fbf\u547d\u5e26\u8fdb\u4ed6\u6765\u3002\u4e00\u65f6\uff0c\u53ea\u89c1\u4e4c\u8fdb\u5b5d\u8fdb\u6765\uff0c\u53ea\u5728\u9662\u5185\u78d5\u5934\u8bf7\u5b89\u3002\u8d3e\u73cd\u547d\u4eba\u62c9\u4ed6\u8d77\u6765\uff0c\u7b11\u8bf4\uff1a\u201c\u4f60\u8fd8\u786c\u6717\u3002\u201d\u4e4c\u8fdb\u5b5d\u7b11\u56de\uff1a\u201c\u6258\u7237\u7684\u798f\uff0c\u8fd8\u80fd\u8d70\u5f97\u52a8\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u4f60\u513f\u5b50\u4e5f\u5927\u4e86\uff0c\u8be5\u53eb\u4ed6\u8d70\u8d70\u4e5f\u7f62\u4e86\u3002\u201d\u4e4c\u8fdb\u5b5d\u7b11\u9053\uff1a\u201c\u4e0d\u7792\u7237\u8bf4\uff0c\u5c0f\u7684\u4eec\u8d70\u60ef\u4e86\uff0c\u4e0d\u6765\u4e5f\u95f7\u7684\u614c\u3002\u4ed6\u4eec\u53ef\u4e0d\u662f\u90fd\u613f\u610f\u6765\u89c1\u89c1\u5929\u5b50\u811a\u4e0b\u4e16\u9762\uff1f\u4ed6\u4eec\u5230\u5e95\u5e74\u8f7b\uff0c\u6015\u8def\u4e0a\u6709\u95ea\u5931\uff0c\u518d\u8fc7\u51e0\u5e74\u5c31\u53ef\u653e\u5fc3\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u4f60\u8d70\u4e86\u51e0\u65e5\uff1f\u201d\u4e4c\u8fdb\u5b5d\u9053\uff1a\u201c\u56de\u7237\u7684\u8bdd\uff0c\u4eca\u5e74\u96ea\u5927\uff0c\u5916\u5934\u90fd\u662f\u56db\u4e94\u5c3a\u6df1\u7684\u96ea\uff0c\u524d\u65e5\u5ffd\u7136\u4e00\u6696\u4e00\u5316\uff0c\u8def\u4e0a\u7adf\u96be\u8d70\u7684\u5f88\uff0c\u803d\u6401\u4e86\u51e0\u65e5\u3002\u867d\u8d70\u4e86\u4e00\u4e2a\u6708\u96f6\u4e24\u65e5\uff0c\u56e0\u65e5\u5b50\u6709\u9650\u4e86\uff0c\u6015\u7237\u5fc3\u7126\uff0c\u53ef\u4e0d\u8d76\u7740\u6765\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u6211\u8bf4\u5462\uff0c\u600e\u4e48\u4eca\u513f\u624d\u6765\u3002\u6211\u624d\u770b\u90a3\u5355\u5b50\u4e0a\uff0c\u4eca\u5e74\u4f60\u8fd9\u8001\u8d27\u53c8\u6765\u6253\u64c2\u53f0\u6765\u4e86\u3002\u201d\u4e4c\u8fdb\u5b5d\u5fd9\u8fdb\u524d\u4e86\u4e24\u6b65\uff0c\u56de\u9053\uff1a\u201c\u56de\u7237\u8bf4\uff0c\u4eca\u5e74\u5e74\u6210\u5b9e\u5728\u4e0d\u597d\u3002\u4ece\u4e09\u6708\u4e0b\u96e8\u8d77\uff0c\u63a5\u63a5\u8fde\u8fde\u76f4\u5230\u516b\u6708\uff0c\u7adf\u6ca1\u6709\u4e00\u8fde\u6674\u8fc7\u4e94\u65e5\u3002\u4e5d\u6708\u91cc\u4e00\u573a\u7897\u5927\u7684\u96f9\u5b50\uff0c\u65b9\u8fd1\u4e00\u5343\u4e09\u767e\u91cc\u5730\uff0c\u8fde\u4eba\u5e26\u623f\u5e76\u7272\u53e3\u7cae\u98df\uff0c\u6253\u4f24\u4e86\u4e0a\u5343\u4e0a\u4e07\u7684\uff0c\u6240\u4ee5\u624d\u8fd9\u6837\u3002\u5c0f\u7684\u5e76\u4e0d\u6562\u8bf4\u8c0e\u3002\u201d\u8d3e\u73cd\u76b1\u7709\u9053\uff1a\u201c\u6211\u7b97\u5b9a\u4e86\u4f60\u81f3\u5c11\u4e5f\u6709\u4e94\u5343\u4e24\u94f6\u5b50\u6765\uff0c\u8fd9\u591f\u4f5c\u4ec0\u4e48\u7684\uff01\u5982\u4eca\u4f60\u4eec\u4e00\u5171\u53ea\u5269\u4e86\u516b\u4e5d\u4e2a\u5e84\u5b50\uff0c\u4eca\u5e74\u5012\u6709\u4e24\u5904\u62a5\u4e86\u65f1\u6d9d\uff0c\u4f60\u4eec\u53c8\u6253\u64c2\u53f0\uff0c\u771f\u771f\u662f\u53c8\u6559\u522b\u8fc7\u5e74\u4e86\u3002\u201d\u4e4c\u8fdb\u5b5d\u9053\uff1a\u201c\u7237\u7684\u8fd9\u5730\u65b9\u8fd8\u7b97\u597d\u5462\uff01\u6211\u5144\u5f1f\u79bb\u6211\u90a3\u91cc\u53ea\u4e00\u767e\u591a\u91cc\uff0c\u8c01\u77e5\u7adf\u5927\u5dee\u4e86\u3002\u4ed6\u73b0\u7ba1\u7740\u90a3\u5e9c\u91cc\u516b\u5904\u5e84\u5730\uff0c\u6bd4\u7237\u8fd9\u8fb9\u591a\u7740\u51e0\u500d\uff0c\u4eca\u5e74\u4e5f\u53ea\u8fd9\u4e9b\u4e1c\u897f\uff0c\u4e0d\u8fc7\u591a\u4e8c\u4e09\u5343\u4e24\u94f6\u5b50\uff0c\u4e5f\u662f\u6709\u9965\u8352\u6253\u5462\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u6b63\u662f\u5462\uff0c\u6211\u8fd9\u8fb9\u90fd\u53ef\uff0c\u5df2\u6ca1\u6709\u4ec0\u4e48\u5916\u9879\u5927\u4e8b\uff0c\u4e0d\u8fc7\u662f\u4e00\u5e74\u7684\u8d39\u7528\u8d39\u4e9b\u3002\u6211\u53d7\u4e9b\u59d4\u5c48\u5c31\u7701\u4e9b\u3002\u518d\u8005\u5e74\u4f8b\u9001\u4eba\u8bf7\u4eba\uff0c\u6211\u628a\u8138\u76ae\u539a\u4e9b\u3002\u53ef\u7701\u4e9b\u4e5f\u5c31\u5b8c\u4e86\u3002\u6bd4\u4e0d\u5f97\u90a3\u5e9c\u91cc\uff0c\u8fd9\u51e0\u5e74\u6dfb\u4e86\u8bb8\u591a\u82b1\u94b1\u7684\u4e8b\uff0c\u4e00\u5b9a\u4e0d\u53ef\u514d\u662f\u8981\u82b1\u7684\uff0c\u5374\u53c8\u4e0d\u6dfb\u4e9b\u94f6\u5b50\u4ea7\u4e1a\u3002\u8fd9\u4e00\u4e8c\u5e74\u5012\u8d54\u4e86\u8bb8\u591a\uff0c\u4e0d\u548c\u4f60\u4eec\u8981\uff0c\u627e\u8c01\u53bb\uff01\u201d\u4e4c\u8fdb\u5b5d\u7b11\u9053\uff1a\u201c\u90a3\u5e9c\u91cc\u5982\u4eca\u867d\u6dfb\u4e86\u4e8b\uff0c\u6709\u53bb\u6709\u6765\uff0c\u5a18\u5a18\u548c\u4e07\u5c81\u7237\u5c82\u4e0d\u8d4f\u7684\uff01\u201d\u8d3e\u73cd\u542c\u4e86\uff0c\u7b11\u5411\u8d3e\u84c9\u7b49\u9053\uff1a\u201c\u4f60\u4eec\u542c\uff0c\u4ed6\u8fd9\u8bdd\u53ef\u7b11\u4e0d\u53ef\u7b11\uff1f\u201d\u8d3e\u84c9\u7b49\u5fd9\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u5c71\u5773\u6d77\u6cbf\u5b50\u4e0a\u7684\u4eba\uff0c\u90a3\u91cc\u77e5\u9053\u8fd9\u9053\u7406\u3002\u5a18\u5a18\u96be\u9053\u628a\u7687\u4e0a\u7684\u5e93\u7ed9\u4e86\u6211\u4eec\u4e0d\u6210\uff01\u4ed6\u5fc3\u91cc\u7eb5\u6709\u8fd9\u5fc3\uff0c\u4ed6\u4e5f\u4e0d\u80fd\u4f5c\u4e3b\u3002\u5c82\u6709\u4e0d\u8d4f\u4e4b\u7406\uff0c\u6309\u65f6\u5230\u8282\u4e0d\u8fc7\u662f\u4e9b\u5f69\u7f0e\u53e4\u8463\u987d\u610f\u513f\u3002\u7eb5\u8d4f\u94f6\u5b50\uff0c\u4e0d\u8fc7\u4e00\u767e\u4e24\u91d1\u5b50\uff0c\u624d\u503c\u4e86\u4e00\u5343\u4e24\u94f6\u5b50\uff0c\u591f\u4e00\u5e74\u7684\u4ec0\u4e48\uff1f\u8fd9\u4e8c\u5e74\u90a3\u4e00\u5e74\u4e0d\u591a\u8d54\u51fa\u51e0\u5343\u94f6\u5b50\u6765\uff01\u5934\u4e00\u5e74\u7701\u4eb2\u8fde\u76d6\u82b1\u56ed\u5b50\uff0c\u4f60\u7b97\u7b97\u90a3\u4e00\u6ce8\u5171\u82b1\u4e86\u591a\u5c11\uff0c\u5c31\u77e5\u9053\u4e86\u3002\u518d\u4e24\u5e74\u518d\u4e00\u56de\u7701\u4eb2\uff0c\u53ea\u6015\u5c31\u7cbe\u7a77\u4e86\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u6240\u4ee5\u4ed6\u4eec\u5e84\u5bb6\u8001\u5b9e\u4eba\uff0c\u5916\u660e\u4e0d\u77e5\u91cc\u6697\u7684\u4e8b\u3002\u9ec4\u67cf\u6728\u4f5c\u78ec\u69cc\u5b50\uff0c----\u5916\u5934\u4f53\u9762\u91cc\u5934\u82e6\u3002\u201d\u8d3e\u84c9\u53c8\u7b11\u5411\u8d3e\u73cd\u9053\uff1a\u201c\u679c\u771f\u90a3\u5e9c\u91cc\u7a77\u4e86\u3002\u524d\u513f\u6211\u542c\u89c1\u51e4\u59d1\u5a18\u548c\u9e33\u9e2f\u6084\u6084\u5546\u8bae\uff0c\u8981\u5077\u51fa\u8001\u592a\u592a\u7684\u4e1c\u897f\u53bb\u5f53\u94f6\u5b50\u5462\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u90a3\u53c8\u662f\u4f60\u51e4\u59d1\u5a18\u7684\u9b3c\uff0c\u90a3\u91cc\u5c31\u7a77\u5230\u5982\u6b64\u3002\u4ed6\u5fc5\u5b9a\u662f\u89c1\u53bb\u8def\u592a\u591a\u4e86\uff0c\u5b9e\u5728\u8d54\u7684\u72e0\u4e86\uff0c\u4e0d\u77e5\u53c8\u8981\u7701\u90a3\u4e00\u9879\u7684\u94b1\uff0c\u5148\u8bbe\u6b64\u6cd5\u4f7f\u4eba\u77e5\u9053\uff0c\u8bf4\u7a77\u5230\u5982\u6b64\u4e86\u3002\u6211\u5fc3\u91cc\u5374\u6709\u4e00\u4e2a\u7b97\u76d8\uff0c\u8fd8\u4e0d\u81f3\u5982\u6b64\u7530\u5730\u3002\u201d\u8bf4\u7740\uff0c\u547d\u4eba\u5e26\u4e86\u4e4c\u8fdb\u5b5d\u51fa\u53bb\uff0c\u597d\u751f\u5f85\u4ed6\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\ +\u8fd9\u91cc\u8d3e\u73cd\u5429\u5490\u5c06\u65b9\u624d\u5404\u7269\uff0c\u7559\u51fa\u4f9b\u7956\u7684\u6765\uff0c\u5c06\u5404\u6837\u53d6\u4e86\u4e9b\uff0c\u547d\u8d3e\u84c9\u9001\u8fc7\u8363\u5e9c\u91cc\u3002\u7136\u540e\u81ea\u5df1\u7559\u4e86\u5bb6\u4e2d\u6240\u7528\u7684\uff0c\u4f59\u8005\u6d3e\u51fa\u7b49\u4f8b\u6765\uff0c\u4e00\u5206\u4e00\u5206\u7684\u5806\u5728\u6708\u53f0\u4e0b\uff0c\u547d\u4eba\u5c06\u65cf\u4e2d\u7684\u5b50\u4f84\u5524\u6765\u4e0e\u4ed6\u4eec\u3002\u63a5\u7740\u8363\u56fd\u5e9c\u4e5f\u9001\u4e86\u8bb8\u591a\u4f9b\u7956\u4e4b\u7269\u53ca\u8d3e\u73cd\u4e4b\u7269\u3002\u8d3e\u73cd\u770b\u7740\u6536\u62fe\u5b8c\u5907\u4f9b\u5668\uff0c\u9778\u7740\u978b\uff0c\u62ab\u7740\u731e\u7301\u72f2\u5927\u88d8\uff0c\u547d\u4eba\u5728\u5385\u67f1\u4e0b\u77f3\u77f6\u4e0a\u592a\u9633\u4e2d\u94fa\u4e86\u4e00\u4e2a\u5927\u72fc\u76ae\u8925\u5b50\uff0c\u8d1f\u6684\u95f2\u770b\u5404\u5b50\u5f1f\u4eec\u6765\u9886\u53d6\u5e74\u7269\u3002\u56e0\u89c1\u8d3e\u82b9\u4ea6\u6765\u9886\u7269\uff0c\u8d3e\u73cd\u53eb\u4ed6\u8fc7\u6765\uff0c\u8bf4\u9053\uff1a\u201c\u4f60\u4f5c\u4ec0\u4e48\u4e5f\u6765\u4e86\uff1f\u8c01\u53eb\u4f60\u6765\u7684\uff1f\u201d\u8d3e\u82b9\u5782\u624b\u56de\u8bf4\uff1a\u201c\u542c\u89c1\u5927\u7237\u8fd9\u91cc\u53eb\u6211\u4eec\u9886\u4e1c\u897f\uff0c\u6211\u6ca1\u7b49\u4eba\u53bb\u5c31\u6765\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u6211\u8fd9\u4e1c\u897f\uff0c\u539f\u662f\u7ed9\u4f60\u90a3\u4e9b\u95f2\u7740\u65e0\u4e8b\u7684\u65e0\u8fdb\u76ca\u7684\u5c0f\u53d4\u53d4\u5144\u5f1f\u4eec\u7684\u3002\u90a3\u4e8c\u5e74\u4f60\u95f2\u7740\uff0c\u6211\u4e5f\u7ed9\u8fc7\u4f60\u7684\u3002\u4f60\u5982\u4eca\u5728\u90a3\u5e9c\u91cc\u7ba1\u4e8b\uff0c\u5bb6\u5e99\u91cc\u7ba1\u548c\u5c1a\u9053\u58eb\u4eec\uff0c\u4e00\u6708\u53c8\u6709\u4f60\u7684\u5206\u4f8b\u5916\uff0c\u8fd9\u4e9b\u548c\u5c1a\u7684\u5206\u4f8b\u94f6\u5b50\u90fd\u4ece\u4f60\u624b\u91cc\u8fc7\uff0c\u4f60\u8fd8\u6765\u53d6\u8fd9\u4e2a\uff0c\u592a\u4e5f\u8d2a\u4e86\uff01\u4f60\u81ea\u5df1\u77a7\u77a7\uff0c\u4f60\u7a7f\u7684\u50cf\u4e2a\u624b\u91cc\u4f7f\u94b1\u529e\u4e8b\u7684\uff1f\u5148\u524d\u8bf4\u4f60\u6ca1\u8fdb\u76ca\uff0c\u5982\u4eca\u53c8\u600e\u4e48\u4e86\uff1f\u6bd4\u5148\u5012\u4e0d\u50cf\u4e86\u3002\u201d\u8d3e\u82b9\u9053\uff1a\u201c\u6211\u5bb6\u91cc\u539f\u4eba\u53e3\u591a\uff0c\u8d39\u7528\u5927\u3002\u201d\u8d3e\u73cd\u51b7\u7b11\u9053\uff1a\u201c\u4f60\u8fd8\u652f\u543e\u6211\u3002\u4f60\u5728\u5bb6\u5e99\u91cc\u5e72\u7684\u4e8b\uff0c\u6253\u8c05\u6211\u4e0d\u77e5\u9053\u5462\u3002\u4f60\u5230\u4e86\u90a3\u91cc\u81ea\u7136\u662f\u7237\u4e86\uff0c\u6ca1\u4eba\u6562\u8fdd\u62d7\u4f60\u3002\u4f60\u624b\u91cc\u53c8\u6709\u4e86\u94b1\uff0c\u79bb\u7740\u6211\u4eec\u53c8\u8fdc\uff0c\u4f60\u5c31\u4e3a\u738b\u79f0\u9738\u8d77\u6765\uff0c\u591c\u591c\u62db\u805a\u532a\u7c7b\u8d4c\u94b1\uff0c\u517b\u8001\u5a46\u5c0f\u5b50\u3002\u8fd9\u4f1a\u5b50\u82b1\u7684\u8fd9\u4e2a\u5f62\u50cf\uff0c\u4f60\u8fd8\u6562\u9886\u4e1c\u897f\u6765\uff1f\u9886\u4e0d\u6210\u4e1c\u897f\uff0c\u9886\u4e00\u987f\u9a6e\u6c34\u68cd\u53bb\u624d\u7f62\u3002\u7b49\u8fc7\u4e86\u5e74\uff0c\u6211\u5fc5\u548c\u4f60\u740f\u4e8c\u53d4\u8bf4\uff0c\u6362\u56de\u4f60\u6765\u3002\u201d\u8d3e\u82b9\u7ea2\u4e86\u8138\uff0c\u4e0d\u6562\u7b54\u5e94\u3002\u4eba\u56de\uff1a\u201c\u5317\u5e9c\u6c34\u738b\u7237\u9001\u4e86\u5b57\u8054\uff0c\u8377\u5305\u6765\u4e86\u3002\u201d\u8d3e\u73cd\u542c\u8bf4\uff0c\u5fd9\u547d\u8d3e\u84c9\u51fa\u53bb\u6b3e\u5f85\uff0c\u201c\u53ea\u8bf4\u6211\u4e0d\u5728\u5bb6\u3002\u201d\u8d3e\u84c9\u53bb\u4e86\uff0c\u8fd9\u91cc\u8d3e\u73cd\u770b\u7740\u9886\u5b8c\u4e1c\u897f\uff0c\u56de\u623f\u4e0e\u5c24\u6c0f\u5403\u6bd5\u665a\u996d\uff0c\u4e00\u5bbf\u65e0\u8bdd\u3002\u81f3\u6b21\u65e5\uff0c\u66f4\u6bd4\u5f80\u65e5\u5fd9\uff0c\u90fd\u4e0d\u5fc5\u7ec6\u8bf4\u3002\ +\u5df2\u5230\u4e86\u814a\u6708\u4e8c\u5341\u4e5d\u65e5\u4e86\uff0c\u5404\u8272\u9f50\u5907\uff0c\u4e24\u5e9c\u4e2d\u90fd\u6362\u4e86\u95e8\u795e\uff0c\u8054\u5bf9\uff0c\u6302\u724c\uff0c\u65b0\u6cb9\u4e86\u6843\u7b26\uff0c\u7115\u7136\u4e00\u65b0\u3002\u5b81\u56fd\u5e9c\u4ece\u5927\u95e8\u3001\u4eea\u95e8\u3001\u5927\u5385\u3001\u6696\u9601\u3001\u5185\u5385\u3001\u5185\u4e09\u95e8\u3001\u5185\u4eea\u95e8\u5e76\u5185\u585e\u95e8\uff0c\u76f4\u5230\u6b63\u5802\uff0c\u4e00\u8def\u6b63\u95e8\u5927\u5f00\uff0c\u4e24\u8fb9\u9636\u4e0b\u4e00\u8272\u6731\u7ea2\u5927\u9ad8\u7167\uff0c\u70b9\u7684\u4e24\u6761\u91d1\u9f99\u4e00\u822c\u3002\u6b21\u65e5\uff0c\u7531\u8d3e\u6bcd\u6709\u8bf0\u5c01\u8005\uff0c\u7686\u6309\u54c1\u7ea7\u7740\u671d\u670d\uff0c\u5148\u5750\u516b\u4eba\u5927\u8f7f\uff0c\u5e26\u9886\u7740\u4f17\u4eba\u8fdb\u5bab\u671d\u8d3a\uff0c\u884c\u793c\u9886\u5bb4\u6bd5\u56de\u6765\uff0c\u4fbf\u5230\u5b81\u56fd\u5e9c\u6696\u9601\u4e0b\u8f7f\u3002\u8bf8\u5b50\u5f1f\u6709\u672a\u968f\u5165\u671d\u8005\uff0c\u7686\u5728\u5b81\u5e9c\u95e8\u524d\u6392\u73ed\u4f3a\u4faf\uff0c\u7136\u540e\u5f15\u5165\u5b97\u7960\u3002\u4e14\u8bf4\u5b9d\u7434\u662f\u521d\u6b21\uff0c\u4e00\u9762\u7ec6\u7ec6\u7559\u795e\u6253\u8c05\u8fd9\u5b97\u7960\uff0c\u539f\u6765\u5b81\u5e9c\u897f\u8fb9\u53e6\u4e00\u4e2a\u9662\u5b50\uff0c\u9ed1\u6cb9\u6805\u680f\u5185\u4e94\u95f4\u5927\u95e8\uff0c\u4e0a\u60ac\u4e00\u5757\u533e\uff0c\u5199\u7740\u662f\u201c\u8d3e\u6c0f\u5b97\u7960\u201d\u56db\u4e2a\u5b57\uff0c\u65c1\u4e66\u201c\u884d\u5723\u516c\u5b54\u7ee7\u5b97\u4e66\u201d\u3002\u4e24\u65c1\u6709\u4e00\u526f\u957f\u8054\uff0c\u5199\u9053\u662f\uff1a\ +\u809d\u8111\u6d82\u5730\uff0c\u5146\u59d3\u8d56\u4fdd\u80b2\u4e4b\u6069\uff0c\ +\u529f\u540d\u8d2f\u5929\uff0c\u767e\u4ee3\u4ef0\u84b8\u5c1d\u4e4b\u76db\u3002\u4ea6\u884d\u5723\u516c\u6240\u4e66\u3002\u8fdb\u5165\u9662\u4e2d\uff0c\u767d\u77f3\u752c\u8def\uff0c\u4e24\u8fb9\u7686\u662f\u82cd\u677e\u7fe0\u67cf\u3002\u6708\u53f0\u4e0a\u8bbe\u7740\u9752\u7eff\u53e4\u94dc\u9f0e\u5f5d\u7b49\u5668\u3002\u62b1\u53a6\u524d\u4e0a\u9762\u60ac\u4e00\u4e5d\u9f99\u91d1\u533e\uff0c\u5199\u9053\u662f\uff1a\u201c\u661f\u8f89\u8f85\u5f3c\u201d\u3002\u4e43\u5148\u7687\u5fa1\u7b14\u3002\u4e24\u8fb9\u4e00\u526f\u5bf9\u8054\uff0c\u5199\u9053\u662f\uff1a\ +\u52cb\u4e1a\u6709\u5149\u662d\u65e5\u6708\uff0c\u529f\u540d\u65e0\u95f4\u53ca\u513f\u5b59\u3002\u4ea6\u662f\u5fa1\u7b14\u3002\u4e94\u95f4\u6b63\u6bbf\u524d\u60ac\u4e00\u95f9\u9f99\u586b\u9752\u533e\uff0c\u5199\u9053\u662f\uff1a\u201c\u614e\u7ec8\u8ffd\u8fdc\u201d\u3002\u65c1\u8fb9\u4e00\u526f\u5bf9\u8054\uff0c\u5199\u9053\u662f\uff1a\ +\u5df2\u540e\u513f\u5b59\u627f\u798f\u5fb7\uff0c\u81f3\u4eca\u9ece\u5eb6\u5ff5\u8363\u5b81\u3002\u4ff1\u662f\u5fa1\u7b14\u3002\u91cc\u8fb9\u9999\u70db\u8f89\u714c\uff0c\u9526\u5e5b\u7ee3\u5e55\uff0c\u867d\u5217\u7740\u795e\u4e3b\uff0c\u5374\u770b\u4e0d\u771f\u5207\u3002\u53ea\u89c1\u8d3e\u5e9c\u4eba\u5206\u662d\u7a46\u6392\u73ed\u7acb\u5b9a\uff1a\u8d3e\u656c\u4e3b\u796d\uff0c\u8d3e\u8d66\u966a\u796d\uff0c\u8d3e\u73cd\u732e\u7235\uff0c\u8d3e\u740f\u8d3e\u742e\u732e\u5e1b\uff0c\u5b9d\u7389\u6367\u9999\uff0c\u8d3e\u83d6\u8d3e\u83f1\u5c55\u62dc\u6bef\uff0c\u5b88\u711a\u6c60\u3002\u9752\u8863\u4e50\u594f\uff0c\u4e09\u732e\u7235\uff0c\u62dc\u5174\u6bd5\uff0c\u711a\u5e1b\u5960\u9152\uff0c\u793c\u6bd5\uff0c\u4e50\u6b62\uff0c\u9000\u51fa\u3002\ +\u4f17\u4eba\u56f4\u968f\u7740\u8d3e\u6bcd\u81f3\u6b63\u5802\u4e0a\uff0c\u5f71\u524d\u9526\u5e54\u9ad8\u6302\uff0c\u5f69\u5c4f\u5f20\u62a4\uff0c\u9999\u70db\u8f89\u714c\u3002\u4e0a\u9762\u6b63\u5c45\u4e2d\u60ac\u7740\u5b81\u8363\u4e8c\u7956\u9057\u50cf\uff0c\u7686\u662f\u62ab\u87d2\u8170\u7389\uff1b\u4e24\u8fb9\u8fd8\u6709\u51e0\u8f74\u5217\u7956\u9057\u5f71\u3002\u8d3e\u8347\u8d3e\u82b7\u7b49\u4ece\u5185\u4eea\u95e8\u6328\u6b21\u5217\u7ad9\uff0c\u76f4\u5230\u6b63\u5802\u5eca\u4e0b\u3002\u69db\u5916\u65b9\u662f\u8d3e\u656c\u8d3e\u8d66\uff0c\u69db\u5185\u662f\u5404\u5973\u7737\u3002\u4f17\u5bb6\u4eba\u5c0f\u53ae\u7686\u5728\u4eea\u95e8\u4e4b\u5916\u3002\u6bcf\u4e00\u9053\u83dc\u81f3\uff0c\u4f20\u81f3\u4eea\u95e8\uff0c\u8d3e\u8347\u8d3e\u82b7\u7b49\u4fbf\u63a5\u4e86\uff0c\u6309\u6b21\u4f20\u81f3\u9636\u4e0a\u8d3e\u656c\u624b\u4e2d\u3002\u8d3e\u84c9\u7cfb\u957f\u623f\u957f\u5b59\uff0c\u72ec\u4ed6\u968f\u5973\u7737\u5728\u69db\u5185\u3002\u6bcf\u8d3e\u656c\u6367\u83dc\u81f3\uff0c\u4f20\u4e8e\u8d3e\u84c9\uff0c\u8d3e\u84c9\u4fbf\u4f20\u4e8e\u4ed6\u59bb\u5b50\uff0c\u53c8\u4f20\u4e8e\u51e4\u59d0\u5c24\u6c0f\u8bf8\u4eba\uff0c\u76f4\u4f20\u81f3\u4f9b\u684c\u524d\uff0c\u65b9\u4f20\u4e8e\u738b\u592b\u4eba\u3002\u738b\u592b\u4eba\u4f20\u4e8e\u8d3e\u6bcd\uff0c\u8d3e\u6bcd\u65b9\u6367\u653e\u5728\u684c\u4e0a\u3002\u90a2\u592b\u4eba\u5728\u4f9b\u684c\u4e4b\u897f\uff0c\u4e1c\u5411\u7acb\uff0c\u540c\u8d3e\u6bcd\u4f9b\u653e\u3002\u76f4\u81f3\u5c06\u83dc\u996d\u6c64\u70b9\u9152\u8336\u4f20\u5b8c\uff0c\u8d3e\u84c9\u65b9\u9000\u51fa\u4e0b\u9636\uff0c\u5f52\u5165\u8d3e\u82b9\u9636\u4f4d\u4e4b\u9996\u3002\u51e1\u4ece\u6587\u65c1\u4e4b\u540d\u8005\uff0c\u8d3e\u656c\u4e3a\u9996\uff0c\u4e0b\u5219\u4ece\u7389\u8005\uff0c\u8d3e\u73cd\u4e3a\u9996\uff0c\u518d\u4e0b\u4ece\u8349\u5934\u8005\uff0c\u8d3e\u84c9\u4e3a\u9996\uff0c\u5de6\u662d\u53f3\u7a46\uff0c\u7537\u4e1c\u5973\u897f\uff0c\u4fdf\u8d3e\u6bcd\u62c8\u9999\u4e0b\u62dc\uff0c\u4f17\u4eba\u65b9\u4e00\u9f50\u8dea\u4e0b\uff0c\u5c06\u4e94\u95f4\u5927\u5385\uff0c\u4e09\u95f4\u62b1\u53a6\uff0c\u5185\u5916\u5eca\u6a90\uff0c\u9636\u4e0a\u9636\u4e0b\u4e24\u4e39\u5880\u5185\uff0c\u82b1\u56e2\u9526\u7c07\uff0c\u585e\u7684\u65e0\u4e00\u9699\u7a7a\u5730\u3002\u9e26\u96c0\u65e0\u95fb\uff0c\u53ea\u542c\u94ff\u9535\u53ee\u5f53\uff0c\u91d1\u94c3\u7389\u73ee\u5fae\u5fae\u6447\u66f3\u4e4b\u58f0\uff0c\u5e76\u8d77\u8dea\u9774\u5c65\u98d2\u6c93\u4e4b\u54cd\u3002\u4e00\u65f6\u793c\u6bd5\uff0c\u8d3e\u656c\u8d3e\u8d66\u7b49\u4fbf\u5fd9\u9000\u51fa\uff0c\u81f3\u8363\u5e9c\u4e13\u5019\u4e0e\u8d3e\u6bcd\u884c\u793c\u3002\ +\u5c24\u6c0f\u4e0a\u623f\u65e9\u5df2\u88ad\u5730\u94fa\u6ee1\u7ea2\u6be1\uff0c\u5f53\u5730\u653e\u7740\u50cf\u9f3b\u4e09\u8db3\u9cc5\u6cbf\u938f\u91d1\u73d0\u7405\u5927\u706b\u76c6\uff0c\u6b63\u9762\u7095\u4e0a\u94fa\u65b0\u7329\u7ea2\u6be1\uff0c\u8bbe\u7740\u5927\u7ea2\u5f69\u7ee3\u4e91\u9f99\u6367\u5bff\u7684\u9760\u80cc\u5f15\u6795\uff0c\u5916\u53e6\u6709\u9ed1\u72d0\u76ae\u7684\u88b1\u5b50\u642d\u5728\u4e0a\u9762\uff0c\u5927\u767d\u72d0\u76ae\u5750\u8925\uff0c\u8bf7\u8d3e\u6bcd\u4e0a\u53bb\u5750\u4e86\u3002\u4e24\u8fb9\u53c8\u94fa\u76ae\u8925\uff0c\u8ba9\u8d3e\u6bcd\u4e00\u8f88\u7684\u4e24\u4e09\u4e2a\u59af\u5a0c\u5750\u4e86\u3002\u8fd9\u8fb9\u6a2a\u5934\u6392\u63d2\u4e4b\u540e\u5c0f\u7095\u4e0a\uff0c\u4e5f\u94fa\u4e86\u76ae\u8925\uff0c\u8ba9\u90a2\u592b\u4eba\u7b49\u5750\u4e86\u3002\u5730\u4e0b\u4e24\u9762\u76f8\u5bf9\u5341\u4e8c\u5f20\u96d5\u6f06\u6905\u4e0a\uff0c\u90fd\u662f\u4e00\u8272\u7070\u9f20\u6905\u642d\u5c0f\u8925\uff0c\u6bcf\u4e00\u5f20\u6905\u4e0b\u4e00\u4e2a\u5927\u94dc\u811a\u7089\uff0c\u8ba9\u5b9d\u7434\u7b49\u59ca\u59b9\u5750\u4e86\u3002\u5c24\u6c0f\u7528\u8336\u76d8\u4eb2\u6367\u8336\u4e0e\u8d3e\u6bcd\uff0c\u84c9\u59bb\u6367\u4e0e\u4f17\u8001\u7956\u6bcd\uff0c\u7136\u540e\u5c24\u6c0f\u53c8\u6367\u4e0e\u90a2\u592b\u4eba\u7b49\uff0c\u84c9\u59bb\u53c8\u6367\u4e0e\u4f17\u59ca\u59b9\u3002\u51e4\u59d0\u674e\u7ea8\u7b49\u53ea\u5728\u5730\u4e0b\u4f3a\u4faf\u3002\u8336\u6bd5\uff0c\u90a2\u592b\u4eba\u7b49\u4fbf\u5148\u8d77\u8eab\u6765\u4f8d\u8d3e\u6bcd\u3002\u8d3e\u6bcd\u5403\u8336\uff0c\u4e0e\u8001\u59af\u5a0c\u95f2\u8bdd\u4e86\u4e24\u4e09\u53e5\uff0c\u4fbf\u547d\u770b\u8f7f\u3002\u51e4\u59d0\u513f\u5fd9\u4e0a\u53bb\u633d\u8d77\u6765\u3002\u5c24\u6c0f\u7b11\u56de\u8bf4\uff1a\u201c\u5df2\u7ecf\u9884\u5907\u4e0b\u8001\u592a\u592a\u7684\u665a\u996d\u3002\u6bcf\u5e74\u90fd\u4e0d\u80af\u8d4f\u4e9b\u4f53\u9762\u7528\u8fc7\u665a\u996d\u8fc7\u53bb\uff0c\u679c\u7136\u6211\u4eec\u5c31\u4e0d\u53ca\u51e4\u4e2b\u5934\u4e0d\u6210\uff1f\u201d\u51e4\u59d0\u513f\u6400\u7740\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u8001\u7956\u5b97\u5feb\u8d70\uff0c\u54b1\u4eec\u5bb6\u53bb\u5403\u996d\uff0c\u522b\u7406\u4ed6\u3002\u201d\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4f60\u8fd9\u91cc\u4f9b\u7740\u7956\u5b97\uff0c\u5fd9\u7684\u4ec0\u4e48\u4f3c\u7684\uff0c\u90a3\u91cc\u6401\u5f97\u4f4f\u6211\u95f9\u3002\u51b5\u4e14\u6bcf\u5e74\u6211\u4e0d\u5403\uff0c\u4f60\u4eec\u4e5f\u8981\u9001\u53bb\u7684\u3002\u4e0d\u5982\u8fd8\u9001\u4e86\u53bb\uff0c\u6211\u5403\u4e0d\u4e86\u7559\u7740\u660e\u513f\u518d\u5403\uff0c\u5c82\u4e0d\u591a\u5403\u4e9b\u3002\u201d\u8bf4\u7684\u4f17\u4eba\u90fd\u7b11\u4e86\u3002\u53c8\u5429\u5490\u4ed6\uff1a\u201c\u597d\u751f\u6d3e\u59a5\u5f53\u4eba\u591c\u91cc\u770b\u9999\u706b\uff0c\u4e0d\u662f\u5927\u610f\u5f97\u7684\u3002\u201d\u5c24\u6c0f\u7b54\u5e94\u4e86\u3002\u4e00\u9762\u8d70\u51fa\u6765\u81f3\u6696\u9601\u524d\u4e0a\u4e86\u8f7f\u3002\u5c24\u6c0f\u7b49\u95ea\u8fc7\u5c4f\u98ce\uff0c\u5c0f\u53ae\u4eec\u624d\u9886\u8f7f\u592b\uff0c\u8bf7\u4e86\u8f7f\u51fa\u5927\u95e8\u3002\u5c24\u6c0f\u4ea6\u968f\u90a2\u592b\u4eba\u7b49\u540c\u81f3\u8363\u5e9c\u3002\ +\u8fd9\u91cc\u8f7f\u51fa\u5927\u95e8\uff0c\u8fd9\u4e00\u6761\u8857\u4e0a\uff0c\u4e1c\u4e00\u8fb9\u5408\u9762\u8bbe\u5217\u7740\u5b81\u56fd\u516c\u7684\u4eea\u4ed7\u6267\u4e8b\u4e50\u5668\uff0c\u897f\u4e00\u8fb9\u5408\u9762\u8bbe\u5217\u7740\u8363\u56fd\u516c\u7684\u4eea\u4ed7\u6267\u4e8b\u4e50\u5668\uff0c\u6765\u5f80\u884c\u4eba\u7686\u5c4f\u9000\u4e0d\u4ece\u6b64\u8fc7\u3002\u4e00\u65f6\u6765\u81f3\u8363\u5e9c\uff0c\u4e5f\u662f\u5927\u95e8\u6b63\u5385\u76f4\u5f00\u5230\u5e95\u3002\u5982\u4eca\u4fbf\u4e0d\u5728\u6696\u9601\u4e0b\u8f7f\u4e86\uff0c\u8fc7\u4e86\u5927\u5385\uff0c\u4fbf\u8f6c\u5f2f\u5411\u897f\uff0c\u81f3\u8d3e\u6bcd\u8fd9\u8fb9\u6b63\u5385\u4e0a\u4e0b\u8f7f\u3002\u4f17\u4eba\u56f4\u968f\u540c\u81f3\u8d3e\u6bcd\u6b63\u5ba4\u4e4b\u4e2d\uff0c\u4ea6\u662f\u9526\u88c0\u7ee3\u5c4f\uff0c\u7115\u7136\u4e00\u65b0\u3002\u5f53\u5730\u706b\u76c6\u5185\u711a\u7740\u677e\u67cf\u9999\uff0c\u767e\u5408\u8349\u3002\u8d3e\u6bcd\u5f52\u4e86\u5750\uff0c\u8001\u5b37\u5b37\u6765\u56de\uff1a\u201c\u8001\u592a\u592a\u4eec\u6765\u884c\u793c\u3002\u201d\u8d3e\u6bcd\u5fd9\u53c8\u8d77\u8eab\u8981\u8fce\uff0c\u53ea\u89c1\u4e24\u4e09\u4e2a\u8001\u59af\u5a0c\u5df2\u8fdb\u6765\u4e86\u3002\u5927\u5bb6\u633d\u624b\uff0c\u7b11\u4e86\u4e00\u56de\uff0c\u8ba9\u4e86\u4e00\u56de\u3002\u5403\u8336\u53bb\u540e\uff0c\u8d3e\u6bcd\u53ea\u9001\u81f3\u5185\u4eea\u95e8\u4fbf\u56de\u6765\uff0c\u5f52\u6b63\u5750\u3002\u8d3e\u656c\u8d3e\u8d66\u7b49\u9886\u8bf8\u5b50\u5f1f\u8fdb\u6765\u3002\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4e00\u5e74\u4ef7\u96be\u4e3a\u4f60\u4eec\uff0c\u4e0d\u884c\u793c\u7f62\u3002\u201d\u4e00\u9762\u8bf4\u7740\uff0c\u4e00\u9762\u7537\u4e00\u8d77\uff0c\u5973\u4e00\u8d77\uff0c\u4e00\u8d77\u4e00\u8d77\u4ff1\u884c\u8fc7\u4e86\u793c\u3002\u5de6\u53f3\u4e24\u65c1\u8bbe\u4e0b\u4ea4\u6905\uff0c\u7136\u540e\u53c8\u6309\u957f\u5e7c\u6328\u6b21\u5f52\u5750\u53d7\u793c\u3002\u4e24\u5e9c\u7537\u5987\u5c0f\u53ae\u4e2b\u9b1f\u4ea6\u6309\u5dee\u5f79\u4e0a\u4e2d\u4e0b\u884c\u793c\u6bd5\uff0c\u6563\u62bc\u5c81\u94b1\u3001\u8377\u5305\u3001\u91d1\u94f6\u951e\uff0c\u6446\u4e0a\u5408\u6b22\u5bb4\u6765\u3002\u7537\u4e1c\u5973\u897f\u5f52\u5750\uff0c\u732e\u5c60\u82cf\u9152\uff0c\u5408\u6b22\u6c64\u3001\u5409\u7965\u679c\u3001\u5982\u610f\u7cd5\u6bd5\uff0c\u8d3e\u6bcd\u8d77\u8eab\u8fdb\u5185\u95f4\u66f4\u8863\uff0c\u4f17\u4eba\u65b9\u5404\u6563\u51fa\u3002\u90a3\u665a\u5404\u5904\u4f5b\u5802\u7076\u738b\u524d\u711a\u9999\u4e0a\u4f9b\uff0c\u738b\u592b\u4eba\u6b63\u623f\u9662\u5185\u8bbe\u7740\u5929\u5730\u7eb8\u9a6c\u9999\u4f9b\uff0c\u5927\u89c2\u56ed\u6b63\u95e8\u4e0a\u4e5f\u6311\u7740\u5927\u660e\u89d2\u706f\uff0c\u4e24\u6e9c\u9ad8\u7167\uff0c\u5404\u5904\u7686\u6709\u8def\u706f\u3002\u4e0a\u4e0b\u4eba\u7b49\uff0c\u7686\u6253\u626e\u7684\u82b1\u56e2\u9526\u7c07\uff0c\u4e00\u591c\u4eba\u58f0\u5608\u6742\uff0c\u8bed\u7b11\u55a7\u9617\uff0c\u7206\u7af9\u8d77\u706b\uff0c\u7edc\u7ece\u4e0d\u7edd\u3002\ +\u81f3\u6b21\u65e5\u4e94\u9f13\uff0c\u8d3e\u6bcd\u7b49\u53c8\u6309\u54c1\u5927\u5986\uff0c\u6446\u5168\u526f\u6267\u4e8b\u8fdb\u5bab\u671d\u8d3a\uff0c\u517c\u795d\u5143\u6625\u5343\u79cb\u3002\u9886\u5bb4\u56de\u6765\uff0c\u53c8\u81f3\u5b81\u5e9c\u796d\u8fc7\u5217\u7956\uff0c\u65b9\u56de\u6765\u53d7\u793c\u6bd5\uff0c\u4fbf\u6362\u8863\u6b47\u606f\u3002\u6240\u6709\u8d3a\u8282\u6765\u7684\u4eb2\u53cb\u4e00\u6982\u4e0d\u4f1a\uff0c\u53ea\u548c\u859b\u59e8\u5988\u674e\u5a76\u4e8c\u4eba\u8bf4\u8bdd\u53d6\u4fbf\uff0c\u6216\u8005\u540c\u5b9d\u7389\uff0c\u5b9d\u7434\uff0c\u9497\uff0c\u7389\u7b49\u59ca\u59b9\u8d76\u56f4\u68cb\u62b9\u724c\u4f5c\u620f\u3002\u738b\u592b\u4eba\u4e0e\u51e4\u59d0\u662f\u5929\u5929\u5fd9\u7740\u8bf7\u4eba\u5403\u5e74\u9152\uff0c\u90a3\u8fb9\u5385\u4e0a\u9662\u5185\u7686\u662f\u620f\u9152\uff0c\u4eb2\u53cb\u7edc\u7ece\u4e0d\u7edd\uff0c\u4e00\u8fde\u5fd9\u4e86\u4e03\u516b\u65e5\u624d\u5b8c\u4e86\u3002\u65e9\u53c8\u5143\u5bb5\u5c06\u8fd1\uff0c\u5b81\u8363\u4e8c\u5e9c\u7686\u5f20\u706f\u7ed3\u5f69\u3002\u5341\u4e00\u65e5\u662f\u8d3e\u8d66\u8bf7\u8d3e\u6bcd\u7b49\uff0c\u6b21\u65e5\u8d3e\u73cd\u53c8\u8bf7\uff0c\u8d3e\u6bcd\u7686\u53bb\u968f\u4fbf\u9886\u4e86\u534a\u65e5\u3002\u738b\u592b\u4eba\u548c\u51e4\u59d0\u513f\u8fde\u65e5\u88ab\u4eba\u8bf7\u53bb\u5403\u5e74\u9152\uff0c\u4e0d\u80fd\u80dc\u8bb0\u3002\ +\u81f3\u5341\u4e94\u65e5\u4e4b\u5915\uff0c\u8d3e\u6bcd\u4fbf\u5728\u5927\u82b1\u5385\u4e0a\u547d\u6446\u51e0\u5e2d\u9152\uff0c\u5b9a\u4e00\u73ed\u5c0f\u620f\uff0c\u6ee1\u6302\u5404\u8272\u4f73\u706f\uff0c\u5e26\u9886\u8363\u5b81\u4e8c\u5e9c\u5404\u5b50\u4f84\u5b59\u7537\u5b59\u5ab3\u7b49\u5bb6\u5bb4\u3002\u8d3e\u656c\u7d20\u4e0d\u8339\u9152\uff0c\u4e5f\u4e0d\u53bb\u8bf7\u4ed6\uff0c\u4e8e\u540e\u5341\u4e03\u65e5\u7956\u7940\u5df2\u5b8c\uff0c\u4ed6\u4fbf\u4ecd\u51fa\u57ce\u53bb\u4fee\u517b\u3002\u4fbf\u8fd9\u51e0\u65e5\u5728\u5bb6\u5185\uff0c\u4ea6\u662f\u51c0\u5ba4\u9ed8\u5904\uff0c\u4e00\u6982\u65e0\u542c\u65e0\u95fb\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\u8d3e\u8d66\u7565\u9886\u4e86\u8d3e\u6bcd\u4e4b\u8d50\uff0c\u4e5f\u4fbf\u544a\u8f9e\u800c\u53bb\u3002\u8d3e\u6bcd\u77e5\u4ed6\u5728\u6b64\u5f7c\u6b64\u4e0d\u4fbf\uff0c\u4e5f\u5c31\u968f\u4ed6\u53bb\u4e86\u3002\u8d3e\u8d66\u81ea\u5230\u5bb6\u4e2d\u4e0e\u4f17\u95e8\u5ba2\u8d4f\u706f\u5403\u9152\uff0c\u81ea\u7136\u662f\u7b19\u6b4c\u8052\u8033\uff0c\u9526\u7ee3\u76c8\u7738\uff0c\u5176\u53d6\u4fbf\u5feb\u4e50\u53e6\u4e0e\u8fd9\u8fb9\u4e0d\u540c\u7684\u3002\ +\u8fd9\u8fb9\u8d3e\u6bcd\u82b1\u5385\u4e4b\u4e0a\u5171\u6446\u4e86\u5341\u6765\u5e2d\u3002\u6bcf\u4e00\u5e2d\u65c1\u8fb9\u8bbe\u4e00\u51e0\uff0c\u51e0\u4e0a\u8bbe\u7089\u74f6\u4e09\u4e8b\uff0c\u711a\u7740\u5fa1\u8d50\u767e\u5408\u5bab\u9999\u3002\u53c8\u6709\u516b\u5bf8\u6765\u957f\u56db\u4e94\u5bf8\u5bbd\u4e8c\u4e09\u5bf8\u9ad8\u7684\u70b9\u7740\u5c71\u77f3\u5e03\u6ee1\u9752\u82d4\u7684\u5c0f\u76c6\u666f\uff0c\u4ff1\u662f\u65b0\u9c9c\u82b1\u5349\u3002\u53c8\u6709\u5c0f\u6d0b\u6f06\u8336\u76d8\uff0c\u5185\u653e\u7740\u65e7\u7a91\u8336\u676f\u5e76\u5341\u9526\u5c0f\u8336\u540a\uff0c\u91cc\u9762\u6ce1\u7740\u4e0a\u7b49\u540d\u8336\u3002\u4e00\u8272\u7686\u662f\u7d2b\u6a80\u900f\u96d5\uff0c\u5d4c\u7740\u5927\u7ea2\u7eb1\u900f\u7ee3\u82b1\u5349\u5e76\u8349\u5b57\u8bd7\u8bcd\u7684\u748e\u73de\u3002\u539f\u6765\u7ee3\u8fd9\u748e\u73de\u7684\u4e5f\u662f\u4e2a\u59d1\u82cf\u5973\u5b50\uff0c\u540d\u5524\u6167\u5a18\u3002\u56e0\u4ed6\u4ea6\u662f\u4e66\u9999\u5ba6\u95e8\u4e4b\u5bb6\uff0c\u4ed6\u539f\u7cbe\u4e8e\u4e66\u753b\uff0c\u4e0d\u8fc7\u5076\u7136\u7ee3\u4e00\u4e24\u4ef6\u9488\u7ebf\u4f5c\u800d\uff0c\u5e76\u975e\u5e02\u5356\u4e4b\u7269\u3002\u51e1\u8fd9\u5c4f\u4e0a\u6240\u7ee3\u4e4b\u82b1\u5349\uff0c\u7686\u4eff\u7684\u662f\u5510\uff0c\u5b8b\uff0c\u5143\uff0c\u660e\u5404\u540d\u5bb6\u7684\u6298\u679d\u82b1\u5349\uff0c\u6545\u5176\u683c\u5f0f\u914d\u8272\u7686\u4ece\u96c5\uff0c\u672c\u6765\u975e\u4e00\u5473\u6d53\u8273\u5320\u5de5\u53ef\u6bd4\u6bcf\u4e00\u679d\u82b1\u4fa7\u7686\u7528\u53e4\u4eba\u9898\u6b64\u82b1\u4e4b\u65e7\u53e5\uff0c\u6216\u8bd7\u8bcd\u6b4c\u8d4b\u4e0d\u4e00\uff0c\u7686\u7528\u9ed1\u7ed2\u7ee3\u51fa\u8349\u5b57\u6765\uff0c\u4e14\u5b57\u8ff9\u52fe\u8e22\uff0c\u8f6c\u6298\uff0c\u8f7b\u91cd\uff0c\u8fde\u65ad\u7686\u4e0e\u7b14\u8349\u65e0\u5f02\uff0c\u4ea6\u4e0d\u6bd4\u5e02\u7ee3\u5b57\u8ff9\u677f\u5f3a\u53ef\u6068\u3002\u4ed6\u4e0d\u4ed7\u6b64\u6280\u83b7\u5229\uff0c\u6240\u4ee5\u5929\u4e0b\u867d\u77e5\uff0c\u5f97\u8005\u751a\u5c11\uff0c\u51e1\u4e16\u5ba6\u5bcc\u8d35\u4e4b\u5bb6\uff0c\u65e0\u6b64\u7269\u8005\u751a\u591a\uff0c\u5f53\u4eca\u4fbf\u79f0\u4e3a\u201c\u6167\u7ee3\u201d\u3002\u7adf\u6709\u4e16\u4fd7\u5c04\u5229\u8005\uff0c\u8fd1\u65e5\u4eff\u5176\u9488\u8ff9\uff0c\u611a\u4eba\u83b7\u5229\u3002\u504f\u8fd9\u6167\u5a18\u547d\u592d\uff0c\u5341\u516b\u5c81\u4fbf\u6b7b\u4e86\uff0c\u5982\u4eca\u7adf\u4e0d\u80fd\u518d\u5f97\u4e00\u4ef6\u7684\u4e86\u3002\u51e1\u6240\u6709\u4e4b\u5bb6\uff0c\u7eb5\u6709\u4e00\u4e24\u4ef6\uff0c\u7686\u73cd\u85cf\u4e0d\u7528\u3002\u6709\u90a3\u4e00\u5e72\u7ff0\u6797\u6587\u9b54\u5148\u751f\u4eec\uff0c\u56e0\u6df1\u60dc\u201c\u6167\u7ee3\u201d\u4e4b\u4f73\uff0c\u4fbf\u8bf4\u8fd9\u201c\u7ee3\u201d\u5b57\u4e0d\u80fd\u5c3d\u5176\u5999\uff0c\u8fd9\u6837\u7b14\u8ff9\u8bf4\u4e00\u201c\u7ee3\u201d\u5b57\uff0c\u53cd\u4f3c\u4e4e\u5510\u7a81\u4e86\uff0c\u4fbf\u5927\u5bb6\u5546\u8bae\u4e86\uff0c\u5c06\u201c\u7ee3\u201d\u5b57\u4fbf\u9690\u53bb\uff0c\u6362\u4e86\u4e00\u4e2a\u201c\u7eb9\u201c\u5b57\uff0c\u6240\u4ee5\u5982\u4eca\u90fd\u79f0\u4e3a\u201c\u6167\u7eb9\u201d\u3002\u82e5\u6709\u4e00\u4ef6\u771f\u201c\u6167\u7eb9\u201d\u4e4b\u7269\uff0c\u4ef7\u5219\u65e0\u9650\u3002\u8d3e\u5e9c\u4e4b\u8363\uff0c\u4e5f\u53ea\u6709\u4e24\u4e09\u4ef6\uff0c\u4e0a\u5e74\u5c06\u90a3\u4e24\u4ef6\u5df2\u8fdb\u4e86\u4e0a\uff0c\u76ee\u4e0b\u53ea\u5269\u8fd9\u4e00\u526f\u748e\u73de\uff0c\u4e00\u5171\u5341\u516d\u6247\uff0c\u8d3e\u6bcd\u7231\u5982\u73cd\u5b9d\uff0c\u4e0d\u5165\u5728\u8bf7\u5ba2\u5404\u8272\u9648\u8bbe\u4e4b\u5185\uff0c\u53ea\u7559\u5728\u81ea\u5df1\u8fd9\u8fb9\uff0c\u9ad8\u5174\u6446\u9152\u65f6\u8d4f\u73a9\u3002\u53c8\u6709\u5404\u8272\u65e7\u7a91\u5c0f\u74f6\u4e2d\u90fd\u70b9\u7f00\u7740\u201c\u5c81\u5bd2\u4e09\u53cb\u201d\u201c\u7389\u5802\u5bcc\u8d35\u201d\u7b49\u9c9c\u82b1\u8349\u3002\ +\u4e0a\u9762\u4e24\u5e2d\u662f\u674e\u5a76\u859b\u59e8\u5988\u4e8c\u4f4d\u3002\u8d3e\u6bcd\u4e8e\u4e1c\u8fb9\u8bbe\u4e00\u900f\u96d5\u5914\u9f99\u62a4\u5c4f\u77ee\u8db3\u77ed\u69bb\uff0c\u9760\u80cc\u5f15\u6795\u76ae\u8925\u4ff1\u5168\u3002\u69bb\u4e4b\u4e0a\u4e00\u5934\u53c8\u8bbe\u4e00\u4e2a\u6781\u8f7b\u5de7\u6d0b\u6f06\u63cf\u91d1\u5c0f\u51e0\uff0c\u51e0\u4e0a\u653e\u7740\u8336\u540a\u3001\u8336\u7897\u3001\u6f31\u76c2\u3001\u6d0b\u5dfe\u4e4b\u7c7b\uff0c\u53c8\u6709\u4e00\u4e2a\u773c\u955c\u5323\u5b50\u3002\u8d3e\u6bcd\u6b6a\u5728\u69bb\u4e0a\uff0c\u4e0e\u4f17\u4eba\u8bf4\u7b11\u4e00\u56de\uff0c\u53c8\u81ea\u53d6\u773c\u955c\u5411\u620f\u53f0\u4e0a\u7167\u4e00\u56de\uff0c\u53c8\u5411\u859b\u59e8\u5988\u674e\u5a76\u7b11\u8bf4\uff1a\u201c\u6055\u6211\u8001\u4e86\uff0c\u9aa8\u5934\u75bc\uff0c\u653e\u8086\uff0c\u5bb9\u6211\u6b6a\u7740\u76f8\u966a\u7f62\u3002\u201d\u56e0\u53c8\u547d\u7425\u73c0\u5750\u5728\u69bb\u4e0a\uff0c\u62ff\u7740\u7f8e\u4eba\u62f3\u6376\u817f\u3002\u69bb\u4e0b\u5e76\u4e0d\u6446\u5e2d\u9762\uff0c\u53ea\u6709\u4e00\u5f20\u9ad8\u51e0\uff0c\u5374\u8bbe\u7740\u748e\u73de\u82b1\u74f6\u9999\u7089\u7b49\u7269\u3002\u5916\u53e6\u8bbe\u4e00\u7cbe\u81f4\u5c0f\u9ad8\u684c\uff0c\u8bbe\u7740\u9152\u676f\u5319\u7bb8\uff0c\u5c06\u81ea\u5df1\u8fd9\u4e00\u5e2d\u8bbe\u4e8e\u69bb\u65c1\uff0c\u547d\u5b9d\u7434\u3001\u6e58\u4e91\u3001\u9edb\u7389\u3001\u5b9d\u7389\u56db\u4eba\u5750\u7740\u3002\u6bcf\u4e00\u9994\u4e00\u679c\u6765\uff0c\u5148\u6367\u4e0e\u8d3e\u6bcd\u770b\u4e86\uff0c\u559c\u5219\u7559\u5728\u5c0f\u684c\u4e0a\u5c1d\u4e00\u5c1d\uff0c\u4ecd\u64a4\u4e86\u653e\u5728\u4ed6\u56db\u4eba\u5e2d\u4e0a\uff0c\u53ea\u7b97\u4ed6\u56db\u4eba\u662f\u8ddf\u7740\u8d3e\u6bcd\u5750\u3002\u6545\u4e0b\u9762\u65b9\u662f\u90a2\u592b\u4eba\u738b\u592b\u4eba\u4e4b\u4f4d\uff0c\u518d\u4e0b\u4fbf\u662f\u5c24\u6c0f\uff0c\u674e\u7ea8\uff0c\u51e4\u59d0\uff0c\u8d3e\u84c9\u4e4b\u59bb\u3002\u897f\u8fb9\u4e00\u8def\u4fbf\u662f\u5b9d\u9497\u3001\u674e\u7eb9\u3001\u674e\u7eee\u3001\u5cab\u70df\u3001\u8fce\u6625\u59ca\u59b9\u7b49\u3002\u4e24\u8fb9\u5927\u6881\u4e0a\uff0c\u6302\u7740\u4e00\u5bf9\u8054\u4e09\u805a\u4e94\u73bb\u7483\u8299\u84c9\u5f69\u7a57\u706f\u3002\u6bcf\u4e00\u5e2d\u524d\u7ad6\u4e00\u67c4\u6f06\u5e72\u5012\u5782\u8377\u53f6\uff0c\u53f6\u4e0a\u6709\u70db\u4fe1\u63d2\u7740\u5f69\u70db\u3002\u8fd9\u8377\u53f6\u4e43\u662f\u933e\u73d0\u7405\u7684\uff0c\u6d3b\u4fe1\u53ef\u4ee5\u626d\u8f6c\uff0c\u5982\u4eca\u7686\u5c06\u8377\u53f6\u626d\u8f6c\u5411\u5916\uff0c\u5c06\u706f\u5f71\u903c\u4f4f\u5168\u5411\u5916\u7167\uff0c\u770b\u620f\u5206\u5916\u771f\u5207\u3002\u7a97\u683c\u95e8\u6237\u4e00\u9f50\u6458\u4e0b\uff0c\u5168\u6302\u5f69\u7a57\u5404\u79cd\u5bab\u706f\u3002\u5eca\u6a90\u5185\u5916\u53ca\u4e24\u8fb9\u6e38\u5eca\u7f69\u68da\uff0c\u5c06\u5404\u8272\u7f8a\u89d2\u3001\u73bb\u7483\u3001\u6233\u7eb1\u3001\u6599\u4e1d\uff0c\u6216\u7ee3\uff0c\u6216\u753b\uff0c\u6216\u5806\uff0c\u6216\u62a0\uff0c\u6216\u7ee2\uff0c\u6216\u7eb8\u8bf8\u706f\u6302\u6ee1\u3002\u5eca\u4e0a\u51e0\u5e2d\uff0c\u4fbf\u662f\u8d3e\u73cd\u3001\u8d3e\u740f\u3001\u8d3e\u73af\u3001\u8d3e\u742e\u3001\u8d3e\u84c9\u3001\u8d3e\u82b9\u3001\u8d3e\u82b8\u3001\u8d3e\u83f1\u3001\u8d3e\u83d6\u7b49\u3002\ +\u8d3e\u6bcd\u4e5f\u66fe\u5dee\u4eba\u53bb\u8bf7\u4f17\u65cf\u4e2d\u7537\u5973\uff0c\u5948\u4ed6\u4eec\u6216\u6709\u5e74\u8fc8\u61d2\u4e8e\u70ed\u95f9\u7684\uff0c\u6216\u6709\u5bb6\u5185\u6ca1\u6709\u4eba\u4e0d\u4fbf\u6765\u7684\uff0c\u6216\u6709\u75be\u75c5\u6df9\u7f20\uff0c\u6b32\u6765\u7adf\u4e0d\u80fd\u6765\u7684\uff0c\u6216\u6709\u4e00\u7b49\u5992\u5bcc\u6127\u8d2b\u4e0d\u6765\u7684\uff0c\u751a\u81f3\u4e8e\u6709\u4e00\u7b49\u618e\u754f\u51e4\u59d0\u4e4b\u4e3a\u4eba\u800c\u8d4c\u6c14\u4e0d\u6765\u7684\uff0c\u6216\u6709\u7f9e\u53e3\u7f9e\u811a\uff0c\u4e0d\u60ef\u89c1\u4eba\uff0c\u4e0d\u6562\u6765\u7684\uff1a\u56e0\u6b64\u65cf\u4f17\u867d\u591a\uff0c\u5973\u5ba2\u6765\u8005\u53ea\u4e0d\u8fc7\u8d3e\u83cc\u4e4b\u6bcd\u5a04\u6c0f\u5e26\u4e86\u8d3e\u83cc\u6765\u4e86\uff0c\u7537\u5b50\u53ea\u6709\u8d3e\u82b9\uff0c\u8d3e\u82b8\uff0c\u8d3e\u83d6\uff0c\u8d3e\u83f1\u56db\u4e2a\u73b0\u662f\u5728\u51e4\u59d0\u9ebe\u4e0b\u529e\u4e8b\u7684\u6765\u4e86\u3002\u5f53\u4e0b\u4eba\u867d\u4e0d\u5168\uff0c\u5728\u5bb6\u5ead\u95f4\u5c0f\u5bb4\u4e2d\uff0c\u6570\u6765\u4e5f\u7b97\u662f\u70ed\u95f9\u7684\u4e86\u3002\u5f53\u53c8\u6709\u6797\u4e4b\u5b5d\u4e4b\u59bb\u5e26\u4e86\u516d\u4e2a\u5ab3\u5987\uff0c\u62ac\u4e86\u4e09\u5f20\u7095\u684c\uff0c\u6bcf\u4e00\u5f20\u4e0a\u642d\u7740\u4e00\u6761\u7ea2\u6be1\uff0c\u6be1\u4e0a\u653e\u7740\u9009\u51c0\u4e00\u822c\u5927\u65b0\u51fa\u5c40\u7684\u94dc\u94b1\uff0c\u7528\u5927\u7ea2\u5f69\u7ef3\u4e32\u7740\uff0c\u6bcf\u4e8c\u4eba\u642d\u4e00\u5f20\u3002\u5171\u4e09\u5f20\u3002\u6797\u4e4b\u5b5d\u5bb6\u7684\u6307\u793a\u5c06\u90a3\u4e24\u5f20\u6446\u81f3\u859b\u59e8\u5988\u674e\u5a76\u7684\u5e2d\u4e0b\uff0c\u5c06\u4e00\u5f20\u9001\u81f3\u8d3e\u6bcd\u69bb\u4e0b\u6765\u3002\u8d3e\u6bcd\u4fbf\u8bf4\uff1a\u201c\u653e\u5728\u5f53\u5730\u7f62\u3002\u201d\u8fd9\u5ab3\u5987\u4eec\u90fd\u7d20\u77e5\u89c4\u77e9\u7684\uff0c\u653e\u4e0b\u684c\u5b50\uff0c\u4e00\u5e76\u5c06\u94b1\u90fd\u6253\u5f00\uff0c\u5c06\u5f69\u7ef3\u62bd\u53bb\uff0c\u6563\u5806\u5728\u684c\u4e0a\u3002\u6b63\u5531\u300a\u897f\u697c\u00b7\u697c\u4f1a\u300b\u8fd9\u51fa\u5c06\u7ec8\uff0c\u4e8e\u53d4\u591c\u56e0\u8d4c\u6c14\u53bb\u4e86\uff0c\u90a3\u6587\u8c79\u4fbf\u53d1\u79d1\u8be8\u9053\uff1a\u201c\u4f60\u8d4c\u6c14\u53bb\u4e86\uff0c\u6070\u597d\u4eca\u65e5\u6b63\u6708\u5341\u4e94\uff0c\u8363\u56fd\u5e9c\u4e2d\u8001\u7956\u5b97\u5bb6\u5bb4\uff0c\u5f85\u6211\u9a91\u4e86\u8fd9\u9a6c\uff0c\u8d76\u8fdb\u53bb\u8ba8\u4e9b\u679c\u5b50\u5403\u662f\u8981\u7d27\u7684\u3002\u201d\u8bf4\u6bd5\uff0c\u5f15\u7684\u8d3e\u6bcd\u7b49\u90fd\u7b11\u4e86\u3002\u859b\u59e8\u5988\u7b49\u90fd\u8bf4\uff1a\u201c\u597d\u4e2a\u9b3c\u5934\u5b69\u5b50\uff0c\u53ef\u601c\u89c1\u7684\u3002\u201d\u51e4\u59d0\u4fbf\u8bf4\uff1a\u201c\u8fd9\u5b69\u5b50\u624d\u4e5d\u5c81\u4e86\u3002\u201d\u8d3e\u6bcd\u7b11\u8bf4\uff1a\u201c\u96be\u4e3a\u4ed6\u8bf4\u7684\u5de7\u3002\u201d\u4fbf\u8bf4\u4e86\u4e00\u4e2a\u201c\u8d4f\u201d\u5b57\u3002\u65e9\u6709\u4e09\u4e2a\u5ab3\u5987\u5df2\u7ecf\u624b\u4e0b\u9884\u5907\u4e0b\u7c38\u7ba9\uff0c\u542c\u89c1\u4e00\u4e2a\u201c\u8d4f\u201d\u5b57\uff0c\u8d70\u4e0a\u53bb\u5411\u684c\u4e0a\u7684\u6563\u94b1\u5806\u5185\uff0c\u6bcf\u4eba\u4fbf\u64ae\u4e86\u4e00\u7c38\u7ba9\uff0c\u8d70\u51fa\u6765\u5411\u620f\u53f0\u8bf4\uff1a\u201c\u8001\u7956\u5b97\u3001\u59e8\u592a\u592a\u3001\u4eb2\u5bb6\u592a\u592a\u8d4f\u6587\u8c79\u4e70\u679c\u5b50\u5403\u7684\uff01\u201d\u8bf4\u7740\uff0c\u5411\u53f0\u4e0a\u4fbf\u4e00\u6492\uff0c\u53ea\u542c\u8c41\u5577\u5577\u6ee1\u53f0\u7684\u94b1\u54cd\u3002\u8d3e\u73cd\u8d3e\u740f\u5df2\u547d\u5c0f\u53ae\u4eec\u62ac\u4e86\u5927\u7c38\u7ba9\u7684\u94b1\u6765\uff0c\u6697\u6697\u7684\u9884\u5907\u5728\u90a3\u91cc\u3002\u542c\u89c1\u8d3e\u6bcd\u4e00\u8d4f\uff0c\u8981\u77e5\u7aef\u7684\ +\u4e00\u5929\uff0c\u4ef5\u6c89\u86cb\u7ed9\u6211\u6253\u6765\u7535\u8bdd\u3002\u4ed6\u8bf4\uff1a\u201c\u4f60\u6562\u4e0d\u6562\u548c\u6211\u4e3e\u884c\u78b0\u78b0\u8f66\u5927\u6218\u201d\u6211\u51f3\u8c6a\u723d\u7684\u7b54\u5e94\u4e86\uff1a\u201c\u6211\u5f53\u7136\u6562\u201d\uff0c\u5468\u65e5\u4e0b\u5348\u5728xx\u8defxx\u5927\u53a6\u4e3e\u884c\uff0c\u8c01\u4e0d\u6765\u8c01\u5c31\u662f\u6002\u8d27\u3002\ +\u6211\u539f\u672c\u4ee5\u4e3a\u6211\u6050\u5413\u4e86\u4ef5\u6c89\u86cb\uff0c\u4ef5\u6c89\u86cb\u5e94\u8be5\u8eb2\u5728\u5bb6\uff0c\u4e0d\u6562\u627e\u6211\uff0c\u53ef\u6b63\u5f53\u8fd9\u65f6\uff0c\u6211\u542c\u89c1\u7acb\u97f3\u4e50\u58f0\uff0c\u539f\u6765\u662f\u6211\u624b\u673a\u54cd\u4e86\uff0c\u4e00\u770b\uff0c\u7adf\u7136\u662f\u4ef5\u6c89\u86cb\u6253\u6765\u7684\u7535\u8bdd\uff0c\u4ed6\u8fd8\u771f\u6709\u52c7\u6c14\uff0c\u6211\u63a5\u901a\u4e86\u7535\u8bdd\uff0c\u542c\u9053\u7535\u8bdd\u90a3\u5934\u9a82\u9053\uff1a\u201c\u5c0f\u5e9f\u7269\uff0c\u4f60\u600e\u4e48\u4e48\u8fd8\u4e0d\u6765\uff0c\u518d\u4e0d\u6765\u4f60\u5988\u7684\u6ccc\u5c3f\u7cfb\u7edf\u5c31\u88ab\u6211\u641e\u574f\u4e86\u3002\u201d\u6211\u542c\u5230\u4ed6\u5bf9\u6211\u7684\u6bd2\u9a82\u4e4b\u540e\uff0c\u6211\u56de\u9a82\u9053\uff1a\u201c\u6211\u8981\u628a\u4f60\u6302\u5230\u540c\u6027\u604b\u7f51\u7ad9\u4e0a\uff0c\u5e2e\u4f60\u7092\u4f5c\u4e00\u756a\uff0c\u4f60\u8bf4\u597d\u4e0d\u597d\u554a\u3002\u201d\ +\u4ed6\u5413\u5f97\u6ca1\u518d\u56de\u5e94\u6211\uff0c\u53ef\u662f\u5230\u4e86\u5468\u65e5\uff0c\u4ef5\u6c89\u86cb\u7adf\u7136\u53c8\u7ed9\u6211\u6253\u7535\u8bdd\u4e86\uff0c\u4ed6\u8fd8\u771f\u8981\u548c\u6211\u4e3e\u884c\u78b0\u78b0\u8f66\u5927\u6218\uff0c\u4e8e\u662f\u6211\u6309\u7167\u7ea6\u5b9a\uff0c\u5230\u8fbe\u4e86xx\u5927\u53a6\uff0c\u53ef\u4ed6\u5df2\u7ecf\u7b49\u6211\u5f88\u4e45\u4e86\u3002\ +\u7b2c\u4e00\u56de\u5408\uff0c\u6211\u5360\u4eca\u4e0a\u98ce\uff0c\u4ed6\u6bd4\u4e0d\u8fc7\u6211\uff0c\u5230\u4e86\u7b2c\u516d\u56de\u5408\uff0c\u4ed6\u5c31\u4e3b\u52a8\u8ba4\u8f93\u4e86\u3002\ +\u7b2c\u4e8c\u5c40\uff0c\u4ed6\u5f00\u59cb\u5360\u4e0a\u98ce\uff0c\u6211\u4e5f\u4e0d\u7518\u52bf\u5f31\uff0c\u6211\u4eec\u50f5\u6301\u4e86\u4e00\u767e\u591a\u4e2a\u56de\u5408\uff0c\u6211\u56e0\u4e3a\u8f7b\u654c\uff0c\u88ab\u4ed6\u51fb\u8d25\u4e86\u3002\ +\u4ece\u90a3\u65f6\u5f00\u59cb\uff0c\u6211\u5c31\u4e0d\u8f7b\u654c\u4e86\uff0c\u6211\u8ba4\u771f\u7814\u7a76\u4ed6\u7684\u5957\u8def\uff0c\u4e8e\u662f\u6211\u603b\u7ed3\u51fa\u4e86\u4e00\u5957\u79cd\u65b9\u6848\u3002\ +\u7b2c\u4e8c\u5929\uff0c\u6211\u4eec\u4e3e\u884c\u7b2c\u4e09\u5c40\uff0c\u4ed6\u4f7f\u7528\u7956\u4f20\u65b9\u6848\uff0c\u5bf9\u6211\u53d1\u52a8\u731b\u70c8\u7684\u653b\u51fb\uff0c\u6211\u4eec\u52bf\u5747\u529b\u654c\uff0c\u5e73\u5206\u79cb\u8272\uff0c\u6211\u4eec\u6bd4\u4e863\u4e2a\u591a\u5c0f\u65f6\uff0c\u4e5f\u6ca1\u5206\u51fa\u80dc\u8d1f\u3002\ +\u540e\u6765\uff0c\u4ed6\u4e0d\u77e5\u4e0d\u89c9\u7684\u7761\u7740\u4e86\uff0c\u6211\u8d81\u7740\u8fd9\u4e2a\u597d\u673a\u4f1a\uff0c\u4e00\u8bb0\u51cc\u8f66\u6f02\u79fb\uff0c\u4e00\u98de\u51b2\u5929\uff0c\u6253\u7684\u4ed6\u4e0d\u6562\u8fd8\u624b\uff0c\u5bf9\u4ed6\u7684\u6253\u51fb\u6bd4\u5c60\u6740\u4eb2\u5a18\u8fd8\u5927\u3002\ +A1A0 \u3001 \u3002 \u30fb \u02c9 \u02c7 \u00a8 \u3003 \u3005 \u2015 \uff5e \u2016 \u2026 \u2018 \u2019\ +A1B0 \u201c \u201d \u3014 \u3015 \u3008 \u3009 \u300a \u300b \u300c \u300d \u300e \u300f \u3016 \u3017 \u3010 \u3011\ +A1C0 \u00b1 \u00d7 \u00f7 \u2236 \u2227 \u2228 \u2211 \u220f \u222a \u2229 \u2208 \u2237 \u221a \u22a5 \u2225 \u2220\ +A1D0 \u2312 \u2299 \u222b \u222e \u2261 \u224c \u2248 \u223d \u221d \u2260 \u226e \u226f \u2264 \u2265 \u221e \u2235\ +A1E0 \u2234 \u2642 \u2640 \u00b0 \u2032 \u2033 \u2103 \uff04 \u00a4 \uffe0 \uffe1 \u2030 \u00a7 \u2116 \u2606 \u2605\ +A1F0 \u25cb \u25cf \u25ce \u25c7 \u25c6 \u25a1 \u25a0 \u25b3 \u25b2 \u203b \u2192 \u2190 \u2191 \u2193 \u3013 \ +\u7b2c02\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A2A0 \ +A2B0 \u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496\ +A2C0 \u2497 \u2498 \u2499 \u249a \u249b \u2474 \u2475 \u2476 \u2477 \u2478 \u2479 \u247a \u247b \u247c \u247d \u247e\ +A2D0 \u247f \u2480 \u2481 \u2482 \u2483 \u2484 \u2485 \u2486 \u2487 \u2460 \u2461 \u2462 \u2463 \u2464 \u2465 \u2466\ +A2E0 \u2467 \u2468 \u2469 \u3220 \u3221 \u3222 \u3223 \u3224 \u3225 \u3226 \u3227 \u3228 \u3229 \ +A2F0 \u2160 \u2161 \u2162 \u2163 \u2164 \u2165 \u2166 \u2167 \u2168 \u2169 \u216a \u216b \ +\u7b2c03\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A3A0 \uff01 \uff02 \uff03 \uffe5 \uff05 \uff06 \uff07 \uff08 \uff09 \uff0a \uff0b \uff0c \uff0d \uff0e \uff0f\ +A3B0 \uff10 \uff11 \uff12 \uff13 \uff14 \uff15 \uff16 \uff17 \uff18 \uff19 \uff1a \uff1b \uff1c \uff1d \uff1e \uff1f\ +A3C0 \uff20 \uff21 \uff22 \uff23 \uff24 \uff25 \uff26 \uff27 \uff28 \uff29 \uff2a \uff2b \uff2c \uff2d \uff2e \uff2f\ +A3D0 \uff30 \uff31 \uff32 \uff33 \uff34 \uff35 \uff36 \uff37 \uff38 \uff39 \uff3a \uff3b \uff3c \uff3d \uff3e \uff3f\ +A3E0 \uff40 \uff41 \uff42 \uff43 \uff44 \uff45 \uff46 \uff47 \uff48 \uff49 \uff4a \uff4b \uff4c \uff4d \uff4e \uff4f\ +A3F0 \uff50 \uff51 \uff52 \uff53 \uff54 \uff55 \uff56 \uff57 \uff58 \uff59 \uff5a \uff5b \uff5c \uff5d \uffe3 \ +\u7b2c04\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A4A0 \u3041 \u3042 \u3043 \u3044 \u3045 \u3046 \u3047 \u3048 \u3049 \u304a \u304b \u304c \u304d \u304e \u304f\ +A4B0 \u3050 \u3051 \u3052 \u3053 \u3054 \u3055 \u3056 \u3057 \u3058 \u3059 \u305a \u305b \u305c \u305d \u305e \u305f\ +A4C0 \u3060 \u3061 \u3062 \u3063 \u3064 \u3065 \u3066 \u3067 \u3068 \u3069 \u306a \u306b \u306c \u306d \u306e \u306f\ +A4D0 \u3070 \u3071 \u3072 \u3073 \u3074 \u3075 \u3076 \u3077 \u3078 \u3079 \u307a \u307b \u307c \u307d \u307e \u307f\ +A4E0 \u3080 \u3081 \u3082 \u3083 \u3084 \u3085 \u3086 \u3087 \u3088 \u3089 \u308a \u308b \u308c \u308d \u308e \u308f\ +A4F0 \u3090 \u3091 \u3092 \u3093 \ +\u7b2c05\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A5A0 \u30a1 \u30a2 \u30a3 \u30a4 \u30a5 \u30a6 \u30a7 \u30a8 \u30a9 \u30aa \u30ab \u30ac \u30ad \u30ae \u30af\ +A5B0 \u30b0 \u30b1 \u30b2 \u30b3 \u30b4 \u30b5 \u30b6 \u30b7 \u30b8 \u30b9 \u30ba \u30bb \u30bc \u30bd \u30be \u30bf\ +A5C0 \u30c0 \u30c1 \u30c2 \u30c3 \u30c4 \u30c5 \u30c6 \u30c7 \u30c8 \u30c9 \u30ca \u30cb \u30cc \u30cd \u30ce \u30cf\ +A5D0 \u30d0 \u30d1 \u30d2 \u30d3 \u30d4 \u30d5 \u30d6 \u30d7 \u30d8 \u30d9 \u30da \u30db \u30dc \u30dd \u30de \u30df\ +A5E0 \u30e0 \u30e1 \u30e2 \u30e3 \u30e4 \u30e5 \u30e6 \u30e7 \u30e8 \u30e9 \u30ea \u30eb \u30ec \u30ed \u30ee \u30ef\ +A5F0 \u30f0 \u30f1 \u30f2 \u30f3 \u30f4 \u30f5 \u30f6 \ +\u7b2c06\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A6A0 \u0391 \u0392 \u0393 \u0394 \u0395 \u0396 \u0397 \u0398 \u0399 \u039a \u039b \u039c \u039d \u039e \u039f\ +A6B0 \u03a0 \u03a1 \u03a3 \u03a4 \u03a5 \u03a6 \u03a7 \u03a8 \u03a9 \ +A6C0 \u03b1 \u03b2 \u03b3 \u03b4 \u03b5 \u03b6 \u03b7 \u03b8 \u03b9 \u03ba \u03bb \u03bc \u03bd \u03be \u03bf\ +A6D0 \u03c0 \u03c1 \u03c3 \u03c4 \u03c5 \u03c6 \u03c7 \u03c8 \u03c9 \ +A6E0 \ +A6F0 \ +\u7b2c07\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A7A0 \u0410 \u0411 \u0412 \u0413 \u0414 \u0415 \u0401 \u0416 \u0417 \u0418 \u0419 \u041a \u041b \u041c \u041d\ +A7B0 \u041e \u041f \u0420 \u0421 \u0422 \u0423 \u0424 \u0425 \u0426 \u0427 \u0428 \u0429 \u042a \u042b \u042c \u042d\ +A7C0 \u042e \u042f \ +A7D0 \u0430 \u0431 \u0432 \u0433 \u0434 \u0435 \u0451 \u0436 \u0437 \u0438 \u0439 \u043a \u043b \u043c \u043d\ +A7E0 \u043e \u043f \u0440 \u0441 \u0442 \u0443 \u0444 \u0445 \u0446 \u0447 \u0448 \u0449 \u044a \u044b \u044c \u044d\ +A7F0 \u044e \u044f \ +\u7b2c08\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A8A0 \u0101 \u00e1 \u01ce \u00e0 \u0113 \u00e9 \u011b \u00e8 \u012b \u00ed \u01d0 \u00ec \u014d \u00f3 \u01d2\ +A8B0 \u00f2 \u016b \u00fa \u01d4 \u00f9 \u01d6 \u01d8 \u01da \u01dc \u00fc \u00ea \ +A8C0 \u3105 \u3106 \u3107 \u3108 \u3109 \u310a \u310b \u310c \u310d \u310e \u310f\ +A8D0 \u3110 \u3111 \u3112 \u3113 \u3114 \u3115 \u3116 \u3117 \u3118 \u3119 \u311a \u311b \u311c \u311d \u311e \u311f\ +A8E0 \u3120 \u3121 \u3122 \u3123 \u3124 \u3125 \u3126 \u3127 \u3128 \u3129 \ +A8F0 \ +\u7b2c09\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +A9A0 \u2500 \u2501 \u2502 \u2503 \u2504 \u2505 \u2506 \u2507 \u2508 \u2509 \u250a \u250b\ +A9B0 \u250c \u250d \u250e \u250f \u2510 \u2511 \u2512 \u2513 \u2514 \u2515 \u2516 \u2517 \u2518 \u2519 \u251a \u251b\ +A9C0 \u251c \u251d \u251e \u251f \u2520 \u2521 \u2522 \u2523 \u2524 \u2525 \u2526 \u2527 \u2528 \u2529 \u252a \u252b\ +A9D0 \u252c \u252d \u252e \u252f \u2530 \u2531 \u2532 \u2533 \u2534 \u2535 \u2536 \u2537 \u2538 \u2539 \u253a \u253b\ +A9E0 \u253c \u253d \u253e \u253f \u2540 \u2541 \u2542 \u2543 \u2544 \u2545 \u2546 \u2547 \u2548 \u2549 \u254a \u254b\ +A9F0 \ +\u7b2c10\u533a AAA0-AAFF \u6ca1\u6709\u7f16\u7801\ +\u7b2c11\u533a ABA0-ABFF \u6ca1\u6709\u7f16\u7801\ +\u7b2c12\u533a ACA0-ACFF \u6ca1\u6709\u7f16\u7801\ +\u7b2c13\u533a ADA0-ADFF \u6ca1\u6709\u7f16\u7801\ +\u7b2c14\u533a AEA0-AEFF \u6ca1\u6709\u7f16\u7801\ +\u7b2c15\u533a AFA0-AFFF \u6ca1\u6709\u7f16\u7801\ +\u7b2c16\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B0A0 \u554a \u963f \u57c3 \u6328 \u54ce \u5509 \u54c0 \u7691 \u764c \u853c \u77ee \u827e \u788d \u7231 \u9698\ +B0B0 \u978d \u6c28 \u5b89 \u4ffa \u6309 \u6697 \u5cb8 \u80fa \u6848 \u80ae \u6602 \u76ce \u51f9 \u6556 \u71ac \u7ff1\ +B0C0 \u8884 \u50b2 \u5965 \u61ca \u6fb3 \u82ad \u634c \u6252 \u53ed \u5427 \u7b06 \u516b \u75a4 \u5df4 \u62d4 \u8dcb\ +B0D0 \u9776 \u628a \u8019 \u575d \u9738 \u7f62 \u7238 \u767d \u67cf \u767e \u6446 \u4f70 \u8d25 \u62dc \u7a17 \u6591\ +B0E0 \u73ed \u642c \u6273 \u822c \u9881 \u677f \u7248 \u626e \u62cc \u4f34 \u74e3 \u534a \u529e \u7eca \u90a6 \u5e2e\ +B0F0 \u6886 \u699c \u8180 \u7ed1 \u68d2 \u78c5 \u868c \u9551 \u508d \u8c24 \u82de \u80de \u5305 \u8912 \u5265 \ +\u7b2c17\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B1A0 \u8584 \u96f9 \u4fdd \u5821 \u9971 \u5b9d \u62b1 \u62a5 \u66b4 \u8c79 \u9c8d \u7206 \u676f \u7891 \u60b2\ +B1B0 \u5351 \u5317 \u8f88 \u80cc \u8d1d \u94a1 \u500d \u72c8 \u5907 \u60eb \u7119 \u88ab \u5954 \u82ef \u672c \u7b28\ +B1C0 \u5d29 \u7ef7 \u752d \u6cf5 \u8e66 \u8ff8 \u903c \u9f3b \u6bd4 \u9119 \u7b14 \u5f7c \u78a7 \u84d6 \u853d \u6bd5\ +B1D0 \u6bd9 \u6bd6 \u5e01 \u5e87 \u75f9 \u95ed \u655d \u5f0a \u5fc5 \u8f9f \u58c1 \u81c2 \u907f \u965b \u97ad \u8fb9\ +B1E0 \u7f16 \u8d2c \u6241 \u4fbf \u53d8 \u535e \u8fa8 \u8fa9 \u8fab \u904d \u6807 \u5f6a \u8198 \u8868 \u9cd6 \u618b\ +B1F0 \u522b \u762a \u5f6c \u658c \u6fd2 \u6ee8 \u5bbe \u6448 \u5175 \u51b0 \u67c4 \u4e19 \u79c9 \u997c \u70b3 \ +\u7b2c18\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B2A0 \u75c5 \u5e76 \u73bb \u83e0 \u64ad \u62e8 \u94b5 \u6ce2 \u535a \u52c3 \u640f \u94c2 \u7b94 \u4f2f \u5e1b\ +B2B0 \u8236 \u8116 \u818a \u6e24 \u6cca \u9a73 \u6355 \u535c \u54fa \u8865 \u57e0 \u4e0d \u5e03 \u6b65 \u7c3f \u90e8\ +B2C0 \u6016 \u64e6 \u731c \u88c1 \u6750 \u624d \u8d22 \u776c \u8e29 \u91c7 \u5f69 \u83dc \u8521 \u9910 \u53c2 \u8695\ +B2D0 \u6b8b \u60ed \u60e8 \u707f \u82cd \u8231 \u4ed3 \u6ca7 \u85cf \u64cd \u7cd9 \u69fd \u66f9 \u8349 \u5395 \u7b56\ +B2E0 \u4fa7 \u518c \u6d4b \u5c42 \u8e6d \u63d2 \u53c9 \u832c \u8336 \u67e5 \u78b4 \u643d \u5bdf \u5c94 \u5dee \u8be7\ +B2F0 \u62c6 \u67f4 \u8c7a \u6400 \u63ba \u8749 \u998b \u8c17 \u7f20 \u94f2 \u4ea7 \u9610 \u98a4 \u660c \u7316 \ +\u7b2c19\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B3A0 \u573a \u5c1d \u5e38 \u957f \u507f \u80a0 \u5382 \u655e \u7545 \u5531 \u5021 \u8d85 \u6284 \u949e \u671d\ +B3B0 \u5632 \u6f6e \u5de2 \u5435 \u7092 \u8f66 \u626f \u64a4 \u63a3 \u5f7b \u6f88 \u90f4 \u81e3 \u8fb0 \u5c18 \u6668\ +B3C0 \u5ff1 \u6c89 \u9648 \u8d81 \u886c \u6491 \u79f0 \u57ce \u6a59 \u6210 \u5448 \u4e58 \u7a0b \u60e9 \u6f84 \u8bda\ +B3D0 \u627f \u901e \u9a8b \u79e4 \u5403 \u75f4 \u6301 \u5319 \u6c60 \u8fdf \u5f1b \u9a70 \u803b \u9f7f \u4f88 \u5c3a\ +B3E0 \u8d64 \u7fc5 \u65a5 \u70bd \u5145 \u51b2 \u866b \u5d07 \u5ba0 \u62bd \u916c \u7574 \u8e0c \u7a20 \u6101 \u7b79\ +B3F0 \u4ec7 \u7ef8 \u7785 \u4e11 \u81ed \u521d \u51fa \u6a71 \u53a8 \u8e87 \u9504 \u96cf \u6ec1 \u9664 \u695a \ +\u7b2c20\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B4A0 \u7840 \u50a8 \u77d7 \u6410 \u89e6 \u5904 \u63e3 \u5ddd \u7a7f \u693d \u4f20 \u8239 \u5598 \u4e32 \u75ae\ +B4B0 \u7a97 \u5e62 \u5e8a \u95ef \u521b \u5439 \u708a \u6376 \u9524 \u5782 \u6625 \u693f \u9187 \u5507 \u6df3 \u7eaf\ +B4C0 \u8822 \u6233 \u7ef0 \u75b5 \u8328 \u78c1 \u96cc \u8f9e \u6148 \u74f7 \u8bcd \u6b64 \u523a \u8d50 \u6b21 \u806a\ +B4D0 \u8471 \u56f1 \u5306 \u4ece \u4e1b \u51d1 \u7c97 \u918b \u7c07 \u4fc3 \u8e7f \u7be1 \u7a9c \u6467 \u5d14 \u50ac\ +B4E0 \u8106 \u7601 \u7cb9 \u6dec \u7fe0 \u6751 \u5b58 \u5bf8 \u78cb \u64ae \u6413 \u63aa \u632b \u9519 \u642d \u8fbe\ +B4F0 \u7b54 \u7629 \u6253 \u5927 \u5446 \u6b79 \u50a3 \u6234 \u5e26 \u6b86 \u4ee3 \u8d37 \u888b \u5f85 \u902e \ +\u7b2c21\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B5A0 \u6020 \u803d \u62c5 \u4e39 \u5355 \u90f8 \u63b8 \u80c6 \u65e6 \u6c2e \u4f46 \u60ee \u6de1 \u8bde \u5f39\ +B5B0 \u86cb \u5f53 \u6321 \u515a \u8361 \u6863 \u5200 \u6363 \u8e48 \u5012 \u5c9b \u7977 \u5bfc \u5230 \u7a3b \u60bc\ +B5C0 \u9053 \u76d7 \u5fb7 \u5f97 \u7684 \u8e6c \u706f \u767b \u7b49 \u77aa \u51f3 \u9093 \u5824 \u4f4e \u6ef4 \u8fea\ +B5D0 \u654c \u7b1b \u72c4 \u6da4 \u7fdf \u5ae1 \u62b5 \u5e95 \u5730 \u8482 \u7b2c \u5e1d \u5f1f \u9012 \u7f14 \u98a0\ +B5E0 \u6382 \u6ec7 \u7898 \u70b9 \u5178 \u975b \u57ab \u7535 \u4f43 \u7538 \u5e97 \u60e6 \u5960 \u6dc0 \u6bbf \u7889\ +B5F0 \u53fc \u96d5 \u51cb \u5201 \u6389 \u540a \u9493 \u8c03 \u8dcc \u7239 \u789f \u8776 \u8fed \u8c0d \u53e0 \ +\u7b2c22\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B6A0 \u4e01 \u76ef \u53ee \u9489 \u9876 \u9f0e \u952d \u5b9a \u8ba2 \u4e22 \u4e1c \u51ac \u8463 \u61c2 \u52a8\ +B6B0 \u680b \u4f97 \u606b \u51bb \u6d1e \u515c \u6296 \u6597 \u9661 \u8c46 \u9017 \u75d8 \u90fd \u7763 \u6bd2 \u728a\ +B6C0 \u72ec \u8bfb \u5835 \u7779 \u8d4c \u675c \u9540 \u809a \u5ea6 \u6e21 \u5992 \u7aef \u77ed \u953b \u6bb5 \u65ad\ +B6D0 \u7f0e \u5806 \u5151 \u961f \u5bf9 \u58a9 \u5428 \u8e72 \u6566 \u987f \u56e4 \u949d \u76fe \u9041 \u6387 \u54c6\ +B6E0 \u591a \u593a \u579b \u8eb2 \u6735 \u8dfa \u8235 \u5241 \u60f0 \u5815 \u86fe \u5ce8 \u9e45 \u4fc4 \u989d \u8bb9\ +B6F0 \u5a25 \u6076 \u5384 \u627c \u904f \u9102 \u997f \u6069 \u800c \u513f \u8033 \u5c14 \u9975 \u6d31 \u4e8c \ +\u7b2c23\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B7A0 \u8d30 \u53d1 \u7f5a \u7b4f \u4f10 \u4e4f \u9600 \u6cd5 \u73d0 \u85e9 \u5e06 \u756a \u7ffb \u6a0a \u77fe\ +B7B0 \u9492 \u7e41 \u51e1 \u70e6 \u53cd \u8fd4 \u8303 \u8d29 \u72af \u996d \u6cdb \u574a \u82b3 \u65b9 \u80aa \u623f\ +B7C0 \u9632 \u59a8 \u4eff \u8bbf \u7eba \u653e \u83f2 \u975e \u5561 \u98de \u80a5 \u532a \u8bfd \u5420 \u80ba \u5e9f\ +B7D0 \u6cb8 \u8d39 \u82ac \u915a \u5429 \u6c1b \u5206 \u7eb7 \u575f \u711a \u6c7e \u7c89 \u594b \u4efd \u5fff \u6124\ +B7E0 \u7caa \u4e30 \u5c01 \u67ab \u8702 \u5cf0 \u950b \u98ce \u75af \u70fd \u9022 \u51af \u7f1d \u8bbd \u5949 \u51e4\ +B7F0 \u4f5b \u5426 \u592b \u6577 \u80a4 \u5b75 \u6276 \u62c2 \u8f90 \u5e45 \u6c1f \u7b26 \u4f0f \u4fd8 \u670d \ +\u7b2c24\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C th> +D +E +F\ +B8A0 \u6d6e \u6daa \u798f \u88b1 \u5f17 \u752b \u629a \u8f85 \u4fef \u91dc \u65a7 \u812f \u8151 \u5e9c \u8150\ +B8B0 \u8d74 \u526f \u8986 \u8d4b \u590d \u5085 \u4ed8 \u961c \u7236 \u8179 \u8d1f \u5bcc \u8ba3 \u9644 \u5987 \u7f1a\ +B8C0 \u5490 \u5676 \u560e \u8be5 \u6539 \u6982 \u9499 \u76d6 \u6e89 \u5e72 \u7518 \u6746 \u67d1 \u7aff \u809d \u8d76\ +B8D0 \u611f \u79c6 \u6562 \u8d63 \u5188 \u521a \u94a2 \u7f38 \u809b \u7eb2 \u5c97 \u6e2f \u6760 \u7bd9 \u768b \u9ad8\ +B8E0 \u818f \u7f94 \u7cd5 \u641e \u9550 \u7a3f \u544a \u54e5 \u6b4c \u6401 \u6208 \u9e3d \u80f3 \u7599 \u5272 \u9769\ +B8F0 \u845b \u683c \u86e4 \u9601 \u9694 \u94ec \u4e2a \u5404 \u7ed9 \u6839 \u8ddf \u8015 \u66f4 \u5e9a \u7fb9 \ +\u7b2c25\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +B9A0 \u57c2 \u803f \u6897 \u5de5 \u653b \u529f \u606d \u9f9a \u4f9b \u8eac \u516c \u5bab \u5f13 \u5de9 \u6c5e\ +B9B0 \u62f1 \u8d21 \u5171 \u94a9 \u52fe \u6c9f \u82df \u72d7 \u57a2 \u6784 \u8d2d \u591f \u8f9c \u83c7 \u5495 \u7b8d\ +B9C0 \u4f30 \u6cbd \u5b64 \u59d1 \u9f13 \u53e4 \u86ca \u9aa8 \u8c37 \u80a1 \u6545 \u987e \u56fa \u96c7 \u522e \u74dc\ +B9D0 \u5250 \u5be1 \u6302 \u8902 \u4e56 \u62d0 \u602a \u68fa \u5173 \u5b98 \u51a0 \u89c2 \u7ba1 \u9986 \u7f50 \u60ef\ +B9E0 \u704c \u8d2f \u5149 \u5e7f \u901b \u7470 \u89c4 \u572d \u7845 \u5f52 \u9f9f \u95fa \u8f68 \u9b3c \u8be1 \u7678\ +B9F0 \u6842 \u67dc \u8dea \u8d35 \u523d \u8f8a \u6eda \u68cd \u9505 \u90ed \u56fd \u679c \u88f9 \u8fc7 \u54c8 \ +\u7b2c26\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +BAA0 \u9ab8 \u5b69 \u6d77 \u6c26 \u4ea5 \u5bb3 \u9a87 \u9163 \u61a8 \u90af \u97e9 \u542b \u6db5 \u5bd2 \u51fd\ +BAB0 \u558a \u7f55 \u7ff0 \u64bc \u634d \u65f1 \u61be \u608d \u710a \u6c57 \u6c49 \u592f \u676d \u822a \u58d5 \u568e\ +BAC0 \u8c6a \u6beb \u90dd \u597d \u8017 \u53f7 \u6d69 \u5475 \u559d \u8377 \u83cf \u6838 \u79be \u548c \u4f55 \u5408\ +BAD0 \u76d2 \u8c89 \u9602 \u6cb3 \u6db8 \u8d6b \u8910 \u9e64 \u8d3a \u563f \u9ed1 \u75d5 \u5f88 \u72e0 \u6068 \u54fc\ +BAE0 \u4ea8 \u6a2a \u8861 \u6052 \u8f70 \u54c4 \u70d8 \u8679 \u9e3f \u6d2a \u5b8f \u5f18 \u7ea2 \u5589 \u4faf \u7334\ +BAF0 \u543c \u539a \u5019 \u540e \u547c \u4e4e \u5ffd \u745a \u58f6 \u846b \u80e1 \u8774 \u72d0 \u7cca \u6e56 \ +\u7b2c27\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +BBA0 \u5f27 \u864e \u552c \u62a4 \u4e92 \u6caa \u6237 \u82b1 \u54d7 \u534e \u733e \u6ed1 \u753b \u5212 \u5316\ +BBB0 \u8bdd \u69d0 \u5f8a \u6000 \u6dee \u574f \u6b22 \u73af \u6853 \u8fd8 \u7f13 \u6362 \u60a3 \u5524 \u75ea \u8c62\ +BBC0 \u7115 \u6da3 \u5ba6 \u5e7b \u8352 \u614c \u9ec4 \u78fa \u8757 \u7c27 \u7687 \u51f0 \u60f6 \u714c \u6643 \u5e4c\ +BBD0 \u604d \u8c0e \u7070 \u6325 \u8f89 \u5fbd \u6062 \u86d4 \u56de \u6bc1 \u6094 \u6167 \u5349 \u60e0 \u6666 \u8d3f\ +BBE0 \u79fd \u4f1a \u70e9 \u6c47 \u8bb3 \u8bf2 \u7ed8 \u8364 \u660f \u5a5a \u9b42 \u6d51 \u6df7 \u8c41 \u6d3b \u4f19\ +BBF0 \u706b \u83b7 \u6216 \u60d1 \u970d \u8d27 \u7978 \u51fb \u573e \u57fa \u673a \u7578 \u7a3d \u79ef \u7b95 \ +\u7b2c28\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +BCA0 \u808c \u9965 \u8ff9 \u6fc0 \u8ba5 \u9e21 \u59ec \u7ee9 \u7f09 \u5409 \u6781 \u68d8 \u8f91 \u7c4d \u96c6\ +BCB0 \u53ca \u6025 \u75be \u6c72 \u5373 \u5ac9 \u7ea7 \u6324 \u51e0 \u810a \u5df1 \u84df \u6280 \u5180 \u5b63 \u4f0e\ +BCC0 \u796d \u5242 \u60b8 \u6d4e \u5bc4 \u5bc2 \u8ba1 \u8bb0 \u65e2 \u5fcc \u9645 \u5993 \u7ee7 \u7eaa \u5609 \u67b7\ +BCD0 \u5939 \u4f73 \u5bb6 \u52a0 \u835a \u988a \u8d3e \u7532 \u94be \u5047 \u7a3c \u4ef7 \u67b6 \u9a7e \u5ac1 \u6b7c\ +BCE0 \u76d1 \u575a \u5c16 \u7b3a \u95f4 \u714e \u517c \u80a9 \u8270 \u5978 \u7f04 \u8327 \u68c0 \u67ec \u78b1 \u7877\ +BCF0 \u62e3 \u6361 \u7b80 \u4fed \u526a \u51cf \u8350 \u69db \u9274 \u8df5 \u8d31 \u89c1 \u952e \u7bad \u4ef6 \ +\u7b2c29\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +BDA0 \u5065 \u8230 \u5251 \u996f \u6e10 \u6e85 \u6da7 \u5efa \u50f5 \u59dc \u5c06 \u6d46 \u6c5f \u7586 \u848b\ +BDB0 \u6868 \u5956 \u8bb2 \u5320 \u9171 \u964d \u8549 \u6912 \u7901 \u7126 \u80f6 \u4ea4 \u90ca \u6d47 \u9a84 \u5a07\ +BDC0 \u56bc \u6405 \u94f0 \u77eb \u4fa5 \u811a \u72e1 \u89d2 \u997a \u7f34 \u7ede \u527f \u6559 \u9175 \u8f7f \u8f83\ +BDD0 \u53eb \u7a96 \u63ed \u63a5 \u7686 \u79f8 \u8857 \u9636 \u622a \u52ab \u8282 \u6854 \u6770 \u6377 \u776b \u7aed\ +BDE0 \u6d01 \u7ed3 \u89e3 \u59d0 \u6212 \u85c9 \u82a5 \u754c \u501f \u4ecb \u75a5 \u8beb \u5c4a \u5dfe \u7b4b \u65a4\ +BDF0 \u91d1 \u4eca \u6d25 \u895f \u7d27 \u9526 \u4ec5 \u8c28 \u8fdb \u9773 \u664b \u7981 \u8fd1 \u70ec \u6d78 \ +\u7b2c30\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +BEA0 \u5c3d \u52b2 \u8346 \u5162 \u830e \u775b \u6676 \u9cb8 \u4eac \u60ca \u7cbe \u7cb3 \u7ecf \u4e95 \u8b66\ +BEB0 \u666f \u9888 \u9759 \u5883 \u656c \u955c \u5f84 \u75c9 \u9756 \u7adf \u7ade \u51c0 \u70af \u7a98 \u63ea \u7a76\ +BEC0 \u7ea0 \u7396 \u97ed \u4e45 \u7078 \u4e5d \u9152 \u53a9 \u6551 \u65e7 \u81fc \u8205 \u548e \u5c31 \u759a \u97a0\ +BED0 \u62d8 \u72d9 \u75bd \u5c45 \u9a79 \u83ca \u5c40 \u5480 \u77e9 \u4e3e \u6cae \u805a \u62d2 \u636e \u5de8 \u5177\ +BEE0 \u8ddd \u8e1e \u952f \u4ff1 \u53e5 \u60e7 \u70ac \u5267 \u6350 \u9e43 \u5a1f \u5026 \u7737 \u5377 \u7ee2 \u6485\ +BEF0 \u652b \u6289 \u6398 \u5014 \u7235 \u89c9 \u51b3 \u8bc0 \u7edd \u5747 \u83cc \u94a7 \u519b \u541b \u5cfb \ +\u7b2c31\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +BFA0 \u4fca \u7ae3 \u6d5a \u90e1 \u9a8f \u5580 \u5496 \u5361 \u54af \u5f00 \u63e9 \u6977 \u51ef \u6168 \u520a\ +BFB0 \u582a \u52d8 \u574e \u780d \u770b \u5eb7 \u6177 \u7ce0 \u625b \u6297 \u4ea2 \u7095 \u8003 \u62f7 \u70e4 \u9760\ +BFC0 \u5777 \u82db \u67ef \u68f5 \u78d5 \u9897 \u79d1 \u58f3 \u54b3 \u53ef \u6e34 \u514b \u523b \u5ba2 \u8bfe \u80af\ +BFD0 \u5543 \u57a6 \u6073 \u5751 \u542d \u7a7a \u6050 \u5b54 \u63a7 \u62a0 \u53e3 \u6263 \u5bc7 \u67af \u54ed \u7a9f\ +BFE0 \u82e6 \u9177 \u5e93 \u88e4 \u5938 \u57ae \u630e \u8de8 \u80ef \u5757 \u7b77 \u4fa9 \u5feb \u5bbd \u6b3e \u5321\ +BFF0 \u7b50 \u72c2 \u6846 \u77ff \u7736 \u65f7 \u51b5 \u4e8f \u76d4 \u5cbf \u7aa5 \u8475 \u594e \u9b41 \u5080 \ +\u7b2c32\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C0A0 \u9988 \u6127 \u6e83 \u5764 \u6606 \u6346 \u56f0 \u62ec \u6269 \u5ed3 \u9614 \u5783 \u62c9 \u5587 \u8721\ +C0B0 \u814a \u8fa3 \u5566 \u83b1 \u6765 \u8d56 \u84dd \u5a6a \u680f \u62e6 \u7bee \u9611 \u5170 \u6f9c \u8c30 \u63fd\ +C0C0 \u89c8 \u61d2 \u7f06 \u70c2 \u6ee5 \u7405 \u6994 \u72fc \u5eca \u90ce \u6717 \u6d6a \u635e \u52b3 \u7262 \u8001\ +C0D0 \u4f6c \u59e5 \u916a \u70d9 \u6d9d \u52d2 \u4e50 \u96f7 \u956d \u857e \u78ca \u7d2f \u5121 \u5792 \u64c2 \u808b\ +C0E0 \u7c7b \u6cea \u68f1 \u695e \u51b7 \u5398 \u68a8 \u7281 \u9ece \u7bf1 \u72f8 \u79bb \u6f13 \u7406 \u674e \u91cc\ +C0F0 \u9ca4 \u793c \u8389 \u8354 \u540f \u6817 \u4e3d \u5389 \u52b1 \u783e \u5386 \u5229 \u5088 \u4f8b \u4fd0 \ +\u7b2c33\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C1A0 \u75e2 \u7acb \u7c92 \u6ca5 \u96b6 \u529b \u7483 \u54e9 \u4fe9 \u8054 \u83b2 \u8fde \u9570 \u5ec9 \u601c\ +C1B0 \u6d9f \u5e18 \u655b \u8138 \u94fe \u604b \u70bc \u7ec3 \u7cae \u51c9 \u6881 \u7cb1 \u826f \u4e24 \u8f86 \u91cf\ +C1C0 \u667e \u4eae \u8c05 \u64a9 \u804a \u50da \u7597 \u71ce \u5be5 \u8fbd \u6f66 \u4e86 \u6482 \u9563 \u5ed6 \u6599\ +C1D0 \u5217 \u88c2 \u70c8 \u52a3 \u730e \u7433 \u6797 \u78f7 \u9716 \u4e34 \u90bb \u9cde \u6dcb \u51db \u8d41 \u541d\ +C1E0 \u62ce \u73b2 \u83f1 \u96f6 \u9f84 \u94c3 \u4f36 \u7f9a \u51cc \u7075 \u9675 \u5cad \u9886 \u53e6 \u4ee4 \u6e9c\ +C1F0 \u7409 \u69b4 \u786b \u998f \u7559 \u5218 \u7624 \u6d41 \u67f3 \u516d \u9f99 \u804b \u5499 \u7b3c \u7abf \ +\u7b2c34\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C2A0 \u9686 \u5784 \u62e2 \u9647 \u697c \u5a04 \u6402 \u7bd3 \u6f0f \u964b \u82a6 \u5362 \u9885 \u5e90 \u7089\ +C2B0 \u63b3 \u5364 \u864f \u9c81 \u9e93 \u788c \u9732 \u8def \u8d42 \u9e7f \u6f5e \u7984 \u5f55 \u9646 \u622e \u9a74\ +C2C0 \u5415 \u94dd \u4fa3 \u65c5 \u5c65 \u5c61 \u7f15 \u8651 \u6c2f \u5f8b \u7387 \u6ee4 \u7eff \u5ce6 \u631b \u5b6a\ +C2D0 \u6ee6 \u5375 \u4e71 \u63a0 \u7565 \u62a1 \u8f6e \u4f26 \u4ed1 \u6ca6 \u7eb6 \u8bba \u841d \u87ba \u7f57 \u903b\ +C2E0 \u9523 \u7ba9 \u9aa1 \u88f8 \u843d \u6d1b \u9a86 \u7edc \u5988 \u9ebb \u739b \u7801 \u8682 \u9a6c \u9a82 \u561b\ +C2F0 \u5417 \u57cb \u4e70 \u9ea6 \u5356 \u8fc8 \u8109 \u7792 \u9992 \u86ee \u6ee1 \u8513 \u66fc \u6162 \u6f2b \ +\u7b2c35\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C3A0 \u8c29 \u8292 \u832b \u76f2 \u6c13 \u5fd9 \u83bd \u732b \u8305 \u951a \u6bdb \u77db \u94c6 \u536f \u8302\ +C3B0 \u5192 \u5e3d \u8c8c \u8d38 \u4e48 \u73ab \u679a \u6885 \u9176 \u9709 \u7164 \u6ca1 \u7709 \u5a92 \u9541 \u6bcf\ +C3C0 \u7f8e \u6627 \u5bd0 \u59b9 \u5a9a \u95e8 \u95f7 \u4eec \u840c \u8499 \u6aac \u76df \u9530 \u731b \u68a6 \u5b5f\ +C3D0 \u772f \u919a \u9761 \u7cdc \u8ff7 \u8c1c \u5f25 \u7c73 \u79d8 \u89c5 \u6ccc \u871c \u5bc6 \u5e42 \u68c9 \u7720\ +C3E0 \u7ef5 \u5195 \u514d \u52c9 \u5a29 \u7f05 \u9762 \u82d7 \u63cf \u7784 \u85d0 \u79d2 \u6e3a \u5e99 \u5999 \u8511\ +C3F0 \u706d \u6c11 \u62bf \u76bf \u654f \u60af \u95fd \u660e \u879f \u9e23 \u94ed \u540d \u547d \u8c2c \u6478 \ +\u7b2c36\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C4A0 \u6479 \u8611 \u6a21 \u819c \u78e8 \u6469 \u9b54 \u62b9 \u672b \u83ab \u58a8 \u9ed8 \u6cab \u6f20 \u5bde\ +C4B0 \u964c \u8c0b \u725f \u67d0 \u62c7 \u7261 \u4ea9 \u59c6 \u6bcd \u5893 \u66ae \u5e55 \u52df \u6155 \u6728 \u76ee\ +C4C0 \u7766 \u7267 \u7a46 \u62ff \u54ea \u5450 \u94a0 \u90a3 \u5a1c \u7eb3 \u6c16 \u4e43 \u5976 \u8010 \u5948 \u5357\ +C4D0 \u7537 \u96be \u56ca \u6320 \u8111 \u607c \u95f9 \u6dd6 \u5462 \u9981 \u5185 \u5ae9 \u80fd \u59ae \u9713 \u502a\ +C4E0 \u6ce5 \u5c3c \u62df \u4f60 \u533f \u817b \u9006 \u6eba \u852b \u62c8 \u5e74 \u78be \u64b5 \u637b \u5ff5 \u5a18\ +C4F0 \u917f \u9e1f \u5c3f \u634f \u8042 \u5b7d \u556e \u954a \u954d \u6d85 \u60a8 \u67e0 \u72de \u51dd \u5b81 \ +\u7b2c37\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C5A0 \u62e7 \u6cde \u725b \u626d \u94ae \u7ebd \u8113 \u6d53 \u519c \u5f04 \u5974 \u52aa \u6012 \u5973 \u6696\ +C5B0 \u8650 \u759f \u632a \u61e6 \u7cef \u8bfa \u54e6 \u6b27 \u9e25 \u6bb4 \u85d5 \u5455 \u5076 \u6ca4 \u556a \u8db4\ +C5C0 \u722c \u5e15 \u6015 \u7436 \u62cd \u6392 \u724c \u5f98 \u6e43 \u6d3e \u6500 \u6f58 \u76d8 \u78d0 \u76fc \u7554\ +C5D0 \u5224 \u53db \u4e53 \u5e9e \u65c1 \u802a \u80d6 \u629b \u5486 \u5228 \u70ae \u888d \u8dd1 \u6ce1 \u5478 \u80da\ +C5E0 \u57f9 \u88f4 \u8d54 \u966a \u914d \u4f69 \u6c9b \u55b7 \u76c6 \u7830 \u62a8 \u70f9 \u6f8e \u5f6d \u84ec \u68da\ +C5F0 \u787c \u7bf7 \u81a8 \u670b \u9e4f \u6367 \u78b0 \u576f \u7812 \u9739 \u6279 \u62ab \u5288 \u7435 \u6bd7 \ +\u7b2c38\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C6A0 \u5564 \u813e \u75b2 \u76ae \u5339 \u75de \u50fb \u5c41 \u8b6c \u7bc7 \u504f \u7247 \u9a97 \u98d8 \u6f02\ +C6B0 \u74e2 \u7968 \u6487 \u77a5 \u62fc \u9891 \u8d2b \u54c1 \u8058 \u4e52 \u576a \u82f9 \u840d \u5e73 \u51ed \u74f6\ +C6C0 \u8bc4 \u5c4f \u5761 \u6cfc \u9887 \u5a46 \u7834 \u9b44 \u8feb \u7c95 \u5256 \u6251 \u94fa \u4ec6 \u8386 \u8461\ +C6D0 \u83e9 \u84b2 \u57d4 \u6734 \u5703 \u666e \u6d66 \u8c31 \u66dd \u7011 \u671f \u6b3a \u6816 \u621a \u59bb \u4e03\ +C6E0 \u51c4 \u6f06 \u67d2 \u6c8f \u5176 \u68cb \u5947 \u6b67 \u7566 \u5d0e \u8110 \u9f50 \u65d7 \u7948 \u7941 \u9a91\ +C6F0 \u8d77 \u5c82 \u4e5e \u4f01 \u542f \u5951 \u780c \u5668 \u6c14 \u8fc4 \u5f03 \u6c7d \u6ce3 \u8bab \u6390 \ +\u7b2c39\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C7A0 \u6070 \u6d3d \u7275 \u6266 \u948e \u94c5 \u5343 \u8fc1 \u7b7e \u4edf \u8c26 \u4e7e \u9ed4 \u94b1 \u94b3\ +C7B0 \u524d \u6f5c \u9063 \u6d45 \u8c34 \u5811 \u5d4c \u6b20 \u6b49 \u67aa \u545b \u8154 \u7f8c \u5899 \u8537 \u5f3a\ +C7C0 \u62a2 \u6a47 \u9539 \u6572 \u6084 \u6865 \u77a7 \u4e54 \u4fa8 \u5de7 \u9798 \u64ac \u7fd8 \u5ced \u4fcf \u7a8d\ +C7D0 \u5207 \u8304 \u4e14 \u602f \u7a83 \u94a6 \u4fb5 \u4eb2 \u79e6 \u7434 \u52e4 \u82b9 \u64d2 \u79bd \u5bdd \u6c81\ +C7E0 \u9752 \u8f7b \u6c22 \u503e \u537f \u6e05 \u64ce \u6674 \u6c30 \u60c5 \u9877 \u8bf7 \u5e86 \u743c \u7a77 \u79cb\ +C7F0 \u4e18 \u90b1 \u7403 \u6c42 \u56da \u914b \u6cc5 \u8d8b \u533a \u86c6 \u66f2 \u8eaf \u5c48 \u9a71 \u6e20 \ +\u7b2c40\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C8A0 \u53d6 \u5a36 \u9f8b \u8da3 \u53bb \u5708 \u98a7 \u6743 \u919b \u6cc9 \u5168 \u75ca \u62f3 \u72ac \u5238\ +C8B0 \u529d \u7f3a \u7094 \u7638 \u5374 \u9e4a \u69b7 \u786e \u96c0 \u88d9 \u7fa4 \u7136 \u71c3 \u5189 \u67d3 \u74e4\ +C8C0 \u58e4 \u6518 \u56b7 \u8ba9 \u9976 \u6270 \u7ed5 \u60f9 \u70ed \u58ec \u4ec1 \u4eba \u5fcd \u97e7 \u4efb \u8ba4\ +C8D0 \u5203 \u598a \u7eab \u6254 \u4ecd \u65e5 \u620e \u8338 \u84c9 \u8363 \u878d \u7194 \u6eb6 \u5bb9 \u7ed2 \u5197\ +C8E0 \u63c9 \u67d4 \u8089 \u8339 \u8815 \u5112 \u5b7a \u5982 \u8fb1 \u4e73 \u6c5d \u5165 \u8925 \u8f6f \u962e \u854a\ +C8F0 \u745e \u9510 \u95f0 \u6da6 \u82e5 \u5f31 \u6492 \u6d12 \u8428 \u816e \u9cc3 \u585e \u8d5b \u4e09 \u53c1 \ +\u7b2c41\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +C9A0 \u4f1e \u6563 \u6851 \u55d3 \u4e27 \u6414 \u9a9a \u626b \u5ac2 \u745f \u8272 \u6da9 \u68ee \u50e7 \u838e\ +C9B0 \u7802 \u6740 \u5239 \u6c99 \u7eb1 \u50bb \u5565 \u715e \u7b5b \u6652 \u73ca \u82eb \u6749 \u5c71 \u5220 \u717d\ +C9C0 \u886b \u95ea \u9655 \u64c5 \u8d61 \u81b3 \u5584 \u6c55 \u6247 \u7f2e \u5892 \u4f24 \u5546 \u8d4f \u664c \u4e0a\ +C9D0 \u5c1a \u88f3 \u68a2 \u634e \u7a0d \u70e7 \u828d \u52fa \u97f6 \u5c11 \u54e8 \u90b5 \u7ecd \u5962 \u8d4a \u86c7\ +C9E0 \u820c \u820d \u8d66 \u6444 \u5c04 \u6151 \u6d89 \u793e \u8bbe \u7837 \u7533 \u547b \u4f38 \u8eab \u6df1 \u5a20\ +C9F0 \u7ec5 \u795e \u6c88 \u5ba1 \u5a76 \u751a \u80be \u614e \u6e17 \u58f0 \u751f \u7525 \u7272 \u5347 \u7ef3 \ +\u7b2c42\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +CAA0 \u7701 \u76db \u5269 \u80dc \u5723 \u5e08 \u5931 \u72ee \u65bd \u6e7f \u8bd7 \u5c38 \u8671 \u5341 \u77f3\ +CAB0 \u62fe \u65f6 \u4ec0 \u98df \u8680 \u5b9e \u8bc6 \u53f2 \u77e2 \u4f7f \u5c4e \u9a76 \u59cb \u5f0f \u793a \u58eb\ +CAC0 \u4e16 \u67ff \u4e8b \u62ed \u8a93 \u901d \u52bf \u662f \u55dc \u566c \u9002 \u4ed5 \u4f8d \u91ca \u9970 \u6c0f\ +CAD0 \u5e02 \u6043 \u5ba4 \u89c6 \u8bd5 \u6536 \u624b \u9996 \u5b88 \u5bff \u6388 \u552e \u53d7 \u7626 \u517d \u852c\ +CAE0 \u67a2 \u68b3 \u6b8a \u6292 \u8f93 \u53d4 \u8212 \u6dd1 \u758f \u4e66 \u8d4e \u5b70 \u719f \u85af \u6691 \u66d9\ +CAF0 \u7f72 \u8700 \u9ecd \u9f20 \u5c5e \u672f \u8ff0 \u6811 \u675f \u620d \u7ad6 \u5885 \u5eb6 \u6570 \u6f31 \ +\u7b2c43\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +CBA0 \u6055 \u5237 \u800d \u6454 \u8870 \u7529 \u5e05 \u6813 \u62f4 \u971c \u53cc \u723d \u8c01 \u6c34 \u7761\ +CBB0 \u7a0e \u542e \u77ac \u987a \u821c \u8bf4 \u7855 \u6714 \u70c1 \u65af \u6495 \u5636 \u601d \u79c1 \u53f8 \u4e1d\ +CBC0 \u6b7b \u8086 \u5bfa \u55e3 \u56db \u4f3a \u4f3c \u9972 \u5df3 \u677e \u8038 \u6002 \u9882 \u9001 \u5b8b \u8bbc\ +CBD0 \u8bf5 \u641c \u8258 \u64de \u55fd \u82cf \u9165 \u4fd7 \u7d20 \u901f \u7c9f \u50f3 \u5851 \u6eaf \u5bbf \u8bc9\ +CBE0 \u8083 \u9178 \u849c \u7b97 \u867d \u968b \u968f \u7ee5 \u9ad3 \u788e \u5c81 \u7a57 \u9042 \u96a7 \u795f \u5b59\ +CBF0 \u635f \u7b0b \u84d1 \u68ad \u5506 \u7f29 \u7410 \u7d22 \u9501 \u6240 \u584c \u4ed6 \u5b83 \u5979 \u5854 \ +\u7b2c44\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +CCA0 \u736d \u631e \u8e4b \u8e0f \u80ce \u82d4 \u62ac \u53f0 \u6cf0 \u915e \u592a \u6001 \u6c70 \u574d \u644a\ +CCB0 \u8d2a \u762b \u6ee9 \u575b \u6a80 \u75f0 \u6f6d \u8c2d \u8c08 \u5766 \u6bef \u8892 \u78b3 \u63a2 \u53f9 \u70ad\ +CCC0 \u6c64 \u5858 \u642a \u5802 \u68e0 \u819b \u5510 \u7cd6 \u5018 \u8eba \u6dcc \u8d9f \u70eb \u638f \u6d9b \u6ed4\ +CCD0 \u7ee6 \u8404 \u6843 \u9003 \u6dd8 \u9676 \u8ba8 \u5957 \u7279 \u85e4 \u817e \u75bc \u8a8a \u68af \u5254 \u8e22\ +CCE0 \u9511 \u63d0 \u9898 \u8e44 \u557c \u4f53 \u66ff \u568f \u60d5 \u6d95 \u5243 \u5c49 \u5929 \u6dfb \u586b \u7530\ +CCF0 \u751c \u606c \u8214 \u8146 \u6311 \u6761 \u8fe2 \u773a \u8df3 \u8d34 \u94c1 \u5e16 \u5385 \u542c \u70c3 \ +\u7b2c45\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +CDA0 \u6c40 \u5ef7 \u505c \u4ead \u5ead \u633a \u8247 \u901a \u6850 \u916e \u77b3 \u540c \u94dc \u5f64 \u7ae5\ +CDB0 \u6876 \u6345 \u7b52 \u7edf \u75db \u5077 \u6295 \u5934 \u900f \u51f8 \u79c3 \u7a81 \u56fe \u5f92 \u9014 \u6d82\ +CDC0 \u5c60 \u571f \u5410 \u5154 \u6e4d \u56e2 \u63a8 \u9893 \u817f \u8715 \u892a \u9000 \u541e \u5c6f \u81c0 \u62d6\ +CDD0 \u6258 \u8131 \u9e35 \u9640 \u9a6e \u9a7c \u692d \u59a5 \u62d3 \u553e \u6316 \u54c7 \u86d9 \u6d3c \u5a03 \u74e6\ +CDE0 \u889c \u6b6a \u5916 \u8c4c \u5f2f \u6e7e \u73a9 \u987d \u4e38 \u70f7 \u5b8c \u7897 \u633d \u665a \u7696 \u60cb\ +CDF0 \u5b9b \u5a49 \u4e07 \u8155 \u6c6a \u738b \u4ea1 \u6789 \u7f51 \u5f80 \u65fa \u671b \u5fd8 \u5984 \u5a01 \ +\u7b2c46\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +CEA0 \u5dcd \u5fae \u5371 \u97e6 \u8fdd \u6845 \u56f4 \u552f \u60df \u4e3a \u6f4d \u7ef4 \u82c7 \u840e \u59d4\ +CEB0 \u4f1f \u4f2a \u5c3e \u7eac \u672a \u851a \u5473 \u754f \u80c3 \u5582 \u9b4f \u4f4d \u6e2d \u8c13 \u5c09 \u6170\ +CEC0 \u536b \u761f \u6e29 \u868a \u6587 \u95fb \u7eb9 \u543b \u7a33 \u7d0a \u95ee \u55e1 \u7fc1 \u74ee \u631d \u8717\ +CED0 \u6da1 \u7a9d \u6211 \u65a1 \u5367 \u63e1 \u6c83 \u5deb \u545c \u94a8 \u4e4c \u6c61 \u8bec \u5c4b \u65e0 \u829c\ +CEE0 \u68a7 \u543e \u5434 \u6bcb \u6b66 \u4e94 \u6342 \u5348 \u821e \u4f0d \u4fae \u575e \u620a \u96fe \u6664 \u7269\ +CEF0 \u52ff \u52a1 \u609f \u8bef \u6614 \u7199 \u6790 \u897f \u7852 \u77fd \u6670 \u563b \u5438 \u9521 \u727a \ +\u7b2c47\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +CFA0 \u7a00 \u606f \u5e0c \u6089 \u819d \u5915 \u60dc \u7184 \u70ef \u6eaa \u6c50 \u7280 \u6a84 \u88ad \u5e2d\ +CFB0 \u4e60 \u5ab3 \u559c \u94e3 \u6d17 \u7cfb \u9699 \u620f \u7ec6 \u778e \u867e \u5323 \u971e \u8f96 \u6687 \u5ce1\ +CFC0 \u4fa0 \u72ed \u4e0b \u53a6 \u590f \u5413 \u6380 \u9528 \u5148 \u4ed9 \u9c9c \u7ea4 \u54b8 \u8d24 \u8854 \u8237\ +CFD0 \u95f2 \u6d8e \u5f26 \u5acc \u663e \u9669 \u73b0 \u732e \u53bf \u817a \u9985 \u7fa1 \u5baa \u9677 \u9650 \u7ebf\ +CFE0 \u76f8 \u53a2 \u9576 \u9999 \u7bb1 \u8944 \u6e58 \u4e61 \u7fd4 \u7965 \u8be6 \u60f3 \u54cd \u4eab \u9879 \u5df7\ +CFF0 \u6a61 \u50cf \u5411 \u8c61 \u8427 \u785d \u9704 \u524a \u54ee \u56a3 \u9500 \u6d88 \u5bb5 \u6dc6 \u6653 \ +\u7b2c48\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D0A0 \u5c0f \u5b5d \u6821 \u8096 \u5578 \u7b11 \u6548 \u6954 \u4e9b \u6b47 \u874e \u978b \u534f \u631f \u643a\ +D0B0 \u90aa \u659c \u80c1 \u8c10 \u5199 \u68b0 \u5378 \u87f9 \u61c8 \u6cc4 \u6cfb \u8c22 \u5c51 \u85aa \u82af \u950c\ +D0C0 \u6b23 \u8f9b \u65b0 \u5ffb \u5fc3 \u4fe1 \u8845 \u661f \u8165 \u7329 \u60fa \u5174 \u5211 \u578b \u5f62 \u90a2\ +D0D0 \u884c \u9192 \u5e78 \u674f \u6027 \u59d3 \u5144 \u51f6 \u80f8 \u5308 \u6c79 \u96c4 \u718a \u4f11 \u4fee \u7f9e\ +D0E0 \u673d \u55c5 \u9508 \u79c0 \u8896 \u7ee3 \u589f \u620c \u9700 \u865a \u5618 \u987b \u5f90 \u8bb8 \u84c4 \u9157\ +D0F0 \u53d9 \u65ed \u5e8f \u755c \u6064 \u7d6e \u5a7f \u7eea \u7eed \u8f69 \u55a7 \u5ba3 \u60ac \u65cb \u7384 \ +\u7b2c49\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D1A0 \u9009 \u7663 \u7729 \u7eda \u9774 \u859b \u5b66 \u7a74 \u96ea \u8840 \u52cb \u718f \u5faa \u65ec \u8be2\ +D1B0 \u5bfb \u9a6f \u5de1 \u6b89 \u6c5b \u8bad \u8baf \u900a \u8fc5 \u538b \u62bc \u9e26 \u9e2d \u5440 \u4e2b \u82bd\ +D1C0 \u7259 \u869c \u5d16 \u8859 \u6daf \u96c5 \u54d1 \u4e9a \u8bb6 \u7109 \u54bd \u9609 \u70df \u6df9 \u76d0 \u4e25\ +D1D0 \u7814 \u8712 \u5ca9 \u5ef6 \u8a00 \u989c \u960e \u708e \u6cbf \u5944 \u63a9 \u773c \u884d \u6f14 \u8273 \u5830\ +D1E0 \u71d5 \u538c \u781a \u96c1 \u5501 \u5f66 \u7130 \u5bb4 \u8c1a \u9a8c \u6b83 \u592e \u9e2f \u79e7 \u6768 \u626c\ +D1F0 \u4f6f \u75a1 \u7f8a \u6d0b \u9633 \u6c27 \u4ef0 \u75d2 \u517b \u6837 \u6f3e \u9080 \u8170 \u5996 \u7476 \ +\u7b2c50\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D2A0 \u6447 \u5c27 \u9065 \u7a91 \u8c23 \u59da \u54ac \u8200 \u836f \u8981 \u8000 \u6930 \u564e \u8036 \u7237\ +D2B0 \u91ce \u51b6 \u4e5f \u9875 \u6396 \u4e1a \u53f6 \u66f3 \u814b \u591c \u6db2 \u4e00 \u58f9 \u533b \u63d6 \u94f1\ +D2C0 \u4f9d \u4f0a \u8863 \u9890 \u5937 \u9057 \u79fb \u4eea \u80f0 \u7591 \u6c82 \u5b9c \u59e8 \u5f5d \u6905 \u8681\ +D2D0 \u501a \u5df2 \u4e59 \u77e3 \u4ee5 \u827a \u6291 \u6613 \u9091 \u5c79 \u4ebf \u5f79 \u81c6 \u9038 \u8084 \u75ab\ +D2E0 \u4ea6 \u88d4 \u610f \u6bc5 \u5fc6 \u4e49 \u76ca \u6ea2 \u8be3 \u8bae \u8c0a \u8bd1 \u5f02 \u7ffc \u7fcc \u7ece\ +D2F0 \u8335 \u836b \u56e0 \u6bb7 \u97f3 \u9634 \u59fb \u541f \u94f6 \u6deb \u5bc5 \u996e \u5c39 \u5f15 \u9690 \ +\u7b2c51\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D3A0 \u5370 \u82f1 \u6a31 \u5a74 \u9e70 \u5e94 \u7f28 \u83b9 \u8424 \u8425 \u8367 \u8747 \u8fce \u8d62 \u76c8\ +D3B0 \u5f71 \u9896 \u786c \u6620 \u54df \u62e5 \u4f63 \u81c3 \u75c8 \u5eb8 \u96cd \u8e0a \u86f9 \u548f \u6cf3 \u6d8c\ +D3C0 \u6c38 \u607f \u52c7 \u7528 \u5e7d \u4f18 \u60a0 \u5fe7 \u5c24 \u7531 \u90ae \u94c0 \u72b9 \u6cb9 \u6e38 \u9149\ +D3D0 \u6709 \u53cb \u53f3 \u4f51 \u91c9 \u8bf1 \u53c8 \u5e7c \u8fc2 \u6de4 \u4e8e \u76c2 \u6986 \u865e \u611a \u8206\ +D3E0 \u4f59 \u4fde \u903e \u9c7c \u6109 \u6e1d \u6e14 \u9685 \u4e88 \u5a31 \u96e8 \u4e0e \u5c7f \u79b9 \u5b87 \u8bed\ +D3F0 \u7fbd \u7389 \u57df \u828b \u90c1 \u5401 \u9047 \u55bb \u5cea \u5fa1 \u6108 \u6b32 \u72f1 \u80b2 \u8a89 \ +\u7b2c52\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D4A0 \u6d74 \u5bd3 \u88d5 \u9884 \u8c6b \u9a6d \u9e33 \u6e0a \u51a4 \u5143 \u57a3 \u8881 \u539f \u63f4 \u8f95\ +D4B0 \u56ed \u5458 \u5706 \u733f \u6e90 \u7f18 \u8fdc \u82d1 \u613f \u6028 \u9662 \u66f0 \u7ea6 \u8d8a \u8dc3 \u94a5\ +D4C0 \u5cb3 \u7ca4 \u6708 \u60a6 \u9605 \u8018 \u4e91 \u90e7 \u5300 \u9668 \u5141 \u8fd0 \u8574 \u915d \u6655 \u97f5\ +D4D0 \u5b55 \u531d \u7838 \u6742 \u683d \u54c9 \u707e \u5bb0 \u8f7d \u518d \u5728 \u54b1 \u6512 \u6682 \u8d5e \u8d43\ +D4E0 \u810f \u846c \u906d \u7cdf \u51ff \u85fb \u67a3 \u65e9 \u6fa1 \u86a4 \u8e81 \u566a \u9020 \u7682 \u7076 \u71e5\ +D4F0 \u8d23 \u62e9 \u5219 \u6cfd \u8d3c \u600e \u589e \u618e \u66fe \u8d60 \u624e \u55b3 \u6e23 \u672d \u8f67 \ +\u7b2c53\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D5A0 \u94e1 \u95f8 \u7728 \u6805 \u69a8 \u548b \u4e4d \u70b8 \u8bc8 \u6458 \u658b \u5b85 \u7a84 \u503a \u5be8\ +D5B0 \u77bb \u6be1 \u8a79 \u7c98 \u6cbe \u76cf \u65a9 \u8f97 \u5d2d \u5c55 \u8638 \u6808 \u5360 \u6218 \u7ad9 \u6e5b\ +D5C0 \u7efd \u6a1f \u7ae0 \u5f70 \u6f33 \u5f20 \u638c \u6da8 \u6756 \u4e08 \u5e10 \u8d26 \u4ed7 \u80c0 \u7634 \u969c\ +D5D0 \u62db \u662d \u627e \u6cbc \u8d75 \u7167 \u7f69 \u5146 \u8087 \u53ec \u906e \u6298 \u54f2 \u86f0 \u8f99 \u8005\ +D5E0 \u9517 \u8517 \u8fd9 \u6d59 \u73cd \u659f \u771f \u7504 \u7827 \u81fb \u8d1e \u9488 \u4fa6 \u6795 \u75b9 \u8bca\ +D5F0 \u9707 \u632f \u9547 \u9635 \u84b8 \u6323 \u7741 \u5f81 \u72f0 \u4e89 \u6014 \u6574 \u62ef \u6b63 \u653f \ +\u7b2c54\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D6A0 \u5e27 \u75c7 \u90d1 \u8bc1 \u829d \u679d \u652f \u5431 \u8718 \u77e5 \u80a2 \u8102 \u6c41 \u4e4b \u7ec7\ +D6B0 \u804c \u76f4 \u690d \u6b96 \u6267 \u503c \u4f84 \u5740 \u6307 \u6b62 \u8dbe \u53ea \u65e8 \u7eb8 \u5fd7 \u631a\ +D6C0 \u63b7 \u81f3 \u81f4 \u7f6e \u5e1c \u5cd9 \u5236 \u667a \u79e9 \u7a1a \u8d28 \u7099 \u75d4 \u6ede \u6cbb \u7a92\ +D6D0 \u4e2d \u76c5 \u5fe0 \u949f \u8877 \u7ec8 \u79cd \u80bf \u91cd \u4ef2 \u4f17 \u821f \u5468 \u5dde \u6d32 \u8bcc\ +D6E0 \u7ca5 \u8f74 \u8098 \u5e1a \u5492 \u76b1 \u5b99 \u663c \u9aa4 \u73e0 \u682a \u86db \u6731 \u732a \u8bf8 \u8bdb\ +D6F0 \u9010 \u7af9 \u70db \u716e \u62c4 \u77a9 \u5631 \u4e3b \u8457 \u67f1 \u52a9 \u86c0 \u8d2e \u94f8 \u7b51 \ +\u7b2c55\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D7A0 \u4f4f \u6ce8 \u795d \u9a7b \u6293 \u722a \u62fd \u4e13 \u7816 \u8f6c \u64b0 \u8d5a \u7bc6 \u6869 \u5e84\ +D7B0 \u88c5 \u5986 \u649e \u58ee \u72b6 \u690e \u9525 \u8ffd \u8d58 \u5760 \u7f00 \u8c06 \u51c6 \u6349 \u62d9 \u5353\ +D7C0 \u684c \u7422 \u8301 \u914c \u5544 \u7740 \u707c \u6d4a \u5179 \u54a8 \u8d44 \u59ff \u6ecb \u6dc4 \u5b5c \u7d2b\ +D7D0 \u4ed4 \u7c7d \u6ed3 \u5b50 \u81ea \u6e0d \u5b57 \u9b03 \u68d5 \u8e2a \u5b97 \u7efc \u603b \u7eb5 \u90b9 \u8d70\ +D7E0 \u594f \u63cd \u79df \u8db3 \u5352 \u65cf \u7956 \u8bc5 \u963b \u7ec4 \u94bb \u7e82 \u5634 \u9189 \u6700 \u7f6a\ +D7F0 \u5c0a \u9075 \u6628 \u5de6 \u4f50 \u67de \u505a \u4f5c \u5750 \u5ea7 \ +\u7b2c56\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D8A0 \u4e8d \u4e0c \u5140 \u4e10 \u5eff \u5345 \u4e15 \u4e98 \u4e1e \u9b32 \u5b6c \u5669 \u4e28 \u79ba \u4e3f\ +D8B0 \u5315 \u4e47 \u592d \u723b \u536e \u6c10 \u56df \u80e4 \u9997 \u6bd3 \u777e \u9f17 \u4e36 \u4e9f \u9f10 \u4e5c\ +D8C0 \u4e69 \u4e93 \u8288 \u5b5b \u556c \u560f \u4ec4 \u538d \u539d \u53a3 \u53a5 \u53ae \u9765 \u8d5d \u531a \u53f5\ +D8D0 \u5326 \u532e \u533e \u8d5c \u5366 \u5363 \u5202 \u5208 \u520e \u522d \u5233 \u523f \u5240 \u524c \u525e \u5261\ +D8E0 \u525c \u84af \u527d \u5282 \u5281 \u5290 \u5293 \u5182 \u7f54 \u4ebb \u4ec3 \u4ec9 \u4ec2 \u4ee8 \u4ee1 \u4eeb\ +D8F0 \u4ede \u4f1b \u4ef3 \u4f22 \u4f64 \u4ef5 \u4f25 \u4f27 \u4f09 \u4f2b \u4f5e \u4f67 \u6538 \u4f5a \u4f5d \ +\u7b2c57\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +D9A0 \u4f5f \u4f57 \u4f32 \u4f3d \u4f76 \u4f74 \u4f91 \u4f89 \u4f83 \u4f8f \u4f7e \u4f7b \u4faa \u4f7c \u4fac\ +D9B0 \u4f94 \u4fe6 \u4fe8 \u4fea \u4fc5 \u4fda \u4fe3 \u4fdc \u4fd1 \u4fdf \u4ff8 \u5029 \u504c \u4ff3 \u502c \u500f\ +D9C0 \u502e \u502d \u4ffe \u501c \u500c \u5025 \u5028 \u507e \u5043 \u5055 \u5048 \u504e \u506c \u507b \u50a5 \u50a7\ +D9D0 \u50a9 \u50ba \u50d6 \u5106 \u50ed \u50ec \u50e6 \u50ee \u5107 \u510b \u4edd \u6c3d \u4f58 \u4f65 \u4fce \u9fa0\ +D9E0 \u6c46 \u7c74 \u516e \u5dfd \u9ec9 \u9998 \u5181 \u5914 \u52f9 \u530d \u8a07 \u5310 \u51eb \u5919 \u5155 \u4ea0\ +D9F0 \u5156 \u4eb3 \u886e \u88a4 \u4eb5 \u8114 \u88d2 \u7980 \u5b34 \u8803 \u7fb8 \u51ab \u51b1 \u51bd \u51bc \ +\u7b2c58\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +DAA0 \u51c7 \u5196 \u51a2 \u51a5 \u8ba0 \u8ba6 \u8ba7 \u8baa \u8bb4 \u8bb5 \u8bb7 \u8bc2 \u8bc3 \u8bcb \u8bcf\ +DAB0 \u8bce \u8bd2 \u8bd3 \u8bd4 \u8bd6 \u8bd8 \u8bd9 \u8bdc \u8bdf \u8be0 \u8be4 \u8be8 \u8be9 \u8bee \u8bf0 \u8bf3\ +DAC0 \u8bf6 \u8bf9 \u8bfc \u8bff \u8c00 \u8c02 \u8c04 \u8c07 \u8c0c \u8c0f \u8c11 \u8c12 \u8c14 \u8c15 \u8c16 \u8c19\ +DAD0 \u8c1b \u8c18 \u8c1d \u8c1f \u8c20 \u8c21 \u8c25 \u8c27 \u8c2a \u8c2b \u8c2e \u8c2f \u8c32 \u8c33 \u8c35 \u8c36\ +DAE0 \u5369 \u537a \u961d \u9622 \u9621 \u9631 \u962a \u963d \u963c \u9642 \u9649 \u9654 \u965f \u9667 \u966c \u9672\ +DAF0 \u9674 \u9688 \u968d \u9697 \u96b0 \u9097 \u909b \u909d \u9099 \u90ac \u90a1 \u90b4 \u90b3 \u90b6 \u90ba \ +\u7b2c59\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +DBA0 \u90b8 \u90b0 \u90cf \u90c5 \u90be \u90d0 \u90c4 \u90c7 \u90d3 \u90e6 \u90e2 \u90dc \u90d7 \u90db \u90eb\ +DBB0 \u90ef \u90fe \u9104 \u9122 \u911e \u9123 \u9131 \u912f \u9139 \u9143 \u9146 \u520d \u5942 \u52a2 \u52ac \u52ad\ +DBC0 \u52be \u54ff \u52d0 \u52d6 \u52f0 \u53df \u71ee \u77cd \u5ef4 \u51f5 \u51fc \u9b2f \u53b6 \u5f01 \u755a \u5def\ +DBD0 \u574c \u57a9 \u57a1 \u587e \u58bc \u58c5 \u58d1 \u5729 \u572c \u572a \u5733 \u5739 \u572e \u572f \u575c \u573b\ +DBE0 \u5742 \u5769 \u5785 \u576b \u5786 \u577c \u577b \u5768 \u576d \u5776 \u5773 \u57ad \u57a4 \u578c \u57b2 \u57cf\ +DBF0 \u57a7 \u57b4 \u5793 \u57a0 \u57d5 \u57d8 \u57da \u57d9 \u57d2 \u57b8 \u57f4 \u57ef \u57f8 \u57e4 \u57dd \ +\u7b2c60\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +DCA0 \u580b \u580d \u57fd \u57ed \u5800 \u581e \u5819 \u5844 \u5820 \u5865 \u586c \u5881 \u5889 \u589a \u5880\ +DCB0 \u99a8 \u9f19 \u61ff \u8279 \u827d \u827f \u828f \u828a \u82a8 \u8284 \u828e \u8291 \u8297 \u8299 \u82ab \u82b8\ +DCC0 \u82be \u82b0 \u82c8 \u82ca \u82e3 \u8298 \u82b7 \u82ae \u82cb \u82cc \u82c1 \u82a9 \u82b4 \u82a1 \u82aa \u829f\ +DCD0 \u82c4 \u82ce \u82a4 \u82e1 \u8309 \u82f7 \u82e4 \u830f \u8307 \u82dc \u82f4 \u82d2 \u82d8 \u830c \u82fb \u82d3\ +DCE0 \u8311 \u831a \u8306 \u8314 \u8315 \u82e0 \u82d5 \u831c \u8351 \u835b \u835c \u8308 \u8392 \u833c \u8334 \u8331\ +DCF0 \u839b \u835e \u832f \u834f \u8347 \u8343 \u835f \u8340 \u8317 \u8360 \u832d \u833a \u8333 \u8366 \u8365 \ +\u7b2c61\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +DDA0 \u8368 \u831b \u8369 \u836c \u836a \u836d \u836e \u83b0 \u8378 \u83b3 \u83b4 \u83a0 \u83aa \u8393 \u839c\ +DDB0 \u8385 \u837c \u83b6 \u83a9 \u837d \u83b8 \u837b \u8398 \u839e \u83a8 \u83ba \u83bc \u83c1 \u8401 \u83e5 \u83d8\ +DDC0 \u5807 \u8418 \u840b \u83dd \u83fd \u83d6 \u841c \u8438 \u8411 \u8406 \u83d4 \u83df \u840f \u8403 \u83f8 \u83f9\ +DDD0 \u83ea \u83c5 \u83c0 \u8426 \u83f0 \u83e1 \u845c \u8451 \u845a \u8459 \u8473 \u8487 \u8488 \u847a \u8489 \u8478\ +DDE0 \u843c \u8446 \u8469 \u8476 \u848c \u848e \u8431 \u846d \u84c1 \u84cd \u84d0 \u84e6 \u84bd \u84d3 \u84ca \u84bf\ +DDF0 \u84ba \u84e0 \u84a1 \u84b9 \u84b4 \u8497 \u84e5 \u84e3 \u850c \u750d \u8538 \u84f0 \u8539 \u851f \u853a \ +\u7b2c62\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +DEA0 \u8556 \u853b \u84ff \u84fc \u8559 \u8548 \u8568 \u8564 \u855e \u857a \u77a2 \u8543 \u8572 \u857b \u85a4\ +DEB0 \u85a8 \u8587 \u858f \u8579 \u85ae \u859c \u8585 \u85b9 \u85b7 \u85b0 \u85d3 \u85c1 \u85dc \u85ff \u8627 \u8605\ +DEC0 \u8629 \u8616 \u863c \u5efe \u5f08 \u593c \u5941 \u8037 \u5955 \u595a \u5958 \u530f \u5c22 \u5c25 \u5c2c \u5c34\ +DED0 \u624c \u626a \u629f \u62bb \u62ca \u62da \u62d7 \u62ee \u6322 \u62f6 \u6339 \u634b \u6343 \u63ad \u63f6 \u6371\ +DEE0 \u637a \u638e \u63b4 \u636d \u63ac \u638a \u6369 \u63ae \u63bc \u63f2 \u63f8 \u63e0 \u63ff \u63c4 \u63de \u63ce\ +DEF0 \u6452 \u63c6 \u63be \u6445 \u6441 \u640b \u641b \u6420 \u640c \u6426 \u6421 \u645e \u6484 \u646d \u6496 \ +\u7b2c63\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +DFA0 \u647a \u64b7 \u64b8 \u6499 \u64ba \u64c0 \u64d0 \u64d7 \u64e4 \u64e2 \u6509 \u6525 \u652e \u5f0b \u5fd2\ +DFB0 \u7519 \u5f11 \u535f \u53f1 \u53fd \u53e9 \u53e8 \u53fb \u5412 \u5416 \u5406 \u544b \u5452 \u5453 \u5454 \u5456\ +DFC0 \u5443 \u5421 \u5457 \u5459 \u5423 \u5432 \u5482 \u5494 \u5477 \u5471 \u5464 \u549a \u549b \u5484 \u5476 \u5466\ +DFD0 \u549d \u54d0 \u54ad \u54c2 \u54b4 \u54d2 \u54a7 \u54a6 \u54d3 \u54d4 \u5472 \u54a3 \u54d5 \u54bb \u54bf \u54cc\ +DFE0 \u54d9 \u54da \u54dc \u54a9 \u54aa \u54a4 \u54dd \u54cf \u54de \u551b \u54e7 \u5520 \u54fd \u5514 \u54f3 \u5522\ +DFF0 \u5523 \u550f \u5511 \u5527 \u552a \u5567 \u558f \u55b5 \u5549 \u556d \u5541 \u5555 \u553f \u5550 \u553c \ +\u7b2c64\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E0A0 \u5537 \u5556 \u5575 \u5576 \u5577 \u5533 \u5530 \u555c \u558b \u55d2 \u5583 \u55b1 \u55b9 \u5588 \u5581\ +E0B0 \u559f \u557e \u55d6 \u5591 \u557b \u55df \u55bd \u55be \u5594 \u5599 \u55ea \u55f7 \u55c9 \u561f \u55d1 \u55eb\ +E0C0 \u55ec \u55d4 \u55e6 \u55dd \u55c4 \u55ef \u55e5 \u55f2 \u55f3 \u55cc \u55cd \u55e8 \u55f5 \u55e4 \u8f94 \u561e\ +E0D0 \u5608 \u560c \u5601 \u5624 \u5623 \u55fe \u5600 \u5627 \u562d \u5658 \u5639 \u5657 \u562c \u564d \u5662 \u5659\ +E0E0 \u565c \u564c \u5654 \u5686 \u5664 \u5671 \u566b \u567b \u567c \u5685 \u5693 \u56af \u56d4 \u56d7 \u56dd \u56e1\ +E0F0 \u56f5 \u56eb \u56f9 \u56ff \u5704 \u570a \u5709 \u571c \u5e0f \u5e19 \u5e14 \u5e11 \u5e31 \u5e3b \u5e3c \ +\u7b2c65\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E1A0 \u5e37 \u5e44 \u5e54 \u5e5b \u5e5e \u5e61 \u5c8c \u5c7a \u5c8d \u5c90 \u5c96 \u5c88 \u5c98 \u5c99 \u5c91\ +E1B0 \u5c9a \u5c9c \u5cb5 \u5ca2 \u5cbd \u5cac \u5cab \u5cb1 \u5ca3 \u5cc1 \u5cb7 \u5cc4 \u5cd2 \u5ce4 \u5ccb \u5ce5\ +E1C0 \u5d02 \u5d03 \u5d27 \u5d26 \u5d2e \u5d24 \u5d1e \u5d06 \u5d1b \u5d58 \u5d3e \u5d34 \u5d3d \u5d6c \u5d5b \u5d6f\ +E1D0 \u5d5d \u5d6b \u5d4b \u5d4a \u5d69 \u5d74 \u5d82 \u5d99 \u5d9d \u8c73 \u5db7 \u5dc5 \u5f73 \u5f77 \u5f82 \u5f87\ +E1E0 \u5f89 \u5f8c \u5f95 \u5f99 \u5f9c \u5fa8 \u5fad \u5fb5 \u5fbc \u8862 \u5f61 \u72ad \u72b0 \u72b4 \u72b7 \u72b8\ +E1F0 \u72c3 \u72c1 \u72ce \u72cd \u72d2 \u72e8 \u72ef \u72e9 \u72f2 \u72f4 \u72f7 \u7301 \u72f3 \u7303 \u72fa \ +\u7b2c66\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E2A0 \u72fb \u7317 \u7313 \u7321 \u730a \u731e \u731d \u7315 \u7322 \u7339 \u7325 \u732c \u7338 \u7331 \u7350\ +E2B0 \u734d \u7357 \u7360 \u736c \u736f \u737e \u821b \u5925 \u98e7 \u5924 \u5902 \u9963 \u9967 \u9968 \u9969 \u996a\ +E2C0 \u996b \u996c \u9974 \u9977 \u997d \u9980 \u9984 \u9987 \u998a \u998d \u9990 \u9991 \u9993 \u9994 \u9995 \u5e80\ +E2D0 \u5e91 \u5e8b \u5e96 \u5ea5 \u5ea0 \u5eb9 \u5eb5 \u5ebe \u5eb3 \u8d53 \u5ed2 \u5ed1 \u5edb \u5ee8 \u5eea \u81ba\ +E2E0 \u5fc4 \u5fc9 \u5fd6 \u5fcf \u6003 \u5fee \u6004 \u5fe1 \u5fe4 \u5ffe \u6005 \u6006 \u5fea \u5fed \u5ff8 \u6019\ +E2F0 \u6035 \u6026 \u601b \u600f \u600d \u6029 \u602b \u600a \u603f \u6021 \u6078 \u6079 \u607b \u607a \u6042 \ +\u7b2c67\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E3A0 \u606a \u607d \u6096 \u609a \u60ad \u609d \u6083 \u6092 \u608c \u609b \u60ec \u60bb \u60b1 \u60dd \u60d8\ +E3B0 \u60c6 \u60da \u60b4 \u6120 \u6126 \u6115 \u6123 \u60f4 \u6100 \u610e \u612b \u614a \u6175 \u61ac \u6194 \u61a7\ +E3C0 \u61b7 \u61d4 \u61f5 \u5fdd \u96b3 \u95e9 \u95eb \u95f1 \u95f3 \u95f5 \u95f6 \u95fc \u95fe \u9603 \u9604 \u9606\ +E3D0 \u9608 \u960a \u960b \u960c \u960d \u960f \u9612 \u9615 \u9616 \u9617 \u9619 \u961a \u4e2c \u723f \u6215 \u6c35\ +E3E0 \u6c54 \u6c5c \u6c4a \u6ca3 \u6c85 \u6c90 \u6c94 \u6c8c \u6c68 \u6c69 \u6c74 \u6c76 \u6c86 \u6ca9 \u6cd0 \u6cd4\ +E3F0 \u6cad \u6cf7 \u6cf8 \u6cf1 \u6cd7 \u6cb2 \u6ce0 \u6cd6 \u6cfa \u6ceb \u6cee \u6cb1 \u6cd3 \u6cef \u6cfe \ +\u7b2c68\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E4A0 \u6d39 \u6d27 \u6d0c \u6d43 \u6d48 \u6d07 \u6d04 \u6d19 \u6d0e \u6d2b \u6d4d \u6d2e \u6d35 \u6d1a \u6d4f\ +E4B0 \u6d52 \u6d54 \u6d33 \u6d91 \u6d6f \u6d9e \u6da0 \u6d5e \u6d93 \u6d94 \u6d5c \u6d60 \u6d7c \u6d63 \u6e1a \u6dc7\ +E4C0 \u6dc5 \u6dde \u6e0e \u6dbf \u6de0 \u6e11 \u6de6 \u6ddd \u6dd9 \u6e16 \u6dab \u6e0c \u6dae \u6e2b \u6e6e \u6e4e\ +E4D0 \u6e6b \u6eb2 \u6e5f \u6e86 \u6e53 \u6e54 \u6e32 \u6e25 \u6e44 \u6edf \u6eb1 \u6e98 \u6ee0 \u6f2d \u6ee2 \u6ea5\ +E4E0 \u6ea7 \u6ebd \u6ebb \u6eb7 \u6ed7 \u6eb4 \u6ecf \u6e8f \u6ec2 \u6e9f \u6f62 \u6f46 \u6f47 \u6f24 \u6f15 \u6ef9\ +E4F0 \u6f2f \u6f36 \u6f4b \u6f74 \u6f2a \u6f09 \u6f29 \u6f89 \u6f8d \u6f8c \u6f78 \u6f72 \u6f7c \u6f7a \u6fd1 \ +\u7b2c69\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E5A0 \u6fc9 \u6fa7 \u6fb9 \u6fb6 \u6fc2 \u6fe1 \u6fee \u6fde \u6fe0 \u6fef \u701a \u7023 \u701b \u7039 \u7035\ +E5B0 \u704f \u705e \u5b80 \u5b84 \u5b95 \u5b93 \u5ba5 \u5bb8 \u752f \u9a9e \u6434 \u5be4 \u5bee \u8930 \u5bf0 \u8e47\ +E5C0 \u8b07 \u8fb6 \u8fd3 \u8fd5 \u8fe5 \u8fee \u8fe4 \u8fe9 \u8fe6 \u8ff3 \u8fe8 \u9005 \u9004 \u900b \u9026 \u9011\ +E5D0 \u900d \u9016 \u9021 \u9035 \u9036 \u902d \u902f \u9044 \u9051 \u9052 \u9050 \u9068 \u9058 \u9062 \u905b \u66b9\ +E5E0 \u9074 \u907d \u9082 \u9088 \u9083 \u908b \u5f50 \u5f57 \u5f56 \u5f58 \u5c3b \u54ab \u5c50 \u5c59 \u5b71 \u5c63\ +E5F0 \u5c66 \u7fbc \u5f2a \u5f29 \u5f2d \u8274 \u5f3c \u9b3b \u5c6e \u5981 \u5983 \u598d \u59a9 \u59aa \u59a3 \ +\u7b2c70\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E6A0 \u5997 \u59ca \u59ab \u599e \u59a4 \u59d2 \u59b2 \u59af \u59d7 \u59be \u5a05 \u5a06 \u59dd \u5a08 \u59e3\ +E6B0 \u59d8 \u59f9 \u5a0c \u5a09 \u5a32 \u5a34 \u5a11 \u5a23 \u5a13 \u5a40 \u5a67 \u5a4a \u5a55 \u5a3c \u5a62 \u5a75\ +E6C0 \u80ec \u5aaa \u5a9b \u5a77 \u5a7a \u5abe \u5aeb \u5ab2 \u5ad2 \u5ad4 \u5ab8 \u5ae0 \u5ae3 \u5af1 \u5ad6 \u5ae6\ +E6D0 \u5ad8 \u5adc \u5b09 \u5b17 \u5b16 \u5b32 \u5b37 \u5b40 \u5c15 \u5c1c \u5b5a \u5b65 \u5b73 \u5b51 \u5b53 \u5b62\ +E6E0 \u9a75 \u9a77 \u9a78 \u9a7a \u9a7f \u9a7d \u9a80 \u9a81 \u9a85 \u9a88 \u9a8a \u9a90 \u9a92 \u9a93 \u9a96 \u9a98\ +E6F0 \u9a9b \u9a9c \u9a9d \u9a9f \u9aa0 \u9aa2 \u9aa3 \u9aa5 \u9aa7 \u7e9f \u7ea1 \u7ea3 \u7ea5 \u7ea8 \u7ea9 \ +\u7b2c71\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E7A0 \u7ead \u7eb0 \u7ebe \u7ec0 \u7ec1 \u7ec2 \u7ec9 \u7ecb \u7ecc \u7ed0 \u7ed4 \u7ed7 \u7edb \u7ee0 \u7ee1\ +E7B0 \u7ee8 \u7eeb \u7eee \u7eef \u7ef1 \u7ef2 \u7f0d \u7ef6 \u7efa \u7efb \u7efe \u7f01 \u7f02 \u7f03 \u7f07 \u7f08\ +E7C0 \u7f0b \u7f0c \u7f0f \u7f11 \u7f12 \u7f17 \u7f19 \u7f1c \u7f1b \u7f1f \u7f21 \u7f22 \u7f23 \u7f24 \u7f25 \u7f26\ +E7D0 \u7f27 \u7f2a \u7f2b \u7f2c \u7f2d \u7f2f \u7f30 \u7f31 \u7f32 \u7f33 \u7f35 \u5e7a \u757f \u5ddb \u753e \u9095\ +E7E0 \u738e \u7391 \u73ae \u73a2 \u739f \u73cf \u73c2 \u73d1 \u73b7 \u73b3 \u73c0 \u73c9 \u73c8 \u73e5 \u73d9 \u987c\ +E7F0 \u740a \u73e9 \u73e7 \u73de \u73ba \u73f2 \u740f \u742a \u745b \u7426 \u7425 \u7428 \u7430 \u742e \u742c \ +\u7b2c72\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E8A0 \u741b \u741a \u7441 \u745c \u7457 \u7455 \u7459 \u7477 \u746d \u747e \u749c \u748e \u7480 \u7481 \u7487\ +E8B0 \u748b \u749e \u74a8 \u74a9 \u7490 \u74a7 \u74d2 \u74ba \u97ea \u97eb \u97ec \u674c \u6753 \u675e \u6748 \u6769\ +E8C0 \u67a5 \u6787 \u676a \u6773 \u6798 \u67a7 \u6775 \u67a8 \u679e \u67ad \u678b \u6777 \u677c \u67f0 \u6809 \u67d8\ +E8D0 \u680a \u67e9 \u67b0 \u680c \u67d9 \u67b5 \u67da \u67b3 \u67dd \u6800 \u67c3 \u67b8 \u67e2 \u680e \u67c1 \u67fd\ +E8E0 \u6832 \u6833 \u6860 \u6861 \u684e \u6862 \u6844 \u6864 \u6883 \u681d \u6855 \u6866 \u6841 \u6867 \u6840 \u683e\ +E8F0 \u684a \u6849 \u6829 \u68b5 \u688f \u6874 \u6877 \u6893 \u686b \u68c2 \u696e \u68fc \u691f \u6920 \u68f9 \ +\u7b2c73\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +E9A0 \u6924 \u68f0 \u690b \u6901 \u6957 \u68e3 \u6910 \u6971 \u6939 \u6960 \u6942 \u695d \u6984 \u696b \u6980\ +E9B0 \u6998 \u6978 \u6934 \u69cc \u6987 \u6988 \u69ce \u6989 \u6966 \u6963 \u6979 \u699b \u69a7 \u69bb \u69ab \u69ad\ +E9C0 \u69d4 \u69b1 \u69c1 \u69ca \u69df \u6995 \u69e0 \u698d \u69ff \u6a2f \u69ed \u6a17 \u6a18 \u6a65 \u69f2 \u6a44\ +E9D0 \u6a3e \u6aa0 \u6a50 \u6a5b \u6a35 \u6a8e \u6a79 \u6a3d \u6a28 \u6a58 \u6a7c \u6a91 \u6a90 \u6aa9 \u6a97 \u6aab\ +E9E0 \u7337 \u7352 \u6b81 \u6b82 \u6b87 \u6b84 \u6b92 \u6b93 \u6b8d \u6b9a \u6b9b \u6ba1 \u6baa \u8f6b \u8f6d \u8f71\ +E9F0 \u8f72 \u8f73 \u8f75 \u8f76 \u8f78 \u8f77 \u8f79 \u8f7a \u8f7c \u8f7e \u8f81 \u8f82 \u8f84 \u8f87 \u8f8b \ +\u7b2c74\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +EAA0 \u8f8d \u8f8e \u8f8f \u8f98 \u8f9a \u8ece \u620b \u6217 \u621b \u621f \u6222 \u6221 \u6225 \u6224 \u622c\ +EAB0 \u81e7 \u74ef \u74f4 \u74ff \u750f \u7511 \u7513 \u6534 \u65ee \u65ef \u65f0 \u660a \u6619 \u6772 \u6603 \u6615\ +EAC0 \u6600 \u7085 \u66f7 \u661d \u6634 \u6631 \u6636 \u6635 \u8006 \u665f \u6654 \u6641 \u664f \u6656 \u6661 \u6657\ +EAD0 \u6677 \u6684 \u668c \u66a7 \u669d \u66be \u66db \u66dc \u66e6 \u66e9 \u8d32 \u8d33 \u8d36 \u8d3b \u8d3d \u8d40\ +EAE0 \u8d45 \u8d46 \u8d48 \u8d49 \u8d47 \u8d4d \u8d55 \u8d59 \u89c7 \u89ca \u89cb \u89cc \u89ce \u89cf \u89d0 \u89d1\ +EAF0 \u726e \u729f \u725d \u7266 \u726f \u727e \u727f \u7284 \u728b \u728d \u728f \u7292 \u6308 \u6332 \u63b0 \ +\u7b2c75\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +EBA0 \u643f \u64d8 \u8004 \u6bea \u6bf3 \u6bfd \u6bf5 \u6bf9 \u6c05 \u6c07 \u6c06 \u6c0d \u6c15 \u6c18 \u6c19\ +EBB0 \u6c1a \u6c21 \u6c29 \u6c24 \u6c2a \u6c32 \u6535 \u6555 \u656b \u724d \u7252 \u7256 \u7230 \u8662 \u5216 \u809f\ +EBC0 \u809c \u8093 \u80bc \u670a \u80bd \u80b1 \u80ab \u80ad \u80b4 \u80b7 \u80e7 \u80e8 \u80e9 \u80ea \u80db \u80c2\ +EBD0 \u80c4 \u80d9 \u80cd \u80d7 \u6710 \u80dd \u80eb \u80f1 \u80f4 \u80ed \u810d \u810e \u80f2 \u80fc \u6715 \u8112\ +EBE0 \u8c5a \u8136 \u811e \u812c \u8118 \u8132 \u8148 \u814c \u8153 \u8174 \u8159 \u815a \u8171 \u8160 \u8169 \u817c\ +EBF0 \u817d \u816d \u8167 \u584d \u5ab5 \u8188 \u8182 \u8191 \u6ed5 \u81a3 \u81aa \u81cc \u6726 \u81ca \u81bb \ +\u7b2c76\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +ECA0 \u81c1 \u81a6 \u6b24 \u6b37 \u6b39 \u6b43 \u6b46 \u6b59 \u98d1 \u98d2 \u98d3 \u98d5 \u98d9 \u98da \u6bb3\ +ECB0 \u5f40 \u6bc2 \u89f3 \u6590 \u9f51 \u6593 \u65bc \u65c6 \u65c4 \u65c3 \u65cc \u65ce \u65d2 \u65d6 \u7080 \u709c\ +ECC0 \u7096 \u709d \u70bb \u70c0 \u70b7 \u70ab \u70b1 \u70e8 \u70ca \u7110 \u7113 \u7116 \u712f \u7131 \u7173 \u715c\ +ECD0 \u7168 \u7145 \u7172 \u714a \u7178 \u717a \u7198 \u71b3 \u71b5 \u71a8 \u71a0 \u71e0 \u71d4 \u71e7 \u71f9 \u721d\ +ECE0 \u7228 \u706c \u7118 \u7166 \u71b9 \u623e \u623d \u6243 \u6248 \u6249 \u793b \u7940 \u7946 \u7949 \u795b \u795c\ +ECF0 \u7953 \u795a \u7962 \u7957 \u7960 \u796f \u7967 \u797a \u7985 \u798a \u799a \u79a7 \u79b3 \u5fd1 \u5fd0 \ +\u7b2c77\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +EDA0 \u603c \u605d \u605a \u6067 \u6041 \u6059 \u6063 \u60ab \u6106 \u610d \u615d \u61a9 \u619d \u61cb \u61d1\ +EDB0 \u6206 \u8080 \u807f \u6c93 \u6cf6 \u6dfc \u77f6 \u77f8 \u7800 \u7809 \u7817 \u7818 \u7811 \u65ab \u782d \u781c\ +EDC0 \u781d \u7839 \u783a \u783b \u781f \u783c \u7825 \u782c \u7823 \u7829 \u784e \u786d \u7856 \u7857 \u7826 \u7850\ +EDD0 \u7847 \u784c \u786a \u789b \u7893 \u789a \u7887 \u789c \u78a1 \u78a3 \u78b2 \u78b9 \u78a5 \u78d4 \u78d9 \u78c9\ +EDE0 \u78ec \u78f2 \u7905 \u78f4 \u7913 \u7924 \u791e \u7934 \u9f9b \u9ef9 \u9efb \u9efc \u76f1 \u7704 \u770d \u76f9\ +EDF0 \u7707 \u7708 \u771a \u7722 \u7719 \u772d \u7726 \u7735 \u7738 \u7750 \u7751 \u7747 \u7743 \u775a \u7768 \ +\u7b2c78\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +EEA0 \u7762 \u7765 \u777f \u778d \u777d \u7780 \u778c \u7791 \u779f \u77a0 \u77b0 \u77b5 \u77bd \u753a \u7540\ +EEB0 \u754e \u754b \u7548 \u755b \u7572 \u7579 \u7583 \u7f58 \u7f61 \u7f5f \u8a48 \u7f68 \u7f74 \u7f71 \u7f79 \u7f81\ +EEC0 \u7f7e \u76cd \u76e5 \u8832 \u9485 \u9486 \u9487 \u948b \u948a \u948c \u948d \u948f \u9490 \u9494 \u9497 \u9495\ +EED0 \u949a \u949b \u949c \u94a3 \u94a4 \u94ab \u94aa \u94ad \u94ac \u94af \u94b0 \u94b2 \u94b4 \u94b6 \u94b7 \u94b8\ +EEE0 \u94b9 \u94ba \u94bc \u94bd \u94bf \u94c4 \u94c8 \u94c9 \u94ca \u94cb \u94cc \u94cd \u94ce \u94d0 \u94d1 \u94d2\ +EEF0 \u94d5 \u94d6 \u94d7 \u94d9 \u94d8 \u94db \u94de \u94df \u94e0 \u94e2 \u94e4 \u94e5 \u94e7 \u94e8 \u94ea \ +\u7b2c79\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +EFA0 \u94e9 \u94eb \u94ee \u94ef \u94f3 \u94f4 \u94f5 \u94f7 \u94f9 \u94fc \u94fd \u94ff \u9503 \u9502 \u9506\ +EFB0 \u9507 \u9509 \u950a \u950d \u950e \u950f \u9512 \u9513 \u9514 \u9515 \u9516 \u9518 \u951b \u951d \u951e \u951f\ +EFC0 \u9522 \u952a \u952b \u9529 \u952c \u9531 \u9532 \u9534 \u9536 \u9537 \u9538 \u953c \u953e \u953f \u9542 \u9535\ +EFD0 \u9544 \u9545 \u9546 \u9549 \u954c \u954e \u954f \u9552 \u9553 \u9554 \u9556 \u9557 \u9558 \u9559 \u955b \u955e\ +EFE0 \u955f \u955d \u9561 \u9562 \u9564 \u9565 \u9566 \u9567 \u9568 \u9569 \u956a \u956b \u956c \u956f \u9571 \u9572\ +EFF0 \u9573 \u953a \u77e7 \u77ec \u96c9 \u79d5 \u79ed \u79e3 \u79eb \u7a06 \u5d47 \u7a03 \u7a02 \u7a1e \u7a14 \ +\u7b2c80\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F0A0 \u7a39 \u7a37 \u7a51 \u9ecf \u99a5 \u7a70 \u7688 \u768e \u7693 \u7699 \u76a4 \u74de \u74e0 \u752c \u9e20\ +F0B0 \u9e22 \u9e28 \u9e29 \u9e2a \u9e2b \u9e2c \u9e32 \u9e31 \u9e36 \u9e38 \u9e37 \u9e39 \u9e3a \u9e3e \u9e41 \u9e42\ +F0C0 \u9e44 \u9e46 \u9e47 \u9e48 \u9e49 \u9e4b \u9e4c \u9e4e \u9e51 \u9e55 \u9e57 \u9e5a \u9e5b \u9e5c \u9e5e \u9e63\ +F0D0 \u9e66 \u9e67 \u9e68 \u9e69 \u9e6a \u9e6b \u9e6c \u9e71 \u9e6d \u9e73 \u7592 \u7594 \u7596 \u75a0 \u759d \u75ac\ +F0E0 \u75a3 \u75b3 \u75b4 \u75b8 \u75c4 \u75b1 \u75b0 \u75c3 \u75c2 \u75d6 \u75cd \u75e3 \u75e8 \u75e6 \u75e4 \u75eb\ +F0F0 \u75e7 \u7603 \u75f1 \u75fc \u75ff \u7610 \u7600 \u7605 \u760c \u7617 \u760a \u7625 \u7618 \u7615 \u7619 \ +\u7b2c81\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F1A0 \u761b \u763c \u7622 \u7620 \u7640 \u762d \u7630 \u763f \u7635 \u7643 \u763e \u7633 \u764d \u765e \u7654\ +F1B0 \u765c \u7656 \u766b \u766f \u7fca \u7ae6 \u7a78 \u7a79 \u7a80 \u7a86 \u7a88 \u7a95 \u7aa6 \u7aa0 \u7aac \u7aa8\ +F1C0 \u7aad \u7ab3 \u8864 \u8869 \u8872 \u887d \u887f \u8882 \u88a2 \u88c6 \u88b7 \u88bc \u88c9 \u88e2 \u88ce \u88e3\ +F1D0 \u88e5 \u88f1 \u891a \u88fc \u88e8 \u88fe \u88f0 \u8921 \u8919 \u8913 \u891b \u890a \u8934 \u892b \u8936 \u8941\ +F1E0 \u8966 \u897b \u758b \u80e5 \u76b2 \u76b4 \u77dc \u8012 \u8014 \u8016 \u801c \u8020 \u8022 \u8025 \u8026 \u8027\ +F1F0 \u8029 \u8028 \u8031 \u800b \u8035 \u8043 \u8046 \u804d \u8052 \u8069 \u8071 \u8983 \u9878 \u9880 \u9883 \ +\u7b2c82\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F2A0 \u9889 \u988c \u988d \u988f \u9894 \u989a \u989b \u989e \u989f \u98a1 \u98a2 \u98a5 \u98a6 \u864d \u8654\ +F2B0 \u866c \u866e \u867f \u867a \u867c \u867b \u86a8 \u868d \u868b \u86ac \u869d \u86a7 \u86a3 \u86aa \u8693 \u86a9\ +F2C0 \u86b6 \u86c4 \u86b5 \u86ce \u86b0 \u86ba \u86b1 \u86af \u86c9 \u86cf \u86b4 \u86e9 \u86f1 \u86f2 \u86ed \u86f3\ +F2D0 \u86d0 \u8713 \u86de \u86f4 \u86df \u86d8 \u86d1 \u8703 \u8707 \u86f8 \u8708 \u870a \u870d \u8709 \u8723 \u873b\ +F2E0 \u871e \u8725 \u872e \u871a \u873e \u8748 \u8734 \u8731 \u8729 \u8737 \u873f \u8782 \u8722 \u877d \u877e \u877b\ +F2F0 \u8760 \u8770 \u874c \u876e \u878b \u8753 \u8763 \u877c \u8764 \u8759 \u8765 \u8793 \u87af \u87a8 \u87d2 \ +\u7b2c83\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F3A0 \u87c6 \u8788 \u8785 \u87ad \u8797 \u8783 \u87ab \u87e5 \u87ac \u87b5 \u87b3 \u87cb \u87d3 \u87bd \u87d1\ +F3B0 \u87c0 \u87ca \u87db \u87ea \u87e0 \u87ee \u8816 \u8813 \u87fe \u880a \u881b \u8821 \u8839 \u883c \u7f36 \u7f42\ +F3C0 \u7f44 \u7f45 \u8210 \u7afa \u7afd \u7b08 \u7b03 \u7b04 \u7b15 \u7b0a \u7b2b \u7b0f \u7b47 \u7b38 \u7b2a \u7b19\ +F3D0 \u7b2e \u7b31 \u7b20 \u7b25 \u7b24 \u7b33 \u7b3e \u7b1e \u7b58 \u7b5a \u7b45 \u7b75 \u7b4c \u7b5d \u7b60 \u7b6e\ +F3E0 \u7b7b \u7b62 \u7b72 \u7b71 \u7b90 \u7ba6 \u7ba7 \u7bb8 \u7bac \u7b9d \u7ba8 \u7b85 \u7baa \u7b9c \u7ba2 \u7bab\ +F3F0 \u7bb4 \u7bd1 \u7bc1 \u7bcc \u7bdd \u7bda \u7be5 \u7be6 \u7bea \u7c0c \u7bfe \u7bfc \u7c0f \u7c16 \u7c0b \ +\u7b2c84\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F4A0 \u7c1f \u7c2a \u7c26 \u7c38 \u7c41 \u7c40 \u81fe \u8201 \u8202 \u8204 \u81ec \u8844 \u8221 \u8222 \u8223\ +F4B0 \u822d \u822f \u8228 \u822b \u8238 \u823b \u8233 \u8234 \u823e \u8244 \u8249 \u824b \u824f \u825a \u825f \u8268\ +F4C0 \u887e \u8885 \u8888 \u88d8 \u88df \u895e \u7f9d \u7f9f \u7fa7 \u7faf \u7fb0 \u7fb2 \u7c7c \u6549 \u7c91 \u7c9d\ +F4D0 \u7c9c \u7c9e \u7ca2 \u7cb2 \u7cbc \u7cbd \u7cc1 \u7cc7 \u7ccc \u7ccd \u7cc8 \u7cc5 \u7cd7 \u7ce8 \u826e \u66a8\ +F4E0 \u7fbf \u7fce \u7fd5 \u7fe5 \u7fe1 \u7fe6 \u7fe9 \u7fee \u7ff3 \u7cf8 \u7d77 \u7da6 \u7dae \u7e47 \u7e9b \u9eb8\ +F4F0 \u9eb4 \u8d73 \u8d84 \u8d94 \u8d91 \u8db1 \u8d67 \u8d6d \u8c47 \u8c49 \u914a \u9150 \u914e \u914f \u9164 \ +\u7b2c85\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F5A0 \u9162 \u9161 \u9170 \u9169 \u916f \u917d \u917e \u9172 \u9174 \u9179 \u918c \u9185 \u9190 \u918d \u9191\ +F5B0 \u91a2 \u91a3 \u91aa \u91ad \u91ae \u91af \u91b5 \u91b4 \u91ba \u8c55 \u9e7e \u8db8 \u8deb \u8e05 \u8e59 \u8e69\ +F5C0 \u8db5 \u8dbf \u8dbc \u8dba \u8dc4 \u8dd6 \u8dd7 \u8dda \u8dde \u8dce \u8dcf \u8ddb \u8dc6 \u8dec \u8df7 \u8df8\ +F5D0 \u8de3 \u8df9 \u8dfb \u8de4 \u8e09 \u8dfd \u8e14 \u8e1d \u8e1f \u8e2c \u8e2e \u8e23 \u8e2f \u8e3a \u8e40 \u8e39\ +F5E0 \u8e35 \u8e3d \u8e31 \u8e49 \u8e41 \u8e42 \u8e51 \u8e52 \u8e4a \u8e70 \u8e76 \u8e7c \u8e6f \u8e74 \u8e85 \u8e8f\ +F5F0 \u8e94 \u8e90 \u8e9c \u8e9e \u8c78 \u8c82 \u8c8a \u8c85 \u8c98 \u8c94 \u659b \u89d6 \u89de \u89da \u89dc \ +\u7b2c86\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F6A0 \u89e5 \u89eb \u89ef \u8a3e \u8b26 \u9753 \u96e9 \u96f3 \u96ef \u9706 \u9701 \u9708 \u970f \u970e \u972a\ +F6B0 \u972d \u9730 \u973e \u9f80 \u9f83 \u9f85 \u9f86 \u9f87 \u9f88 \u9f89 \u9f8a \u9f8c \u9efe \u9f0b \u9f0d \u96b9\ +F6C0 \u96bc \u96bd \u96ce \u96d2 \u77bf \u96e0 \u928e \u92ae \u92c8 \u933e \u936a \u93ca \u938f \u943e \u946b \u9c7f\ +F6D0 \u9c82 \u9c85 \u9c86 \u9c87 \u9c88 \u7a23 \u9c8b \u9c8e \u9c90 \u9c91 \u9c92 \u9c94 \u9c95 \u9c9a \u9c9b \u9c9e\ +F6E0 \u9c9f \u9ca0 \u9ca1 \u9ca2 \u9ca3 \u9ca5 \u9ca6 \u9ca7 \u9ca8 \u9ca9 \u9cab \u9cad \u9cae \u9cb0 \u9cb1 \u9cb2\ +F6F0 \u9cb3 \u9cb4 \u9cb5 \u9cb6 \u9cb7 \u9cba \u9cbb \u9cbc \u9cbd \u9cc4 \u9cc5 \u9cc6 \u9cc7 \u9cca \u9ccb \ +\u7b2c87\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ +F7A0 \u9ccc \u9ccd \u9cce \u9ccf \u9cd0 \u9cd3 \u9cd4 \u9cd5 \u9cd7 \u9cd8 \u9cd9 \u9cdc \u9cdd \u9cdf \u9ce2\ +F7B0 \u977c \u9785 \u9791 \u9792 \u9794 \u97af \u97ab \u97a3 \u97b2 \u97b4 \u9ab1 \u9ab0 \u9ab7 \u9e58 \u9ab6 \u9aba\ +F7C0 \u9abc \u9ac1 \u9ac0 \u9ac5 \u9ac2 \u9acb \u9acc \u9ad1 \u9b45 \u9b43 \u9b47 \u9b49 \u9b48 \u9b4d \u9b51 \u98e8\ +F7D0 \u990d \u992e \u9955 \u9954 \u9adf \u9ae1 \u9ae6 \u9aef \u9aeb \u9afb \u9aed \u9af9 \u9b08 \u9b0f \u9b13 \u9b1f\ +F7E0 \u9b23 \u9ebd \u9ebe \u7e3b \u9e82 \u9e87 \u9e88 \u9e8b \u9e92 \u93d6 \u9e9d \u9e9f \u9edb \u9edc \u9edd \u9ee0\ +F7F0 \u9edf \u9ee2 \u9ee9 \u9ee7 \u9ee5 \u9eea \u9eef \u9f22 \u9f2c \u9f2f \u9f39 \u9f37 \u9f3d \u9f3e \u9f44 \ +" + +constexpr const char big_test_string_utf8[] = _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8; diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 353f379c..b029e0c3 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -27,149 +27,155 @@ #pragma once -#include #include +#include +#include +#include + +#define _CPPP_API + #ifndef _CPPP_API #define _CPPP_API @CPPP_API@ #endif #if _MSC_VER >= 1600 -/* Use UTF-8 to decode this file. */ #pragma execution_character_set("utf-8") #endif namespace cppp::base::reiconv { + using cppp::base::encoding::Encodings; + + template + struct BasicBuffer + { + /** + * @brief Buffer pointer. + */ + ByteType *buffer; + + /** + * @brief Buffer size. + */ + std::size_t length; + + /** + * @brief Construct a buffer. + */ + BasicBuffer(ByteType *buffer, std::size_t length) : buffer(buffer), length(length) {} + + /** + * @brief Construct a buffer from a string. + */ + BasicBuffer(const std::string &str) : buffer(reinterpret_cast(str.data())), length(str.size()) {} + + /** + * @brief Construct a buffer from a string. + */ + BasicBuffer(const char* str) : buffer(reinterpret_cast(str)), length(std::strlen(str)) {} + }; + /** - * @brief Version infomation. (major<<8) + minor + * @brief Buffer for input. */ - extern _CPPP_API int reiconv_version; + using InputBuffer = BasicBuffer; /** - * @brief Convert a ascii-only string to UTF-16. - * @param str Source string. - * @param length Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @warning Don't forget to free the result memory! - * @return Return true if successful, otherwise return false. + * @brief Buffer for output. */ - extern _CPPP_API bool ascii_mbtou16(const char *str, size_t length, - char16_t **resultp, size_t *lengthp); + using OutputBuffer = BasicBuffer; /** - * @brief Convert a ascii-only string to UTF-32. - * @param str Source string. - * @param length Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @warning Don't forget to free the result memory! - * @return Return true if successful, otherwise return false. + * @brief Encoding class. */ - extern _CPPP_API bool ascii_mbtou32(const char *str, size_t length, - char32_t **resultp, size_t *lengthp); + class Encoding + { + private: + /** + * @brief Encoding index. This is the internal representation of the encoding. + */ + int _index; + + public: + + /** + * @brief Find the encoding by name. IANA names are recommended. + * @throw std::invalid_argument if the encoding is not found. + */ + _CPPP_API Encoding(const char* const name); + + /** + * @brief Find the encoding by name. IANA names are recommended. + * @throw std::invalid_argument if the encoding is not found. + */ + _CPPP_API Encoding(const std::string& name) : Encoding(name.c_str()) {} + + /** + * @brief Find the encoding by codepage. Supports Windows and z/OS codepages. + * @throw std::invalid_argument if the encoding is not found. + */ + _CPPP_API Encoding(const int codepage); + + /** + * @brief Find the encoding by index. + * @throw std::invalid_argument if the encoding is not found. + */ + constexpr Encoding(const Encodings index) : _index(static_cast(index)) {} + + /** + * @brief Get the encoding index. + */ + operator int() const noexcept { return _index; } + + /** + * @brief Get the encoding name. + */ + bool operator==(const Encoding other) const noexcept { return _index == other._index; } + }; /** - * @brief Converts an entire string from one encoding to another, - * and supports autodetect encodings on input. - * - * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and - * '//TRANSLIT'. except that FROMCODE may be one of the values. - * - * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 - * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS - * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not nullptr, the output string is stored in - * *resultp; malloc/realloc is used to allocate the result. - * - * @note This function does not treat zero characters specially. - * @param tocode Target encoding. - * @param fromcode From encoding. - * @param start Source string. - * @param inlength Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. + * @brief Version information. */ - extern _CPPP_API int convert(const char *tocode, const char *fromcode, - const char *start, size_t inlength, - char **resultp, size_t *lengthp, bool strict); - -#if 0 + struct VersionInfo + { + /** + * @brief Major version. + */ + int major; + + /** + * @brief Minor version. + */ + int minor; + + /** + * @brief Patch version. + */ + int patch; + }; /** - * @brief Converts an entire string from one encoding to another, - * and supports autodetect encodings on input. - * - * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and - * '//TRANSLIT'. except that FROMCODE may be one of the values. - * - * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 - * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS - * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not nullptr, the output string is stored in - * *resultp; malloc/realloc is used to allocate the result. - * - * @note This function does not treat zero characters specially. - * @param tocode Target encoding. - * @param fromcode From encoding. - * @param start Source string. - * @param inlength Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. + * @brief Version infomation. */ - extern _CPPP_API int convert(const char16_t *tocode, const char16_t *fromcode, - const char *start, size_t inlength, - char **resultp, size_t *lengthp); + extern _CPPP_API VersionInfo version; /** - * @brief Converts an entire string from one encoding to another, - * and supports autodetect encodings on input. + * @brief Converts an string from one encoding to another, supports encodings autodetecting. * * @note Converts a memory region given in encoding FROMCODE to a new memory - * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support '//IGNORE' and - * '//TRANSLIT'. except that FROMCODE may be one of the values. + * region in encoding TOCODE. FROMCODE and TOCODE are as for iconv_open(3), we don't support + * '//IGNORE' and '//TRANSLIT'. + * malloc/realloc is used to allocate the result. * - * @note "autodetect_utf8" supports ISO-8859-1 and UTF-8 - * @note "autodetect_jp" supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS - * @note "autodetect_kr" supports EUC-KR and ISO-2022-KR - * @note If resultp is not nullptr, the output string is stored in - * *resultp; malloc/realloc is used to allocate the result. - * - * @note This function does not treat zero characters specially. - * @param tocode Target encoding. - * @param fromcode From encoding. - * @param start Source string. - * @param inlength Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. - */ - extern _CPPP_API int convert(const char32_t *tocode, const char32_t *fromcode, - const char *start, size_t inlength, - char **resultp, size_t *lengthp); - - /** - * @brief Converts an entire string from one encoding to another. * @note This function does not treat zero characters specially. - * @param tocode_cp Target encoding codepage. - * @param fromcode_cp From encoding codepage. - * @param start Source string. - * @param inlength Source string length. - * @param resultp Result memory pointer. - * @param lengthp Pointer to a variable that stores the length of the result. - * @param strict Strict mode, if false, will ignore the invalid characters. - * @return Return 0 if successful, otherwise return errno and errno set. Particular errno values: EILSEQ and ENOMEM. + * @param from The input buffer encoding. + * @param to The output buffer encoding. + * @param input Input buffer. + * @param strict If false. We will ignore all conversion errors. Same as iconv(3) '//IGNORE'. + * @return Return the output buffer. + * @throw std::system_error if an error occurs. */ - extern _CPPP_API int convert(int tocode_cp, int fromcode_cp, - const char *start, size_t inlength, - char **resultp, size_t *lengthp, - bool strict = true); - -#endif + extern _CPPP_API OutputBuffer convert(Encoding from, Encoding to, InputBuffer input, bool strict = true); } // namespace cppp::base::reiconv diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 59e68f04..ae34d3e9 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -21,9 +21,10 @@ #include #include -#include #include #include +#include +#include namespace cppp::base::reiconv { @@ -54,6 +55,7 @@ namespace cppp::base::reiconv enum { #include "encodings.h.snippet" + ei_end }; #undef DEFINDEX @@ -87,7 +89,6 @@ namespace cppp::base::reiconv #undef DEFENCODING #undef DEFCODEPAGE - // Conversion loops. #include "loops.h" @@ -100,8 +101,7 @@ namespace cppp::base::reiconv */ #include "generated/aliases.h" -#pragma region hidden-api - +#pragma region Utility functions. static inline int lookup_by_codepage(int codepage) { auto it = codepage_to_eindex.find(codepage); @@ -176,6 +176,10 @@ namespace cppp::base::reiconv return cd; } +#pragma endregion + +#pragma region Hidden APIs. + _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict) { unsigned int to_index = lookup_by_name(tocode); @@ -212,66 +216,91 @@ namespace cppp::base::reiconv { conv_t cd = (conv_t)icd; if (inbuf == nullptr || *inbuf == nullptr) + { return cd->lfuncs.loop_reset(icd, outbuf, outbytesleft); + } else + { return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); + } } - _CPPP_API int iconv_close(iconv_t icd) + _CPPP_API void iconv_close(iconv_t icd) { - conv_t cd = (conv_t)icd; - free(cd); - return 0; + free(icd); } #pragma endregion - /* version number: (major<<8) + minor */ - _CPPP_API int reiconv_version = (3 << 8) + 0; + _CPPP_API VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; + +#pragma region Encoding class implementation. + + _CPPP_API Encoding::Encoding(const char* const name) + { + int index = lookup_by_name(name); + if (index == -1) + { + throw std::invalid_argument("Invalid encoding name."); + } + this->_index = index; + } + + _CPPP_API Encoding::Encoding(const int codepage) + { + int index = lookup_by_codepage(codepage); + if (index == -1) + { + throw std::invalid_argument("Invalid codepage."); + } + this->_index = index; + } + +#pragma endregion - constexpr const size_t TEMP_BUFFER_SIZE = 4096; + constexpr const std::size_t TEMP_BUFFER_SIZE = 4096; _CPPP_API int convert(iconv_t cd, const char *start, size_t inlength, char **resultp, size_t *lengthp) { size_t length; char* result; - /* Determine the length we need. */ + + // Determine the length we need. + size_t count = 0; + char tmpbuf[TEMP_BUFFER_SIZE]; + char* inptr = (char*)start; + size_t insize = inlength; + while (insize > 0) { - size_t count = 0; - char tmpbuf[TEMP_BUFFER_SIZE]; - char* inptr = (char*)start; - size_t insize = inlength; - while (insize > 0) + char *outptr = tmpbuf; + size_t outsize = TEMP_BUFFER_SIZE; + size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1) && errno != E2BIG) { - char *outptr = tmpbuf; - size_t outsize = TEMP_BUFFER_SIZE; - size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (size_t)(-1) && errno != E2BIG) - { - return (errno == EINVAL ? EILSEQ : errno); - } - count += outptr - tmpbuf; + return (errno == EINVAL ? EILSEQ : errno); } + count += outptr - tmpbuf; + } + { + char *outptr = tmpbuf; + size_t outsize = TEMP_BUFFER_SIZE; + size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); + if (res == (size_t)(-1)) { - char *outptr = tmpbuf; - size_t outsize = TEMP_BUFFER_SIZE; - size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (size_t)(-1)) - { - return errno; - } - count += outptr - tmpbuf; + return errno; } - length = count; + count += outptr - tmpbuf; } + length = count; + if (lengthp != nullptr) { *lengthp = length; } if (resultp == nullptr) { - /* If resultp is nullptrptr, we can't save results. */ + // If resultp is nullptrptr, we can't save results. return 0; } result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp, length)); @@ -282,9 +311,11 @@ namespace cppp::base::reiconv } if (result == nullptr) { - return (errno = ENOMEM); + return errno = ENOMEM; } - iconv(cd, nullptr, nullptr, nullptr, nullptr); /* return to the initial state */ + // Return to the initial state. + iconv(cd, nullptr, nullptr, nullptr, nullptr); + /* Do the conversion for real. */ { char* inptr = (char*)start; @@ -321,138 +352,26 @@ namespace cppp::base::reiconv return 0; } - _CPPP_API int convert(const char* tocode, const char* fromcode, const char* start, - size_t inlength, char** resultp, size_t* lengthp, bool strict) + _CPPP_API OutputBuffer convert(Encoding from, Encoding to, InputBuffer input, bool strict) { - iconv_t cd = iconv_open(tocode, fromcode, strict); + iconv_t cd = iconv_open_from_index(to, from, strict); if (cd == (iconv_t)(-1)) { - if (errno != EINVAL) - { - return -1; - } - -#pragma region autodetect - /* Unsupported fromcode or tocode. Check whether the caller requested - autodetection. */ - if (!strcmp(fromcode, "autodetect_utf8")) - { - int ret; - /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would - be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1. */ - ret = convert(tocode, "UTF-8", start, inlength, resultp, lengthp, strict); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - ret = convert(tocode, "ISO-8859-1", start, inlength, resultp, lengthp, strict); - return ret; - } - if (!strcmp(fromcode, "autodetect_jp")) - { - int ret; - /* Try 7-bit encoding first. If the input contains bytes >= 0x80, - it will fail. */ - ret = convert(tocode, "ISO-2022-JP-2", start, inlength, resultp, lengthp, strict); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - /* Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This - is unavoidable. People will condemn SHIFT_JIS. - If we tried SHIFT_JIS first, then some short EUC-JP inputs would - come out wrong, and people would condemn EUC-JP and Unix, which - would not be good. */ - ret = convert(tocode, "EUC-JP", start, inlength, resultp, lengthp, strict); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - /* Finally try SHIFT_JIS. */ - ret = convert(tocode, "SHIFT_JIS", start, inlength, resultp, lengthp, strict); - return ret; - } - if (!strcmp(fromcode, "autodetect_kr")) - { - int ret; - /* Try 7-bit encoding first. If the input contains bytes >= 0x80, - it will fail. */ - ret = convert(tocode, "ISO-2022-KR", start, inlength, resultp, lengthp, strict); - if (!(ret < 0 && errno == EILSEQ)) - return ret; - /* Finally try EUC-KR. */ - ret = convert(tocode, "EUC-KR", start, inlength, resultp, lengthp, strict); - return ret; - } -#pragma endregion - - errno = EINVAL; - return -1; + throw std::system_error(errno, std::system_category(), "iconv_open"); } - int ret = convert(cd, start, inlength, resultp, lengthp); + char* result = nullptr; + std::size_t length = 0; + int err = convert(cd, (const char*)input.buffer, input.length, &result, &length); iconv_close(cd); - return ret; - } - _CPPP_API int convert(int tocode_cp, int fromcode_cp, const char* start, - size_t inlength, char** resultp, size_t* lengthp, bool strict) - { - iconv_t cd = iconv_open(tocode_cp, fromcode_cp, strict); - if (cd == (iconv_t)(-1)) + if (err != 0) { - return errno; - } - - int ret = convert(cd, start, inlength, resultp, lengthp); - iconv_close(cd); - return ret; - } - - _CPPP_API bool ascii_mbtou16(const char* str, size_t length, char16_t** resultp, size_t* lengthp) - { - if (resultp == nullptr || lengthp == nullptr) - { - errno = EINVAL; - return false; - } - - char16_t* result = (char16_t*)malloc(length * sizeof(char16_t)); - if (result == nullptr) - { - errno = ENOMEM; - return false; + free(result); + throw std::system_error(err, std::system_category(), "iconv"); } - size_t count = 0; - for (size_t i = 0; i < length; i++) - { - result[count++] = (char16_t)str[i]; - } - - *resultp = result; - *lengthp = count; - return true; - } - - _CPPP_API bool ascii_mbtou32(const char* str, size_t length, char32_t** resultp, size_t* lengthp) - { - if (resultp == nullptr || lengthp == nullptr) - { - errno = EINVAL; - return false; - } - - char32_t* result = (char32_t*)malloc(length * sizeof(char32_t)); - if (result == nullptr) - { - errno = ENOMEM; - return false; - } - - size_t count = 0; - for (size_t i = 0; i < length; i++) - { - result[count++] = (char32_t)str[i]; - } - - *resultp = result; - *lengthp = count; - return true; + return {(std::byte*)result, length}; } } // namespace cppp::base::reiconv diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index 47d409d3..f518a78e 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -38,5 +38,5 @@ namespace cppp::base::reiconv extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict); extern _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - extern _CPPP_API int iconv_close(iconv_t cd); + extern _CPPP_API void iconv_close(iconv_t cd); } // namespace cppp::base::reiconv \ No newline at end of file diff --git a/tests/check-ascii-converters.cpp b/tests/check-ascii-converters.cpp deleted file mode 100644 index e5dac960..00000000 --- a/tests/check-ascii-converters.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2023 The C++ Plus Project. - * This file is part of the cppp-reiconv Library. - * - * The cppp-reiconv Library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv Library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file LICENSE. - * If not, see . - */ - -/* - Complete check of function 'ascii_xxtoxx'. -*/ - -#include - -#include "utils.hpp" -#include -using namespace cppp::base::reiconv; - -#define ascii_map(type) { \ - (type)0x00, (type)0x01, (type)0x02, (type)0x03, (type)0x04, (type)0x05, \ - (type)0x06, (type)0x07, (type)0x08, (type)0x09, (type)0x0A, (type)0x0B, \ - (type)0x0C, (type)0x0D, (type)0x0E, (type)0x0F, (type)0x10, (type)0x11, \ - (type)0x12, (type)0x13, (type)0x14, (type)0x15, (type)0x16, (type)0x17, \ - (type)0x18, (type)0x19, (type)0x1A, (type)0x1B, (type)0x1C, (type)0x1D, \ - (type)0x1E, (type)0x1F, (type)0x20, (type)0x21, (type)0x22, (type)0x23, \ - (type)0x24, (type)0x25, (type)0x26, (type)0x27, (type)0x28, (type)0x29, \ - (type)0x2A, (type)0x2B, (type)0x2C, (type)0x2D, (type)0x2E, (type)0x2F, \ - (type)0x30, (type)0x31, (type)0x32, (type)0x33, (type)0x34, (type)0x35, \ - (type)0x36, (type)0x37, (type)0x38, (type)0x39, (type)0x3A, (type)0x3B, \ - (type)0x3C, (type)0x3D, (type)0x3E, (type)0x3F, (type)0x40, (type)0x41, \ - (type)0x42, (type)0x43, (type)0x44, (type)0x45, (type)0x46, (type)0x47, \ - (type)0x48, (type)0x49, (type)0x4A, (type)0x4B, (type)0x4C, (type)0x4D, \ - (type)0x4E, (type)0x4F, (type)0x50, (type)0x51, (type)0x52, (type)0x53, \ - (type)0x54, (type)0x55, (type)0x56, (type)0x57, (type)0x58, (type)0x59, \ - (type)0x5A, (type)0x5B, (type)0x5C, (type)0x5D, (type)0x5E, (type)0x5F, \ - (type)0x60, (type)0x61, (type)0x62, (type)0x63, (type)0x64, (type)0x65, \ - (type)0x66, (type)0x67, (type)0x68, (type)0x69, (type)0x6A, (type)0x6B, \ - (type)0x6C, (type)0x6D, (type)0x6E, (type)0x6F, (type)0x70, (type)0x71, \ - (type)0x72, (type)0x73, (type)0x74, (type)0x75, (type)0x76, (type)0x77, \ - (type)0x78, (type)0x79, (type)0x7A, (type)0x7B, (type)0x7C, (type)0x7D, \ - (type)0x7E, (type)0x7F } - -const char mbstr[] = ascii_map(char); -const char16_t u16str[] = ascii_map(char16_t); -const char32_t u32str[] = ascii_map(char32_t); - -void check_mbtou16() -{ - char16_t* res = nullptr; - size_t len = 0; - bool ret = ascii_mbtou16(mbstr, sizeof(mbstr), &res, &len); - if (!ret) - { - error("ascii_mbtou16", "Failed to convert."); - } - for(size_t i = 0; i < len; ++i) - { - if (res[i] != u16str[i]) - { - error("check_mbtou16", "Result is not correct. (at " + std::to_string(i) + ", " + std::to_string(res[i]) + " != " + std::to_string(u16str[i]) + ")"); - } - } - free(res); - success("check_mbtou16", "Conversion from multi-bytes to UTF-16 success."); -} - -void check_mbtou32() -{ - char32_t* res = nullptr; - size_t len = 0; - bool ret = ascii_mbtou32(mbstr, sizeof(mbstr), &res, &len); - if (!ret) - { - error("ascii_mbtou32", "Failed to convert."); - } - for(size_t i = 0; i < len; ++i) - { - if (res[i] != u32str[i]) - { - error("ascii_mbtou32", "Result is not correct. (at " + std::to_string(i) + ", " + std::to_string(res[i]) + " != " + std::to_string(u32str[i]) + ")"); - } - } - free(res); - success("check_mbtou32", "Conversion from multi-bytes to UTF-32 success."); -} - -int main() -{ - check_mbtou16(); - check_mbtou32(); - return 0; -} diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 1d0bbf6a..2e795c16 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -40,18 +40,15 @@ namespace test { void main(const std::string& from, const std::string& to, const std::string& input_file_path, const std::string& output_file_path) { - char* res = nullptr; - size_t len = 0; - FILE* src = fopen(input_file_path.c_str(), "rb"); size_t srclen = get_file_size(input_file_path.c_str()); char* s = (char*)malloc(srclen); fread(s, 1, srclen, src); fclose(src); - cppp::base::reiconv::convert(to.c_str(), from.c_str(), s, srclen, &res, &len, true); + auto res = cppp::base::reiconv::convert(Encoding(from), Encoding(to), {(std::byte*)s, srclen}, true); FILE* out = fopen(output_file_path.c_str(), "wb"); - fwrite(res, 1, len, out); + fwrite(res.buffer, 1, res.length, out); fclose(out); free(s); } diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 72c5d0f1..08f053f7 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -231,10 +231,7 @@ namespace test } } - if (iconv_close(cd) < 0) - { - error("iconv_close","Iconv close error."); - } + iconv_close(cd); if (fclose(save_file) < 0) { diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 32bf1c52..d812d344 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -112,10 +112,7 @@ namespace test } } - if (iconv_close(cd) < 0) - { - error("iconv_close", "Iconv close error."); - } + iconv_close(cd); if (fclose(save_file) < 0) { diff --git a/tests/tests.cmake b/tests/tests.cmake index 688d58fd..96cc8532 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -11,17 +11,14 @@ include_directories("${output_includedir}") # Test executables add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") -add_executable(check-ascii-converters "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-ascii-converters.cpp") add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") -target_link_libraries(check-ascii-converters libcppp-reiconv.static) target_link_libraries(check-stateful libcppp-reiconv.static) target_link_libraries(check-stateless libcppp-reiconv.static) set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-ascii-converters PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) @@ -71,11 +68,6 @@ add_custom_command(TARGET data-generator POST_BUILD COMMENT "Sorting GB18030:2022 test data ... " ) -# Test ascii converters. -add_test(NAME check-ascii-converters - WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$") - # General multi-byte encodings. test("stateless" "UTF-8") test("stateful" "UTF-16") From 6268a502a965fac6dddb58a569eccb138544b392 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 13 Oct 2024 12:47:20 +0800 Subject: [PATCH 36/77] Fix bug which occured in `cppp/encodings/reiconv.hpp` installation. --- .gitignore | 1 + CMakeLists.txt | 29 +- benchmark/benchmark.cpp | 6 +- benchmark/test_string.hpp | 595 +------------------------------------- lib/iconv.cpp | 9 +- repo.json | 1 + tests/data-generator.cpp | 72 ++--- tests/reiconv-test.hpp | 43 +-- tests/sort.cpp | 14 +- tests/sort.hpp | 14 +- tools/genaliases.cpp | 14 +- 11 files changed, 79 insertions(+), 719 deletions(-) diff --git a/.gitignore b/.gitignore index b954c72e..8e8d3130 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ windows/cppp-reiconv.rc *.dll *.exe *.sln +*.out *.vcxproj *.vcxproj.filters *.vcxproj.user diff --git a/CMakeLists.txt b/CMakeLists.txt index dbda1456..ac15fd5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,8 +24,6 @@ project(cppp-reiconv option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." ON) -set(CMAKE_CXX_STANDARD 20) - # ---------------------------------------------------------------------------------- # Import build auxiliaries. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/build-aux") @@ -41,8 +39,6 @@ get_filename_component(BUILD_AUX "${BUILD_AUX}" ABSOLUTE) include("${BUILD_AUX}/cmake/cppp.cmake") # ---------------------------------------------------------------------------------- -check_have_visibility() - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wno-unused-parameter) add_compile_options(-Wno-missing-field-initializers) @@ -64,24 +60,14 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") add_compile_options(/wd4018) endif() -# Generate header file for install. -if(WIN32) - set(CPPP_API "__declspec(dllimport)") -elseif(HAVE_VISIBILITY) - set(CPPP_API "__attribute__((visibility(\"default\")))") -else() - set(CPPP_API "") -endif() - +# Header for install. +set(CPPP_API "${CPPP_IMPORT_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp.inst") - -# Generate header file for build. -if(WIN32) - set(CPPP_API "__declspec(dllexport)") -endif() - +# Header for build. +set(CPPP_API "${CPPP_EXPORT_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") file(READ "${CMAKE_CURRENT_SOURCE_DIR}/lib/generated/indexes.hpp.shippet" _INDEXES_CODE) string(STRIP "${_INDEXES_CODE}" INDEXES_CODE) @@ -100,7 +86,7 @@ cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" T # Include test suite. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests" AND BUILD_TEST) - include("tests/tests.cmake") + include("${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.cmake") endif() # Install libraries. @@ -113,8 +99,9 @@ install(FILES "${output_includedir}/cppp/reiconv.hpp.inst" RENAME "cppp/reiconv.hpp" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) +# PERMISSIONS 0644 install(FILES "${output_includedir}/cppp/encodings/reiconv.hpp" - DESTINATION "${install_includedir}" + DESTINATION "${install_includedir}/encodings" RENAME "cppp/reiconv.hpp" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) diff --git a/benchmark/benchmark.cpp b/benchmark/benchmark.cpp index d662898b..78508309 100644 --- a/benchmark/benchmark.cpp +++ b/benchmark/benchmark.cpp @@ -9,6 +9,7 @@ #include #include + static void reiconv_handle_open_by_name(benchmark::State& state) { using namespace cppp::base; @@ -218,10 +219,11 @@ static void libicu_convert(benchmark::State& state) { output = (char*)malloc(enough_size); memset(output, 0, enough_size); - ucnv_convert("GB18030", + + ucnv_convert_72("GB18030", NULL, output, - enough_size, + enough_size + 1, big_test_string_utf8, big_test_string_utf8_len, &status); diff --git a/benchmark/test_string.hpp b/benchmark/test_string.hpp index 36781dd9..08d3f510 100644 --- a/benchmark/test_string.hpp +++ b/benchmark/test_string.hpp @@ -6,77 +6,8 @@ The quick brown fox jumps over the lazy dog.\ !@#$%^&*()_+\"'\ \xe6\xb7\xb7\xe6\xb2\x8c\xe6\x9c\xaa\xe5\x88\x86\xe5\xa4\xa9\xe5\x9c\xb0\xe4\xb9\xb1\xef\xbc\x8c\xe8\x8c\xab\xe8\x8c\xab\xe6\xb8\xba\xe6\xb8\xba\xe6\x97\xa0\xe4\xba\xba\xe8\xa7\x81\xe3\x80\x82\ \xe8\x87\xaa\xe4\xbb\x8e\xe7\x9b\x98\xe5\x8f\xa4\xe7\xa0\xb4\xe9\xb8\xbf\xe8\x92\x99\xef\xbc\x8c\xe5\xbc\x80\xe8\xbe\x9f\xe4\xbb\x8e\xe5\x85\xb9\xe6\xb8\x85\xe6\xb5\x8a\xe8\xbe\xa8\xe3\x80\x82\ -\xe8\xa6\x86\xe8\xbd\xbd\xe7\xbe\xa4\xe7\x94\x9f\xe4\xbb\xb0\xe8\x87\xb3\xe4\xbb\x81\xef\xbc\x8c\xe5\x8f\x91\xe6\x98\x8e\xe4\xb8\x87\xe7\x89\xa9\xe7\x9a\x86\xe6\x88\x90\xe5\x96\x84\xe3\x80\x82\ -\xe6\xac\xb2\xe7\x9f\xa5\xe9\x80\xa0\xe5\x8c\x96\xe4\xbc\x9a\xe5\x85\x83\xe5\x8a\x9f\xef\xbc\x8c\xe9\xa1\xbb\xe7\x9c\x8b\xe8\xa5\xbf\xe6\xb8\xb8\xe9\x87\x8a\xe5\x8e\x84\xe4\xbc\xa0\xe3\x80\x82\ -\xe7\x81\xab\xe7\x9c\xbc\xe9\x87\x91\xe7\x9d\x9b\xe8\xaf\x86\xe5\x96\x84\xe6\x81\xb6\xef\xbc\x8c\xe5\x8d\xb4\xe6\x9c\x89\xe7\xb4\xa7\xe7\xae\x8d\xe5\x8f\x97\xe6\x8a\x98\xe7\xa3\xa8\xe3\x80\x82\ -\xe8\x99\xbd\xe6\x9c\x89\xe4\xb8\x8a\xe5\xa4\xa9\xe5\x85\xa5\xe5\x9c\xb0\xe8\x83\xbd\xef\xbc\x8c\xe6\x97\xa0\xe5\xa5\x88\xe5\x94\x90\xe5\x83\xa7\xe5\x81\x9a\xe5\xa9\x86\xe5\xa9\x86\xe3\x80\x82\ -\xe6\x82\x9f\xe7\xa9\xba\xe6\x81\x83\xe8\x83\xbd\xe9\x97\xb9\xe5\xa4\xa9\xe5\xba\xad\xef\xbc\x8c\xe7\x8e\x89\xe5\xb8\x9d\xe6\x97\xa0\xe5\xa5\x88\xe5\xb0\x81\xe5\xa4\xa7\xe5\x9c\xa3\xe3\x80\x82\ -\xe8\xb0\x81\xe7\x9f\xa5\xe8\x9f\xa0\xe6\xa1\x83\xe4\xbc\x9a\xe6\x97\xa0\xe7\xbc\x98\xef\xbc\x8c\xe4\xb8\x8d\xe5\xa6\x82\xe7\x8c\xb4\xe7\x8e\x8b\xe6\xb0\xb4\xe5\xb8\x98\xe6\xb4\x9e\xe3\x80\x82\ -\xe4\xb8\x80\xe6\xa0\xb9\xe9\x87\x91\xe7\xae\x8d\xe6\x84\x81\xe9\xac\xbc\xe7\xa5\x9e\xef\xbc\x8c\xe9\x87\x91\xe8\xa7\x84\xe7\x8e\x89\xe5\xbe\x8b\xe4\xb8\x8d\xe6\x9d\x9f\xe8\xba\xab\xe3\x80\x82\ -\xe4\xbc\x97\xe7\xa5\x9e\xe4\xb9\x8b\xe4\xb8\xad\xe8\x83\xbd\xe9\xbd\x90\xe5\x88\x97\xef\xbc\x8c\xe7\x8e\x89\xe5\xb8\x9d\xe9\x9d\xa2\xe5\x89\x8d\xe7\xa7\xb0\xe8\x80\x81\xe5\xad\x99\xe3\x80\x82\ -\xe6\x9c\xac\xe6\x98\xaf\xe7\x99\xbd\xe9\xaa\xa8\xe9\xaa\xb7\xe9\xab\x85\xe5\xa0\x86\xef\xbc\x8c\xe6\x91\x87\xe8\xba\xab\xe4\xb8\x80\xe5\x8f\x98\xe6\x9f\xb3\xe5\x8f\xb6\xe7\x9c\x89\xe3\x80\x82\ -\xe5\x85\xab\xe6\x88\x92\xe6\x97\xa0\xe8\x83\xbd\xe8\xbf\xb7\xe5\xbf\x83\xe7\xaa\x8d\xef\xbc\x8c\xe8\xbf\x98\xe4\xba\x8f\xe6\x82\x9f\xe7\xa9\xba\xe8\xbe\xa8\xe7\x9c\x9f\xe4\xbc\xaa\xe3\x80\x82\ -\xe6\x9c\xa8\xe7\xad\x8f\xe9\xa3\x98\xe6\xb5\x81\xe6\x88\x98\xe9\x82\xaa\xe9\xa3\x8e\xef\xbc\x8c\xe5\xad\xa6\xe5\xbe\x97\xe9\x92\xbb\xe5\xa4\xa9\xe5\x85\xa5\xe5\x9c\xb0\xe8\x83\xbd\xe3\x80\x82\ -\xe8\x8b\xa5\xe9\x9d\x9e\xe4\xb8\x83\xe5\x91\xa8\xe7\x81\xab\xe7\x86\xac\xe7\x85\x8e\xef\xbc\x8c\xe5\x93\xaa\xe5\xbe\x97\xe7\x81\xab\xe7\x9c\xbc\xe5\x92\x8c\xe9\x87\x91\xe7\x9d\x9b\xef\xbc\x9f\ -\xe5\x9c\xa3\xe5\x83\xa7\xe5\x8a\xaa\xe5\x8a\x9b\xe5\x8f\x96\xe7\xbb\x8f\xe7\xbc\x96\xef\xbc\x8c\xe8\xa5\xbf\xe5\xae\x87\xe5\x91\xa8\xe6\xb5\x81\xe5\x8d\x81\xe5\x9b\x9b\xe5\xb9\xb4\xe3\x80\x82\ -\xe8\x8b\xa6\xe5\x8e\x86\xe7\xa8\x8b\xe9\x80\x94\xe9\x81\xad\xe6\x82\xa3\xe9\x9a\xbe\xef\xbc\x8c\xe5\xa4\x9a\xe7\xbb\x8f\xe5\xb1\xb1\xe6\xb0\xb4\xe5\x8f\x97\xe8\xbf\x8d\xe9\x82\x85\xe3\x80\x82\ -\xe5\x8a\x9f\xe5\xae\x8c\xe5\x85\xab\xe4\xb9\x9d\xe8\xbf\x98\xe5\x8a\xa0\xe4\xb9\x9d\xef\xbc\x8c\xe8\xa1\x8c\xe6\xbb\xa1\xe4\xb8\x89\xe5\x8d\x83\xe5\x8f\x8a\xe5\xa4\xa7\xe5\x8d\x83\xe3\x80\x82\ -\xe5\xa4\xa7\xe8\xa7\x89\xe5\xa6\x99\xe6\x96\x87\xe5\x9b\x9e\xe4\xb8\x8a\xe5\x9b\xbd\xef\xbc\x8c\xe8\x87\xb3\xe4\xbb\x8a\xe4\xb8\x9c\xe5\x9c\x9f\xe6\xb0\xb8\xe7\x95\x99\xe4\xbc\xa0\xe3\x80\x82\ It is possible to implement a substantial subset of the Unicode Standard as “wide ASCII”\ with little change to existing programming practice. However, the Unicode Standard also\ - provides for languages and writing systems that have more complex behavior than English\ - does. Whether one is implementing a new operating system from the ground up or\ - enhancing existing programming environments or applications, it is necessary to examine\ - many aspects of current programming practice and conventions to deal with this more\ - complex behavior.\ - This chapter covers a series of short, self-contained topics that are useful for implementers.\ - The information and examples presented here are meant to help implementers understand\ - and apply the design and features of the Unicode Standard. That is, they are meant to pro\ -mote good practice in implementations conforming to the Unicode Standard.\ - These recommended guidelines are not normative and are not binding on the imple\ -menter, but are intended to represent best practice. When implementing the Unicode\ - Standard, it is important to look not only at the letter of the conformance rules, but also at\ - their spirit. Many of the following guidelines have been created specifically to assist people\ - who run into issues with conformant implementations, while reflecting the requirements\ - of actual usage.\ -\xe5\xbc\x80\xe8\xbe\x9f\xe9\xb8\xbf\xe8\x92\x99\xef\xbc\x8c\xe8\xb0\x81\xe4\xb8\xba\xe6\x83\x85\xe7\xa7\x8d\xef\xbc\x9f\xe9\x83\xbd\xe5\x8f\xaa\xe4\xb8\xba\xe9\xa3\x8e\xe6\x9c\x88\xe6\x83\x85\xe6\xb5\x93\xe3\x80\x82\xe8\xb6\x81\xe7\x9d\x80\xe8\xbf\x99\xe5\xa5\x88\xe4\xbd\x95\xe5\xa4\xa9\xe3\x80\x81\xe4\xbc\xa4\xe6\x80\x80\xe6\x97\xa5\xe3\x80\x81\xe5\xaf\x82\xe5\xaf\xa5\xe6\x97\xb6\xef\xbc\x8c\xe8\xaf\x95\xe9\x81\xa3\xe6\x84\x9a\xe8\xa1\xb7\xe3\x80\x82\xe5\x9b\xa0\xe6\xad\xa4\xe4\xb8\x8a\xef\xbc\x8c\xe6\xbc\x94\xe5\x87\xba\xe8\xbf\x99\xe6\x80\x80\xe9\x87\x91\xe6\x82\xbc\xe7\x8e\x89\xe7\x9a\x84\xe3\x80\x8a\xe7\xba\xa2\xe6\xa5\xbc\xe6\xa2\xa6\xe3\x80\x8b\ -\xe4\xb8\x80\xe5\xb8\x86\xe9\xa3\x8e\xe9\x9b\xa8\xe8\xb7\xaf\xe4\xb8\x89\xe5\x8d\x83\xef\xbc\x8c\xe6\x8a\x8a\xe9\xaa\xa8\xe8\x82\x89\xe5\xae\xb6\xe5\x9b\xad\xe9\xbd\x90\xe6\x9d\xa5\xe6\x8a\x9b\xe9\x97\xaa\xe3\x80\x82\xe6\x81\x90\xe5\x93\xad\xe6\x8d\x9f\xe6\xae\x8b\xe5\xb9\xb4\xef\xbc\x8c\xe5\x91\x8a\xe7\x88\xb9\xe5\xa8\x98\xef\xbc\x8c\xe4\xbc\x91\xe6\x8a\x8a\xe5\x84\xbf\xe6\x82\xac\xe5\xbf\xb5\xe3\x80\x82\xe8\x87\xaa\xe5\x8f\xa4\xe7\xa9\xb7\xe9\x80\x9a\xe7\x9a\x86\xe6\x9c\x89\xe5\xae\x9a\xef\xbc\x8c\xe7\xa6\xbb\xe5\x90\x88\xe5\xb2\x82\xe6\x97\xa0\xe7\xbc\x98\xef\xbc\x9f\xe4\xbb\x8e\xe4\xbb\x8a\xe5\x88\x86\xe4\xb8\xa4\xe5\x9c\xb0\xef\xbc\x8c\xe5\x90\x84\xe8\x87\xaa\xe4\xbf\x9d\xe5\xb9\xb3\xe5\xae\x89\xe3\x80\x82\xe5\xa5\xb4\xe5\x8e\xbb\xe4\xb9\x9f\xef\xbc\x8c\xe8\x8e\xab\xe7\x89\xb5\xe8\xbf\x9e\xe3\x80\x82\ -The prepended concatenation marks always have a visible display. These are visible format\ - characters which span groups of numbers, particularly for the Arabic script—for example,\ - U+0601 arabic sign sanah, the Arabic year sign. See “Signs Spanning Numbers” in\ - Section 9.2, Arabic for more discussion of the use and display of these signs.\ - The other two notable sets of format characters that exceptionally are not ignored in fall\ -back display consist of the interlinear annotation characters, U+FFF9 interlinear anno\ -tation anchor through U+FFFB interlinear annotation terminator, and the\ - Egyptian hieroglyph format controls, U+13430 egyptian hieroglyph vertical joiner\ - through U+13438 egyptian hieroglyph end segment. These characters should have a\ - visible glyph display for fallback rendering, because if they are not displayed, it is too easy\ - to misread the resulting displayed text. See “Annotation Characters” in Section 23.8, Spe\ -cials, as well as Section 11.4, Egyptian Hieroglyphs for more discussion of the use and dis\ -play of these characters.\ -When converting text from one character encoding to another, a conversion algorithm\ - may encounter unconvertible code units. This is most commonly caused by some sort of\ - corruption of the source data, so that it does not correctly follow the specification for that\ - character encoding. Examples include dropping a byte in a multibyte encoding such as\ - Shift-JIS, improper concatenation of strings, a mismatch between an encoding declaration\ - and actual encoding of text, use of non-shortest form for UTF-8, and so on.\ - When a conversion algorithm encounters such unconvertible data, the usual practice is\ - either to throw an exception or to use a defined substitution character to represent the\ - unconvertible data. In the case of conversion to one of the encoding forms of the Unicode\ - Standard, the substitution character is defined as U+FFFD replacement character.\ - For conversion between different encoding forms of the Unicode Standard, “U+FFFD Sub\ -stitution of Maximal Subparts” in Section 3.9, Unicode Encoding Forms defines a practice\ - for the use of U+FFFD which is consistent with the W3C standard for encoding. It is useful\ - to apply the same practice to the conversion from non-Unicode encodings to an encoding\ - form of the Unicode Standard.\ - This practice is more secure because it does not result in the conversion consuming parts\ - of valid sequences as though they were invalid. It also guarantees at least one replacement\ - character will occur for each instance of an invalid sequence in the original text. Further\ -more, this practice can be defined consistently for better interoperability between different\ - implementations of conversion.\ - For full consistency, it is important for conversion implementations to agree on 1) the\ - exact set of well-formed sequences for the source encoding, 2) all of the mappings for valid\ - sequences, and 3) the details of the practice for handling ill-formed sequences\\ \u8bdd\u8bf4\u4f17\u4eba\u95fb\u5f97\u5b9d\u7434\u5c06\u7d20\u6614\u6240\u7ecf\u8fc7\u5404\u7701\u5185\u53e4\u8ff9\u4e3a\u9898\uff0c\u505a\u4e86\u5341\u9996\u6000\u53e4\u7edd\u53e5\uff0c\u5185\u9690\u5341\u7269\uff0c\u7686\u8bf4\uff1a\u201c\u8fd9\u81ea\u7136\u65b0\u5de7\u3002\u201d\u90fd\u4e89\u7740\u770b\u65f6\uff0c\u53ea\u89c1\u5199\u9053\u662f\uff1a\ \u8d64\u58c1\u6000\u53e4\ \u8d64\u58c1\u6c89\u57cb\u6c34\u4e0d\u6d41\uff0c\u5f92\u7559\u540d\u59d3\u8f7d\u7a7a\u821f\u3002\u55a7\u9617\u4e00\u70ac\u60b2\u98ce\u51b7\uff0c\u65e0\u9650\u82f1\u9b42\u5728\u5185\u6e38\u3002\ @@ -214,530 +145,6 @@ A7C0 \u042e \u042f \ A7D0 \u0430 \u0431 \u0432 \u0433 \u0434 \u0435 \u0451 \u0436 \u0437 \u0438 \u0439 \u043a \u043b \u043c \u043d\ A7E0 \u043e \u043f \u0440 \u0441 \u0442 \u0443 \u0444 \u0445 \u0446 \u0447 \u0448 \u0449 \u044a \u044b \u044c \u044d\ A7F0 \u044e \u044f \ -\u7b2c08\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A8A0 \u0101 \u00e1 \u01ce \u00e0 \u0113 \u00e9 \u011b \u00e8 \u012b \u00ed \u01d0 \u00ec \u014d \u00f3 \u01d2\ -A8B0 \u00f2 \u016b \u00fa \u01d4 \u00f9 \u01d6 \u01d8 \u01da \u01dc \u00fc \u00ea \ -A8C0 \u3105 \u3106 \u3107 \u3108 \u3109 \u310a \u310b \u310c \u310d \u310e \u310f\ -A8D0 \u3110 \u3111 \u3112 \u3113 \u3114 \u3115 \u3116 \u3117 \u3118 \u3119 \u311a \u311b \u311c \u311d \u311e \u311f\ -A8E0 \u3120 \u3121 \u3122 \u3123 \u3124 \u3125 \u3126 \u3127 \u3128 \u3129 \ -A8F0 \ -\u7b2c09\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A9A0 \u2500 \u2501 \u2502 \u2503 \u2504 \u2505 \u2506 \u2507 \u2508 \u2509 \u250a \u250b\ -A9B0 \u250c \u250d \u250e \u250f \u2510 \u2511 \u2512 \u2513 \u2514 \u2515 \u2516 \u2517 \u2518 \u2519 \u251a \u251b\ -A9C0 \u251c \u251d \u251e \u251f \u2520 \u2521 \u2522 \u2523 \u2524 \u2525 \u2526 \u2527 \u2528 \u2529 \u252a \u252b\ -A9D0 \u252c \u252d \u252e \u252f \u2530 \u2531 \u2532 \u2533 \u2534 \u2535 \u2536 \u2537 \u2538 \u2539 \u253a \u253b\ -A9E0 \u253c \u253d \u253e \u253f \u2540 \u2541 \u2542 \u2543 \u2544 \u2545 \u2546 \u2547 \u2548 \u2549 \u254a \u254b\ -A9F0 \ -\u7b2c10\u533a AAA0-AAFF \u6ca1\u6709\u7f16\u7801\ -\u7b2c11\u533a ABA0-ABFF \u6ca1\u6709\u7f16\u7801\ -\u7b2c12\u533a ACA0-ACFF \u6ca1\u6709\u7f16\u7801\ -\u7b2c13\u533a ADA0-ADFF \u6ca1\u6709\u7f16\u7801\ -\u7b2c14\u533a AEA0-AEFF \u6ca1\u6709\u7f16\u7801\ -\u7b2c15\u533a AFA0-AFFF \u6ca1\u6709\u7f16\u7801\ -\u7b2c16\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B0A0 \u554a \u963f \u57c3 \u6328 \u54ce \u5509 \u54c0 \u7691 \u764c \u853c \u77ee \u827e \u788d \u7231 \u9698\ -B0B0 \u978d \u6c28 \u5b89 \u4ffa \u6309 \u6697 \u5cb8 \u80fa \u6848 \u80ae \u6602 \u76ce \u51f9 \u6556 \u71ac \u7ff1\ -B0C0 \u8884 \u50b2 \u5965 \u61ca \u6fb3 \u82ad \u634c \u6252 \u53ed \u5427 \u7b06 \u516b \u75a4 \u5df4 \u62d4 \u8dcb\ -B0D0 \u9776 \u628a \u8019 \u575d \u9738 \u7f62 \u7238 \u767d \u67cf \u767e \u6446 \u4f70 \u8d25 \u62dc \u7a17 \u6591\ -B0E0 \u73ed \u642c \u6273 \u822c \u9881 \u677f \u7248 \u626e \u62cc \u4f34 \u74e3 \u534a \u529e \u7eca \u90a6 \u5e2e\ -B0F0 \u6886 \u699c \u8180 \u7ed1 \u68d2 \u78c5 \u868c \u9551 \u508d \u8c24 \u82de \u80de \u5305 \u8912 \u5265 \ -\u7b2c17\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B1A0 \u8584 \u96f9 \u4fdd \u5821 \u9971 \u5b9d \u62b1 \u62a5 \u66b4 \u8c79 \u9c8d \u7206 \u676f \u7891 \u60b2\ -B1B0 \u5351 \u5317 \u8f88 \u80cc \u8d1d \u94a1 \u500d \u72c8 \u5907 \u60eb \u7119 \u88ab \u5954 \u82ef \u672c \u7b28\ -B1C0 \u5d29 \u7ef7 \u752d \u6cf5 \u8e66 \u8ff8 \u903c \u9f3b \u6bd4 \u9119 \u7b14 \u5f7c \u78a7 \u84d6 \u853d \u6bd5\ -B1D0 \u6bd9 \u6bd6 \u5e01 \u5e87 \u75f9 \u95ed \u655d \u5f0a \u5fc5 \u8f9f \u58c1 \u81c2 \u907f \u965b \u97ad \u8fb9\ -B1E0 \u7f16 \u8d2c \u6241 \u4fbf \u53d8 \u535e \u8fa8 \u8fa9 \u8fab \u904d \u6807 \u5f6a \u8198 \u8868 \u9cd6 \u618b\ -B1F0 \u522b \u762a \u5f6c \u658c \u6fd2 \u6ee8 \u5bbe \u6448 \u5175 \u51b0 \u67c4 \u4e19 \u79c9 \u997c \u70b3 \ -\u7b2c18\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B2A0 \u75c5 \u5e76 \u73bb \u83e0 \u64ad \u62e8 \u94b5 \u6ce2 \u535a \u52c3 \u640f \u94c2 \u7b94 \u4f2f \u5e1b\ -B2B0 \u8236 \u8116 \u818a \u6e24 \u6cca \u9a73 \u6355 \u535c \u54fa \u8865 \u57e0 \u4e0d \u5e03 \u6b65 \u7c3f \u90e8\ -B2C0 \u6016 \u64e6 \u731c \u88c1 \u6750 \u624d \u8d22 \u776c \u8e29 \u91c7 \u5f69 \u83dc \u8521 \u9910 \u53c2 \u8695\ -B2D0 \u6b8b \u60ed \u60e8 \u707f \u82cd \u8231 \u4ed3 \u6ca7 \u85cf \u64cd \u7cd9 \u69fd \u66f9 \u8349 \u5395 \u7b56\ -B2E0 \u4fa7 \u518c \u6d4b \u5c42 \u8e6d \u63d2 \u53c9 \u832c \u8336 \u67e5 \u78b4 \u643d \u5bdf \u5c94 \u5dee \u8be7\ -B2F0 \u62c6 \u67f4 \u8c7a \u6400 \u63ba \u8749 \u998b \u8c17 \u7f20 \u94f2 \u4ea7 \u9610 \u98a4 \u660c \u7316 \ -\u7b2c19\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B3A0 \u573a \u5c1d \u5e38 \u957f \u507f \u80a0 \u5382 \u655e \u7545 \u5531 \u5021 \u8d85 \u6284 \u949e \u671d\ -B3B0 \u5632 \u6f6e \u5de2 \u5435 \u7092 \u8f66 \u626f \u64a4 \u63a3 \u5f7b \u6f88 \u90f4 \u81e3 \u8fb0 \u5c18 \u6668\ -B3C0 \u5ff1 \u6c89 \u9648 \u8d81 \u886c \u6491 \u79f0 \u57ce \u6a59 \u6210 \u5448 \u4e58 \u7a0b \u60e9 \u6f84 \u8bda\ -B3D0 \u627f \u901e \u9a8b \u79e4 \u5403 \u75f4 \u6301 \u5319 \u6c60 \u8fdf \u5f1b \u9a70 \u803b \u9f7f \u4f88 \u5c3a\ -B3E0 \u8d64 \u7fc5 \u65a5 \u70bd \u5145 \u51b2 \u866b \u5d07 \u5ba0 \u62bd \u916c \u7574 \u8e0c \u7a20 \u6101 \u7b79\ -B3F0 \u4ec7 \u7ef8 \u7785 \u4e11 \u81ed \u521d \u51fa \u6a71 \u53a8 \u8e87 \u9504 \u96cf \u6ec1 \u9664 \u695a \ -\u7b2c20\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B4A0 \u7840 \u50a8 \u77d7 \u6410 \u89e6 \u5904 \u63e3 \u5ddd \u7a7f \u693d \u4f20 \u8239 \u5598 \u4e32 \u75ae\ -B4B0 \u7a97 \u5e62 \u5e8a \u95ef \u521b \u5439 \u708a \u6376 \u9524 \u5782 \u6625 \u693f \u9187 \u5507 \u6df3 \u7eaf\ -B4C0 \u8822 \u6233 \u7ef0 \u75b5 \u8328 \u78c1 \u96cc \u8f9e \u6148 \u74f7 \u8bcd \u6b64 \u523a \u8d50 \u6b21 \u806a\ -B4D0 \u8471 \u56f1 \u5306 \u4ece \u4e1b \u51d1 \u7c97 \u918b \u7c07 \u4fc3 \u8e7f \u7be1 \u7a9c \u6467 \u5d14 \u50ac\ -B4E0 \u8106 \u7601 \u7cb9 \u6dec \u7fe0 \u6751 \u5b58 \u5bf8 \u78cb \u64ae \u6413 \u63aa \u632b \u9519 \u642d \u8fbe\ -B4F0 \u7b54 \u7629 \u6253 \u5927 \u5446 \u6b79 \u50a3 \u6234 \u5e26 \u6b86 \u4ee3 \u8d37 \u888b \u5f85 \u902e \ -\u7b2c21\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B5A0 \u6020 \u803d \u62c5 \u4e39 \u5355 \u90f8 \u63b8 \u80c6 \u65e6 \u6c2e \u4f46 \u60ee \u6de1 \u8bde \u5f39\ -B5B0 \u86cb \u5f53 \u6321 \u515a \u8361 \u6863 \u5200 \u6363 \u8e48 \u5012 \u5c9b \u7977 \u5bfc \u5230 \u7a3b \u60bc\ -B5C0 \u9053 \u76d7 \u5fb7 \u5f97 \u7684 \u8e6c \u706f \u767b \u7b49 \u77aa \u51f3 \u9093 \u5824 \u4f4e \u6ef4 \u8fea\ -B5D0 \u654c \u7b1b \u72c4 \u6da4 \u7fdf \u5ae1 \u62b5 \u5e95 \u5730 \u8482 \u7b2c \u5e1d \u5f1f \u9012 \u7f14 \u98a0\ -B5E0 \u6382 \u6ec7 \u7898 \u70b9 \u5178 \u975b \u57ab \u7535 \u4f43 \u7538 \u5e97 \u60e6 \u5960 \u6dc0 \u6bbf \u7889\ -B5F0 \u53fc \u96d5 \u51cb \u5201 \u6389 \u540a \u9493 \u8c03 \u8dcc \u7239 \u789f \u8776 \u8fed \u8c0d \u53e0 \ -\u7b2c22\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B6A0 \u4e01 \u76ef \u53ee \u9489 \u9876 \u9f0e \u952d \u5b9a \u8ba2 \u4e22 \u4e1c \u51ac \u8463 \u61c2 \u52a8\ -B6B0 \u680b \u4f97 \u606b \u51bb \u6d1e \u515c \u6296 \u6597 \u9661 \u8c46 \u9017 \u75d8 \u90fd \u7763 \u6bd2 \u728a\ -B6C0 \u72ec \u8bfb \u5835 \u7779 \u8d4c \u675c \u9540 \u809a \u5ea6 \u6e21 \u5992 \u7aef \u77ed \u953b \u6bb5 \u65ad\ -B6D0 \u7f0e \u5806 \u5151 \u961f \u5bf9 \u58a9 \u5428 \u8e72 \u6566 \u987f \u56e4 \u949d \u76fe \u9041 \u6387 \u54c6\ -B6E0 \u591a \u593a \u579b \u8eb2 \u6735 \u8dfa \u8235 \u5241 \u60f0 \u5815 \u86fe \u5ce8 \u9e45 \u4fc4 \u989d \u8bb9\ -B6F0 \u5a25 \u6076 \u5384 \u627c \u904f \u9102 \u997f \u6069 \u800c \u513f \u8033 \u5c14 \u9975 \u6d31 \u4e8c \ -\u7b2c23\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B7A0 \u8d30 \u53d1 \u7f5a \u7b4f \u4f10 \u4e4f \u9600 \u6cd5 \u73d0 \u85e9 \u5e06 \u756a \u7ffb \u6a0a \u77fe\ -B7B0 \u9492 \u7e41 \u51e1 \u70e6 \u53cd \u8fd4 \u8303 \u8d29 \u72af \u996d \u6cdb \u574a \u82b3 \u65b9 \u80aa \u623f\ -B7C0 \u9632 \u59a8 \u4eff \u8bbf \u7eba \u653e \u83f2 \u975e \u5561 \u98de \u80a5 \u532a \u8bfd \u5420 \u80ba \u5e9f\ -B7D0 \u6cb8 \u8d39 \u82ac \u915a \u5429 \u6c1b \u5206 \u7eb7 \u575f \u711a \u6c7e \u7c89 \u594b \u4efd \u5fff \u6124\ -B7E0 \u7caa \u4e30 \u5c01 \u67ab \u8702 \u5cf0 \u950b \u98ce \u75af \u70fd \u9022 \u51af \u7f1d \u8bbd \u5949 \u51e4\ -B7F0 \u4f5b \u5426 \u592b \u6577 \u80a4 \u5b75 \u6276 \u62c2 \u8f90 \u5e45 \u6c1f \u7b26 \u4f0f \u4fd8 \u670d \ -\u7b2c24\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C th> +D +E +F\ -B8A0 \u6d6e \u6daa \u798f \u88b1 \u5f17 \u752b \u629a \u8f85 \u4fef \u91dc \u65a7 \u812f \u8151 \u5e9c \u8150\ -B8B0 \u8d74 \u526f \u8986 \u8d4b \u590d \u5085 \u4ed8 \u961c \u7236 \u8179 \u8d1f \u5bcc \u8ba3 \u9644 \u5987 \u7f1a\ -B8C0 \u5490 \u5676 \u560e \u8be5 \u6539 \u6982 \u9499 \u76d6 \u6e89 \u5e72 \u7518 \u6746 \u67d1 \u7aff \u809d \u8d76\ -B8D0 \u611f \u79c6 \u6562 \u8d63 \u5188 \u521a \u94a2 \u7f38 \u809b \u7eb2 \u5c97 \u6e2f \u6760 \u7bd9 \u768b \u9ad8\ -B8E0 \u818f \u7f94 \u7cd5 \u641e \u9550 \u7a3f \u544a \u54e5 \u6b4c \u6401 \u6208 \u9e3d \u80f3 \u7599 \u5272 \u9769\ -B8F0 \u845b \u683c \u86e4 \u9601 \u9694 \u94ec \u4e2a \u5404 \u7ed9 \u6839 \u8ddf \u8015 \u66f4 \u5e9a \u7fb9 \ -\u7b2c25\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -B9A0 \u57c2 \u803f \u6897 \u5de5 \u653b \u529f \u606d \u9f9a \u4f9b \u8eac \u516c \u5bab \u5f13 \u5de9 \u6c5e\ -B9B0 \u62f1 \u8d21 \u5171 \u94a9 \u52fe \u6c9f \u82df \u72d7 \u57a2 \u6784 \u8d2d \u591f \u8f9c \u83c7 \u5495 \u7b8d\ -B9C0 \u4f30 \u6cbd \u5b64 \u59d1 \u9f13 \u53e4 \u86ca \u9aa8 \u8c37 \u80a1 \u6545 \u987e \u56fa \u96c7 \u522e \u74dc\ -B9D0 \u5250 \u5be1 \u6302 \u8902 \u4e56 \u62d0 \u602a \u68fa \u5173 \u5b98 \u51a0 \u89c2 \u7ba1 \u9986 \u7f50 \u60ef\ -B9E0 \u704c \u8d2f \u5149 \u5e7f \u901b \u7470 \u89c4 \u572d \u7845 \u5f52 \u9f9f \u95fa \u8f68 \u9b3c \u8be1 \u7678\ -B9F0 \u6842 \u67dc \u8dea \u8d35 \u523d \u8f8a \u6eda \u68cd \u9505 \u90ed \u56fd \u679c \u88f9 \u8fc7 \u54c8 \ -\u7b2c26\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -BAA0 \u9ab8 \u5b69 \u6d77 \u6c26 \u4ea5 \u5bb3 \u9a87 \u9163 \u61a8 \u90af \u97e9 \u542b \u6db5 \u5bd2 \u51fd\ -BAB0 \u558a \u7f55 \u7ff0 \u64bc \u634d \u65f1 \u61be \u608d \u710a \u6c57 \u6c49 \u592f \u676d \u822a \u58d5 \u568e\ -BAC0 \u8c6a \u6beb \u90dd \u597d \u8017 \u53f7 \u6d69 \u5475 \u559d \u8377 \u83cf \u6838 \u79be \u548c \u4f55 \u5408\ -BAD0 \u76d2 \u8c89 \u9602 \u6cb3 \u6db8 \u8d6b \u8910 \u9e64 \u8d3a \u563f \u9ed1 \u75d5 \u5f88 \u72e0 \u6068 \u54fc\ -BAE0 \u4ea8 \u6a2a \u8861 \u6052 \u8f70 \u54c4 \u70d8 \u8679 \u9e3f \u6d2a \u5b8f \u5f18 \u7ea2 \u5589 \u4faf \u7334\ -BAF0 \u543c \u539a \u5019 \u540e \u547c \u4e4e \u5ffd \u745a \u58f6 \u846b \u80e1 \u8774 \u72d0 \u7cca \u6e56 \ -\u7b2c27\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -BBA0 \u5f27 \u864e \u552c \u62a4 \u4e92 \u6caa \u6237 \u82b1 \u54d7 \u534e \u733e \u6ed1 \u753b \u5212 \u5316\ -BBB0 \u8bdd \u69d0 \u5f8a \u6000 \u6dee \u574f \u6b22 \u73af \u6853 \u8fd8 \u7f13 \u6362 \u60a3 \u5524 \u75ea \u8c62\ -BBC0 \u7115 \u6da3 \u5ba6 \u5e7b \u8352 \u614c \u9ec4 \u78fa \u8757 \u7c27 \u7687 \u51f0 \u60f6 \u714c \u6643 \u5e4c\ -BBD0 \u604d \u8c0e \u7070 \u6325 \u8f89 \u5fbd \u6062 \u86d4 \u56de \u6bc1 \u6094 \u6167 \u5349 \u60e0 \u6666 \u8d3f\ -BBE0 \u79fd \u4f1a \u70e9 \u6c47 \u8bb3 \u8bf2 \u7ed8 \u8364 \u660f \u5a5a \u9b42 \u6d51 \u6df7 \u8c41 \u6d3b \u4f19\ -BBF0 \u706b \u83b7 \u6216 \u60d1 \u970d \u8d27 \u7978 \u51fb \u573e \u57fa \u673a \u7578 \u7a3d \u79ef \u7b95 \ -\u7b2c28\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -BCA0 \u808c \u9965 \u8ff9 \u6fc0 \u8ba5 \u9e21 \u59ec \u7ee9 \u7f09 \u5409 \u6781 \u68d8 \u8f91 \u7c4d \u96c6\ -BCB0 \u53ca \u6025 \u75be \u6c72 \u5373 \u5ac9 \u7ea7 \u6324 \u51e0 \u810a \u5df1 \u84df \u6280 \u5180 \u5b63 \u4f0e\ -BCC0 \u796d \u5242 \u60b8 \u6d4e \u5bc4 \u5bc2 \u8ba1 \u8bb0 \u65e2 \u5fcc \u9645 \u5993 \u7ee7 \u7eaa \u5609 \u67b7\ -BCD0 \u5939 \u4f73 \u5bb6 \u52a0 \u835a \u988a \u8d3e \u7532 \u94be \u5047 \u7a3c \u4ef7 \u67b6 \u9a7e \u5ac1 \u6b7c\ -BCE0 \u76d1 \u575a \u5c16 \u7b3a \u95f4 \u714e \u517c \u80a9 \u8270 \u5978 \u7f04 \u8327 \u68c0 \u67ec \u78b1 \u7877\ -BCF0 \u62e3 \u6361 \u7b80 \u4fed \u526a \u51cf \u8350 \u69db \u9274 \u8df5 \u8d31 \u89c1 \u952e \u7bad \u4ef6 \ -\u7b2c29\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -BDA0 \u5065 \u8230 \u5251 \u996f \u6e10 \u6e85 \u6da7 \u5efa \u50f5 \u59dc \u5c06 \u6d46 \u6c5f \u7586 \u848b\ -BDB0 \u6868 \u5956 \u8bb2 \u5320 \u9171 \u964d \u8549 \u6912 \u7901 \u7126 \u80f6 \u4ea4 \u90ca \u6d47 \u9a84 \u5a07\ -BDC0 \u56bc \u6405 \u94f0 \u77eb \u4fa5 \u811a \u72e1 \u89d2 \u997a \u7f34 \u7ede \u527f \u6559 \u9175 \u8f7f \u8f83\ -BDD0 \u53eb \u7a96 \u63ed \u63a5 \u7686 \u79f8 \u8857 \u9636 \u622a \u52ab \u8282 \u6854 \u6770 \u6377 \u776b \u7aed\ -BDE0 \u6d01 \u7ed3 \u89e3 \u59d0 \u6212 \u85c9 \u82a5 \u754c \u501f \u4ecb \u75a5 \u8beb \u5c4a \u5dfe \u7b4b \u65a4\ -BDF0 \u91d1 \u4eca \u6d25 \u895f \u7d27 \u9526 \u4ec5 \u8c28 \u8fdb \u9773 \u664b \u7981 \u8fd1 \u70ec \u6d78 \ -\u7b2c30\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -BEA0 \u5c3d \u52b2 \u8346 \u5162 \u830e \u775b \u6676 \u9cb8 \u4eac \u60ca \u7cbe \u7cb3 \u7ecf \u4e95 \u8b66\ -BEB0 \u666f \u9888 \u9759 \u5883 \u656c \u955c \u5f84 \u75c9 \u9756 \u7adf \u7ade \u51c0 \u70af \u7a98 \u63ea \u7a76\ -BEC0 \u7ea0 \u7396 \u97ed \u4e45 \u7078 \u4e5d \u9152 \u53a9 \u6551 \u65e7 \u81fc \u8205 \u548e \u5c31 \u759a \u97a0\ -BED0 \u62d8 \u72d9 \u75bd \u5c45 \u9a79 \u83ca \u5c40 \u5480 \u77e9 \u4e3e \u6cae \u805a \u62d2 \u636e \u5de8 \u5177\ -BEE0 \u8ddd \u8e1e \u952f \u4ff1 \u53e5 \u60e7 \u70ac \u5267 \u6350 \u9e43 \u5a1f \u5026 \u7737 \u5377 \u7ee2 \u6485\ -BEF0 \u652b \u6289 \u6398 \u5014 \u7235 \u89c9 \u51b3 \u8bc0 \u7edd \u5747 \u83cc \u94a7 \u519b \u541b \u5cfb \ -\u7b2c31\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -BFA0 \u4fca \u7ae3 \u6d5a \u90e1 \u9a8f \u5580 \u5496 \u5361 \u54af \u5f00 \u63e9 \u6977 \u51ef \u6168 \u520a\ -BFB0 \u582a \u52d8 \u574e \u780d \u770b \u5eb7 \u6177 \u7ce0 \u625b \u6297 \u4ea2 \u7095 \u8003 \u62f7 \u70e4 \u9760\ -BFC0 \u5777 \u82db \u67ef \u68f5 \u78d5 \u9897 \u79d1 \u58f3 \u54b3 \u53ef \u6e34 \u514b \u523b \u5ba2 \u8bfe \u80af\ -BFD0 \u5543 \u57a6 \u6073 \u5751 \u542d \u7a7a \u6050 \u5b54 \u63a7 \u62a0 \u53e3 \u6263 \u5bc7 \u67af \u54ed \u7a9f\ -BFE0 \u82e6 \u9177 \u5e93 \u88e4 \u5938 \u57ae \u630e \u8de8 \u80ef \u5757 \u7b77 \u4fa9 \u5feb \u5bbd \u6b3e \u5321\ -BFF0 \u7b50 \u72c2 \u6846 \u77ff \u7736 \u65f7 \u51b5 \u4e8f \u76d4 \u5cbf \u7aa5 \u8475 \u594e \u9b41 \u5080 \ -\u7b2c32\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C0A0 \u9988 \u6127 \u6e83 \u5764 \u6606 \u6346 \u56f0 \u62ec \u6269 \u5ed3 \u9614 \u5783 \u62c9 \u5587 \u8721\ -C0B0 \u814a \u8fa3 \u5566 \u83b1 \u6765 \u8d56 \u84dd \u5a6a \u680f \u62e6 \u7bee \u9611 \u5170 \u6f9c \u8c30 \u63fd\ -C0C0 \u89c8 \u61d2 \u7f06 \u70c2 \u6ee5 \u7405 \u6994 \u72fc \u5eca \u90ce \u6717 \u6d6a \u635e \u52b3 \u7262 \u8001\ -C0D0 \u4f6c \u59e5 \u916a \u70d9 \u6d9d \u52d2 \u4e50 \u96f7 \u956d \u857e \u78ca \u7d2f \u5121 \u5792 \u64c2 \u808b\ -C0E0 \u7c7b \u6cea \u68f1 \u695e \u51b7 \u5398 \u68a8 \u7281 \u9ece \u7bf1 \u72f8 \u79bb \u6f13 \u7406 \u674e \u91cc\ -C0F0 \u9ca4 \u793c \u8389 \u8354 \u540f \u6817 \u4e3d \u5389 \u52b1 \u783e \u5386 \u5229 \u5088 \u4f8b \u4fd0 \ -\u7b2c33\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C1A0 \u75e2 \u7acb \u7c92 \u6ca5 \u96b6 \u529b \u7483 \u54e9 \u4fe9 \u8054 \u83b2 \u8fde \u9570 \u5ec9 \u601c\ -C1B0 \u6d9f \u5e18 \u655b \u8138 \u94fe \u604b \u70bc \u7ec3 \u7cae \u51c9 \u6881 \u7cb1 \u826f \u4e24 \u8f86 \u91cf\ -C1C0 \u667e \u4eae \u8c05 \u64a9 \u804a \u50da \u7597 \u71ce \u5be5 \u8fbd \u6f66 \u4e86 \u6482 \u9563 \u5ed6 \u6599\ -C1D0 \u5217 \u88c2 \u70c8 \u52a3 \u730e \u7433 \u6797 \u78f7 \u9716 \u4e34 \u90bb \u9cde \u6dcb \u51db \u8d41 \u541d\ -C1E0 \u62ce \u73b2 \u83f1 \u96f6 \u9f84 \u94c3 \u4f36 \u7f9a \u51cc \u7075 \u9675 \u5cad \u9886 \u53e6 \u4ee4 \u6e9c\ -C1F0 \u7409 \u69b4 \u786b \u998f \u7559 \u5218 \u7624 \u6d41 \u67f3 \u516d \u9f99 \u804b \u5499 \u7b3c \u7abf \ -\u7b2c34\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C2A0 \u9686 \u5784 \u62e2 \u9647 \u697c \u5a04 \u6402 \u7bd3 \u6f0f \u964b \u82a6 \u5362 \u9885 \u5e90 \u7089\ -C2B0 \u63b3 \u5364 \u864f \u9c81 \u9e93 \u788c \u9732 \u8def \u8d42 \u9e7f \u6f5e \u7984 \u5f55 \u9646 \u622e \u9a74\ -C2C0 \u5415 \u94dd \u4fa3 \u65c5 \u5c65 \u5c61 \u7f15 \u8651 \u6c2f \u5f8b \u7387 \u6ee4 \u7eff \u5ce6 \u631b \u5b6a\ -C2D0 \u6ee6 \u5375 \u4e71 \u63a0 \u7565 \u62a1 \u8f6e \u4f26 \u4ed1 \u6ca6 \u7eb6 \u8bba \u841d \u87ba \u7f57 \u903b\ -C2E0 \u9523 \u7ba9 \u9aa1 \u88f8 \u843d \u6d1b \u9a86 \u7edc \u5988 \u9ebb \u739b \u7801 \u8682 \u9a6c \u9a82 \u561b\ -C2F0 \u5417 \u57cb \u4e70 \u9ea6 \u5356 \u8fc8 \u8109 \u7792 \u9992 \u86ee \u6ee1 \u8513 \u66fc \u6162 \u6f2b \ -\u7b2c35\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C3A0 \u8c29 \u8292 \u832b \u76f2 \u6c13 \u5fd9 \u83bd \u732b \u8305 \u951a \u6bdb \u77db \u94c6 \u536f \u8302\ -C3B0 \u5192 \u5e3d \u8c8c \u8d38 \u4e48 \u73ab \u679a \u6885 \u9176 \u9709 \u7164 \u6ca1 \u7709 \u5a92 \u9541 \u6bcf\ -C3C0 \u7f8e \u6627 \u5bd0 \u59b9 \u5a9a \u95e8 \u95f7 \u4eec \u840c \u8499 \u6aac \u76df \u9530 \u731b \u68a6 \u5b5f\ -C3D0 \u772f \u919a \u9761 \u7cdc \u8ff7 \u8c1c \u5f25 \u7c73 \u79d8 \u89c5 \u6ccc \u871c \u5bc6 \u5e42 \u68c9 \u7720\ -C3E0 \u7ef5 \u5195 \u514d \u52c9 \u5a29 \u7f05 \u9762 \u82d7 \u63cf \u7784 \u85d0 \u79d2 \u6e3a \u5e99 \u5999 \u8511\ -C3F0 \u706d \u6c11 \u62bf \u76bf \u654f \u60af \u95fd \u660e \u879f \u9e23 \u94ed \u540d \u547d \u8c2c \u6478 \ -\u7b2c36\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C4A0 \u6479 \u8611 \u6a21 \u819c \u78e8 \u6469 \u9b54 \u62b9 \u672b \u83ab \u58a8 \u9ed8 \u6cab \u6f20 \u5bde\ -C4B0 \u964c \u8c0b \u725f \u67d0 \u62c7 \u7261 \u4ea9 \u59c6 \u6bcd \u5893 \u66ae \u5e55 \u52df \u6155 \u6728 \u76ee\ -C4C0 \u7766 \u7267 \u7a46 \u62ff \u54ea \u5450 \u94a0 \u90a3 \u5a1c \u7eb3 \u6c16 \u4e43 \u5976 \u8010 \u5948 \u5357\ -C4D0 \u7537 \u96be \u56ca \u6320 \u8111 \u607c \u95f9 \u6dd6 \u5462 \u9981 \u5185 \u5ae9 \u80fd \u59ae \u9713 \u502a\ -C4E0 \u6ce5 \u5c3c \u62df \u4f60 \u533f \u817b \u9006 \u6eba \u852b \u62c8 \u5e74 \u78be \u64b5 \u637b \u5ff5 \u5a18\ -C4F0 \u917f \u9e1f \u5c3f \u634f \u8042 \u5b7d \u556e \u954a \u954d \u6d85 \u60a8 \u67e0 \u72de \u51dd \u5b81 \ -\u7b2c37\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C5A0 \u62e7 \u6cde \u725b \u626d \u94ae \u7ebd \u8113 \u6d53 \u519c \u5f04 \u5974 \u52aa \u6012 \u5973 \u6696\ -C5B0 \u8650 \u759f \u632a \u61e6 \u7cef \u8bfa \u54e6 \u6b27 \u9e25 \u6bb4 \u85d5 \u5455 \u5076 \u6ca4 \u556a \u8db4\ -C5C0 \u722c \u5e15 \u6015 \u7436 \u62cd \u6392 \u724c \u5f98 \u6e43 \u6d3e \u6500 \u6f58 \u76d8 \u78d0 \u76fc \u7554\ -C5D0 \u5224 \u53db \u4e53 \u5e9e \u65c1 \u802a \u80d6 \u629b \u5486 \u5228 \u70ae \u888d \u8dd1 \u6ce1 \u5478 \u80da\ -C5E0 \u57f9 \u88f4 \u8d54 \u966a \u914d \u4f69 \u6c9b \u55b7 \u76c6 \u7830 \u62a8 \u70f9 \u6f8e \u5f6d \u84ec \u68da\ -C5F0 \u787c \u7bf7 \u81a8 \u670b \u9e4f \u6367 \u78b0 \u576f \u7812 \u9739 \u6279 \u62ab \u5288 \u7435 \u6bd7 \ -\u7b2c38\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C6A0 \u5564 \u813e \u75b2 \u76ae \u5339 \u75de \u50fb \u5c41 \u8b6c \u7bc7 \u504f \u7247 \u9a97 \u98d8 \u6f02\ -C6B0 \u74e2 \u7968 \u6487 \u77a5 \u62fc \u9891 \u8d2b \u54c1 \u8058 \u4e52 \u576a \u82f9 \u840d \u5e73 \u51ed \u74f6\ -C6C0 \u8bc4 \u5c4f \u5761 \u6cfc \u9887 \u5a46 \u7834 \u9b44 \u8feb \u7c95 \u5256 \u6251 \u94fa \u4ec6 \u8386 \u8461\ -C6D0 \u83e9 \u84b2 \u57d4 \u6734 \u5703 \u666e \u6d66 \u8c31 \u66dd \u7011 \u671f \u6b3a \u6816 \u621a \u59bb \u4e03\ -C6E0 \u51c4 \u6f06 \u67d2 \u6c8f \u5176 \u68cb \u5947 \u6b67 \u7566 \u5d0e \u8110 \u9f50 \u65d7 \u7948 \u7941 \u9a91\ -C6F0 \u8d77 \u5c82 \u4e5e \u4f01 \u542f \u5951 \u780c \u5668 \u6c14 \u8fc4 \u5f03 \u6c7d \u6ce3 \u8bab \u6390 \ -\u7b2c39\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C7A0 \u6070 \u6d3d \u7275 \u6266 \u948e \u94c5 \u5343 \u8fc1 \u7b7e \u4edf \u8c26 \u4e7e \u9ed4 \u94b1 \u94b3\ -C7B0 \u524d \u6f5c \u9063 \u6d45 \u8c34 \u5811 \u5d4c \u6b20 \u6b49 \u67aa \u545b \u8154 \u7f8c \u5899 \u8537 \u5f3a\ -C7C0 \u62a2 \u6a47 \u9539 \u6572 \u6084 \u6865 \u77a7 \u4e54 \u4fa8 \u5de7 \u9798 \u64ac \u7fd8 \u5ced \u4fcf \u7a8d\ -C7D0 \u5207 \u8304 \u4e14 \u602f \u7a83 \u94a6 \u4fb5 \u4eb2 \u79e6 \u7434 \u52e4 \u82b9 \u64d2 \u79bd \u5bdd \u6c81\ -C7E0 \u9752 \u8f7b \u6c22 \u503e \u537f \u6e05 \u64ce \u6674 \u6c30 \u60c5 \u9877 \u8bf7 \u5e86 \u743c \u7a77 \u79cb\ -C7F0 \u4e18 \u90b1 \u7403 \u6c42 \u56da \u914b \u6cc5 \u8d8b \u533a \u86c6 \u66f2 \u8eaf \u5c48 \u9a71 \u6e20 \ -\u7b2c40\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C8A0 \u53d6 \u5a36 \u9f8b \u8da3 \u53bb \u5708 \u98a7 \u6743 \u919b \u6cc9 \u5168 \u75ca \u62f3 \u72ac \u5238\ -C8B0 \u529d \u7f3a \u7094 \u7638 \u5374 \u9e4a \u69b7 \u786e \u96c0 \u88d9 \u7fa4 \u7136 \u71c3 \u5189 \u67d3 \u74e4\ -C8C0 \u58e4 \u6518 \u56b7 \u8ba9 \u9976 \u6270 \u7ed5 \u60f9 \u70ed \u58ec \u4ec1 \u4eba \u5fcd \u97e7 \u4efb \u8ba4\ -C8D0 \u5203 \u598a \u7eab \u6254 \u4ecd \u65e5 \u620e \u8338 \u84c9 \u8363 \u878d \u7194 \u6eb6 \u5bb9 \u7ed2 \u5197\ -C8E0 \u63c9 \u67d4 \u8089 \u8339 \u8815 \u5112 \u5b7a \u5982 \u8fb1 \u4e73 \u6c5d \u5165 \u8925 \u8f6f \u962e \u854a\ -C8F0 \u745e \u9510 \u95f0 \u6da6 \u82e5 \u5f31 \u6492 \u6d12 \u8428 \u816e \u9cc3 \u585e \u8d5b \u4e09 \u53c1 \ -\u7b2c41\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -C9A0 \u4f1e \u6563 \u6851 \u55d3 \u4e27 \u6414 \u9a9a \u626b \u5ac2 \u745f \u8272 \u6da9 \u68ee \u50e7 \u838e\ -C9B0 \u7802 \u6740 \u5239 \u6c99 \u7eb1 \u50bb \u5565 \u715e \u7b5b \u6652 \u73ca \u82eb \u6749 \u5c71 \u5220 \u717d\ -C9C0 \u886b \u95ea \u9655 \u64c5 \u8d61 \u81b3 \u5584 \u6c55 \u6247 \u7f2e \u5892 \u4f24 \u5546 \u8d4f \u664c \u4e0a\ -C9D0 \u5c1a \u88f3 \u68a2 \u634e \u7a0d \u70e7 \u828d \u52fa \u97f6 \u5c11 \u54e8 \u90b5 \u7ecd \u5962 \u8d4a \u86c7\ -C9E0 \u820c \u820d \u8d66 \u6444 \u5c04 \u6151 \u6d89 \u793e \u8bbe \u7837 \u7533 \u547b \u4f38 \u8eab \u6df1 \u5a20\ -C9F0 \u7ec5 \u795e \u6c88 \u5ba1 \u5a76 \u751a \u80be \u614e \u6e17 \u58f0 \u751f \u7525 \u7272 \u5347 \u7ef3 \ -\u7b2c42\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -CAA0 \u7701 \u76db \u5269 \u80dc \u5723 \u5e08 \u5931 \u72ee \u65bd \u6e7f \u8bd7 \u5c38 \u8671 \u5341 \u77f3\ -CAB0 \u62fe \u65f6 \u4ec0 \u98df \u8680 \u5b9e \u8bc6 \u53f2 \u77e2 \u4f7f \u5c4e \u9a76 \u59cb \u5f0f \u793a \u58eb\ -CAC0 \u4e16 \u67ff \u4e8b \u62ed \u8a93 \u901d \u52bf \u662f \u55dc \u566c \u9002 \u4ed5 \u4f8d \u91ca \u9970 \u6c0f\ -CAD0 \u5e02 \u6043 \u5ba4 \u89c6 \u8bd5 \u6536 \u624b \u9996 \u5b88 \u5bff \u6388 \u552e \u53d7 \u7626 \u517d \u852c\ -CAE0 \u67a2 \u68b3 \u6b8a \u6292 \u8f93 \u53d4 \u8212 \u6dd1 \u758f \u4e66 \u8d4e \u5b70 \u719f \u85af \u6691 \u66d9\ -CAF0 \u7f72 \u8700 \u9ecd \u9f20 \u5c5e \u672f \u8ff0 \u6811 \u675f \u620d \u7ad6 \u5885 \u5eb6 \u6570 \u6f31 \ -\u7b2c43\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -CBA0 \u6055 \u5237 \u800d \u6454 \u8870 \u7529 \u5e05 \u6813 \u62f4 \u971c \u53cc \u723d \u8c01 \u6c34 \u7761\ -CBB0 \u7a0e \u542e \u77ac \u987a \u821c \u8bf4 \u7855 \u6714 \u70c1 \u65af \u6495 \u5636 \u601d \u79c1 \u53f8 \u4e1d\ -CBC0 \u6b7b \u8086 \u5bfa \u55e3 \u56db \u4f3a \u4f3c \u9972 \u5df3 \u677e \u8038 \u6002 \u9882 \u9001 \u5b8b \u8bbc\ -CBD0 \u8bf5 \u641c \u8258 \u64de \u55fd \u82cf \u9165 \u4fd7 \u7d20 \u901f \u7c9f \u50f3 \u5851 \u6eaf \u5bbf \u8bc9\ -CBE0 \u8083 \u9178 \u849c \u7b97 \u867d \u968b \u968f \u7ee5 \u9ad3 \u788e \u5c81 \u7a57 \u9042 \u96a7 \u795f \u5b59\ -CBF0 \u635f \u7b0b \u84d1 \u68ad \u5506 \u7f29 \u7410 \u7d22 \u9501 \u6240 \u584c \u4ed6 \u5b83 \u5979 \u5854 \ -\u7b2c44\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -CCA0 \u736d \u631e \u8e4b \u8e0f \u80ce \u82d4 \u62ac \u53f0 \u6cf0 \u915e \u592a \u6001 \u6c70 \u574d \u644a\ -CCB0 \u8d2a \u762b \u6ee9 \u575b \u6a80 \u75f0 \u6f6d \u8c2d \u8c08 \u5766 \u6bef \u8892 \u78b3 \u63a2 \u53f9 \u70ad\ -CCC0 \u6c64 \u5858 \u642a \u5802 \u68e0 \u819b \u5510 \u7cd6 \u5018 \u8eba \u6dcc \u8d9f \u70eb \u638f \u6d9b \u6ed4\ -CCD0 \u7ee6 \u8404 \u6843 \u9003 \u6dd8 \u9676 \u8ba8 \u5957 \u7279 \u85e4 \u817e \u75bc \u8a8a \u68af \u5254 \u8e22\ -CCE0 \u9511 \u63d0 \u9898 \u8e44 \u557c \u4f53 \u66ff \u568f \u60d5 \u6d95 \u5243 \u5c49 \u5929 \u6dfb \u586b \u7530\ -CCF0 \u751c \u606c \u8214 \u8146 \u6311 \u6761 \u8fe2 \u773a \u8df3 \u8d34 \u94c1 \u5e16 \u5385 \u542c \u70c3 \ -\u7b2c45\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -CDA0 \u6c40 \u5ef7 \u505c \u4ead \u5ead \u633a \u8247 \u901a \u6850 \u916e \u77b3 \u540c \u94dc \u5f64 \u7ae5\ -CDB0 \u6876 \u6345 \u7b52 \u7edf \u75db \u5077 \u6295 \u5934 \u900f \u51f8 \u79c3 \u7a81 \u56fe \u5f92 \u9014 \u6d82\ -CDC0 \u5c60 \u571f \u5410 \u5154 \u6e4d \u56e2 \u63a8 \u9893 \u817f \u8715 \u892a \u9000 \u541e \u5c6f \u81c0 \u62d6\ -CDD0 \u6258 \u8131 \u9e35 \u9640 \u9a6e \u9a7c \u692d \u59a5 \u62d3 \u553e \u6316 \u54c7 \u86d9 \u6d3c \u5a03 \u74e6\ -CDE0 \u889c \u6b6a \u5916 \u8c4c \u5f2f \u6e7e \u73a9 \u987d \u4e38 \u70f7 \u5b8c \u7897 \u633d \u665a \u7696 \u60cb\ -CDF0 \u5b9b \u5a49 \u4e07 \u8155 \u6c6a \u738b \u4ea1 \u6789 \u7f51 \u5f80 \u65fa \u671b \u5fd8 \u5984 \u5a01 \ -\u7b2c46\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -CEA0 \u5dcd \u5fae \u5371 \u97e6 \u8fdd \u6845 \u56f4 \u552f \u60df \u4e3a \u6f4d \u7ef4 \u82c7 \u840e \u59d4\ -CEB0 \u4f1f \u4f2a \u5c3e \u7eac \u672a \u851a \u5473 \u754f \u80c3 \u5582 \u9b4f \u4f4d \u6e2d \u8c13 \u5c09 \u6170\ -CEC0 \u536b \u761f \u6e29 \u868a \u6587 \u95fb \u7eb9 \u543b \u7a33 \u7d0a \u95ee \u55e1 \u7fc1 \u74ee \u631d \u8717\ -CED0 \u6da1 \u7a9d \u6211 \u65a1 \u5367 \u63e1 \u6c83 \u5deb \u545c \u94a8 \u4e4c \u6c61 \u8bec \u5c4b \u65e0 \u829c\ -CEE0 \u68a7 \u543e \u5434 \u6bcb \u6b66 \u4e94 \u6342 \u5348 \u821e \u4f0d \u4fae \u575e \u620a \u96fe \u6664 \u7269\ -CEF0 \u52ff \u52a1 \u609f \u8bef \u6614 \u7199 \u6790 \u897f \u7852 \u77fd \u6670 \u563b \u5438 \u9521 \u727a \ -\u7b2c47\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -CFA0 \u7a00 \u606f \u5e0c \u6089 \u819d \u5915 \u60dc \u7184 \u70ef \u6eaa \u6c50 \u7280 \u6a84 \u88ad \u5e2d\ -CFB0 \u4e60 \u5ab3 \u559c \u94e3 \u6d17 \u7cfb \u9699 \u620f \u7ec6 \u778e \u867e \u5323 \u971e \u8f96 \u6687 \u5ce1\ -CFC0 \u4fa0 \u72ed \u4e0b \u53a6 \u590f \u5413 \u6380 \u9528 \u5148 \u4ed9 \u9c9c \u7ea4 \u54b8 \u8d24 \u8854 \u8237\ -CFD0 \u95f2 \u6d8e \u5f26 \u5acc \u663e \u9669 \u73b0 \u732e \u53bf \u817a \u9985 \u7fa1 \u5baa \u9677 \u9650 \u7ebf\ -CFE0 \u76f8 \u53a2 \u9576 \u9999 \u7bb1 \u8944 \u6e58 \u4e61 \u7fd4 \u7965 \u8be6 \u60f3 \u54cd \u4eab \u9879 \u5df7\ -CFF0 \u6a61 \u50cf \u5411 \u8c61 \u8427 \u785d \u9704 \u524a \u54ee \u56a3 \u9500 \u6d88 \u5bb5 \u6dc6 \u6653 \ -\u7b2c48\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D0A0 \u5c0f \u5b5d \u6821 \u8096 \u5578 \u7b11 \u6548 \u6954 \u4e9b \u6b47 \u874e \u978b \u534f \u631f \u643a\ -D0B0 \u90aa \u659c \u80c1 \u8c10 \u5199 \u68b0 \u5378 \u87f9 \u61c8 \u6cc4 \u6cfb \u8c22 \u5c51 \u85aa \u82af \u950c\ -D0C0 \u6b23 \u8f9b \u65b0 \u5ffb \u5fc3 \u4fe1 \u8845 \u661f \u8165 \u7329 \u60fa \u5174 \u5211 \u578b \u5f62 \u90a2\ -D0D0 \u884c \u9192 \u5e78 \u674f \u6027 \u59d3 \u5144 \u51f6 \u80f8 \u5308 \u6c79 \u96c4 \u718a \u4f11 \u4fee \u7f9e\ -D0E0 \u673d \u55c5 \u9508 \u79c0 \u8896 \u7ee3 \u589f \u620c \u9700 \u865a \u5618 \u987b \u5f90 \u8bb8 \u84c4 \u9157\ -D0F0 \u53d9 \u65ed \u5e8f \u755c \u6064 \u7d6e \u5a7f \u7eea \u7eed \u8f69 \u55a7 \u5ba3 \u60ac \u65cb \u7384 \ -\u7b2c49\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D1A0 \u9009 \u7663 \u7729 \u7eda \u9774 \u859b \u5b66 \u7a74 \u96ea \u8840 \u52cb \u718f \u5faa \u65ec \u8be2\ -D1B0 \u5bfb \u9a6f \u5de1 \u6b89 \u6c5b \u8bad \u8baf \u900a \u8fc5 \u538b \u62bc \u9e26 \u9e2d \u5440 \u4e2b \u82bd\ -D1C0 \u7259 \u869c \u5d16 \u8859 \u6daf \u96c5 \u54d1 \u4e9a \u8bb6 \u7109 \u54bd \u9609 \u70df \u6df9 \u76d0 \u4e25\ -D1D0 \u7814 \u8712 \u5ca9 \u5ef6 \u8a00 \u989c \u960e \u708e \u6cbf \u5944 \u63a9 \u773c \u884d \u6f14 \u8273 \u5830\ -D1E0 \u71d5 \u538c \u781a \u96c1 \u5501 \u5f66 \u7130 \u5bb4 \u8c1a \u9a8c \u6b83 \u592e \u9e2f \u79e7 \u6768 \u626c\ -D1F0 \u4f6f \u75a1 \u7f8a \u6d0b \u9633 \u6c27 \u4ef0 \u75d2 \u517b \u6837 \u6f3e \u9080 \u8170 \u5996 \u7476 \ -\u7b2c50\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D2A0 \u6447 \u5c27 \u9065 \u7a91 \u8c23 \u59da \u54ac \u8200 \u836f \u8981 \u8000 \u6930 \u564e \u8036 \u7237\ -D2B0 \u91ce \u51b6 \u4e5f \u9875 \u6396 \u4e1a \u53f6 \u66f3 \u814b \u591c \u6db2 \u4e00 \u58f9 \u533b \u63d6 \u94f1\ -D2C0 \u4f9d \u4f0a \u8863 \u9890 \u5937 \u9057 \u79fb \u4eea \u80f0 \u7591 \u6c82 \u5b9c \u59e8 \u5f5d \u6905 \u8681\ -D2D0 \u501a \u5df2 \u4e59 \u77e3 \u4ee5 \u827a \u6291 \u6613 \u9091 \u5c79 \u4ebf \u5f79 \u81c6 \u9038 \u8084 \u75ab\ -D2E0 \u4ea6 \u88d4 \u610f \u6bc5 \u5fc6 \u4e49 \u76ca \u6ea2 \u8be3 \u8bae \u8c0a \u8bd1 \u5f02 \u7ffc \u7fcc \u7ece\ -D2F0 \u8335 \u836b \u56e0 \u6bb7 \u97f3 \u9634 \u59fb \u541f \u94f6 \u6deb \u5bc5 \u996e \u5c39 \u5f15 \u9690 \ -\u7b2c51\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D3A0 \u5370 \u82f1 \u6a31 \u5a74 \u9e70 \u5e94 \u7f28 \u83b9 \u8424 \u8425 \u8367 \u8747 \u8fce \u8d62 \u76c8\ -D3B0 \u5f71 \u9896 \u786c \u6620 \u54df \u62e5 \u4f63 \u81c3 \u75c8 \u5eb8 \u96cd \u8e0a \u86f9 \u548f \u6cf3 \u6d8c\ -D3C0 \u6c38 \u607f \u52c7 \u7528 \u5e7d \u4f18 \u60a0 \u5fe7 \u5c24 \u7531 \u90ae \u94c0 \u72b9 \u6cb9 \u6e38 \u9149\ -D3D0 \u6709 \u53cb \u53f3 \u4f51 \u91c9 \u8bf1 \u53c8 \u5e7c \u8fc2 \u6de4 \u4e8e \u76c2 \u6986 \u865e \u611a \u8206\ -D3E0 \u4f59 \u4fde \u903e \u9c7c \u6109 \u6e1d \u6e14 \u9685 \u4e88 \u5a31 \u96e8 \u4e0e \u5c7f \u79b9 \u5b87 \u8bed\ -D3F0 \u7fbd \u7389 \u57df \u828b \u90c1 \u5401 \u9047 \u55bb \u5cea \u5fa1 \u6108 \u6b32 \u72f1 \u80b2 \u8a89 \ -\u7b2c52\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D4A0 \u6d74 \u5bd3 \u88d5 \u9884 \u8c6b \u9a6d \u9e33 \u6e0a \u51a4 \u5143 \u57a3 \u8881 \u539f \u63f4 \u8f95\ -D4B0 \u56ed \u5458 \u5706 \u733f \u6e90 \u7f18 \u8fdc \u82d1 \u613f \u6028 \u9662 \u66f0 \u7ea6 \u8d8a \u8dc3 \u94a5\ -D4C0 \u5cb3 \u7ca4 \u6708 \u60a6 \u9605 \u8018 \u4e91 \u90e7 \u5300 \u9668 \u5141 \u8fd0 \u8574 \u915d \u6655 \u97f5\ -D4D0 \u5b55 \u531d \u7838 \u6742 \u683d \u54c9 \u707e \u5bb0 \u8f7d \u518d \u5728 \u54b1 \u6512 \u6682 \u8d5e \u8d43\ -D4E0 \u810f \u846c \u906d \u7cdf \u51ff \u85fb \u67a3 \u65e9 \u6fa1 \u86a4 \u8e81 \u566a \u9020 \u7682 \u7076 \u71e5\ -D4F0 \u8d23 \u62e9 \u5219 \u6cfd \u8d3c \u600e \u589e \u618e \u66fe \u8d60 \u624e \u55b3 \u6e23 \u672d \u8f67 \ -\u7b2c53\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D5A0 \u94e1 \u95f8 \u7728 \u6805 \u69a8 \u548b \u4e4d \u70b8 \u8bc8 \u6458 \u658b \u5b85 \u7a84 \u503a \u5be8\ -D5B0 \u77bb \u6be1 \u8a79 \u7c98 \u6cbe \u76cf \u65a9 \u8f97 \u5d2d \u5c55 \u8638 \u6808 \u5360 \u6218 \u7ad9 \u6e5b\ -D5C0 \u7efd \u6a1f \u7ae0 \u5f70 \u6f33 \u5f20 \u638c \u6da8 \u6756 \u4e08 \u5e10 \u8d26 \u4ed7 \u80c0 \u7634 \u969c\ -D5D0 \u62db \u662d \u627e \u6cbc \u8d75 \u7167 \u7f69 \u5146 \u8087 \u53ec \u906e \u6298 \u54f2 \u86f0 \u8f99 \u8005\ -D5E0 \u9517 \u8517 \u8fd9 \u6d59 \u73cd \u659f \u771f \u7504 \u7827 \u81fb \u8d1e \u9488 \u4fa6 \u6795 \u75b9 \u8bca\ -D5F0 \u9707 \u632f \u9547 \u9635 \u84b8 \u6323 \u7741 \u5f81 \u72f0 \u4e89 \u6014 \u6574 \u62ef \u6b63 \u653f \ -\u7b2c54\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D6A0 \u5e27 \u75c7 \u90d1 \u8bc1 \u829d \u679d \u652f \u5431 \u8718 \u77e5 \u80a2 \u8102 \u6c41 \u4e4b \u7ec7\ -D6B0 \u804c \u76f4 \u690d \u6b96 \u6267 \u503c \u4f84 \u5740 \u6307 \u6b62 \u8dbe \u53ea \u65e8 \u7eb8 \u5fd7 \u631a\ -D6C0 \u63b7 \u81f3 \u81f4 \u7f6e \u5e1c \u5cd9 \u5236 \u667a \u79e9 \u7a1a \u8d28 \u7099 \u75d4 \u6ede \u6cbb \u7a92\ -D6D0 \u4e2d \u76c5 \u5fe0 \u949f \u8877 \u7ec8 \u79cd \u80bf \u91cd \u4ef2 \u4f17 \u821f \u5468 \u5dde \u6d32 \u8bcc\ -D6E0 \u7ca5 \u8f74 \u8098 \u5e1a \u5492 \u76b1 \u5b99 \u663c \u9aa4 \u73e0 \u682a \u86db \u6731 \u732a \u8bf8 \u8bdb\ -D6F0 \u9010 \u7af9 \u70db \u716e \u62c4 \u77a9 \u5631 \u4e3b \u8457 \u67f1 \u52a9 \u86c0 \u8d2e \u94f8 \u7b51 \ -\u7b2c55\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D7A0 \u4f4f \u6ce8 \u795d \u9a7b \u6293 \u722a \u62fd \u4e13 \u7816 \u8f6c \u64b0 \u8d5a \u7bc6 \u6869 \u5e84\ -D7B0 \u88c5 \u5986 \u649e \u58ee \u72b6 \u690e \u9525 \u8ffd \u8d58 \u5760 \u7f00 \u8c06 \u51c6 \u6349 \u62d9 \u5353\ -D7C0 \u684c \u7422 \u8301 \u914c \u5544 \u7740 \u707c \u6d4a \u5179 \u54a8 \u8d44 \u59ff \u6ecb \u6dc4 \u5b5c \u7d2b\ -D7D0 \u4ed4 \u7c7d \u6ed3 \u5b50 \u81ea \u6e0d \u5b57 \u9b03 \u68d5 \u8e2a \u5b97 \u7efc \u603b \u7eb5 \u90b9 \u8d70\ -D7E0 \u594f \u63cd \u79df \u8db3 \u5352 \u65cf \u7956 \u8bc5 \u963b \u7ec4 \u94bb \u7e82 \u5634 \u9189 \u6700 \u7f6a\ -D7F0 \u5c0a \u9075 \u6628 \u5de6 \u4f50 \u67de \u505a \u4f5c \u5750 \u5ea7 \ -\u7b2c56\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D8A0 \u4e8d \u4e0c \u5140 \u4e10 \u5eff \u5345 \u4e15 \u4e98 \u4e1e \u9b32 \u5b6c \u5669 \u4e28 \u79ba \u4e3f\ -D8B0 \u5315 \u4e47 \u592d \u723b \u536e \u6c10 \u56df \u80e4 \u9997 \u6bd3 \u777e \u9f17 \u4e36 \u4e9f \u9f10 \u4e5c\ -D8C0 \u4e69 \u4e93 \u8288 \u5b5b \u556c \u560f \u4ec4 \u538d \u539d \u53a3 \u53a5 \u53ae \u9765 \u8d5d \u531a \u53f5\ -D8D0 \u5326 \u532e \u533e \u8d5c \u5366 \u5363 \u5202 \u5208 \u520e \u522d \u5233 \u523f \u5240 \u524c \u525e \u5261\ -D8E0 \u525c \u84af \u527d \u5282 \u5281 \u5290 \u5293 \u5182 \u7f54 \u4ebb \u4ec3 \u4ec9 \u4ec2 \u4ee8 \u4ee1 \u4eeb\ -D8F0 \u4ede \u4f1b \u4ef3 \u4f22 \u4f64 \u4ef5 \u4f25 \u4f27 \u4f09 \u4f2b \u4f5e \u4f67 \u6538 \u4f5a \u4f5d \ -\u7b2c57\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -D9A0 \u4f5f \u4f57 \u4f32 \u4f3d \u4f76 \u4f74 \u4f91 \u4f89 \u4f83 \u4f8f \u4f7e \u4f7b \u4faa \u4f7c \u4fac\ -D9B0 \u4f94 \u4fe6 \u4fe8 \u4fea \u4fc5 \u4fda \u4fe3 \u4fdc \u4fd1 \u4fdf \u4ff8 \u5029 \u504c \u4ff3 \u502c \u500f\ -D9C0 \u502e \u502d \u4ffe \u501c \u500c \u5025 \u5028 \u507e \u5043 \u5055 \u5048 \u504e \u506c \u507b \u50a5 \u50a7\ -D9D0 \u50a9 \u50ba \u50d6 \u5106 \u50ed \u50ec \u50e6 \u50ee \u5107 \u510b \u4edd \u6c3d \u4f58 \u4f65 \u4fce \u9fa0\ -D9E0 \u6c46 \u7c74 \u516e \u5dfd \u9ec9 \u9998 \u5181 \u5914 \u52f9 \u530d \u8a07 \u5310 \u51eb \u5919 \u5155 \u4ea0\ -D9F0 \u5156 \u4eb3 \u886e \u88a4 \u4eb5 \u8114 \u88d2 \u7980 \u5b34 \u8803 \u7fb8 \u51ab \u51b1 \u51bd \u51bc \ -\u7b2c58\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -DAA0 \u51c7 \u5196 \u51a2 \u51a5 \u8ba0 \u8ba6 \u8ba7 \u8baa \u8bb4 \u8bb5 \u8bb7 \u8bc2 \u8bc3 \u8bcb \u8bcf\ -DAB0 \u8bce \u8bd2 \u8bd3 \u8bd4 \u8bd6 \u8bd8 \u8bd9 \u8bdc \u8bdf \u8be0 \u8be4 \u8be8 \u8be9 \u8bee \u8bf0 \u8bf3\ -DAC0 \u8bf6 \u8bf9 \u8bfc \u8bff \u8c00 \u8c02 \u8c04 \u8c07 \u8c0c \u8c0f \u8c11 \u8c12 \u8c14 \u8c15 \u8c16 \u8c19\ -DAD0 \u8c1b \u8c18 \u8c1d \u8c1f \u8c20 \u8c21 \u8c25 \u8c27 \u8c2a \u8c2b \u8c2e \u8c2f \u8c32 \u8c33 \u8c35 \u8c36\ -DAE0 \u5369 \u537a \u961d \u9622 \u9621 \u9631 \u962a \u963d \u963c \u9642 \u9649 \u9654 \u965f \u9667 \u966c \u9672\ -DAF0 \u9674 \u9688 \u968d \u9697 \u96b0 \u9097 \u909b \u909d \u9099 \u90ac \u90a1 \u90b4 \u90b3 \u90b6 \u90ba \ -\u7b2c59\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -DBA0 \u90b8 \u90b0 \u90cf \u90c5 \u90be \u90d0 \u90c4 \u90c7 \u90d3 \u90e6 \u90e2 \u90dc \u90d7 \u90db \u90eb\ -DBB0 \u90ef \u90fe \u9104 \u9122 \u911e \u9123 \u9131 \u912f \u9139 \u9143 \u9146 \u520d \u5942 \u52a2 \u52ac \u52ad\ -DBC0 \u52be \u54ff \u52d0 \u52d6 \u52f0 \u53df \u71ee \u77cd \u5ef4 \u51f5 \u51fc \u9b2f \u53b6 \u5f01 \u755a \u5def\ -DBD0 \u574c \u57a9 \u57a1 \u587e \u58bc \u58c5 \u58d1 \u5729 \u572c \u572a \u5733 \u5739 \u572e \u572f \u575c \u573b\ -DBE0 \u5742 \u5769 \u5785 \u576b \u5786 \u577c \u577b \u5768 \u576d \u5776 \u5773 \u57ad \u57a4 \u578c \u57b2 \u57cf\ -DBF0 \u57a7 \u57b4 \u5793 \u57a0 \u57d5 \u57d8 \u57da \u57d9 \u57d2 \u57b8 \u57f4 \u57ef \u57f8 \u57e4 \u57dd \ -\u7b2c60\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -DCA0 \u580b \u580d \u57fd \u57ed \u5800 \u581e \u5819 \u5844 \u5820 \u5865 \u586c \u5881 \u5889 \u589a \u5880\ -DCB0 \u99a8 \u9f19 \u61ff \u8279 \u827d \u827f \u828f \u828a \u82a8 \u8284 \u828e \u8291 \u8297 \u8299 \u82ab \u82b8\ -DCC0 \u82be \u82b0 \u82c8 \u82ca \u82e3 \u8298 \u82b7 \u82ae \u82cb \u82cc \u82c1 \u82a9 \u82b4 \u82a1 \u82aa \u829f\ -DCD0 \u82c4 \u82ce \u82a4 \u82e1 \u8309 \u82f7 \u82e4 \u830f \u8307 \u82dc \u82f4 \u82d2 \u82d8 \u830c \u82fb \u82d3\ -DCE0 \u8311 \u831a \u8306 \u8314 \u8315 \u82e0 \u82d5 \u831c \u8351 \u835b \u835c \u8308 \u8392 \u833c \u8334 \u8331\ -DCF0 \u839b \u835e \u832f \u834f \u8347 \u8343 \u835f \u8340 \u8317 \u8360 \u832d \u833a \u8333 \u8366 \u8365 \ -\u7b2c61\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -DDA0 \u8368 \u831b \u8369 \u836c \u836a \u836d \u836e \u83b0 \u8378 \u83b3 \u83b4 \u83a0 \u83aa \u8393 \u839c\ -DDB0 \u8385 \u837c \u83b6 \u83a9 \u837d \u83b8 \u837b \u8398 \u839e \u83a8 \u83ba \u83bc \u83c1 \u8401 \u83e5 \u83d8\ -DDC0 \u5807 \u8418 \u840b \u83dd \u83fd \u83d6 \u841c \u8438 \u8411 \u8406 \u83d4 \u83df \u840f \u8403 \u83f8 \u83f9\ -DDD0 \u83ea \u83c5 \u83c0 \u8426 \u83f0 \u83e1 \u845c \u8451 \u845a \u8459 \u8473 \u8487 \u8488 \u847a \u8489 \u8478\ -DDE0 \u843c \u8446 \u8469 \u8476 \u848c \u848e \u8431 \u846d \u84c1 \u84cd \u84d0 \u84e6 \u84bd \u84d3 \u84ca \u84bf\ -DDF0 \u84ba \u84e0 \u84a1 \u84b9 \u84b4 \u8497 \u84e5 \u84e3 \u850c \u750d \u8538 \u84f0 \u8539 \u851f \u853a \ -\u7b2c62\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -DEA0 \u8556 \u853b \u84ff \u84fc \u8559 \u8548 \u8568 \u8564 \u855e \u857a \u77a2 \u8543 \u8572 \u857b \u85a4\ -DEB0 \u85a8 \u8587 \u858f \u8579 \u85ae \u859c \u8585 \u85b9 \u85b7 \u85b0 \u85d3 \u85c1 \u85dc \u85ff \u8627 \u8605\ -DEC0 \u8629 \u8616 \u863c \u5efe \u5f08 \u593c \u5941 \u8037 \u5955 \u595a \u5958 \u530f \u5c22 \u5c25 \u5c2c \u5c34\ -DED0 \u624c \u626a \u629f \u62bb \u62ca \u62da \u62d7 \u62ee \u6322 \u62f6 \u6339 \u634b \u6343 \u63ad \u63f6 \u6371\ -DEE0 \u637a \u638e \u63b4 \u636d \u63ac \u638a \u6369 \u63ae \u63bc \u63f2 \u63f8 \u63e0 \u63ff \u63c4 \u63de \u63ce\ -DEF0 \u6452 \u63c6 \u63be \u6445 \u6441 \u640b \u641b \u6420 \u640c \u6426 \u6421 \u645e \u6484 \u646d \u6496 \ -\u7b2c63\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -DFA0 \u647a \u64b7 \u64b8 \u6499 \u64ba \u64c0 \u64d0 \u64d7 \u64e4 \u64e2 \u6509 \u6525 \u652e \u5f0b \u5fd2\ -DFB0 \u7519 \u5f11 \u535f \u53f1 \u53fd \u53e9 \u53e8 \u53fb \u5412 \u5416 \u5406 \u544b \u5452 \u5453 \u5454 \u5456\ -DFC0 \u5443 \u5421 \u5457 \u5459 \u5423 \u5432 \u5482 \u5494 \u5477 \u5471 \u5464 \u549a \u549b \u5484 \u5476 \u5466\ -DFD0 \u549d \u54d0 \u54ad \u54c2 \u54b4 \u54d2 \u54a7 \u54a6 \u54d3 \u54d4 \u5472 \u54a3 \u54d5 \u54bb \u54bf \u54cc\ -DFE0 \u54d9 \u54da \u54dc \u54a9 \u54aa \u54a4 \u54dd \u54cf \u54de \u551b \u54e7 \u5520 \u54fd \u5514 \u54f3 \u5522\ -DFF0 \u5523 \u550f \u5511 \u5527 \u552a \u5567 \u558f \u55b5 \u5549 \u556d \u5541 \u5555 \u553f \u5550 \u553c \ -\u7b2c64\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E0A0 \u5537 \u5556 \u5575 \u5576 \u5577 \u5533 \u5530 \u555c \u558b \u55d2 \u5583 \u55b1 \u55b9 \u5588 \u5581\ -E0B0 \u559f \u557e \u55d6 \u5591 \u557b \u55df \u55bd \u55be \u5594 \u5599 \u55ea \u55f7 \u55c9 \u561f \u55d1 \u55eb\ -E0C0 \u55ec \u55d4 \u55e6 \u55dd \u55c4 \u55ef \u55e5 \u55f2 \u55f3 \u55cc \u55cd \u55e8 \u55f5 \u55e4 \u8f94 \u561e\ -E0D0 \u5608 \u560c \u5601 \u5624 \u5623 \u55fe \u5600 \u5627 \u562d \u5658 \u5639 \u5657 \u562c \u564d \u5662 \u5659\ -E0E0 \u565c \u564c \u5654 \u5686 \u5664 \u5671 \u566b \u567b \u567c \u5685 \u5693 \u56af \u56d4 \u56d7 \u56dd \u56e1\ -E0F0 \u56f5 \u56eb \u56f9 \u56ff \u5704 \u570a \u5709 \u571c \u5e0f \u5e19 \u5e14 \u5e11 \u5e31 \u5e3b \u5e3c \ -\u7b2c65\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E1A0 \u5e37 \u5e44 \u5e54 \u5e5b \u5e5e \u5e61 \u5c8c \u5c7a \u5c8d \u5c90 \u5c96 \u5c88 \u5c98 \u5c99 \u5c91\ -E1B0 \u5c9a \u5c9c \u5cb5 \u5ca2 \u5cbd \u5cac \u5cab \u5cb1 \u5ca3 \u5cc1 \u5cb7 \u5cc4 \u5cd2 \u5ce4 \u5ccb \u5ce5\ -E1C0 \u5d02 \u5d03 \u5d27 \u5d26 \u5d2e \u5d24 \u5d1e \u5d06 \u5d1b \u5d58 \u5d3e \u5d34 \u5d3d \u5d6c \u5d5b \u5d6f\ -E1D0 \u5d5d \u5d6b \u5d4b \u5d4a \u5d69 \u5d74 \u5d82 \u5d99 \u5d9d \u8c73 \u5db7 \u5dc5 \u5f73 \u5f77 \u5f82 \u5f87\ -E1E0 \u5f89 \u5f8c \u5f95 \u5f99 \u5f9c \u5fa8 \u5fad \u5fb5 \u5fbc \u8862 \u5f61 \u72ad \u72b0 \u72b4 \u72b7 \u72b8\ -E1F0 \u72c3 \u72c1 \u72ce \u72cd \u72d2 \u72e8 \u72ef \u72e9 \u72f2 \u72f4 \u72f7 \u7301 \u72f3 \u7303 \u72fa \ -\u7b2c66\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E2A0 \u72fb \u7317 \u7313 \u7321 \u730a \u731e \u731d \u7315 \u7322 \u7339 \u7325 \u732c \u7338 \u7331 \u7350\ -E2B0 \u734d \u7357 \u7360 \u736c \u736f \u737e \u821b \u5925 \u98e7 \u5924 \u5902 \u9963 \u9967 \u9968 \u9969 \u996a\ -E2C0 \u996b \u996c \u9974 \u9977 \u997d \u9980 \u9984 \u9987 \u998a \u998d \u9990 \u9991 \u9993 \u9994 \u9995 \u5e80\ -E2D0 \u5e91 \u5e8b \u5e96 \u5ea5 \u5ea0 \u5eb9 \u5eb5 \u5ebe \u5eb3 \u8d53 \u5ed2 \u5ed1 \u5edb \u5ee8 \u5eea \u81ba\ -E2E0 \u5fc4 \u5fc9 \u5fd6 \u5fcf \u6003 \u5fee \u6004 \u5fe1 \u5fe4 \u5ffe \u6005 \u6006 \u5fea \u5fed \u5ff8 \u6019\ -E2F0 \u6035 \u6026 \u601b \u600f \u600d \u6029 \u602b \u600a \u603f \u6021 \u6078 \u6079 \u607b \u607a \u6042 \ -\u7b2c67\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E3A0 \u606a \u607d \u6096 \u609a \u60ad \u609d \u6083 \u6092 \u608c \u609b \u60ec \u60bb \u60b1 \u60dd \u60d8\ -E3B0 \u60c6 \u60da \u60b4 \u6120 \u6126 \u6115 \u6123 \u60f4 \u6100 \u610e \u612b \u614a \u6175 \u61ac \u6194 \u61a7\ -E3C0 \u61b7 \u61d4 \u61f5 \u5fdd \u96b3 \u95e9 \u95eb \u95f1 \u95f3 \u95f5 \u95f6 \u95fc \u95fe \u9603 \u9604 \u9606\ -E3D0 \u9608 \u960a \u960b \u960c \u960d \u960f \u9612 \u9615 \u9616 \u9617 \u9619 \u961a \u4e2c \u723f \u6215 \u6c35\ -E3E0 \u6c54 \u6c5c \u6c4a \u6ca3 \u6c85 \u6c90 \u6c94 \u6c8c \u6c68 \u6c69 \u6c74 \u6c76 \u6c86 \u6ca9 \u6cd0 \u6cd4\ -E3F0 \u6cad \u6cf7 \u6cf8 \u6cf1 \u6cd7 \u6cb2 \u6ce0 \u6cd6 \u6cfa \u6ceb \u6cee \u6cb1 \u6cd3 \u6cef \u6cfe \ -\u7b2c68\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E4A0 \u6d39 \u6d27 \u6d0c \u6d43 \u6d48 \u6d07 \u6d04 \u6d19 \u6d0e \u6d2b \u6d4d \u6d2e \u6d35 \u6d1a \u6d4f\ -E4B0 \u6d52 \u6d54 \u6d33 \u6d91 \u6d6f \u6d9e \u6da0 \u6d5e \u6d93 \u6d94 \u6d5c \u6d60 \u6d7c \u6d63 \u6e1a \u6dc7\ -E4C0 \u6dc5 \u6dde \u6e0e \u6dbf \u6de0 \u6e11 \u6de6 \u6ddd \u6dd9 \u6e16 \u6dab \u6e0c \u6dae \u6e2b \u6e6e \u6e4e\ -E4D0 \u6e6b \u6eb2 \u6e5f \u6e86 \u6e53 \u6e54 \u6e32 \u6e25 \u6e44 \u6edf \u6eb1 \u6e98 \u6ee0 \u6f2d \u6ee2 \u6ea5\ -E4E0 \u6ea7 \u6ebd \u6ebb \u6eb7 \u6ed7 \u6eb4 \u6ecf \u6e8f \u6ec2 \u6e9f \u6f62 \u6f46 \u6f47 \u6f24 \u6f15 \u6ef9\ -E4F0 \u6f2f \u6f36 \u6f4b \u6f74 \u6f2a \u6f09 \u6f29 \u6f89 \u6f8d \u6f8c \u6f78 \u6f72 \u6f7c \u6f7a \u6fd1 \ -\u7b2c69\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E5A0 \u6fc9 \u6fa7 \u6fb9 \u6fb6 \u6fc2 \u6fe1 \u6fee \u6fde \u6fe0 \u6fef \u701a \u7023 \u701b \u7039 \u7035\ -E5B0 \u704f \u705e \u5b80 \u5b84 \u5b95 \u5b93 \u5ba5 \u5bb8 \u752f \u9a9e \u6434 \u5be4 \u5bee \u8930 \u5bf0 \u8e47\ -E5C0 \u8b07 \u8fb6 \u8fd3 \u8fd5 \u8fe5 \u8fee \u8fe4 \u8fe9 \u8fe6 \u8ff3 \u8fe8 \u9005 \u9004 \u900b \u9026 \u9011\ -E5D0 \u900d \u9016 \u9021 \u9035 \u9036 \u902d \u902f \u9044 \u9051 \u9052 \u9050 \u9068 \u9058 \u9062 \u905b \u66b9\ -E5E0 \u9074 \u907d \u9082 \u9088 \u9083 \u908b \u5f50 \u5f57 \u5f56 \u5f58 \u5c3b \u54ab \u5c50 \u5c59 \u5b71 \u5c63\ -E5F0 \u5c66 \u7fbc \u5f2a \u5f29 \u5f2d \u8274 \u5f3c \u9b3b \u5c6e \u5981 \u5983 \u598d \u59a9 \u59aa \u59a3 \ -\u7b2c70\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E6A0 \u5997 \u59ca \u59ab \u599e \u59a4 \u59d2 \u59b2 \u59af \u59d7 \u59be \u5a05 \u5a06 \u59dd \u5a08 \u59e3\ -E6B0 \u59d8 \u59f9 \u5a0c \u5a09 \u5a32 \u5a34 \u5a11 \u5a23 \u5a13 \u5a40 \u5a67 \u5a4a \u5a55 \u5a3c \u5a62 \u5a75\ -E6C0 \u80ec \u5aaa \u5a9b \u5a77 \u5a7a \u5abe \u5aeb \u5ab2 \u5ad2 \u5ad4 \u5ab8 \u5ae0 \u5ae3 \u5af1 \u5ad6 \u5ae6\ -E6D0 \u5ad8 \u5adc \u5b09 \u5b17 \u5b16 \u5b32 \u5b37 \u5b40 \u5c15 \u5c1c \u5b5a \u5b65 \u5b73 \u5b51 \u5b53 \u5b62\ -E6E0 \u9a75 \u9a77 \u9a78 \u9a7a \u9a7f \u9a7d \u9a80 \u9a81 \u9a85 \u9a88 \u9a8a \u9a90 \u9a92 \u9a93 \u9a96 \u9a98\ -E6F0 \u9a9b \u9a9c \u9a9d \u9a9f \u9aa0 \u9aa2 \u9aa3 \u9aa5 \u9aa7 \u7e9f \u7ea1 \u7ea3 \u7ea5 \u7ea8 \u7ea9 \ -\u7b2c71\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E7A0 \u7ead \u7eb0 \u7ebe \u7ec0 \u7ec1 \u7ec2 \u7ec9 \u7ecb \u7ecc \u7ed0 \u7ed4 \u7ed7 \u7edb \u7ee0 \u7ee1\ -E7B0 \u7ee8 \u7eeb \u7eee \u7eef \u7ef1 \u7ef2 \u7f0d \u7ef6 \u7efa \u7efb \u7efe \u7f01 \u7f02 \u7f03 \u7f07 \u7f08\ -E7C0 \u7f0b \u7f0c \u7f0f \u7f11 \u7f12 \u7f17 \u7f19 \u7f1c \u7f1b \u7f1f \u7f21 \u7f22 \u7f23 \u7f24 \u7f25 \u7f26\ -E7D0 \u7f27 \u7f2a \u7f2b \u7f2c \u7f2d \u7f2f \u7f30 \u7f31 \u7f32 \u7f33 \u7f35 \u5e7a \u757f \u5ddb \u753e \u9095\ -E7E0 \u738e \u7391 \u73ae \u73a2 \u739f \u73cf \u73c2 \u73d1 \u73b7 \u73b3 \u73c0 \u73c9 \u73c8 \u73e5 \u73d9 \u987c\ -E7F0 \u740a \u73e9 \u73e7 \u73de \u73ba \u73f2 \u740f \u742a \u745b \u7426 \u7425 \u7428 \u7430 \u742e \u742c \ -\u7b2c72\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E8A0 \u741b \u741a \u7441 \u745c \u7457 \u7455 \u7459 \u7477 \u746d \u747e \u749c \u748e \u7480 \u7481 \u7487\ -E8B0 \u748b \u749e \u74a8 \u74a9 \u7490 \u74a7 \u74d2 \u74ba \u97ea \u97eb \u97ec \u674c \u6753 \u675e \u6748 \u6769\ -E8C0 \u67a5 \u6787 \u676a \u6773 \u6798 \u67a7 \u6775 \u67a8 \u679e \u67ad \u678b \u6777 \u677c \u67f0 \u6809 \u67d8\ -E8D0 \u680a \u67e9 \u67b0 \u680c \u67d9 \u67b5 \u67da \u67b3 \u67dd \u6800 \u67c3 \u67b8 \u67e2 \u680e \u67c1 \u67fd\ -E8E0 \u6832 \u6833 \u6860 \u6861 \u684e \u6862 \u6844 \u6864 \u6883 \u681d \u6855 \u6866 \u6841 \u6867 \u6840 \u683e\ -E8F0 \u684a \u6849 \u6829 \u68b5 \u688f \u6874 \u6877 \u6893 \u686b \u68c2 \u696e \u68fc \u691f \u6920 \u68f9 \ -\u7b2c73\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -E9A0 \u6924 \u68f0 \u690b \u6901 \u6957 \u68e3 \u6910 \u6971 \u6939 \u6960 \u6942 \u695d \u6984 \u696b \u6980\ -E9B0 \u6998 \u6978 \u6934 \u69cc \u6987 \u6988 \u69ce \u6989 \u6966 \u6963 \u6979 \u699b \u69a7 \u69bb \u69ab \u69ad\ -E9C0 \u69d4 \u69b1 \u69c1 \u69ca \u69df \u6995 \u69e0 \u698d \u69ff \u6a2f \u69ed \u6a17 \u6a18 \u6a65 \u69f2 \u6a44\ -E9D0 \u6a3e \u6aa0 \u6a50 \u6a5b \u6a35 \u6a8e \u6a79 \u6a3d \u6a28 \u6a58 \u6a7c \u6a91 \u6a90 \u6aa9 \u6a97 \u6aab\ -E9E0 \u7337 \u7352 \u6b81 \u6b82 \u6b87 \u6b84 \u6b92 \u6b93 \u6b8d \u6b9a \u6b9b \u6ba1 \u6baa \u8f6b \u8f6d \u8f71\ -E9F0 \u8f72 \u8f73 \u8f75 \u8f76 \u8f78 \u8f77 \u8f79 \u8f7a \u8f7c \u8f7e \u8f81 \u8f82 \u8f84 \u8f87 \u8f8b \ -\u7b2c74\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -EAA0 \u8f8d \u8f8e \u8f8f \u8f98 \u8f9a \u8ece \u620b \u6217 \u621b \u621f \u6222 \u6221 \u6225 \u6224 \u622c\ -EAB0 \u81e7 \u74ef \u74f4 \u74ff \u750f \u7511 \u7513 \u6534 \u65ee \u65ef \u65f0 \u660a \u6619 \u6772 \u6603 \u6615\ -EAC0 \u6600 \u7085 \u66f7 \u661d \u6634 \u6631 \u6636 \u6635 \u8006 \u665f \u6654 \u6641 \u664f \u6656 \u6661 \u6657\ -EAD0 \u6677 \u6684 \u668c \u66a7 \u669d \u66be \u66db \u66dc \u66e6 \u66e9 \u8d32 \u8d33 \u8d36 \u8d3b \u8d3d \u8d40\ -EAE0 \u8d45 \u8d46 \u8d48 \u8d49 \u8d47 \u8d4d \u8d55 \u8d59 \u89c7 \u89ca \u89cb \u89cc \u89ce \u89cf \u89d0 \u89d1\ -EAF0 \u726e \u729f \u725d \u7266 \u726f \u727e \u727f \u7284 \u728b \u728d \u728f \u7292 \u6308 \u6332 \u63b0 \ -\u7b2c75\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -EBA0 \u643f \u64d8 \u8004 \u6bea \u6bf3 \u6bfd \u6bf5 \u6bf9 \u6c05 \u6c07 \u6c06 \u6c0d \u6c15 \u6c18 \u6c19\ -EBB0 \u6c1a \u6c21 \u6c29 \u6c24 \u6c2a \u6c32 \u6535 \u6555 \u656b \u724d \u7252 \u7256 \u7230 \u8662 \u5216 \u809f\ -EBC0 \u809c \u8093 \u80bc \u670a \u80bd \u80b1 \u80ab \u80ad \u80b4 \u80b7 \u80e7 \u80e8 \u80e9 \u80ea \u80db \u80c2\ -EBD0 \u80c4 \u80d9 \u80cd \u80d7 \u6710 \u80dd \u80eb \u80f1 \u80f4 \u80ed \u810d \u810e \u80f2 \u80fc \u6715 \u8112\ -EBE0 \u8c5a \u8136 \u811e \u812c \u8118 \u8132 \u8148 \u814c \u8153 \u8174 \u8159 \u815a \u8171 \u8160 \u8169 \u817c\ -EBF0 \u817d \u816d \u8167 \u584d \u5ab5 \u8188 \u8182 \u8191 \u6ed5 \u81a3 \u81aa \u81cc \u6726 \u81ca \u81bb \ -\u7b2c76\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -ECA0 \u81c1 \u81a6 \u6b24 \u6b37 \u6b39 \u6b43 \u6b46 \u6b59 \u98d1 \u98d2 \u98d3 \u98d5 \u98d9 \u98da \u6bb3\ -ECB0 \u5f40 \u6bc2 \u89f3 \u6590 \u9f51 \u6593 \u65bc \u65c6 \u65c4 \u65c3 \u65cc \u65ce \u65d2 \u65d6 \u7080 \u709c\ -ECC0 \u7096 \u709d \u70bb \u70c0 \u70b7 \u70ab \u70b1 \u70e8 \u70ca \u7110 \u7113 \u7116 \u712f \u7131 \u7173 \u715c\ -ECD0 \u7168 \u7145 \u7172 \u714a \u7178 \u717a \u7198 \u71b3 \u71b5 \u71a8 \u71a0 \u71e0 \u71d4 \u71e7 \u71f9 \u721d\ -ECE0 \u7228 \u706c \u7118 \u7166 \u71b9 \u623e \u623d \u6243 \u6248 \u6249 \u793b \u7940 \u7946 \u7949 \u795b \u795c\ -ECF0 \u7953 \u795a \u7962 \u7957 \u7960 \u796f \u7967 \u797a \u7985 \u798a \u799a \u79a7 \u79b3 \u5fd1 \u5fd0 \ -\u7b2c77\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -EDA0 \u603c \u605d \u605a \u6067 \u6041 \u6059 \u6063 \u60ab \u6106 \u610d \u615d \u61a9 \u619d \u61cb \u61d1\ -EDB0 \u6206 \u8080 \u807f \u6c93 \u6cf6 \u6dfc \u77f6 \u77f8 \u7800 \u7809 \u7817 \u7818 \u7811 \u65ab \u782d \u781c\ -EDC0 \u781d \u7839 \u783a \u783b \u781f \u783c \u7825 \u782c \u7823 \u7829 \u784e \u786d \u7856 \u7857 \u7826 \u7850\ -EDD0 \u7847 \u784c \u786a \u789b \u7893 \u789a \u7887 \u789c \u78a1 \u78a3 \u78b2 \u78b9 \u78a5 \u78d4 \u78d9 \u78c9\ -EDE0 \u78ec \u78f2 \u7905 \u78f4 \u7913 \u7924 \u791e \u7934 \u9f9b \u9ef9 \u9efb \u9efc \u76f1 \u7704 \u770d \u76f9\ -EDF0 \u7707 \u7708 \u771a \u7722 \u7719 \u772d \u7726 \u7735 \u7738 \u7750 \u7751 \u7747 \u7743 \u775a \u7768 \ -\u7b2c78\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -EEA0 \u7762 \u7765 \u777f \u778d \u777d \u7780 \u778c \u7791 \u779f \u77a0 \u77b0 \u77b5 \u77bd \u753a \u7540\ -EEB0 \u754e \u754b \u7548 \u755b \u7572 \u7579 \u7583 \u7f58 \u7f61 \u7f5f \u8a48 \u7f68 \u7f74 \u7f71 \u7f79 \u7f81\ -EEC0 \u7f7e \u76cd \u76e5 \u8832 \u9485 \u9486 \u9487 \u948b \u948a \u948c \u948d \u948f \u9490 \u9494 \u9497 \u9495\ -EED0 \u949a \u949b \u949c \u94a3 \u94a4 \u94ab \u94aa \u94ad \u94ac \u94af \u94b0 \u94b2 \u94b4 \u94b6 \u94b7 \u94b8\ -EEE0 \u94b9 \u94ba \u94bc \u94bd \u94bf \u94c4 \u94c8 \u94c9 \u94ca \u94cb \u94cc \u94cd \u94ce \u94d0 \u94d1 \u94d2\ -EEF0 \u94d5 \u94d6 \u94d7 \u94d9 \u94d8 \u94db \u94de \u94df \u94e0 \u94e2 \u94e4 \u94e5 \u94e7 \u94e8 \u94ea \ -\u7b2c79\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -EFA0 \u94e9 \u94eb \u94ee \u94ef \u94f3 \u94f4 \u94f5 \u94f7 \u94f9 \u94fc \u94fd \u94ff \u9503 \u9502 \u9506\ -EFB0 \u9507 \u9509 \u950a \u950d \u950e \u950f \u9512 \u9513 \u9514 \u9515 \u9516 \u9518 \u951b \u951d \u951e \u951f\ -EFC0 \u9522 \u952a \u952b \u9529 \u952c \u9531 \u9532 \u9534 \u9536 \u9537 \u9538 \u953c \u953e \u953f \u9542 \u9535\ -EFD0 \u9544 \u9545 \u9546 \u9549 \u954c \u954e \u954f \u9552 \u9553 \u9554 \u9556 \u9557 \u9558 \u9559 \u955b \u955e\ -EFE0 \u955f \u955d \u9561 \u9562 \u9564 \u9565 \u9566 \u9567 \u9568 \u9569 \u956a \u956b \u956c \u956f \u9571 \u9572\ -EFF0 \u9573 \u953a \u77e7 \u77ec \u96c9 \u79d5 \u79ed \u79e3 \u79eb \u7a06 \u5d47 \u7a03 \u7a02 \u7a1e \u7a14 \ -\u7b2c80\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F0A0 \u7a39 \u7a37 \u7a51 \u9ecf \u99a5 \u7a70 \u7688 \u768e \u7693 \u7699 \u76a4 \u74de \u74e0 \u752c \u9e20\ -F0B0 \u9e22 \u9e28 \u9e29 \u9e2a \u9e2b \u9e2c \u9e32 \u9e31 \u9e36 \u9e38 \u9e37 \u9e39 \u9e3a \u9e3e \u9e41 \u9e42\ -F0C0 \u9e44 \u9e46 \u9e47 \u9e48 \u9e49 \u9e4b \u9e4c \u9e4e \u9e51 \u9e55 \u9e57 \u9e5a \u9e5b \u9e5c \u9e5e \u9e63\ -F0D0 \u9e66 \u9e67 \u9e68 \u9e69 \u9e6a \u9e6b \u9e6c \u9e71 \u9e6d \u9e73 \u7592 \u7594 \u7596 \u75a0 \u759d \u75ac\ -F0E0 \u75a3 \u75b3 \u75b4 \u75b8 \u75c4 \u75b1 \u75b0 \u75c3 \u75c2 \u75d6 \u75cd \u75e3 \u75e8 \u75e6 \u75e4 \u75eb\ -F0F0 \u75e7 \u7603 \u75f1 \u75fc \u75ff \u7610 \u7600 \u7605 \u760c \u7617 \u760a \u7625 \u7618 \u7615 \u7619 \ -\u7b2c81\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F1A0 \u761b \u763c \u7622 \u7620 \u7640 \u762d \u7630 \u763f \u7635 \u7643 \u763e \u7633 \u764d \u765e \u7654\ -F1B0 \u765c \u7656 \u766b \u766f \u7fca \u7ae6 \u7a78 \u7a79 \u7a80 \u7a86 \u7a88 \u7a95 \u7aa6 \u7aa0 \u7aac \u7aa8\ -F1C0 \u7aad \u7ab3 \u8864 \u8869 \u8872 \u887d \u887f \u8882 \u88a2 \u88c6 \u88b7 \u88bc \u88c9 \u88e2 \u88ce \u88e3\ -F1D0 \u88e5 \u88f1 \u891a \u88fc \u88e8 \u88fe \u88f0 \u8921 \u8919 \u8913 \u891b \u890a \u8934 \u892b \u8936 \u8941\ -F1E0 \u8966 \u897b \u758b \u80e5 \u76b2 \u76b4 \u77dc \u8012 \u8014 \u8016 \u801c \u8020 \u8022 \u8025 \u8026 \u8027\ -F1F0 \u8029 \u8028 \u8031 \u800b \u8035 \u8043 \u8046 \u804d \u8052 \u8069 \u8071 \u8983 \u9878 \u9880 \u9883 \ -\u7b2c82\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F2A0 \u9889 \u988c \u988d \u988f \u9894 \u989a \u989b \u989e \u989f \u98a1 \u98a2 \u98a5 \u98a6 \u864d \u8654\ -F2B0 \u866c \u866e \u867f \u867a \u867c \u867b \u86a8 \u868d \u868b \u86ac \u869d \u86a7 \u86a3 \u86aa \u8693 \u86a9\ -F2C0 \u86b6 \u86c4 \u86b5 \u86ce \u86b0 \u86ba \u86b1 \u86af \u86c9 \u86cf \u86b4 \u86e9 \u86f1 \u86f2 \u86ed \u86f3\ -F2D0 \u86d0 \u8713 \u86de \u86f4 \u86df \u86d8 \u86d1 \u8703 \u8707 \u86f8 \u8708 \u870a \u870d \u8709 \u8723 \u873b\ -F2E0 \u871e \u8725 \u872e \u871a \u873e \u8748 \u8734 \u8731 \u8729 \u8737 \u873f \u8782 \u8722 \u877d \u877e \u877b\ -F2F0 \u8760 \u8770 \u874c \u876e \u878b \u8753 \u8763 \u877c \u8764 \u8759 \u8765 \u8793 \u87af \u87a8 \u87d2 \ -\u7b2c83\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F3A0 \u87c6 \u8788 \u8785 \u87ad \u8797 \u8783 \u87ab \u87e5 \u87ac \u87b5 \u87b3 \u87cb \u87d3 \u87bd \u87d1\ -F3B0 \u87c0 \u87ca \u87db \u87ea \u87e0 \u87ee \u8816 \u8813 \u87fe \u880a \u881b \u8821 \u8839 \u883c \u7f36 \u7f42\ -F3C0 \u7f44 \u7f45 \u8210 \u7afa \u7afd \u7b08 \u7b03 \u7b04 \u7b15 \u7b0a \u7b2b \u7b0f \u7b47 \u7b38 \u7b2a \u7b19\ -F3D0 \u7b2e \u7b31 \u7b20 \u7b25 \u7b24 \u7b33 \u7b3e \u7b1e \u7b58 \u7b5a \u7b45 \u7b75 \u7b4c \u7b5d \u7b60 \u7b6e\ -F3E0 \u7b7b \u7b62 \u7b72 \u7b71 \u7b90 \u7ba6 \u7ba7 \u7bb8 \u7bac \u7b9d \u7ba8 \u7b85 \u7baa \u7b9c \u7ba2 \u7bab\ -F3F0 \u7bb4 \u7bd1 \u7bc1 \u7bcc \u7bdd \u7bda \u7be5 \u7be6 \u7bea \u7c0c \u7bfe \u7bfc \u7c0f \u7c16 \u7c0b \ -\u7b2c84\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F4A0 \u7c1f \u7c2a \u7c26 \u7c38 \u7c41 \u7c40 \u81fe \u8201 \u8202 \u8204 \u81ec \u8844 \u8221 \u8222 \u8223\ -F4B0 \u822d \u822f \u8228 \u822b \u8238 \u823b \u8233 \u8234 \u823e \u8244 \u8249 \u824b \u824f \u825a \u825f \u8268\ -F4C0 \u887e \u8885 \u8888 \u88d8 \u88df \u895e \u7f9d \u7f9f \u7fa7 \u7faf \u7fb0 \u7fb2 \u7c7c \u6549 \u7c91 \u7c9d\ -F4D0 \u7c9c \u7c9e \u7ca2 \u7cb2 \u7cbc \u7cbd \u7cc1 \u7cc7 \u7ccc \u7ccd \u7cc8 \u7cc5 \u7cd7 \u7ce8 \u826e \u66a8\ -F4E0 \u7fbf \u7fce \u7fd5 \u7fe5 \u7fe1 \u7fe6 \u7fe9 \u7fee \u7ff3 \u7cf8 \u7d77 \u7da6 \u7dae \u7e47 \u7e9b \u9eb8\ -F4F0 \u9eb4 \u8d73 \u8d84 \u8d94 \u8d91 \u8db1 \u8d67 \u8d6d \u8c47 \u8c49 \u914a \u9150 \u914e \u914f \u9164 \ -\u7b2c85\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F5A0 \u9162 \u9161 \u9170 \u9169 \u916f \u917d \u917e \u9172 \u9174 \u9179 \u918c \u9185 \u9190 \u918d \u9191\ -F5B0 \u91a2 \u91a3 \u91aa \u91ad \u91ae \u91af \u91b5 \u91b4 \u91ba \u8c55 \u9e7e \u8db8 \u8deb \u8e05 \u8e59 \u8e69\ -F5C0 \u8db5 \u8dbf \u8dbc \u8dba \u8dc4 \u8dd6 \u8dd7 \u8dda \u8dde \u8dce \u8dcf \u8ddb \u8dc6 \u8dec \u8df7 \u8df8\ -F5D0 \u8de3 \u8df9 \u8dfb \u8de4 \u8e09 \u8dfd \u8e14 \u8e1d \u8e1f \u8e2c \u8e2e \u8e23 \u8e2f \u8e3a \u8e40 \u8e39\ -F5E0 \u8e35 \u8e3d \u8e31 \u8e49 \u8e41 \u8e42 \u8e51 \u8e52 \u8e4a \u8e70 \u8e76 \u8e7c \u8e6f \u8e74 \u8e85 \u8e8f\ -F5F0 \u8e94 \u8e90 \u8e9c \u8e9e \u8c78 \u8c82 \u8c8a \u8c85 \u8c98 \u8c94 \u659b \u89d6 \u89de \u89da \u89dc \ -\u7b2c86\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F6A0 \u89e5 \u89eb \u89ef \u8a3e \u8b26 \u9753 \u96e9 \u96f3 \u96ef \u9706 \u9701 \u9708 \u970f \u970e \u972a\ -F6B0 \u972d \u9730 \u973e \u9f80 \u9f83 \u9f85 \u9f86 \u9f87 \u9f88 \u9f89 \u9f8a \u9f8c \u9efe \u9f0b \u9f0d \u96b9\ -F6C0 \u96bc \u96bd \u96ce \u96d2 \u77bf \u96e0 \u928e \u92ae \u92c8 \u933e \u936a \u93ca \u938f \u943e \u946b \u9c7f\ -F6D0 \u9c82 \u9c85 \u9c86 \u9c87 \u9c88 \u7a23 \u9c8b \u9c8e \u9c90 \u9c91 \u9c92 \u9c94 \u9c95 \u9c9a \u9c9b \u9c9e\ -F6E0 \u9c9f \u9ca0 \u9ca1 \u9ca2 \u9ca3 \u9ca5 \u9ca6 \u9ca7 \u9ca8 \u9ca9 \u9cab \u9cad \u9cae \u9cb0 \u9cb1 \u9cb2\ -F6F0 \u9cb3 \u9cb4 \u9cb5 \u9cb6 \u9cb7 \u9cba \u9cbb \u9cbc \u9cbd \u9cc4 \u9cc5 \u9cc6 \u9cc7 \u9cca \u9ccb \ -\u7b2c87\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -F7A0 \u9ccc \u9ccd \u9cce \u9ccf \u9cd0 \u9cd3 \u9cd4 \u9cd5 \u9cd7 \u9cd8 \u9cd9 \u9cdc \u9cdd \u9cdf \u9ce2\ -F7B0 \u977c \u9785 \u9791 \u9792 \u9794 \u97af \u97ab \u97a3 \u97b2 \u97b4 \u9ab1 \u9ab0 \u9ab7 \u9e58 \u9ab6 \u9aba\ -F7C0 \u9abc \u9ac1 \u9ac0 \u9ac5 \u9ac2 \u9acb \u9acc \u9ad1 \u9b45 \u9b43 \u9b47 \u9b49 \u9b48 \u9b4d \u9b51 \u98e8\ -F7D0 \u990d \u992e \u9955 \u9954 \u9adf \u9ae1 \u9ae6 \u9aef \u9aeb \u9afb \u9aed \u9af9 \u9b08 \u9b0f \u9b13 \u9b1f\ -F7E0 \u9b23 \u9ebd \u9ebe \u7e3b \u9e82 \u9e87 \u9e88 \u9e8b \u9e92 \u93d6 \u9e9d \u9e9f \u9edb \u9edc \u9edd \u9ee0\ -F7F0 \u9edf \u9ee2 \u9ee9 \u9ee7 \u9ee5 \u9eea \u9eef \u9f22 \u9f2c \u9f2f \u9f39 \u9f37 \u9f3d \u9f3e \u9f44 \ " -constexpr const char big_test_string_utf8[] = _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8; +constexpr const char big_test_string_utf8[] = _big_test_string_utf8; diff --git a/lib/iconv.cpp b/lib/iconv.cpp index ae34d3e9..254b8f00 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -115,11 +115,11 @@ namespace cppp::base::reiconv for (; *cp; cp++, bp++) { unsigned char c = (unsigned char)*cp; - if (c >= 'a' && c <= 'z') // Uppercase + if (c >= 'a' && c <= 'z') // Uppercase. { c -= 'a' - 'A'; } - if (c == '-' || c == '_') // Ignore '-' and '_' + if (c == '-' || c == '_') // Ignore '-' and '_'. { bp--; } @@ -219,10 +219,7 @@ namespace cppp::base::reiconv { return cd->lfuncs.loop_reset(icd, outbuf, outbytesleft); } - else - { - return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); - } + return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); } _CPPP_API void iconv_close(iconv_t icd) diff --git a/repo.json b/repo.json index e439b449..ad6734df 100644 --- a/repo.json +++ b/repo.json @@ -1,5 +1,6 @@ { "name": "cppp-reiconv", + "maintainer": "ChenPi11 ", "version": "3.0.0", "description": "C+++ character set conversion library.", "license": "LGPL-3.0", diff --git a/tests/data-generator.cpp b/tests/data-generator.cpp index 78afe499..ca840838 100644 --- a/tests/data-generator.cpp +++ b/tests/data-generator.cpp @@ -20,29 +20,24 @@ /* Usage: ./data_generator [utf-8 | gb18030:2005 gb18030:2022] datadir stdout */ -#include -#include -#include +#include +#include +#include -#include "throw_error.hpp" void gengb18030z() { - int i1, i2, i3, i4, uc; + int uc = 0x10000; - uc = 0x10000; - for (i1 = 0x90; i1 <= 0xe3; i1++) + for (int i1 = 0x90; i1 <= 0xe3; i1++) { - for (i2 = 0x30; i2 <= 0x39; i2++) + for (int i2 = 0x30; i2 <= 0x39; i2++) { - for (i3 = 0x81; i3 <= 0xfe; i3++) + for (int i3 = 0x81; i3 <= 0xfe; i3++) { - for (i4 = 0x30; i4 <= 0x39; i4++) + for (int i4 = 0x30; i4 <= 0x39; i4++) { - - char buffer[32] {}; - sprintf(buffer, "0x%02X%02X%02X%02X\t0x%X\n", i1, i2, i3, i4, uc); - fwrite(buffer, sizeof(char), strlen(buffer), stdout); + std::printf("0x%02X%02X%02X%02X\t0x%X\n", i1, i2, i3, i4, uc); uc++; if (uc == 0x110000) { @@ -54,11 +49,7 @@ void gengb18030z() } done: - if (ferror(stdout) || fclose(stdout)) - { - error("gengb18030z", "IO Error."); - } - fflush(stdout); + std::fflush(stdout); } void genutf8() @@ -66,20 +57,17 @@ void genutf8() int i1, i2, i3; /* Range 0x0000..0x007f */ - for (i1 = 0; i1 < 0x80; i1++) + for (int i1 = 0; i1 < 0x80; i1++) { - char buffer[32] {}; - sprintf(buffer, "0x%02X\t0x%04X\n", i1, i1); - fwrite(buffer, sizeof(char), strlen(buffer), stdout); + std::printf("0x%02X\t0x%04X\n", i1, i1); } + /* Range 0x0080..0x07ff */ for (i1 = 2; i1 < 32; i1++) { for (i2 = 0; i2 < 64; i2++) { - char buffer[32] {}; - sprintf(buffer, "0x%02X%02X\t0x%04X\n", 0xc0+i1, 0x80+i2, (i1 << 6) + i2); - fwrite(buffer, sizeof(char), strlen(buffer), stdout); + std::printf("0x%02X%02X\t0x%04X\n", 0xc0+i1, 0x80+i2, (i1 << 6) + i2); } } /* Range 0x0800..0xffff, except 0xd800..0xdfff */ @@ -91,41 +79,29 @@ void genutf8() int u = (i1 << 12) + (i2 << 6) + i3; if (!(u >= 0xd800 && u < 0xe000)) { - char buffer[32] {}; - sprintf(buffer, "0x%02X%02X%02X\t0x%04X\n", 0xe0 + i1, 0x80 + i2, 0x80 + i3, u); - fwrite(buffer, sizeof(char), strlen(buffer), stdout); + std::printf("0x%02X%02X%02X\t0x%04X\n", 0xe0 + i1, 0x80 + i2, 0x80 + i3, u); } } } - - if (ferror(stdout) || fclose(stdout)) - { - error("genutf8", "IO Error."); - } - fflush(stdout); } int main (int argc, char *argv[]) { if (argc < 2) { - fprintf(stderr, "Usage: %s [utf-8 | gb18030z]\n", argv[0]); - return 1; + goto usage; } - if (strcmp(argv[1], "utf-8") == 0) + if (std::string(argv[1]) == "utf-8") { genutf8(); + return EXIT_SUCCESS; } - else if (strcmp(argv[1], "gb18030z") == 0) - { - gengb18030z(); - } - else - { - fprintf(stderr, "Usage: %s [utf-8 | gb18030z]\n", argv[0]); - } - fclose(stdout); - return 0; + gengb18030z(); + return EXIT_SUCCESS; + + usage: + fprintf(stderr, "Usage: %s [utf-8 | gb18030z]\n", argv[0]); + return EXIT_FAILURE; } diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 2e795c16..65c5a988 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -23,12 +23,12 @@ #include "utils.hpp" -#include -#include -#include #include -#include +#include +#include #include +#include +#include #include "throw_error.hpp" @@ -36,21 +36,22 @@ using namespace cppp::base::reiconv; namespace test { - namespace iconv - { - void main(const std::string& from, const std::string& to, const std::string& input_file_path, const std::string& output_file_path) - { - FILE* src = fopen(input_file_path.c_str(), "rb"); - size_t srclen = get_file_size(input_file_path.c_str()); - char* s = (char*)malloc(srclen); - fread(s, 1, srclen, src); - fclose(src); - auto res = cppp::base::reiconv::convert(Encoding(from), Encoding(to), {(std::byte*)s, srclen}, true); - - FILE* out = fopen(output_file_path.c_str(), "wb"); - fwrite(res.buffer, 1, res.length, out); - fclose(out); - free(s); - } - } +namespace iconv +{ +void main(const std::string &from, const std::string &to, const std::string &input_file_path, + const std::string &output_file_path) +{ + FILE *src = fopen(input_file_path.c_str(), "rb"); + size_t srclen = get_file_size(input_file_path.c_str()); + char *s = (char *)malloc(srclen); + fread(s, 1, srclen, src); + fclose(src); + auto res = cppp::base::reiconv::convert(Encoding(from), Encoding(to), {(std::byte *)s, srclen}, true); + + FILE *out = fopen(output_file_path.c_str(), "wb"); + fwrite(res.buffer, 1, res.length, out); + fclose(out); + free(s); } +} // namespace iconv +} // namespace test diff --git a/tests/sort.cpp b/tests/sort.cpp index afff520c..029f7edf 100644 --- a/tests/sort.cpp +++ b/tests/sort.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The C++ Plus Project. + * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,18 +17,14 @@ * If not, see . */ -/* - Sort file lines. -*/ - +/* Sort file lines. */ -#include +#include #include "sort.hpp" #include "throw_error.hpp" -// Usage: ./sort input_file output_file -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { if (argc < 3) { @@ -37,5 +33,5 @@ int main(int argc, char* argv[]) sort_file(argv[1], argv[2]); - return 0; + return EXIT_SUCCESS; } diff --git a/tests/sort.hpp b/tests/sort.hpp index 94098009..94d2d921 100644 --- a/tests/sort.hpp +++ b/tests/sort.hpp @@ -23,26 +23,26 @@ #pragma once -#include -#include -#include #include +#include +#include #include +#include #include "throw_error.hpp" -void sort_file(const std::string& file_name, const std::string& output_file_name) +inline void sort_file(const std::string &file_name, const std::string &output_file_name) { std::vector lines; std::ifstream input_file(file_name); - if(!input_file.is_open()) + if (!input_file.is_open()) { error("sort", "Failed to open file: " + file_name); } std::ofstream output_file(output_file_name, std::ios::trunc); - if(!output_file.is_open()) + if (!output_file.is_open()) { error("sort", "Failed to open file: " + output_file_name); } @@ -56,7 +56,7 @@ void sort_file(const std::string& file_name, const std::string& output_file_name std::sort(lines.begin(), lines.end()); - for (const std::string& line : lines) + for (const std::string &line : lines) { output_file << line << std::endl; } diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index 3d4ce1d6..d39204d0 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -23,16 +23,6 @@ #include -/* When we create shell scripts, we need to make sure that on Cygwin they have - Unix end-of-line characters, regardless of Cygwin choice of text mode vs. - binary mode. On z/OS, however, binary mode turns off charset tagging for - output files, which is not what we want. */ -#if defined __MVS__ -#define BINARY_MODE "" -#else -#define BINARY_MODE "b" -#endif - static void emit_alias(FILE* out, const char* alias, const char* c_name) { /* Output alias in upper case. */ @@ -70,7 +60,7 @@ int main(int argc, char* argv[]) aliases_file_name = argv[1]; - aliases_file = fopen(aliases_file_name, "w"); + aliases_file = fopen(aliases_file_name, "wb"); if (aliases_file == nullptr) { fprintf(stderr, "Could not open '%s' for writing\n", aliases_file_name); @@ -104,6 +94,8 @@ int main(int argc, char* argv[]) #include "encodings.h.snippet" if (ferror(aliases_file) || fclose(aliases_file)) + { return 1; + } return 0; } From 89b3821fde694676b548b06b631434dcac230d48 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 25 Oct 2024 18:30:48 +0800 Subject: [PATCH 37/77] Add encodings name checker. 1. Add encodings name checker. 2. Uppercase all encodings names in `lib/encodings.h.shippet`. 3. Cut the test string for benchmark. 4. Add some encodings names based on documents in IANA, IBM, and Microsoft. 5. Put CJK encodings closer to the front. 6. Lookup code pages through strings instead of convert to codepages. --- .gitignore | 1 + Makefile.devel | 7 +- benchmark/test_string.hpp | 147 +- lib/encodings.h.snippet | 2094 +++++----- lib/generated/aliases.h | 6068 ++++++++++++++++++----------- lib/generated/indexes.hpp.shippet | 195 +- lib/iconv.cpp | 8 +- tools/check-encodings.cpp | 68 + 8 files changed, 4860 insertions(+), 3728 deletions(-) create mode 100644 tools/check-encodings.cpp diff --git a/.gitignore b/.gitignore index 8e8d3130..ea483a37 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,7 @@ cppp-reiconv-* # Makefile.devel temp files lib/generated/genaliases lib/generated/genindexes +lib/generated/check-encodings *.gperf # Patterns for all subdirectories: all kinds of automatic backup files. diff --git a/Makefile.devel b/Makefile.devel index 81775331..30afa2e9 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -15,12 +15,17 @@ CFLAGS := $(CFLAGS) CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ + lib/generated/check-encodings \ lib/generated/aliases.h \ - lib/generated/indexes.hpp.shippet + lib/generated/indexes.hpp.shippet lib/generated : $(MKDIR) -p lib/generated +lib/generated/check-encodings : tools/check-encodings.cpp + $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ + ./lib/generated/check-encodings + lib/generated/genaliases : tools/genaliases.cpp $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ diff --git a/benchmark/test_string.hpp b/benchmark/test_string.hpp index 08d3f510..d53eff0d 100644 --- a/benchmark/test_string.hpp +++ b/benchmark/test_string.hpp @@ -1,150 +1,5 @@ constexpr const char* simple_test_string_utf8 = "S"; -#define _big_test_string_utf8 "\ -The quick brown fox jumps over the lazy dog.\ -01234567893378458181145141919810314159265358979323846271828182845904\ -!@#$%^&*()_+\"'\ -\xe6\xb7\xb7\xe6\xb2\x8c\xe6\x9c\xaa\xe5\x88\x86\xe5\xa4\xa9\xe5\x9c\xb0\xe4\xb9\xb1\xef\xbc\x8c\xe8\x8c\xab\xe8\x8c\xab\xe6\xb8\xba\xe6\xb8\xba\xe6\x97\xa0\xe4\xba\xba\xe8\xa7\x81\xe3\x80\x82\ -\xe8\x87\xaa\xe4\xbb\x8e\xe7\x9b\x98\xe5\x8f\xa4\xe7\xa0\xb4\xe9\xb8\xbf\xe8\x92\x99\xef\xbc\x8c\xe5\xbc\x80\xe8\xbe\x9f\xe4\xbb\x8e\xe5\x85\xb9\xe6\xb8\x85\xe6\xb5\x8a\xe8\xbe\xa8\xe3\x80\x82\ -It is possible to implement a substantial subset of the Unicode Standard as “wide ASCII”\ - with little change to existing programming practice. However, the Unicode Standard also\ -\u8bdd\u8bf4\u4f17\u4eba\u95fb\u5f97\u5b9d\u7434\u5c06\u7d20\u6614\u6240\u7ecf\u8fc7\u5404\u7701\u5185\u53e4\u8ff9\u4e3a\u9898\uff0c\u505a\u4e86\u5341\u9996\u6000\u53e4\u7edd\u53e5\uff0c\u5185\u9690\u5341\u7269\uff0c\u7686\u8bf4\uff1a\u201c\u8fd9\u81ea\u7136\u65b0\u5de7\u3002\u201d\u90fd\u4e89\u7740\u770b\u65f6\uff0c\u53ea\u89c1\u5199\u9053\u662f\uff1a\ -\u8d64\u58c1\u6000\u53e4\ -\u8d64\u58c1\u6c89\u57cb\u6c34\u4e0d\u6d41\uff0c\u5f92\u7559\u540d\u59d3\u8f7d\u7a7a\u821f\u3002\u55a7\u9617\u4e00\u70ac\u60b2\u98ce\u51b7\uff0c\u65e0\u9650\u82f1\u9b42\u5728\u5185\u6e38\u3002\ -\u4ea4\u8dbe\u6000\u53e4\ -\u94dc\u67f1\u91d1\u57ce\u632f\u7eaa\u7eb2\uff0c\u58f0\u4f20\u6d77\u5916\u64ad\u620e\u7f8c\u3002\u9a6c\u63f4\u81ea\u662f\u529f\u52b3\u5927\uff0c\u94c1\u7b1b\u65e0\u70e6\u8bf4\u5b50\u623f\u3002\ -\u949f\u5c71\u6000\u53e4\ -\u540d\u5229\u4f55\u66fe\u4f34\u5973\u8eab\uff0c\u65e0\u7aef\u88ab\u8bcf\u51fa\u51e1\u5c18\u3002\u7275\u8fde\u5927\u62b5\u96be\u4f11\u7edd\uff0c\u83ab\u6028\u4ed6\u4eba\u5632\u7b11\u9891\u3002\ -\u6dee\u9634\u6000\u53e4\ -\u58ee\u58eb\u987b\u9632\u6076\u72ac\u6b3a\uff0c\u4e09\u9f50\u4f4d\u5b9a\u76d6\u68fa\u65f6\u3002\u5bc4\u8a00\u4e16\u4fd7\u4f11\u8f7b\u9119\uff0c\u4e00\u996d\u4e4b\u6069\u6b7b\u4e5f\u77e5\u3002\ -\u5e7f\u9675\u6000\u53e4\ -\u8749\u566a\u9e26\u6816\u8f6c\u773c\u8fc7\uff0c\u968b\u5824\u98ce\u666f\u8fd1\u5982\u4f55\uff1f\u53ea\u7f18\u5360\u5c3d\u98ce\u6d41\u53f7\uff0c\u60f9\u5f97\u7eb7\u7eb7\u53e3\u820c\u591a\u3002\ -\u6843\u53f6\u6e21\u6000\u53e4\ -\u8870\u8349\u95f2\u82b1\u6620\u6d45\u6c60\uff0c\u6843\u679d\u6843\u53f6\u603b\u5206\u79bb\u3002\u516d\u671d\u6881\u680b\u591a\u5982\u8bb8\uff0c\u5c0f\u7167\u7a7a\u60ac\u58c1\u4e0a\u9898\u3002\ -\u9752\u51a2\u6000\u53e4\ -\u9ed1\u6c34\u832b\u832b\u54bd\u4e0d\u6d41\uff0c\u51b0\u5f26\u62e8\u5c3d\u66f2\u4e2d\u6101\u3002\u6c49\u5bb6\u5236\u5ea6\u8bda\u582a\u7b11\uff0c\u6a17\u680e\u5e94\u60ed\u4e07\u53e4\u7f9e\u3002\ -\u9a6c\u5d6c\u6000\u53e4\ -\u5bc2\u5bde\u8102\u75d5\u79ef\u6c57\u5149\uff0c\u6e29\u67d4\u4e00\u65e6\u4ed8\u4e1c\u6d0b\u3002\u53ea\u56e0\u9057\u5f97\u98ce\u6d41\u8ff9\uff0c\u6b64\u65e5\u8863\u88f3\u5c1a\u6709\u9999\u3002\ -\u84b2\u4e1c\u5bfa\u6000\u53e4\ -\u5c0f\u7ea2\u9aa8\u8d31\u4e00\u8eab\u8f7b\uff0c\u79c1\u6396\u5077\u643a\u5f3a\u64ae\u6210\u3002\u867d\u88ab\u592b\u4eba\u65f6\u540a\u8d77\uff0c\u5df2\u7ecf\u52fe\u5f15\u5f7c\u540c\u884c\u3002\ -\u6885\u82b1\u89c2\u6000\u53e4\ -\u4e0d\u5728\u6885\u8fb9\u5728\u67f3\u8fb9\uff0c\u4e2a\u4e2d\u8c01\u62fe\u753b\u5a75\u5a1f\uff1f\u56e2\u5706\u83ab\u5fc6\u6625\u9999\u5230\uff0c\u4e00\u522b\u897f\u98ce\u53c8\u4e00\u5e74\u3002\ -\u4f17\u4eba\u770b\u4e86\uff0c\u90fd\u79f0\u5947\u5999\u3002\u5b9d\u9497\u5148\u8bf4\u9053\uff1a\u201c\u524d\u516b\u9996\u90fd\u662f\u53f2\u9274\u4e0a\u6709\u636e\u7684\uff0c\u540e\u4e8c\u9996\u5374\u65e0\u8003\u3002\u6211\u4eec\u4e5f\u4e0d\u5927\u61c2\u5f97\uff0c\u4e0d\u5982\u53e6\u505a\u4e24\u9996\u4e3a\u662f\u3002\u201d\u9edb\u7389\u5fd9\u62e6\u7740\uff1a\u201c\u8fd9\u5b9d\u59d0\u59d0\u4e5f\u5fd2\u80f6\u67f1\u9f13\u745f\u3001\u77eb\u63c9\u9020\u4f5c\u4e86\u3002\u4e24\u9996\u867d\u4e8e\u53f2\u9274\u4e0a\u65e0\u8003\uff0c\u54b1\u4eec\u867d\u4e0d\u66fe\u770b\u8fd9\u4e9b\u5916\u4f20\uff0c\u4e0d\u77e5\u5e95\u91cc\uff0c\u96be\u9053\u54b1\u4eec\u8fde\u4e24\u672c\u620f\u4e5f\u6ca1\u89c1\u8fc7\u4e0d\u6210\uff1f\u90a3\u4e09\u5c81\u7684\u5b69\u5b50\u4e5f\u77e5\u9053\uff0c\u4f55\u51b5\u54b1\u4eec\uff1f\u201d\u63a2\u6625\u4fbf\u9053\uff1a\u201c\u8fd9\u8bdd\u6b63\u662f\u4e86\u3002\u201d\u674e\u7ea8\u53c8\u9053\uff1a\u201c\u51b5\u4e14\u4ed6\u539f\u8d70\u5230\u8fd9\u4e2a\u5730\u65b9\u7684\u3002\u8fd9\u4e24\u4ef6\u4e8b\u867d\u65e0\u8003\uff0c\u53e4\u5f80\u4eca\u6765\uff0c\u4ee5\u8bb9\u4f20\u8bb9\uff0c\u597d\u4e8b\u8005\u7adf\u6545\u610f\u7684\u5f04\u51fa\u8fd9\u53e4\u8ff9\u6765\u4ee5\u611a\u4eba\u3002\u6bd4\u5982\u90a3\u5e74\u4e0a\u4eac\u7684\u65f6\u8282\uff0c\u4fbf\u662f\u5173\u592b\u5b50\u7684\u575f\uff0c\u5012\u89c1\u4e86\u4e09\u56db\u5904\u3002\u5173\u592b\u4eba\u4e00\u8eab\u4e8b\u4e1a\u7686\u662f\u6709\u636e\u7684\uff0c\u5982\u4f55\u53c8\u6709\u8bb8\u591a\u7684\u575f\uff1f\u81ea\u7136\u662f\u540e\u6765\u4eba\u656c\u7231\u4ed6\u751f\u524d\u4e3a\u4eba\uff0c\u53ea\u6015\u4ece\u8fd9\u656c\u7231\u4e0a\u7a7f\u51ff\u51fa\u6765\u4e5f\u662f\u6709\u7684\u3002\u53ca\u81f3\u770b\u300a\u5e7f\u8206\u8bb0\u300b\u4e0a\uff0c\u4e0d\u6b62\u5173\u592b\u5b50\u7684\u575f\u591a\u6709\uff0c\u53e4\u6765\u6709\u540d\u671b\u7684\u4eba\uff0c\u90a3\u575f\u5c31\u4e0d\u5c11\u3002\u65e0\u8003\u7684\u53e4\u8ff9\u66f4\u591a\u3002\u5982\u4eca\u8fd9\u4e24\u9996\u8bd7\u867d\u65e0\u8003\uff0c\u51e1\u8bf4\u4e66\u5531\u620f\uff0c\u751a\u81f3\u4e8e\u6c42\u7684\u7b7e\u4e0a\u90fd\u6709\u3002\u8001\u5c11\u7537\u5973\u4fd7\u8bed\u53e3\u5934\uff0c\u4eba\u4eba\u7686\u77e5\u7686\u8bf4\u7684\u3002\u51b5\u4e14\u53c8\u5e76\u4e0d\u662f\u770b\u4e86\u300a\u897f\u53a2\u8bb0\u300b\u3001\u300a\u7261\u4e39\u4ead\u300b\u7684\u8bcd\u66f2\uff0c\u6015\u770b\u4e86\u90aa\u4e66\u4e86\u3002\u8fd9\u4e5f\u65e0\u59a8\uff0c\u53ea\u7ba1\u7559\u7740\u3002\u201d\u5b9d\u9497\u542c\u8bf4\uff0c\u65b9\u7f62\u4e86\u3002\u5927\u5bb6\u731c\u4e86\u4e00\u56de\uff0c\u7686\u4e0d\u662f\u7684\u3002\ -\u51ac\u65e5\u5929\u77ed\uff0c\u89c9\u5f97\u53c8\u662f\u5403\u665a\u996d\u65f6\u5019\uff0c\u4e00\u9f50\u5f80\u524d\u5934\u6765\u5403\u665a\u996d\u3002\u56e0\u6709\u4eba\u56de\u738b\u592b\u4eba\u8bf4\uff1a\u201c\u88ad\u4eba\u7684\u54e5\u54e5\u82b1\u81ea\u82b3\uff0c\u5728\u5916\u5934\u56de\u8fdb\u6765\u8bf4\uff0c\u4ed6\u6bcd\u4eb2\u75c5\u91cd\u4e86\uff0c\u60f3\u4ed6\u5973\u513f\u3002\u4ed6\u6765\u6c42\u6069\u5178\uff0c\u63a5\u88ad\u4eba\u5bb6\u53bb\u8d70\u8d70\u3002\u201d\u738b\u592b\u4eba\u542c\u4e86\uff0c\u4fbf\u8bf4\uff1a\u201c\u4eba\u5bb6\u6bcd\u5973\u4e00\u573a\uff0c\u5c82\u6709\u4e0d\u8bb8\u4ed6\u53bb\u7684\u5462\u3002\u201d\u4e00\u9762\u5c31\u53eb\u4e86\u51e4\u59d0\u6765\u544a\u8bc9\u4e86\uff0c\u547d\u4ed6\u914c\u91cf\u529e\u7406\u3002\u51e4\u59d0\u513f\u7b54\u5e94\u4e86\uff0c\u56de\u81f3\u5c4b\u91cc\uff0c\u4fbf\u547d\u5468\u745e\u5bb6\u7684\u53bb\u544a\u8bc9\u88ad\u4eba\u539f\u6545\u3002\u5429\u5490\u5468\u745e\u5bb6\u7684\uff1a\u201c\u518d\u5c06\u8ddf\u7740\u51fa\u95e8\u7684\u5ab3\u5987\u4f20\u4e00\u4e2a\uff0c\u4f60\u4eec\u4e24\u4e2a\u4eba\uff0c\u518d\u5e26\u4e24\u4e2a\u5c0f\u4e2b\u5934\u5b50\uff0c\u8ddf\u4e86\u88ad\u4eba\u53bb\u3002\u5206\u5934\u6d3e\u56db\u4e2a\u6709\u5e74\u7eaa\u7684\u8ddf\u8f66\u3002\u8981\u4e00\u8f86\u5927\u8f66\uff0c\u4f60\u4eec\u5e26\u7740\u5750\uff0c\u4e00\u8f86\u5c0f\u8f66\uff0c\u7ed9\u4e2b\u5934\u4eec\u5750\u3002\u201d\u5468\u745e\u5bb6\u7684\u7b54\u5e94\u4e86\uff0c\u624d\u8981\u53bb\uff0c\u51e4\u59d0\u53c8\u9053\uff1a\u201c\u90a3\u88ad\u4eba\u662f\u4e2a\u7701\u4e8b\u7684\uff0c\u4f60\u544a\u8bc9\u8bf4\u6211\u7684\u8bdd\uff1a\u53eb\u4ed6\u7a7f\u51e0\u4ef6\u989c\u8272\u597d\u8863\u88f3\uff0c\u5927\u5927\u7684\u5305\u4e00\u5305\u88b1\u8863\u88f3\u62ff\u7740\uff0c\u5305\u88b1\u8981\u597d\u597d\u7684\uff0c\u62ff\u624b\u7089\u4e5f\u62ff\u597d\u7684\u3002\u4e34\u8d70\u65f6\uff0c\u53eb\u4ed6\u5148\u5230\u8fd9\u91cc\u6765\u6211\u77a7\u3002\u201d\u5468\u745e\u5bb6\u7684\u7b54\u5e94\u53bb\u4e86\u3002\ -\u534a\u65e5\uff0c\u679c\u89c1\u88ad\u4eba\u7a7f\u6234\u4e86\uff0c\u4e24\u4e2a\u4e2b\u5934\u548c\u5468\u745e\u5bb6\u7684\u62ff\u7740\u624b\u7089\u548c\u8863\u5305\u3002\u51e4\u59d0\u770b\u88ad\u4eba\u5934\u4e0a\u6234\u7740\u51e0\u679d\u91d1\u9497\u73e0\u948f\uff0c\u5012\u4e5f\u534e\u4e3d\uff0c\u53c8\u770b\u8eab\u4e0a\u7a7f\u7740\u6843\u7ea2\u767e\u82b1\u523b\u4e1d\u94f6\u9f20\u8884\uff0c\u8471\u7eff\u76d8\u91d1\u5f69\u7ee3\u9526\u88d9\uff0c\u5916\u9762\u7a7f\u7740\u9752\u7f0e\u7070\u9f20\u8902\u3002\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u8fd9\u4e09\u4ef6\u8863\u88f3\u90fd\u662f\u592a\u592a\u7684\uff0c\u8d4f\u4e86\u4f60\u5012\u662f\u597d\u7684\u3002\u4f46\u8fd9\u8902\u5b50\u592a\u7d20\u4e86\u4e9b\uff0c\u5982\u4eca\u7a7f\u7740\u4e5f\u51b7\uff0c\u4f60\u8be5\u7a7f\u4e00\u4ef6\u5927\u6bdb\u7684\u3002\u201d\u88ad\u4eba\u7b11\u9053\uff1a\u201c\u592a\u592a\u5c31\u7ed9\u4e86\u8fd9\u4ef6\u7070\u9f20\u7684\uff0c\u8fd8\u6709\u4ef6\u94f6\u9f20\u7684\u3002\u8bf4\u8d76\u5e74\u4e0b\u518d\u7ed9\u5927\u6bdb\u7684\u5462\u3002\u201d\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u6211\u5012\u6709\u4e00\u4ef6\u5927\u6bdb\u7684\uff0c\u6211\u5acc\u98ce\u6bdb\u51fa\u7684\u4e0d\u597d\u4e86\u6b63\u8981\u6539\u53bb\uff0c\u4e5f\u7f62\uff0c\u5148\u7ed9\u4f60\u7a7f\u53bb\u7f62\u3002\u7b49\u5e74\u4e0b\u592a\u592a\u7ed9\u4f60\u505a\u7684\u65f6\u8282\uff0c\u6211\u518d\u6539\u7f62\u3002\u53ea\u5f53\u4f60\u8fd8\u6211\u7684\u4e00\u6837\u3002\u201d\u4f17\u4eba\u90fd\u7b11\u9053\uff1a\u201c\u5976\u5976\u60ef\u4f1a\u8bf4\u8fd9\u8bdd\u3002\u6210\u5e74\u5bb6\u5927\u624b\u5927\u811a\u7684\uff0c\u66ff\u592a\u592a\u4e0d\u77e5\u80cc\u5730\u91cc\u8d54\u57ab\u4e86\u591a\u5c11\u4e1c\u897f\uff0c\u771f\u771f\u8d54\u7684\u662f\u8bf4\u4e0d\u51fa\u6765\u7684\uff0c\u90a3\u91cc\u53c8\u548c\u592a\u592a\u7b97\u53bb\uff1f\u504f\u8fd9\u4f1a\u5b50\u53c8\u8bf4\u8fd9\u5c0f\u6c14\u8bdd\u53d6\u7b11\u6765\u4e86\u3002\u201d\u51e4\u59d0\u513f\u7b11\u9053\uff1a\u201c\u592a\u592a\u90a3\u91cc\u60f3\u7684\u5230\u8fd9\u4e9b\uff1f\u7a76\u7adf\u8fd9\u53c8\u4e0d\u662f\u6b63\u7ecf\u4e8b\u3002\u518d\u4e0d\u7167\u7ba1\uff0c\u4e5f\u662f\u5927\u5bb6\u7684\u4f53\u9762\uff1b\u8bf4\u4e0d\u5f97\u6211\u81ea\u5df1\u5403\u4e9b\u4e8f\uff0c\u628a\u4f17\u4eba\u6253\u626e\u4f53\u7edf\u4e86\uff0c\u5b81\u53ef\u6211\u5f97\u4e2a\u597d\u540d\u513f\u4e5f\u7f62\u4e86\u3002\u4e00\u4e2a\u4e00\u4e2a\u2018\u70e7\u7cca\u4e86\u7684\u5377\u5b50\u2019\u4f3c\u7684\uff0c\u4eba\u5148\u7b11\u8bdd\u6211\uff0c\u8bf4\u6211\u5f53\u5bb6\u5012\u628a\u4eba\u5f04\u51fa\u4e2a\u82b1\u5b50\u6765\u4e86\u3002\u201d\u4f17\u4eba\u542c\u4e86\uff0c\u90fd\u53f9\u8bf4\uff1a\u201c\u8c01\u4f3c\u5976\u5976\u8fd9\u4e48\u7740\u5723\u660e\uff0c\u5728\u4e0a\u4f53\u8d34\u592a\u592a\uff0c\u5728\u4e0b\u53c8\u75bc\u987e\u4e0b\u4eba\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u53ea\u89c1\u51e4\u59d0\u547d\u5e73\u513f\u5c06\u6628\u65e5\u90a3\u4ef6\u77f3\u9752\u523b\u4e1d\u516b\u56e2\u5929\u9a6c\u76ae\u8902\u5b50\u62ff\u51fa\u6765\uff0c\u7ed9\u4e86\u88ad\u4eba\u3002\u53c8\u770b\u5305\u88b1\uff0c\u53ea\u5f97\u4e00\u4e2a\u5f39\u58a8\u82b1\u7eeb\u6c34\u7ea2\u7ef8\u91cc\u7684\u5939\u5305\u88b1\uff0c\u91cc\u9762\u53ea\u89c1\u5305\u7740\u4e24\u4ef6\u534a\u65e7\u7ef5\u8884\u5408\u76ae\u8902\u5b50\u3002\u51e4\u59d0\u53c8\u547d\u5e73\u513f\u628a\u4e00\u4e2a\u7389\u8272\u7ef8\u91cc\u7684\u54c6\u7f57\u5462\u5305\u88b1\u62ff\u51fa\u6765\uff0c\u53c8\u547d\u5305\u4e0a\u4e00\u4ef6\u96ea\u8902\u5b50\u3002\ -\u5e73\u513f\u8d70\u53bb\u62ff\u4e86\u51fa\u6765\uff0c\u4e00\u4ef6\u662f\u4ef6\u65e7\u5927\u7ea2\u7329\u7329\u6be1\u7684\uff0c\u4e00\u4ef6\u662f\u534a\u65e7\u5927\u7ea2\u7fbd\u7f0e\u7684\u3002\u88ad\u4eba\u9053\uff1a\u201c\u4e00\u4ef6\u5c31\u5f53\u4e0d\u8d77\u4e86\u3002\u201d\u5e73\u513f\u7b11\u9053\uff1a\u201c\u4f60\u62ff\u8fd9\u7329\u7329\u6be1\u7684\u3002\u628a\u8fd9\u4ef6\u987a\u624b\u5e26\u51fa\u6765\uff0c\u53eb\u4eba\u7ed9\u90a2\u5927\u59d1\u5a18\u9001\u53bb\uff0c\u6628\u513f\u90a3\u4e48\u5927\u96ea\uff0c\u4eba\u4eba\u90fd\u7a7f\u7740\u4e0d\u662f\u7329\u7329\u6be1\u3001\u90fd\u662f\u7fbd\u7f0e\u7684\uff0c\u5341\u6765\u4ef6\u5927\u7ea2\u8863\u88f3\uff0c\u6620\u7740\u5927\u96ea\uff0c\u597d\u4e0d\u9f50\u6574\u3002\u53ea\u6709\u4ed6\u7a7f\u7740\u90a3\u51e0\u4ef6\u65e7\u8863\u88f3\uff0c\u8d8a\u53d1\u663e\u7684\u62f1\u80a9\u7f29\u80cc\uff0c\u597d\u4e0d\u53ef\u601c\u89c1\u7684\uff0c\u5982\u4eca\u628a\u8fd9\u4ef6\u7ed9\u4ed6\u7f62\u3002\u201d\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u6211\u7684\u4e1c\u897f\uff0c\u4ed6\u79c1\u81ea\u5c31\u8981\u7ed9\u4eba\u3002\u6211\u4e00\u4e2a\u8fd8\u82b1\u4e0d\u591f\uff0c\u518d\u6dfb\u4e0a\u4f60\u63d0\u7740\uff0c\u66f4\u597d\u4e86\uff01\u201d\u4f17\u4eba\u7b11\u9053\uff1a\u201c\u8fd9\u90fd\u662f\u5976\u5976\u7d20\u65e5\u5b5d\u656c\u592a\u592a\uff0c\u75bc\u7231\u4e0b\u4eba\u3002\u8981\u662f\u5976\u5976\u7d20\u65e5\u662f\u5c0f\u6c14\u7684\uff0c\u6536\u7740\u4e1c\u897f\u4e3a\u4e8b\u7684\uff0c\u4e0d\u987e\u4e0b\u4eba\u7684\uff0c\u59d1\u5a18\u90a3\u91cc\u6562\u8fd9\u4e48\u7740\uff1f\u201d\u51e4\u59d0\u7b11\u9053\uff1a\u201c\u6240\u4ee5\u77e5\u9053\u6211\u7684\uff0c\u4e5f\u5c31\u662f\u4ed6\u8fd8\u77e5\u4e09\u5206\u7f62\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u53c8\u5631\u5490\u88ad\u4eba\u9053\uff1a\u201c\u4f60\u5988\u8981\u597d\u4e86\u5c31\u7f62\uff0c\u8981\u4e0d\u4e2d\u7528\u4e86\uff0c\u53ea\u5f97\u4f4f\u4e0b\uff0c\u6253\u53d1\u4eba\u6765\u56de\u6211\uff0c\u6211\u518d\u53e6\u6253\u53d1\u4eba\u7ed9\u4f60\u9001\u94fa\u76d6\u53bb\u3002\u53ef\u522b\u4f7f\u4ed6\u4eec\u7684\u94fa\u76d6\u548c\u68b3\u5934\u7684\u5bb6\u4f19\u3002\u201d\u53c8\u5429\u5490\u5468\u745e\u5bb6\u7684\u9053\uff1a\u201c\u4f60\u4eec\u81ea\u7136\u662f\u77e5\u9053\u8fd9\u91cc\u7684\u89c4\u77e9\u7684\uff0c\u4e5f\u4e0d\u7528\u6211\u5429\u5490\u4e86\u3002\u201d\u5468\u745e\u5bb6\u7684\u7b54\u5e94\uff1a\u201c\u90fd\u77e5\u9053\uff1a\u6211\u4eec\u8fd9\u53bb\u5230\u90a3\u91cc\uff0c\u603b\u53eb\u4ed6\u4eec\u7684\u4eba\u56de\u907f\u3002\u8981\u4f4f\u4e0b\uff0c\u5fc5\u662f\u53e6\u8981\u4e00\u4e24\u95f4\u5185\u623f\u7684\u3002\u201d\u8bf4\u7740\uff0c\u8ddf\u4e86\u88ad\u4eba\u51fa\u53bb\uff0c\u53c8\u5429\u5490\u5c0f\u53ae\u9884\u5907\u706f\u7b3c\uff0c\u9042\u5750\u8f66\u5f80\u82b1\u81ea\u82b3\u5bb6\u6765\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\ -\u8fd9\u91cc\u51e4\u59d0\u53c8\u5c06\u6021\u7ea2\u9662\u7684\u5b37\u5b37\u5524\u4e86\u4e24\u4e2a\u6765\uff0c\u5429\u5490\u9053\uff1a\u201c\u88ad\u4eba\u53ea\u6015\u4e0d\u6765\u5bb6\u4e86\u3002\u4f60\u4eec\u7d20\u65e5\u77e5\u9053\u90a3\u4e2a\u5927\u4e2b\u5934\u77e5\u597d\u6b79\uff0c\u6d3e\u51fa\u6765\u5728\u5b9d\u7389\u5c4b\u91cc\u4e0a\u591c\u3002\u4f60\u4eec\u4e5f\u597d\u751f\u7167\u7ba1\u7740\uff0c\u522b\u7531\u7740\u5b9d\u7389\u80e1\u95f9\u3002\u201d\u4e24\u4e2a\u5b37\u5b37\u7b54\u5e94\u7740\u53bb\u4e86\uff0c\u4e00\u65f6\u6765\u56de\u8bf4\uff1a\u201c\u6d3e\u4e86\u6674\u96ef\u548c\u9e9d\u6708\u5728\u5c4b\u91cc\uff0c\u6211\u4eec\u56db\u4e2a\u4eba\u539f\u662f\u8f6e\u6d41\u7740\u5e26\u7ba1\u4e0a\u591c\u7684\u3002\u201d\u51e4\u59d0\u542c\u4e86\u70b9\u5934\uff0c\u53c8\u8bf4\u9053\uff1a\u201c\u665a\u4e0a\u50ac\u4ed6\u65e9\u7761\uff0c\u65e9\u4e0a\u50ac\u4ed6\u65e9\u8d77\u3002\u201d\u8001\u5b37\u5b37\u4eec\u7b54\u5e94\u4e86\uff0c\u81ea\u56de\u56ed\u53bb\u3002\u4e00\u65f6\u679c\u6709\u5468\u745e\u5bb6\u7684\u5e26\u4e86\u4fe1\u56de\u51e4\u59d0\u8bf4\uff1a\u201c\u88ad\u4eba\u4e4b\u6bcd\u4e1a\u5df2\u505c\u5e8a\uff0c\u4e0d\u80fd\u56de\u6765\u3002\u201d\u51e4\u59d0\u56de\u660e\u4e86\u738b\u592b\u4eba\uff0c\u4e00\u9762\u7740\u4eba\u5f80\u5927\u89c2\u56ed\u53bb\u53d6\u4ed6\u7684\u94fa\u76d6\u5986\u5941\u3002\u5b9d\u7389\u770b\u7740\u6674\u96ef\u9e9d\u6708\u4e8c\u4eba\u6253\u70b9\u59a5\u5f53\u3002\ -\u9001\u53bb\u4e4b\u540e\uff0c\u6674\u96ef\u9e9d\u6708\u7686\u5378\u7f62\u6b8b\u5986\uff0c\u8131\u6362\u8fc7\u88d9\u8884\u3002\u6674\u96ef\u53ea\u5728\u718f\u7b3c\u4e0a\u56f4\u5750\uff0c\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u4f60\u4eca\u513f\u522b\u88c5\u5c0f\u59d0\u4e86\uff0c\u6211\u529d\u4f60\u4e5f\u52a8\u4e00\u52a8\u513f\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u7b49\u4f60\u4eec\u90fd\u53bb\u51c0\u4e86\uff0c\u6211\u518d\u52a8\u4e0d\u8fdf\u3002\u6709\u4f60\u4eec\u4e00\u65e5\uff0c\u6211\u4e14\u53d7\u7528\u4e00\u65e5\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u597d\u59d0\u59d0\uff0c\u6211\u94fa\u5e8a\uff0c\u4f60\u628a\u90a3\u7a7f\u955c\u7684\u5957\u5b50\u653e\u4e0b\u6765\uff0c\u4e0a\u5934\u7684\u5212\u5b50\u5212\u4e0a\u3002\u4f60\u7684\u8eab\u91cf\u6bd4\u6211\u9ad8\u4e9b\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u53bb\u7ed9\u5b9d\u7389\u94fa\u5e8a\u3002\u6674\u96ef\u55d0\u4e86\u4e00\u58f0\uff0c\u7b11\u9053\uff1a\u201c\u4eba\u5bb6\u624d\u5750\u6696\u548c\u4e86\uff0c\u4f60\u5c31\u6765\u95f9\u3002\u201d\u6b64\u65f6\u5b9d\u7389\u6b63\u5750\u7740\u7eb3\u95f7\uff0c\u60f3\u88ad\u4eba\u4e4b\u6bcd\u4e0d\u77e5\u662f\u6b7b\u662f\u6d3b\uff0c\u5ffd\u542c\u89c1\u6674\u96ef\u5982\u6b64\u8bf4\uff0c\u4fbf\u81ea\u5df1\u8d77\u8eab\u51fa\u53bb\uff0c\u653e\u4e0b\u955c\u5957\uff0c\u5212\u4e0a\u6d88\u606f\u3002\u8fdb\u6765\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u6696\u548c\u7f62\uff0c\u6211\u90fd\u5f04\u5b8c\u4e86\u3002\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u7ec8\u4e45\u6696\u548c\u4e0d\u6210\uff0c\u6211\u53c8\u60f3\u8d77\u6765\uff0c\u6c64\u5a46\u5b50\u8fd8\u6ca1\u62ff\u6765\u5462\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u96be\u4e3a\u4f60\u60f3\u7740\uff01\u4ed6\u7d20\u65e5\u53c8\u4e0d\u8981\u6c64\u58f6\uff0c\u54b1\u4eec\u90a3\u718f\u7b3c\u4e0a\u53c8\u6696\u548c\uff0c\u6bd4\u4e0d\u5f97\u90a3\u5c4b\u91cc\u7095\u51c9\uff0c\u4eca\u513f\u53ef\u4ee5\u4e0d\u7528\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u4e24\u4e2a\u90fd\u5728\u90a3\u4e0a\u5934\u7761\u4e86\uff0c\u6211\u8fd9\u5916\u8fb9\u6ca1\u4e2a\u4eba\uff0c\u6211\u602a\u6015\u7684\uff0c\u4e00\u591c\u4e5f\u7761\u4e0d\u7740\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u6211\u662f\u5728\u8fd9\u91cc\u7761\u7684\uff0c\u9e9d\u6708\uff0c\u4f60\u53eb\u4ed6\u5f80\u5916\u8fb9\u7761\u53bb\u3002\u201d\u8bf4\u8bdd\u4e4b\u95f4\uff0c\u5929\u5df2\u4e00\u66f4\uff0c\u9e9d\u6708\u65e9\u5df2\u653e\u4e0b\u5e18\u5e54\uff0c\u79fb\u706f\u70b7\u9999\uff0c\u4f0f\u4f8d\u5b9d\u7389\u5367\u4e0b\uff0c\u4e8c\u4eba\u65b9\u7761\u3002\u6674\u96ef\u81ea\u5728\u718f\u7b3c\u4e0a\uff0c\u9e9d\u6708\u4fbf\u5728\u6696\u9601\u5916\u8fb9\u3002\ -\u81f3\u4e09\u66f4\u4ee5\u540e\uff0c\u5b9d\u7389\u7761\u68a6\u4e4b\u4e2d\uff0c\u4fbf\u53eb\u88ad\u4eba\u3002\u53eb\u4e86\u4e24\u58f0\uff0c\u65e0\u4eba\u7b54\u5e94\uff0c\u81ea\u5df1\u9192\u4e86\uff0c\u65b9\u60f3\u8d77\u88ad\u4eba\u4e0d\u5728\u5bb6\uff0c\u81ea\u5df1\u4e5f\u597d\u7b11\u8d77\u6765\u3002\u6674\u96ef\u5df2\u9192\uff0c\u56e0\u5524\u9e9d\u6708\u9053\uff1a\u201c\u8fde\u6211\u90fd\u9192\u4e86\uff0c\u4ed6\u5b88\u5728\u65c1\u8fb9\u8fd8\u4e0d\u77e5\u9053\uff0c\u771f\u662f\u633a\u6b7b\u5c38\u5462\uff01\u201d\u9e9d\u6708\u7ffb\u8eab\u6253\u4e2a\u54c8\u4ec0\uff0c\u7b11\u9053\uff1a\u201c\u4ed6\u53eb\u88ad\u4eba\uff0c\u4e0e\u6211\u4ec0\u4e48\u76f8\u5e72\uff01\u201d\u56e0\u95ee\uff1a\u201c\u505a\u4ec0\u4e48\uff1f\u201d\u5b9d\u7389\u8bf4\u8981\u5403\u8336\u3002\u9e9d\u6708\u5fd9\u8d77\u6765\uff0c\u5355\u7a7f\u7740\u7ea2\u7ef8\u5c0f\u68c9\u8884\u513f\u3002\u5b9d\u7389\u9053\uff1a\u201c\u62ab\u4e86\u6211\u7684\u76ae\u8884\u518d\u53bb\uff0c\u4ed4\u7ec6\u51b7\u7740\u3002\u201d\u9e9d\u6708\u542c\u8bf4\uff0c\u56de\u624b\u4fbf\u628a\u5b9d\u7389\u62ab\u7740\u8d77\u6765\u7684\u4e00\u4ef6\u8c82\u988f\u6ee1\u895f\u6696\u8884\u62ab\u4e0a\uff0c\u4e0b\u53bb\u5411\u76c6\u5185\u6d17\u6d17\u624b\uff0c\u5148\u5012\u4e86\u4e00\u949f\u6e29\u6c34\uff0c\u62ff\u4e86\u5927\u6f31\u76c2\uff0c\u5b9d\u7389\u6f31\u4e86\u53e3\u3002\u7136\u540e\u624d\u5411\u8336\u6876\u4e0a\u53d6\u4e86\u8336\u7897\uff0c\u5148\u7528\u6e29\u6c34\u8fc7\u4e86\uff0c\u5411\u6696\u58f6\u4e2d\u5012\u4e86\u534a\u7897\u8336\uff0c\u9012\u7ed9\u5b9d\u7389\u5403\u4e86\uff0c\u81ea\u5df1\u4e5f\u6f31\u4e86\u4e00\u6f31\uff0c\u5403\u4e86\u534a\u7897\u3002\u6674\u96ef\u7b11\u9053\uff1a\u201c\u597d\u59b9\u59b9\uff0c\u4e5f\u8d4f\u6211\u4e00\u53e3\u513f\u5462\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u8d8a\u53d1\u4e0a\u8138\u513f\u4e86\uff01\u201d\u6674\u96ef\u9053\uff1a\u201c\u597d\u59b9\u59b9\uff0c\u660e\u513f\u665a\u4e0a\u4f60\u522b\u52a8\uff0c\u6211\u4f0f\u4f8d\u4f60\u4e00\u591c\uff0c\u5982\u4f55\uff1f\u201d\u9e9d\u6708\u542c\u8bf4\uff0c\u53ea\u5f97\u4e5f\u4f0f\u4f8d\u4ed6\u6f31\u4e86\u53e3\uff0c\u5012\u4e86\u534a\u7897\u8336\u7ed9\u4ed6\u5403\u4e86\u3002\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u4e24\u4e2a\u522b\u7761\uff0c\u8bf4\u7740\u8bdd\u513f\uff0c\u6211\u51fa\u53bb\u8d70\u8d70\u56de\u6765\u3002\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u5916\u5934\u6709\u4e2a\u9b3c\u7b49\u7740\u5462\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u5916\u5934\u81ea\u7136\u6709\u5927\u6708\u4eae\u7684\u3002\u6211\u4eec\u8bf4\u7740\u8bdd\uff0c\u4f60\u53ea\u7ba1\u53bb\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u4fbf\u55fd\u4e86\u4e24\u58f0\u3002\u9e9d\u6708\u4fbf\u5f00\u4e86\u540e\u623f\u95e8\uff0c\u63ed\u8d77\u6be1\u5e18\u4e00\u770b\uff0c\u679c\u7136\u597d\u6708\u8272\u3002\u6674\u96ef\u7b49\u4ed6\u51fa\u53bb\uff0c\u4fbf\u6b32\u552c\u4ed6\u73a9\u800d\uff0c\u4ed7\u7740\u7d20\u65e5\u6bd4\u522b\u4eba\u6c14\u58ee\uff0c\u4e0d\u754f\u5bd2\u51b7\uff0c\u4e5f\u4e0d\u62ab\u8863\uff0c\u53ea\u7a7f\u7740\u5c0f\u8884\u4fbf\u8e51\u624b\u8e51\u811a\u7684\u4e0b\u4e86\u718f\u7b3c\uff0c\u968f\u540e\u51fa\u6765\u3002\u5b9d\u7389\u529d\u9053\uff1a\u201c\u7f62\u5440\uff0c\u51bb\u7740\u4e0d\u662f\u73a9\u7684\uff01\u201d\u6674\u96ef\u53ea\u6446\u624b\uff0c\u968f\u540e\u51fa\u4e86\u5c4b\u95e8\uff0c\u53ea\u89c1\u6708\u5149\u5982\u6c34\u3002\u5ffd\u542c\u4e00\u9635\u5fae\u98ce\uff0c\u53ea\u89c9\u4fb5\u808c\u900f\u9aa8\uff0c\u4e0d\u7981\u6bdb\u9aa8\u609a\u7136\u3002\u5fc3\u4e0b\u81ea\u601d\u9053\uff1a\u201c\u602a\u9053\u4eba\u8bf4\u70ed\u8eab\u5b50\u4e0d\u53ef\u88ab\u98ce\u5439\uff0c\u8fd9\u4e00\u51b7\u679c\u7136\u5229\u5bb3\u3002\u201d\u4e00\u9762\u6b63\u8981\u552c\u4ed6\uff0c\u53ea\u542c\u5b9d\u7389\u5728\u5185\u9ad8\u58f0\u8bf4\u9053\uff1a\u201c\u6674\u96ef\u51fa\u6765\u4e86\u3002\u201d\ -\u6674\u96ef\u5fd9\u56de\u8eab\u8fdb\u6765\uff0c\u7b11\u9053\uff1a\u201c\u90a3\u91cc\u5c31\u552c\u6b7b\u4e86\u4ed6\u4e86\uff1f\u504f\u60ef\u4f1a\u8fd9\u4e48\u874e\u874e\u87ab\u87ab\u8001\u5a46\u5b50\u7684\u6837\u513f\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u5012\u4e0d\u662f\u6015\u552c\u574f\u4e86\u4ed6\u3002\u5934\u4e00\u4ef6\u4f60\u51bb\u7740\u4e5f\u4e0d\u597d\uff0c\u4e8c\u5219\u4ed6\u4e0d\u9632\uff0c\u4e0d\u514d\u4e00\u558a\uff0c\u5018\u6216\u60ca\u9192\u4e86\u522b\u4eba\uff0c\u4e0d\u8bf4\u54b1\u4eec\u662f\u73a9\u610f\u513f\uff0c\u5012\u53cd\u8bf4\u88ad\u4eba\u624d\u53bb\u4e86\u4e00\u591c\uff0c\u4f60\u4eec\u5c31\u89c1\u795e\u89c1\u9b3c\u7684\u3002\u4f60\u6765\u628a\u6211\u8fd9\u8fb9\u7684\u88ab\u6396\u6396\u7f62\u3002\u201d\u6674\u96ef\u542c\u8bf4\uff0c\u5c31\u4e0a\u6765\u6396\u4e86\u4e00\u6396\uff0c\u4f38\u624b\u8fdb\u53bb\u5c31\u6e25\u4e00\u6e25\u3002\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u597d\u51b7\u624b\uff0c\u6211\u8bf4\u770b\u51bb\u7740\u3002\u201d\u4e00\u9762\u53c8\u89c1\u6674\u96ef\u4e24\u816e\u5982\u80ed\u8102\u4e00\u822c\uff0c\u7528\u624b\u6478\u4e00\u6478\uff0c\u4e5f\u89c9\u51b0\u51b7\u3002\u5b9d\u7389\u9053\uff1a\u201c\u5feb\u8fdb\u88ab\u6765\u6e25\u6e25\u7f62\u3002\u201d\u4e00\u8bed\u672a\u4e86\uff0c\u53ea\u542c\u54af\u5654\u7684\u4e00\u58f0\u95e8\u54cd\uff0c\u9e9d\u6708\u614c\u614c\u5f20\u5f20\u7684\u7b11\u7740\u8fdb\u6765\uff0c\u8bf4\u7740\u7b11\u9053\uff1a\u201c\u552c\u6211\u4e00\u8df3\u597d\u7684\uff01\u9ed1\u5f71\u5b50\u91cc\uff0c\u5c71\u5b50\u77f3\u540e\u5934\uff0c\u53ea\u89c1\u4e00\u4e2a\u4eba\u8e72\u7740\u3002\u6211\u624d\u8981\u53eb\u558a\uff0c\u539f\u6765\u662f\u90a3\u4e2a\u5927\u9526\u9e21\uff0c\u89c1\u4e86\u4eba\uff0c\u4e00\u98de\u98de\u5230\u4eae\u5904\u6765\uff0c\u6211\u624d\u89c1\u4e86\u3002\u8981\u5192\u5192\u5931\u5931\u4e00\u56b7\uff0c\u5012\u95f9\u8d77\u4eba\u6765\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u6d17\u624b\uff0c\u53c8\u7b11\u9053\uff1a\u201c\u8bf4\u6674\u96ef\u51fa\u53bb\u4e86\uff1f\u6211\u600e\u4e48\u6ca1\u89c1\u3002\u4e00\u5b9a\u662f\u8981\u552c\u6211\u53bb\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8fd9\u4e0d\u662f\u4ed6\uff1f\u5728\u8fd9\u91cc\u6e25\u7740\u5462\u3002\u6211\u82e5\u4e0d\u56b7\u7684\u5feb\uff0c\u53ef\u662f\u5012\u552c\u4e00\u8df3\u3002\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u4e5f\u4e0d\u7528\u6211\u552c\u53bb\uff0c\u8fd9\u5c0f\u8e44\u5b50\u5df2\u7ecf\u81ea\u60ca\u81ea\u602a\u7684\u4e86\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u4ecd\u56de\u81ea\u5df1\u88ab\u4e2d\u53bb\u3002\u9e9d\u6708\u8bf4\uff1a\u201c\u4f60\u5c31\u8fd9\u4e48\u2018\u8dd1\u89e3\u9a6c\u2019\u7684\u6253\u626e\u513f\uff0c\u4f36\u4f36\u4fd0\u4fd0\u7684\u51fa\u53bb\u4e86\u4e0d\u6210\uff1f\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u53ef\u4e0d\u5c31\u662f\u8fd9\u4e48\u51fa\u53bb\u4e86\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u4f60\u6b7b\u4e0d\u62e3\u597d\u65e5\u5b50\uff01\u4f60\u51fa\u53bb\u81ea\u7ad9\u4e00\u7ad9\uff0c\u77a7\u628a\u76ae\u4e0d\u51bb\u7834\u4e86\u4f60\u7684\u3002\u201d\u8bf4\u7740\u53c8\u5c06\u706b\u76c6\u4e0a\u7684\u94dc\u7f69\u63ed\u8d77\uff0c\u62ff\u7070\u9539\u91cd\u5c06\u719f\u70ad\u57cb\u4e86\u4e00\u57cb\uff0c\u62c8\u4e86\u4e24\u5757\u901f\u9999\u653e\u4e0a\uff0c\u4ecd\u65e7\u7f69\u4e86\u3002\u81f3\u5c4f\u540e\uff0c\u91cd\u5254\u4eae\u4e86\u706f\uff0c\u65b9\u624d\u7761\u4e0b\u3002\ -\u6674\u96ef\u56e0\u65b9\u624d\u4e00\u51b7\uff0c\u5982\u4eca\u53c8\u4e00\u6696\uff0c\u4e0d\u89c9\u6253\u4e86\u4e24\u4e2a\u568f\u55b7\u3002\u5b9d\u7389\u53f9\u9053\uff1a\u201c\u5982\u4f55\uff1f\u5230\u5e95\u4f24\u4e86\u98ce\u4e86\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u4ed6\u65e9\u8d77\u5c31\u56b7\u4e0d\u53d7\u7528\uff0c\u4e00\u65e5\u4e5f\u6ca1\u5403\u7897\u6b63\u7ecf\u996d\u3002\u4ed6\u8fd9\u4f1a\u5b50\u4e0d\u8bf4\u4fdd\u517b\u7740\u4e9b\uff0c\u8fd8\u8981\u6349\u5f04\u4eba\uff0c\u660e\u513f\u75c5\u4e86\uff0c\u53eb\u4ed6\u81ea\u4f5c\u81ea\u53d7\u3002\u201d\u5b9d\u7389\u95ee\u9053\uff1a\u201c\u5934\u4e0a\u70ed\u4e0d\u70ed\uff1f\u201d\u6674\u96ef\u55fd\u4e86\u4e24\u58f0\uff0c\u8bf4\u9053\uff1a\u201c\u4e0d\u76f8\u5e72\uff0c\u90a3\u91cc\u8fd9\u4e48\u5a07\u5ae9\u8d77\u6765\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u53ea\u542c\u5916\u95f4\u5c4b\u91cc\u69c5\u4e0a\u7684\u81ea\u9e23\u949f\u201c\u5f53\u5f53\u201d\u7684\u4e24\u58f0\uff0c\u5916\u95f4\u503c\u5bbf\u7684\u8001\u5b37\u5b37\u55fd\u4e86\u4e24\u58f0\uff0c\u56e0\u8bf4\u9053\uff1a\u201c\u59d1\u5a18\u4eec\u7761\u7f62\uff0c\u660e\u513f\u518d\u8bf4\u7b11\u7f62\u3002\u201d\u5b9d\u7389\u65b9\u6084\u6084\u7684\u7b11\u9053\uff1a\u201c\u54b1\u4eec\u522b\u8bf4\u8bdd\u4e86\uff0c\u770b\u53c8\u60f9\u4ed6\u4eec\u8bf4\u8bdd\u3002\u201d\u8bf4\u7740\uff0c\u65b9\u5927\u5bb6\u7761\u4e86\u3002\ -\u81f3\u6b21\u65e5\u8d77\u6765\uff0c\u6674\u96ef\u679c\u89c9\u6709\u4e9b\u9f3b\u585e\u58f0\u91cd\uff0c\u61d2\u6020\u52a8\u5f39\u3002\u5b9d\u7389\u9053\uff1a\u201c\u5feb\u522b\u58f0\u5f20\u3002\u592a\u592a\u77e5\u9053\u4e86\uff0c\u53c8\u8981\u53eb\u4f60\u642c\u56de\u5bb6\u53bb\u517b\u7740\u3002\u5bb6\u91cc\u7eb5\u597d\uff0c\u5230\u5e95\u51b7\u4e9b\uff0c\u4e0d\u5982\u5728\u8fd9\u91cc\u3002\u4f60\u5c31\u5728\u91cc\u95f4\u5c4b\u91cc\u8eba\u7740\uff0c\u6211\u53eb\u4eba\u8bf7\u4e86\u5927\u592b\uff0c\u6084\u6084\u7684\u4ece\u540e\u95e8\u8fdb\u6765\u77a7\u77a7\u5c31\u662f\u4e86\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u867d\u8fd9\u4e48\u8bf4\uff0c\u4f60\u5230\u5e95\u8981\u544a\u8bc9\u5927\u5976\u5976\u4e00\u58f0\u513f\u3002\u4e0d\u7136\u4e00\u65f6\u5927\u592b\u6765\u4e86\uff0c\u4eba\u95ee\u8d77\u6765\u600e\u4e48\u8bf4\u5462\uff1f\u201d\u5b9d\u7389\u542c\u4e86\u6709\u7406\uff0c\u4fbf\u5524\u4e00\u4e2a\u8001\u5b37\u5b37\u6765\u5429\u5490\u9053\uff1a\u201c\u4f60\u56de\u5927\u5976\u5976\u53bb\uff0c\u5c31\u8bf4\u6674\u96ef\u767d\u51b7\u7740\u4e86\u4e9b\uff0c\u4e0d\u662f\u4ec0\u4e48\u5927\u75c5\u3002\u88ad\u4eba\u53c8\u4e0d\u5728\u5bb6\uff0c\u4ed6\u82e5\u5bb6\u53bb\u517b\u75c5\uff0c\u8fd9\u91cc\u66f4\u6ca1\u6709\u4eba\u4e86\u3002\u4f20\u4e00\u4e2a\u5927\u592b\uff0c\u4ece\u540e\u95e8\u6084\u6084\u7684\u8fdb\u6765\u77a7\u77a7\uff0c\u522b\u56de\u592a\u592a\u4e86\u3002\u201d\u8001\u5b37\u5b37\u53bb\u4e86\uff0c\u534a\u65e5\u56de\u6765\u8bf4\uff1a\u201c\u5927\u5976\u5976\u77e5\u9053\u4e86\u3002\u8bf4\u4e24\u5242\u836f\u597d\u4e86\u4fbf\u7f62\uff0c\u82e5\u4e0d\u597d\u65f6\uff0c\u8fd8\u662f\u51fa\u53bb\u4e3a\u662f\u3002\u5982\u4eca\u7684\u65f6\u6c14\u4e0d\u597d\uff0c\u6cbe\u67d3\u4e86\u522b\u4eba\u4e8b\u5c0f\uff0c\u59d1\u5a18\u4eec\u7684\u8eab\u5b50\u8981\u7d27\u3002\u201d\u6674\u96ef\u7761\u5728\u6696\u9601\u91cc\uff0c\u53ea\u7ba1\u54b3\u55fd\uff0c\u542c\u4e86\u8fd9\u8bdd\uff0c\u6c14\u7684\u56b7\u9053\uff1a\u201c\u6211\u90a3\u91cc\u5c31\u5bb3\u761f\u75c5\u4e86\uff1f\u751f\u6015\u62db\u4e86\u4eba\u3002\u6211\u79bb\u4e86\u8fd9\u91cc\uff0c\u770b\u4f60\u4eec\u8fd9\u4e00\u8f88\u5b50\u90fd\u522b\u5934\u75bc\u8111\u70ed\u7684\uff01\u201d\u8bf4\u7740\uff0c\u4fbf\u771f\u8981\u8d77\u6765\u3002\u5b9d\u7389\u5fd9\u6309\u4ed6\uff0c\u7b11\u9053\uff1a\u201c\u522b\u751f\u6c14\uff0c\u8fd9\u539f\u662f\u4ed6\u7684\u8d23\u4efb\uff0c\u751f\u6015\u592a\u592a\u77e5\u9053\u4e86\u8bf4\u4ed6\u3002\u4e0d\u8fc7\u767d\u8bf4\u4e00\u53e5\u3002\u4f60\u7d20\u6614\u53c8\u7231\u751f\u6c14\uff0c\u5982\u4eca\u809d\u706b\u81ea\u7136\u53c8\u76db\u4e86\u3002\u201d\ -\u6b63\u8bf4\u65f6\uff0c\u4eba\u56de\u5927\u592b\u6765\u4e86\u3002\u5b9d\u7389\u4fbf\u8d70\u8fc7\u6765\uff0c\u907f\u5728\u4e66\u67b6\u540e\u9762\u3002\u53ea\u89c1\u4e24\u4e09\u4e2a\u540e\u95e8\u53e3\u7684\u8001\u5a46\u5b50\u5e26\u4e86\u4e00\u4e2a\u592a\u533b\u8fdb\u6765\u3002\u8fd9\u91cc\u7684\u4e2b\u5934\u90fd\u56de\u907f\u4e86\uff0c\u6709\u4e09\u56db\u4e2a\u8001\u5b37\u5b37\u653e\u4e0b\u6696\u9601\u4e0a\u7684\u5927\u7ea2\u7ee3\u5e54\uff0c\u6674\u96ef\u4ece\u5e54\u4e2d\u5355\u4f38\u51fa\u624b\u6765\u3002\u90a3\u5927\u592b\u89c1\u8fd9\u53ea\u624b\u4e0a\u6709\u4e24\u6839\u6307\u7532\uff0c\u8db3\u6709\u4e8c\u4e09\u5bf8\u957f\uff0c\u5c1a\u6709\u91d1\u51e4\u4ed9\u82b1\u67d3\u7684\u901a\u7ea2\u7684\u75d5\u8ff9\uff0c\u4fbf\u56de\u8fc7\u5934\u6765\u3002\u6709\u4e00\u4e2a\u8001\u5b37\u5b37\u5fd9\u62ff\u4e86\u4e00\u5757\u7ee2\u5b50\u63a9\u4e0a\u4e86\u3002\u90a3\u5927\u592b\u65b9\u8bca\u4e86\u4e00\u56de\u8109\uff0c\u8d77\u8eab\u5230\u5916\u95f4\uff0c\u5411\u5b37\u5b37\u4eec\u8bf4\u9053\uff1a\u201c\u5c0f\u59d0\u7684\u75c7\u662f\u5916\u611f\u5185\u6ede\u3002\u8fd1\u65e5\u65f6\u6c14\u4e0d\u597d\uff0c\u7adf\u7b97\u662f\u4e2a\u5c0f\u4f24\u5bd2\u3002\u5e78\u4e8f\u662f\u5c0f\u59d0\uff0c\u7d20\u65e5\u996e\u98df\u6709\u9650\uff0c\u98ce\u5bd2\u4e5f\u4e0d\u5927\uff0c\u4e0d\u8fc7\u662f\u6c14\u8840\u539f\u5f31\uff0c\u5076\u7136\u6cbe\u67d3\u4e86\u4e9b\uff0c\u5403\u4e24\u5242\u836f\u758f\u6563\u758f\u6563\u5c31\u597d\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u53c8\u968f\u5a46\u5b50\u4eec\u51fa\u53bb\u3002\u5f7c\u65f6\u674e\u7ea8\u5df2\u9063\u4eba\u77e5\u4f1a\u8fc7\u540e\u95e8\u4e0a\u7684\u4eba\u53ca\u5404\u5904\u4e2b\u9b1f\u56de\u907f\u3002\u5927\u592b\u53ea\u89c1\u4e86\u56ed\u4e2d\u666f\u81f4\uff0c\u5e76\u4e0d\u66fe\u89c1\u4e00\u4e2a\u5973\u5b50\u3002\u4e00\u65f6\u51fa\u4e86\u56ed\u95e8\uff0c\u5c31\u5728\u5b88\u56ed\u95e8\u7684\u5c0f\u53ae\u4eec\u7684\u73ed\u623f\u5185\u5750\u4e86\uff0c\u5f00\u4e86\u836f\u65b9\u3002\u8001\u5b37\u5b37\u9053\uff1a\u201c\u8001\u7237\u4e14\u522b\u53bb\uff0c\u6211\u4eec\u5c0f\u7237\u7f57\u55e6\uff0c\u6050\u6015\u8fd8\u6709\u8bdd\u95ee\u3002\u201d\u90a3\u592a\u533b\u5fd9\u9053\uff1a\u201c\u65b9\u624d\u4e0d\u662f\u5c0f\u59d0\uff0c\u662f\u4f4d\u7237\u4e0d\u6210\uff1f\u90a3\u5c4b\u5b50\u7adf\u662f\u7ee3\u623f\uff0c\u53c8\u662f\u653e\u4e0b\u5e54\u5b50\u6765\u77a7\u7684\uff0c\u5982\u4f55\u662f\u4f4d\u7237\u5462\uff1f\u201d\u8001\u5b37\u5b37\u7b11\u9053\uff1a\u201c\u6211\u7684\u8001\u7237\uff0c\u602a\u9053\u5c0f\u5b50\u624d\u8bf4\uff1a\u2018\u4eca\u513f\u8bf7\u4e86\u4e00\u4f4d\u65b0\u592a\u533b\u6765\u4e86\u3002\u2019\u771f\u4e0d\u77e5\u6211\u4eec\u5bb6\u7684\u4e8b\u3002\u90a3\u5c4b\u5b50\u662f\u6211\u4eec\u5c0f\u54e5\u513f\u7684\uff0c\u90a3\u4eba\u662f\u5c4b\u91cc\u7684\u4e2b\u5934\uff0c\u5012\u662f\u4e2a\u2018\u5927\u59d0\u2019\uff0c\u90a3\u91cc\u7684\u5c0f\u59d0\u7684\u7ee3\u623f\uff1f\u5c0f\u59d0\u75c5\u4e86\uff0c\u4f60\u90a3\u4e48\u5bb9\u6613\u5c31\u8fdb\u53bb\u4e86\uff1f\u201d\u8bf4\u7740\uff0c\u62ff\u4e86\u836f\u65b9\u8fdb\u53bb\u3002\ -\u5b9d\u7389\u770b\u65f6\uff0c\u4e0a\u9762\u6709\u7d2b\u82cf\u3001\u6854\u6897\u3001\u9632\u98ce\u3001\u8346\u82a5\u7b49\u836f\uff0c\u540e\u9762\u53c8\u6709\u67b3\u5b9e\u3001\u9ebb\u9ec4\u3002\u5b9d\u7389\u9053\uff1a\u201c\u8be5\u6b7b\u8be5\u6b7b\uff0c\u4ed6\u62ff\u7740\u5973\u5b69\u513f\u4eec\u4e5f\u8c61\u6211\u4eec\u4e00\u6837\u7684\u6cbb\u6cd5\uff0c\u5982\u4f55\u4f7f\u5f97\uff1f\u51ed\u4ed6\u6709\u4ec0\u4e48\u5185\u6ede\uff0c\u8fd9\u67b3\u5b9e\u3001\u9ebb\u9ec4\u5982\u4f55\u7981\u5f97\uff1f\u8c01\u8bf7\u4e86\u6765\u7684\uff1f\u5feb\u6253\u53d1\u4ed6\u53bb\u7f62\uff0c\u518d\u8bf7\u4e00\u4e2a\u719f\u7684\u6765\u7f62\u3002\u201d\u8001\u5b37\u5b37\u9053\uff1a\u201c\u7528\u836f\u597d\u4e0d\u597d\uff0c\u6211\u4eec\u4e0d\u77e5\u9053\u3002\u5982\u4eca\u518d\u53eb\u5c0f\u53ae\u53bb\u8bf7\u738b\u5927\u592b\u53bb\u5012\u5bb9\u6613\uff0c\u53ea\u662f\u8fd9\u4e2a\u5927\u592b\u53c8\u4e0d\u662f\u544a\u8bc9\u603b\u7ba1\u623f\u8bf7\u7684\uff0c\u8fd9\u9a6c\u94b1\u662f\u8981\u7ed9\u4ed6\u7684\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u7ed9\u4ed6\u591a\u5c11\uff1f\u201d\u5a46\u5b50\u9053\uff1a\u201c\u5c11\u4e86\u4e0d\u597d\uff0c\u770b\u6765\u5f97\u4e00\u4e24\u94f6\u5b50\uff0c\u624d\u662f\u6211\u4eec\u8fd9\u6837\u95e8\u6237\u7684\u793c\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u738b\u5927\u592b\u6765\u4e86\uff0c\u7ed9\u4ed6\u591a\u5c11\uff1f\u201d\u5a46\u5b50\u7b11\u9053\uff1a\u201c\u738b\u5927\u592b\u548c\u5f20\u5927\u592b\u6bcf\u5e38\u6765\u4e86\uff0c\u4e5f\u5e76\u6ca1\u4e2a\u7ed9\u94b1\u7684\uff0c\u4e0d\u8fc7\u6bcf\u5e74\u56db\u8282\u4e00\u4e2a\u8db8\u513f\u9001\u793c\uff0c\u90a3\u662f\u4e00\u5b9a\u7684\u5e74\u4f8b\u3002\u8fd9\u4e2a\u4eba\u65b0\u6765\u4e86\u4e00\u6b21\uff0c\u987b\u5f97\u7ed9\u4ed6\u4e00\u4e24\u94f6\u5b50\u3002\u201d\u5b9d\u7389\u542c\u8bf4\uff0c\u5c31\u547d\u9e9d\u6708\u53bb\u53d6\u94f6\u5b50\u3002\ -\u9e9d\u6708\u9053\uff1a\u201c\u82b1\u5927\u59d0\u59d0\u8fd8\u4e0d\u77e5\u6401\u5728\u90a3\u91cc\u5462\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u6211\u5e38\u89c1\u7740\u5728\u90a3\u5c0f\u87ba\u7538\u67dc\u5b50\u91cc\u62ff\u94f6\u5b50\uff0c\u6211\u548c\u4f60\u627e\u53bb\u3002\u201d\u8bf4\u7740\u4e8c\u4eba\u6765\u81f3\u88ad\u4eba\u5806\u4e1c\u897f\u7684\u5c4b\u5185\uff0c\u5f00\u4e86\u87ba\u7538\u67dc\u5b50\u3002\u4e0a\u4e00\u69c5\u90fd\u662f\u4e9b\u7b14\u58a8\u3001\u6247\u5b50\u3001\u9999\u997c\u3001\u5404\u8272\u8377\u5305\u3001\u6c57\u5dfe\u7b49\u7c7b\u7684\u4e1c\u897f\uff0c\u4e0b\u4e00\u69c5\u5374\u6709\u51e0\u4e32\u94b1\u3002\u4e8e\u662f\u5f00\u4e86\u62bd\u5c49\uff0c\u624d\u770b\u89c1\u4e00\u4e2a\u5c0f\u7b38\u7ba9\u5185\u653e\u7740\u51e0\u5757\u94f6\u5b50\uff0c\u5012\u4e5f\u6709\u6225\u5b50\u3002\u9e9d\u6708\u4fbf\u62ff\u4e86\u4e00\u5757\u94f6\uff0c\u63d0\u8d77\u6225\u5b50\u6765\u95ee\u5b9d\u7389\uff1a\u201c\u90a3\u662f\u4e00\u4e24\u7684\u661f\u513f\uff1f\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u4f60\u95ee\u7684\u6211\u6709\u8da3\u513f\uff0c\u4f60\u5012\u6210\u4e86\u662f\u624d\u6765\u7684\u4e86\u3002\u201d\u9e9d\u6708\u4e5f\u7b11\u4e86\uff0c\u53c8\u8981\u53bb\u95ee\u4eba\u3002\u5b9d\u7389\u9053\uff1a\u201c\u62e3\u90a3\u5927\u7684\u7ed9\u4ed6\u4e00\u5757\u5c31\u662f\u4e86\u3002\u53c8\u4e0d\u505a\u4e70\u5356\uff0c\u7b97\u8fd9\u4e9b\u505a\u4ec0\u4e48\u3002\u201d\u9e9d\u6708\u542c\u4e86\uff0c\u4fbf\u653e\u4e0b\u6225\u5b50\uff0c\u62e3\u4e86\u4e00\u5757\u6382\u4e86\u4e00\u6382\uff0c\u7b11\u9053\uff1a\u201c\u8fd9\u4e00\u5757\u53ea\u6015\u662f\u4e00\u4e24\u4e86\u3002\u5b81\u53ef\u591a\u4e9b\u597d\uff0c\u522b\u5c11\u4e86\u53eb\u90a3\u7a77\u5c0f\u5b50\u7b11\u8bdd\uff1a\u4e0d\u8bf4\u54b1\u4eec\u4e0d\u8ba4\u5f97\u6225\u5b50\uff0c\u5012\u8bf4\u54b1\u4eec\u6709\u5fc3\u5c0f\u6c14\u4f3c\u7684\u3002\u201d\u90a3\u5a46\u5b50\u7ad9\u5728\u95e8\u53e3\u7b11\u9053\uff1a\u201c\u90a3\u662f\u4e94\u4e24\u7684\u952d\u5b50\u5939\u4e86\u534a\u4e2a\uff0c\u8fd9\u4e00\u5757\u81f3\u5c11\u8fd8\u6709\u4e8c\u4e24\u5462\u3002\u8fd9\u4f1a\u5b50\u53c8\u6ca1\u5939\u526a\uff0c\u59d1\u5a18\u6536\u4e86\u8fd9\u5757\uff0c\u62e3\u4e00\u5757\u5c0f\u4e9b\u7684\u3002\u201d\u9e9d\u6708\u65e9\u5173\u4e86\u67dc\u5b50\u51fa\u6765\uff0c\u7b11\u9053\uff1a\u201c\u8c01\u53c8\u627e\u53bb\u5462\uff0c\u591a\u5c11\u4f60\u62ff\u4e86\u53bb\u5c31\u5b8c\u4e86\uff01\u201d\u5b9d\u7389\u9053\uff1a\u201c\u4f60\u5feb\u53eb\u7119\u8317\u518d\u8bf7\u4e2a\u5927\u592b\u6765\u7f62\u3002\u201d\u5a46\u5b50\u63a5\u4e86\u94f6\u5b50\uff0c\u81ea\u53bb\u6599\u7406\u3002\ -\u4e00\u65f6\u7119\u8317\u679c\u8bf7\u4e86\u738b\u5927\u592b\u6765\uff0c\u5148\u8bca\u4e86\u8109\uff0c\u540e\u8bf4\u75c5\u75c7\uff0c\u4e5f\u4e0e\u524d\u5934\u4e0d\u540c\u3002\u65b9\u5b50\u4e0a\u679c\u7136\u6ca1\u6709\u67b3\u5b9e\u3001\u9ebb\u9ec4\u7b49\u836f\uff0c\u5012\u6709\u5f53\u5f52\u3001\u9648\u76ae\u3001\u767d\u828d\u7b49\u836f\u3002\u90a3\u5206\u4e24\u8f83\u5148\u4e5f\u51cf\u4e86\u4e9b\u3002\u5b9d\u7389\u559c\u9053\uff1a\u201c\u8fd9\u624d\u662f\u5973\u5b69\u513f\u4eec\u7684\u836f\u3002\u867d\u758f\u6563\uff0c\u4e5f\u4e0d\u53ef\u592a\u8fc7\u3002\u65e7\u5e74\u6211\u75c5\u4e86\uff0c\u5374\u662f\u4f24\u5bd2\uff0c\u5185\u91cc\u996e\u98df\u505c\u6ede\uff0c\u4ed6\u77a7\u4e86\u8fd8\u8bf4\u6211\u7981\u4e0d\u8d77\u9ebb\u9ec4\u3001\u77f3\u818f\u3001\u67b3\u5b9e\u7b49\u72fc\u864e\u836f\u3002\u6211\u548c\u4f60\u4eec\u5c31\u5982\u79cb\u5929\u82b8\u513f\u8fdb\u6211\u7684\u90a3\u624d\u5f00\u7684\u767d\u6d77\u68e0\u4f3c\u7684\uff1b\u6211\u7981\u4e0d\u8d77\u7684\u836f\uff0c\u4f60\u4eec\u90a3\u91cc\u7ecf\u5f97\u8d77\uff1f\u6bd4\u5982\u4eba\u5bb6\u575f\u91cc\u7684\u5927\u6768\u6811\uff0c\u770b\u7740\u679d\u53f6\u8302\u76db\uff0c\u90fd\u662f\u7a7a\u5fc3\u5b50\u7684\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u91ce\u575f\u91cc\u53ea\u6709\u6768\u6811\uff0c\u96be\u9053\u5c31\u6ca1\u6709\u677e\u67cf\u4e0d\u6210\uff1f\u6700\u8ba8\u4eba\u5acc\u7684\u662f\u6768\u6811\uff0c\u90a3\u4e48\u5927\u6811\u53ea\u4e00\u70b9\u5b50\u53f6\u5b50\uff0c\u6ca1\u4e00\u70b9\u98ce\u513f\u4ed6\u4e5f\u662f\u4e71\u54cd\u3002\u4f60\u504f\u8981\u6bd4\u4ed6\uff0c\u4f60\u4e5f\u592a\u4e0b\u6d41\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u677e\u67cf\u4e0d\u6562\u6bd4\u3002\u8fde\u5b54\u592b\u5b50\u90fd\u8bf4\uff1a\u2018\u5c81\u5bd2\u7136\u540e\u77e5\u677e\u67cf\u4e4b\u540e\u96d5\u2019\u5462\uff0c\u53ef\u77e5\u8fd9\u4e24\u4ef6\u4e1c\u897f\u9ad8\u96c5\u3002\u4e0d\u5bb3\u81ca\u7684\u624d\u62ff\u4ed6\u6df7\u6bd4\u5462\u3002\u201d\ -\u8bf4\u7740\uff0c\u53ea\u89c1\u8001\u5a46\u5b50\u53d6\u4e86\u836f\u6765\u3002\u5b9d\u7389\u547d\u628a\u714e\u836f\u7684\u94f6\u94de\u5b50\u627e\u4e86\u51fa\u6765\uff0c\u5c31\u547d\u5728\u706b\u76c6\u4e0a\u714e\u3002\u6674\u96ef\u56e0\u8bf4\uff1a\u201c\u6b63\u7ecf\u7ed9\u4ed6\u4eec\u8336\u623f\u91cc\u714e\u53bb\u7f62\u54a7\uff0c\u5f04\u7684\u8fd9\u5c4b\u91cc\u836f\u6c14\uff0c\u5982\u4f55\u4f7f\u5f97\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u836f\u6c14\u6bd4\u4e00\u5207\u7684\u82b1\u9999\u8fd8\u9999\u5462\u3002\u795e\u4ed9\u91c7\u836f\u70e7\u836f\uff0c\u518d\u8005\u9ad8\u4eba\u9038\u58eb\u91c7\u836f\u6cbb\u836f\uff0c\u5219\u5999\u7684\u4e00\u4ef6\u4e1c\u897f\u3002\u8fd9\u5c4b\u91cc\u6211\u6b63\u60f3\u5404\u8272\u90fd\u9f50\u4e86\uff0c\u5c31\u53ea\u5c11\u836f\u9999\uff0c\u5982\u4eca\u6070\u5168\u4e86\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u65e9\u547d\u4eba\u7168\u4e0a\u3002\u53c8\u5631\u5490\u9e9d\u6708\u6253\u70b9\u4e9b\u4e1c\u897f\uff0c\u53eb\u4e2a\u8001\u5b37\u5b37\u53bb\u770b\u88ad\u4eba\uff0c\u529d\u4ed6\u5c11\u54ed\u3002\u4e00\u4e00\u59a5\u5f53\uff0c\u65b9\u8fc7\u524d\u8fb9\u6765\u8d3e\u6bcd\u738b\u592b\u4eba\u5904\u8bf7\u5b89\u5403\u996d\u3002\ -\u6b63\u503c\u51e4\u59d0\u513f\u548c\u8d3e\u6bcd\u738b\u592b\u4eba\u5546\u8bae\u9053\uff1a\u201c\u5929\u53c8\u77ed\uff0c\u53c8\u51b7\uff0c\u4e0d\u5982\u4ee5\u540e\u5927\u5ac2\u5b50\u5e26\u7740\u59d1\u5a18\u4eec\u5728\u56ed\u5b50\u91cc\u5403\u996d\u3002\u7b49\u5929\u6696\u548c\u4e86\uff0c\u518d\u6765\u56de\u7684\u8dd1\uff0c\u4e5f\u4e0d\u59a8\u3002\u201d\u738b\u592b\u4eba\u7b11\u9053\uff1a\u201c\u8fd9\u4e5f\u662f\u597d\u4e3b\u610f\u3002\u522e\u98ce\u4e0b\u96ea\u5012\u4fbf\u5b9c\u3002\u5403\u4e1c\u897f\u53d7\u4e86\u51b7\u6c14\u4e5f\u4e0d\u597d\uff0c\u7a7a\u5fc3\u8d70\u6765\uff0c\u4e00\u809a\u5b50\u51b7\u6c14\uff0c\u538b\u4e0a\u4e9b\u4e1c\u897f\u4e5f\u4e0d\u597d\u3002\u4e0d\u5982\u56ed\u5b50\u540e\u95e8\u91cc\u5934\u7684\u4e94\u95f4\u5927\u5c4b\u5b50\uff0c\u6a2a\u7ad6\u6709\u5973\u4eba\u4eec\u4e0a\u591c\u7684\uff0c\u6311\u4e24\u4e2a\u5973\u53a8\u5b50\u5728\u90a3\u91cc\u5355\u7ed9\u4ed6\u59d0\u59b9\u5f04\u996d\u3002\u65b0\u9c9c\u83dc\u852c\u662f\u6709\u5206\u4f8b\u7684\uff0c\u5728\u603b\u7ba1\u8d26\u623f\u91cc\u652f\u4e86\u53bb\uff0c\u6216\u8981\u94b1\u8981\u4e1c\u897f\u3002\u90a3\u4e9b\u91ce\u9e21\u7350\u72cd\u5404\u6837\u91ce\u5473\uff0c\u5206\u4e9b\u7ed9\u4ed6\u4eec\u5c31\u662f\u4e86\u3002\u201d\u8d3e\u6bcd\u9053\uff1a\u201c\u6211\u4e5f\u6b63\u60f3\u7740\u5462\uff0c\u5c31\u6015\u53c8\u6dfb\u53a8\u623f\u4e8b\u591a\u4e9b\u3002\u201d\u51e4\u59d0\u9053\uff1a\u201c\u5e76\u4e0d\u4e8b\u591a\uff1a\u4e00\u6837\u7684\u5206\u4f8b\uff0c\u8fd9\u91cc\u6dfb\u4e86\uff0c\u90a3\u91cc\u51cf\u4e86\u3002\u5c31\u4fbf\u591a\u8d39\u4e9b\u4e8b\uff0c\u5c0f\u59d1\u5a18\u4eec\u53d7\u4e86\u51b7\u6c14\uff0c\u522b\u4eba\u8fd8\u53ef\uff0c\u7b2c\u4e00\uff0c\u6797\u59b9\u59b9\u5982\u4f55\u7981\u5f97\u4f4f\uff1f\u5c31\u8fde\u5b9d\u7389\u5144\u5f1f\u4e5f\u7981\u4e0d\u4f4f\u3002\u51b5\u517c\u4f17\u4f4d\u59d1\u5a18\u90fd\u4e0d\u662f\u7ed3\u5b9e\u8eab\u5b50\u3002\u201d\u51e4\u59d0\u513f\u8bf4\u6bd5\uff0c\u672a\u77e5\u8d3e\u6bcd\u4f55\u8a00\uff0c\u4e14\u542c\u4e0b\u56de\u5206\u89e3\u3002\ -\u8d3e\u6bcd\u9053\uff1a\u201c\u6b63\u662f\u8fd9\u8bdd\u4e86\u3002\u4e0a\u6b21\u6211\u8981\u8bf4\u8fd9\u8bdd\uff0c\u6211\u89c1\u4f60\u4eec\u7684\u5927\u4e8b\u591a\uff0c\u5982\u4eca\u53c8\u6dfb\u51fa\u8fd9\u4e9b\u4e8b\u6765\uff0c\u4f60\u4eec\u56fa\u7136\u4e0d\u6562\u62b1\u6028\uff0c\u672a\u514d\u60f3\u7740\u6211\u53ea\u987e\u75bc\u8fd9\u4e9b\u5c0f\u5b59\u5b50\u5b59\u5973\u513f\u4eec\uff0c\u5c31\u4e0d\u4f53\u8d34\u4f60\u4eec\u8fd9\u5f53\u5bb6\u4eba\u4e86\u3002\u4f60\u65e2\u8fd9\u4e48\u8bf4\u51fa\u6765\uff0c\u66f4\u597d\u4e86\u3002\u201d\u56e0\u6b64\u65f6\u859b\u59e8\u5988\u674e\u5a76\u90fd\u5728\u5ea7\uff0c\u90a2\u592b\u4eba\u53ca\u5c24\u6c0f\u5a46\u5ab3\u4e5f\u90fd\u8fc7\u6765\u8bf7\u5b89\uff0c\u8fd8\u672a\u8fc7\u53bb\uff0c\u8d3e\u6bcd\u5411\u738b\u592b\u4eba\u7b49\u8bf4\u9053\uff1a\u201c\u4eca\u513f\u6211\u624d\u8bf4\u8fd9\u8bdd\uff0c\u7d20\u65e5\u6211\u4e0d\u8bf4\uff0c\u4e00\u5219\u6015\u901e\u4e86\u51e4\u4e2b\u5934\u7684\u8138\uff0c\u4e8c\u5219\u4f17\u4eba\u4e0d\u4f0f\u3002\u4eca\u65e5\u4f60\u4eec\u90fd\u5728\u8fd9\u91cc\uff0c\u90fd\u662f\u7ecf\u8fc7\u59af\u5a0c\u59d1\u5ac2\u7684\uff0c\u8fd8\u6709\u4ed6\u8fd9\u6837\u60f3\u7684\u5230\u7684\u6ca1\u6709\uff1f\u201d\u859b\u59e8\u5988\u3001\u674e\u5a76\u3001\u5c24\u6c0f\u7b49\u9f50\u7b11\u8bf4\uff1a\u201c\u771f\u4e2a\u5c11\u6709\u3002\u522b\u4eba\u4e0d\u8fc7\u662f\u793c\u4e0a\u9762\u5b50\u60c5\u513f\uff0c\u5b9e\u5728\u4ed6\u662f\u771f\u75bc\u5c0f\u53d4\u5b50\u5c0f\u59d1\u5b50\u3002\u5c31\u662f\u8001\u592a\u592a\u8ddf\u524d\uff0c\u4e5f\u662f\u771f\u5b5d\u987a\u3002\u201d\u8d3e\u6bcd\u70b9\u5934\u53f9\u9053\uff1a\u201c\u6211\u867d\u75bc\u4ed6\uff0c\u6211\u53c8\u6015\u4ed6\u592a\u4f36\u4fd0\u4e5f\u4e0d\u662f\u597d\u4e8b\u3002\u201d\u51e4\u59d0\u513f\u5fd9\u7b11\u9053\uff1a\u201c\u8fd9\u8bdd\u8001\u7956\u5b97\u8bf4\u5dee\u4e86\u3002\u4e16\u4eba\u90fd\u8bf4\u592a\u4f36\u4fd0\u806a\u660e\uff0c\u6015\u6d3b\u4e0d\u957f\u3002\u4e16\u4eba\u90fd\u8bf4\u5f97\uff0c\u4eba\u4eba\u90fd\u4fe1\uff0c\u72ec\u8001\u7956\u5b97\u4e0d\u5f53\u8bf4\uff0c\u4e0d\u5f53\u4fe1\u3002\u8001\u7956\u5b97\u53ea\u6709\u4f36\u4fd0\u806a\u660e\u8fc7\u6211\u5341\u500d\u7684\uff0c\u600e\u4e48\u5982\u4eca\u8fd9\u6837\u798f\u5bff\u53cc\u5168\u7684\uff1f\u53ea\u6015\u6211\u660e\u513f\u8fd8\u80dc\u8001\u7956\u5b97\u4e00\u500d\u5462\uff01\u6211\u6d3b\u4e00\u5343\u5c81\u540e\uff0c\u7b49\u8001\u7956\u5b97\u5f52\u4e86\u897f\uff0c\u6211\u624d\u6b7b\u5462\u3002\u201d\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4f17\u4eba\u90fd\u6b7b\u4e86\uff0c\u5355\u5269\u4e0b\u54b1\u4eec\u4e24\u4e2a\u8001\u5996\u7cbe\uff0c\u6709\u4ec0\u4e48\u610f\u601d\u3002\u201d\u8bf4\u7684\u4f17\u4eba\u90fd\u7b11\u4e86\u3002\ -\u5b9d\u7389\u56e0\u8bb0\u6302\u7740\u6674\u96ef\u88ad\u4eba\u7b49\u4e8b\uff0c\u4fbf\u5148\u56de\u56ed\u91cc\u6765\u3002\u5230\u623f\u4e2d\uff0c\u836f\u9999\u6ee1\u5c4b\uff0c\u4e00\u4eba\u4e0d\u89c1\uff0c\u53ea\u89c1\u6674\u96ef\u72ec\u5367\u4e8e\u7095\u4e0a\uff0c\u8138\u9762\u70e7\u7684\u98de\u7ea2\uff0c\u53c8\u6478\u4e86\u4e00\u6478\uff0c\u53ea\u89c9\u70eb\u624b\u3002\u5fd9\u53c8\u5411\u7089\u4e0a\u5c06\u624b\u70d8\u6696\uff0c\u4f38\u8fdb\u88ab\u53bb\u6478\u4e86\u4e00\u6478\u8eab\u4e0a\uff0c\u4e5f\u662f\u706b\u70e7\u3002\u56e0\u8bf4\u9053\uff1a\u201c\u522b\u4eba\u53bb\u4e86\u4e5f\u7f62\uff0c\u9e9d\u6708\u79cb\u7eb9\u4e5f\u8fd9\u6837\u65e0\u60c5\uff0c\u5404\u81ea\u53bb\u4e86\uff1f\u201d\u6674\u96ef\u9053\uff1a\u201c\u79cb\u7eb9\u662f\u6211\u64b5\u4e86\u4ed6\u53bb\u5403\u996d\u7684\uff0c\u9e9d\u6708\u662f\u65b9\u624d\u5e73\u513f\u6765\u627e\u4ed6\u51fa\u53bb\u4e86\u3002\u4e24\u4eba\u9b3c\u9b3c\u795f\u795f\u7684\uff0c\u4e0d\u77e5\u8bf4\u4ec0\u4e48\u3002\u5fc5\u662f\u8bf4\u6211\u75c5\u4e86\u4e0d\u51fa\u53bb\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u5e73\u513f\u4e0d\u662f\u90a3\u6837\u4eba\u3002\u51b5\u4e14\u4ed6\u5e76\u4e0d\u77e5\u4f60\u75c5\u7279\u6765\u77a7\u4f60\uff0c\u60f3\u6765\u4e00\u5b9a\u662f\u627e\u9e9d\u6708\u6765\u8bf4\u8bdd\uff0c\u5076\u7136\u89c1\u4f60\u75c5\u4e86\uff0c\u968f\u53e3\u8bf4\u7279\u77a7\u4f60\u7684\u75c5\uff0c\u8fd9\u4e5f\u662f\u4eba\u60c5\u4e56\u89c9\u53d6\u548c\u7684\u5e38\u4e8b\u3002\u4fbf\u4e0d\u51fa\u53bb\uff0c\u6709\u4e0d\u662f\uff0c\u4e0e\u4ed6\u4f55\u5e72\uff1f\u4f60\u4eec\u7d20\u65e5\u53c8\u597d\uff0c\u65ad\u4e0d\u80af\u4e3a\u8fd9\u65e0\u5e72\u7684\u4e8b\u4f24\u548c\u6c14\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u8fd9\u8bdd\u4e5f\u662f\uff0c\u53ea\u662f\u7591\u4ed6\u4e3a\u4ec0\u4e48\u5ffd\u7136\u95f4\u7792\u8d77\u6211\u6765\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8ba9\u6211\u4ece\u540e\u95e8\u51fa\u53bb\uff0c\u5230\u90a3\u7a97\u6839\u4e0b\u542c\u542c\u8bf4\u4e9b\u4ec0\u4e48\uff0c\u6765\u544a\u8bc9\u4f60\u3002\u201d\u8bf4\u7740\uff0c\u679c\u7136\u4ece\u540e\u95e8\u51fa\u53bb\uff0c\u81f3\u7a97\u4e0b\u6f5c\u542c\u3002\ -\u53ea\u95fb\u9e9d\u6708\u6084\u95ee\u9053\uff1a\u201c\u4f60\u600e\u4e48\u5c31\u5f97\u4e86\u7684\uff1f\u201d\u5e73\u513f\u9053\uff1a\u201c\u90a3\u65e5\u6d17\u624b\u65f6\u4e0d\u89c1\u4e86\uff0c\u4e8c\u5976\u5976\u5c31\u4e0d\u8bb8\u5435\u56b7\uff0c\u51fa\u4e86\u56ed\u5b50\uff0c\u5373\u523b\u5c31\u4f20\u7ed9\u56ed\u91cc\u5404\u5904\u7684\u5988\u5988\u4eec\u5c0f\u5fc3\u67e5\u8bbf\u3002\u6211\u4eec\u53ea\u7591\u60d1\u90a2\u59d1\u5a18\u7684\u4e2b\u5934\uff0c\u672c\u6765\u53c8\u7a77\uff0c\u53ea\u6015\u5c0f\u5b69\u5b50\u5bb6\u6ca1\u89c1\u8fc7\uff0c\u62ff\u4e86\u8d77\u6765\u4e5f\u662f\u6709\u7684\u3002\u518d\u4e0d\u6599\u5b9a\u662f\u4f60\u4eec\u8fd9\u91cc\u7684\u3002\u5e78\u800c\u4e8c\u5976\u5976\u6ca1\u6709\u5728\u5c4b\u91cc\uff0c\u4f60\u4eec\u8fd9\u91cc\u7684\u5b8b\u5988\u5988\u53bb\u4e86\uff0c\u62ff\u7740\u8fd9\u652f\u956f\u5b50\uff0c\u8bf4\u662f\u5c0f\u4e2b\u5934\u5b50\u5760\u513f\u5077\u8d77\u6765\u7684\uff0c\u88ab\u4ed6\u770b\u89c1\uff0c\u6765\u56de\u4e8c\u5976\u5976\u7684\u3002\u6211\u8d76\u7740\u5fd9\u63a5\u4e86\u956f\u5b50\uff0c\u60f3\u4e86\u4e00\u60f3\uff1a\u5b9d\u7389\u662f\u504f\u5728\u4f60\u4eec\u8eab\u4e0a\u7559\u5fc3\u7528\u610f\uff0c\u4e89\u80dc\u8981\u5f3a\u7684\uff0c\u90a3\u4e00\u5e74\u6709\u4e00\u4e2a\u826f\u513f\u5077\u7389\uff0c\u521a\u51b7\u4e86\u4e00\u4e8c\u5e74\u95f4\uff0c\u8fd8\u6709\u4eba\u63d0\u8d77\u6765\u8d81\u613f\uff0c\u8fd9\u4f1a\u5b50\u53c8\u8dd1\u51fa\u4e00\u4e2a\u5077\u91d1\u5b50\u7684\u6765\u4e86\u3002\u800c\u4e14\u66f4\u5077\u5230\u8857\u574a\u5bb6\u53bb\u4e86\u3002\u504f\u662f\u4ed6\u8fd9\u6837\uff0c\u504f\u662f\u4ed6\u7684\u4eba\u6253\u5634\u3002\u6240\u4ee5\u6211\u5012\u5fd9\u53ee\u549b\u5b8b\u5988\uff0c\u5343\u4e07\u522b\u544a\u8bc9\u5b9d\u7389\uff0c\u53ea\u5f53\u6ca1\u6709\u8fd9\u4e8b\uff0c\u522b\u548c\u4e00\u4e2a\u4eba\u63d0\u8d77\u3002\u7b2c\u4e8c\u4ef6\uff0c\u8001\u592a\u592a\uff0c\u592a\u592a\u542c\u4e86\u4e5f\u751f\u6c14\u3002\u4e09\u5219\u88ad\u4eba\u548c\u4f60\u4eec\u4e5f\u4e0d\u597d\u770b\u3002\u6240\u4ee5\u6211\u56de\u4e8c\u5976\u5976\uff0c\u53ea\u8bf4\uff1a\u2018\u6211\u5f80\u5927\u5976\u5976\u90a3\u91cc\u53bb\u7684\uff0c\u8c01\u77e5\u956f\u5b50\u892a\u4e86\u53e3\uff0c\u4e22\u5728\u8349\u6839\u5e95\u4e0b\uff0c\u96ea\u6df1\u4e86\u6ca1\u770b\u89c1\u3002\u4eca\u513f\u96ea\u5316\u5c3d\u4e86\uff0c\u9ec4\u6f84\u6f84\u7684\u6620\u7740\u65e5\u5934\uff0c\u8fd8\u5728\u90a3\u91cc\u5462\uff0c\u6211\u5c31\u62e3\u4e86\u8d77\u6765\u3002\u2019\u4e8c\u5976\u5976\u4e5f\u5c31\u4fe1\u4e86\uff0c\u6240\u4ee5\u6211\u6765\u544a\u8bc9\u4f60\u4eec\u3002\u4f60\u4eec\u4ee5\u540e\u9632\u7740\u4ed6\u4e9b\uff0c\u522b\u4f7f\u5524\u4ed6\u5230\u522b\u5904\u53bb\u3002\u7b49\u88ad\u4eba\u56de\u6765\uff0c\u4f60\u4eec\u5546\u8bae\u7740\uff0c\u53d8\u4e2a\u6cd5\u5b50\u6253\u53d1\u51fa\u53bb\u5c31\u5b8c\u4e86\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u5c0f\u5a3c\u5987\u4e5f\u89c1\u8fc7\u4e9b\u4e1c\u897f\uff0c\u600e\u4e48\u8fd9\u4e48\u773c\u76ae\u5b50\u6d45\u3002\u201d\u5e73\u513f\u9053\uff1a\u201c\u7a76\u7adf\u8fd9\u956f\u5b50\u80fd\u591a\u5c11\u91cd\uff0c\u539f\u662f\u4e8c\u5976\u5976\u8bf4\u7684\uff0c\u8fd9\u53eb\u505a\u2018\u867e\u987b\u956f\u2019\uff0c\u5012\u662f\u8fd9\u9897\u73e0\u5b50\u8fd8\u7f62\u4e86\u3002\u6674\u96ef\u90a3\u8e44\u5b50\u662f\u5757\u7206\u70ad\uff0c\u8981\u544a\u8bc9\u4e86\u4ed6\uff0c\u4ed6\u662f\u5fcd\u4e0d\u4f4f\u7684\u3002\u4e00\u65f6\u6c14\u4e86\uff0c\u6216\u6253\u6216\u9a82\uff0c\u4f9d\u65e7\u56b7\u51fa\u6765\u4e0d\u597d\uff0c\u6240\u4ee5\u5355\u544a\u8bc9\u4f60\u7559\u5fc3\u5c31\u662f\u4e86\u3002\u201d\u8bf4\u7740\u4fbf\u4f5c\u8f9e\u800c\u53bb\u3002\ -\u5b9d\u7389\u542c\u4e86\uff0c\u53c8\u559c\u53c8\u6c14\u53c8\u53f9\u3002\u559c\u7684\u662f\u5e73\u513f\u7adf\u80fd\u4f53\u8d34\u81ea\u5df1\uff0c\u6c14\u7684\u662f\u5760\u513f\u5c0f\u7a83\uff0c\u53f9\u7684\u662f\u5760\u513f\u90a3\u6837\u4e00\u4e2a\u4f36\u4fd0\u4eba\uff0c\u4f5c\u51fa\u8fd9\u4e11\u4e8b\u6765\u3002\u56e0\u800c\u56de\u81f3\u623f\u4e2d\uff0c\u628a\u5e73\u513f\u4e4b\u8bdd\u4e00\u957f\u4e00\u77ed\u544a\u8bc9\u4e86\u6674\u96ef\u3002\u53c8\u8bf4\uff1a\u201c\u4ed6\u8bf4\u4f60\u662f\u4e2a\u8981\u5f3a\u7684\uff0c\u5982\u4eca\u75c5\u7740\uff0c\u542c\u4e86\u8fd9\u8bdd\u8d8a\u53d1\u8981\u6dfb\u75c5\uff0c\u7b49\u597d\u4e86\u518d\u544a\u8bc9\u4f60\u3002\u201d\u6674\u96ef\u542c\u4e86\uff0c\u679c\u7136\u6c14\u7684\u86fe\u7709\u5012\u8e59\uff0c\u51e4\u773c\u5706\u7741\uff0c\u5373\u65f6\u5c31\u53eb\u5760\u513f\u3002\u5b9d\u7389\u5fd9\u529d\u9053\uff1a\u201c\u4f60\u8fd9\u4e00\u558a\u51fa\u6765\uff0c\u5c82\u4e0d\u8f9c\u8d1f\u4e86\u5e73\u513f\u5f85\u4f60\u6211\u4e4b\u5fc3\u4e86\u3002\u4e0d\u5982\u9886\u4ed6\u8fd9\u4e2a\u60c5\uff0c\u8fc7\u540e\u6253\u53d1\u4ed6\u5c31\u5b8c\u4e86\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u867d\u5982\u6b64\u8bf4\uff0c\u53ea\u662f\u8fd9\u53e3\u6c14\u5982\u4f55\u5fcd\u5f97\uff01\u201d\u5b9d\u7389\u9053\uff1a\u201c\u8fd9\u6709\u4ec0\u4e48\u6c14\u7684\uff1f\u4f60\u53ea\u517b\u75c5\u5c31\u662f\u4e86\u3002\u201d\ -\u6674\u96ef\u670d\u4e86\u836f\uff0c\u81f3\u665a\u95f4\u53c8\u670d\u4e8c\u548c\uff0c\u591c\u95f4\u867d\u6709\u4e9b\u6c57\uff0c\u8fd8\u672a\u89c1\u6548\uff0c\u4ecd\u662f\u53d1\u70e7\uff0c\u5934\u75bc\u9f3b\u585e\u58f0\u91cd\u3002\u6b21\u65e5\uff0c\u738b\u592a\u533b\u53c8\u6765\u8bca\u89c6\uff0c\u53e6\u52a0\u51cf\u6c64\u5242\u3002\u867d\u7136\u7a0d\u51cf\u4e86\u70e7\uff0c\u4ecd\u662f\u5934\u75bc\u3002\u5b9d\u7389\u4fbf\u547d\u9e9d\u6708\uff1a\u201c\u53d6\u9f3b\u70df\u6765\uff0c\u7ed9\u4ed6\u55c5\u4e9b\u75db\u6253\u51e0\u4e2a\u568f\u55b7\uff0c\u5c31\u901a\u4e86\u5173\u7a8d\u3002\u201d\u9e9d\u6708\u679c\u771f\u53bb\u53d6\u4e86\u4e00\u4e2a\u91d1\u9576\u53cc\u6263\u91d1\u661f\u73bb\u7483\u7684\u4e00\u4e2a\u6241\u76d2\u6765\uff0c\u9012\u4e0e\u5b9d\u7389\u3002\u5b9d\u7389\u4fbf\u63ed\u7ffb\u76d2\u6247\uff0c\u91cc\u9762\u6709\u897f\u6d0b\u73d0\u7405\u7684\u9ec4\u53d1\u8d64\u8eab\u5973\u5b50\uff0c\u4e24\u808b\u53c8\u6709\u8089\u7fc5\uff0c\u91cc\u9762\u76db\u7740\u4e9b\u771f\u6b63\u6c6a\u6070\u6d0b\u70df\u3002\u6674\u96ef\u53ea\u987e\u770b\u753b\u513f\uff0c\u5b9d\u7389\u9053\uff1a\u201c\u55c5\u4e9b\uff0c\u8d70\u4e86\u6c14\u5c31\u4e0d\u597d\u4e86\u3002\u201d\u6674\u96ef\u542c\u8bf4\uff0c\u5fd9\u7528\u6307\u7532\u6311\u4e86\u4e9b\u55c5\u5165\u9f3b\u4e2d\uff0c\u4e0d\u600e\u6837\u3002\u4fbf\u53c8\u591a\u591a\u6311\u4e86\u4e9b\u55c5\u5165\u3002\u5ffd\u89c9\u9f3b\u4e2d\u4e00\u80a1\u9178\u8fa3\u900f\u5165\u56df\u95e8\uff0c\u63a5\u8fde\u6253\u4e86\u4e94\u516d\u4e2a\u568f\u55b7\uff0c\u773c\u6cea\u9f3b\u6d95\u767b\u65f6\u9f50\u6d41\u3002\u6674\u96ef\u5fd9\u6536\u4e86\u76d2\u5b50\uff0c\u7b11\u9053\uff1a\u201c\u4e86\u4e0d\u5f97\uff0c\u597d\u723d\u5feb\uff01\u62ff\u7eb8\u6765\u3002\u201d\u65e9\u6709\u5c0f\u4e2b\u5934\u5b50\u9012\u8fc7\u4e00\u642d\u5b50\u7ec6\u7eb8\uff0c\u6674\u96ef\u4fbf\u4e00\u5f20\u4e00\u5f20\u7684\u62ff\u6765\u9192\u9f3b\u5b50\u3002\u5b9d\u7389\u7b11\u95ee\uff1a\u201c\u5982\u4f55\uff1f\u201d\u6674\u96ef\u7b11\u9053\uff1a\u201c\u679c\u89c9\u901a\u5feb\u4e9b\uff0c\u53ea\u662f\u592a\u9633\u8fd8\u75bc\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8d8a\u6027\u5c3d\u7528\u897f\u6d0b\u836f\u6cbb\u4e00\u6cbb\uff0c\u53ea\u6015\u5c31\u597d\u4e86\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u547d\u9e9d\u6708\uff1a\u201c\u548c\u4e8c\u5976\u5976\u8981\u53bb\uff0c\u5c31\u8bf4\u6211\u8bf4\u4e86\uff1a\u59d0\u59d0\u90a3\u91cc\u5e38\u6709\u90a3\u897f\u6d0b\u8d34\u5934\u75bc\u7684\u818f\u5b50\u836f\uff0c\u53eb\u505a\u2018\u4f9d\u5f17\u54ea\u2019\uff0c\u627e\u5bfb\u4e00\u70b9\u513f\u3002\u201d\u9e9d\u6708\u7b54\u5e94\u4e86\uff0c\u53bb\u4e86\u534a\u65e5\uff0c\u679c\u62ff\u4e86\u534a\u8282\u6765\u3002\u4fbf\u53bb\u627e\u4e86\u4e00\u5757\u7ea2\u7f0e\u5b50\u89d2\u513f\uff0c\u94f0\u4e86\u4e24\u5757\u6307\u9876\u5927\u7684\u5706\u5f0f\uff0c\u5c06\u90a3\u836f\u70e4\u548c\u4e86\uff0c\u7528\u7c2a\u633a\u644a\u4e0a\u3002\u6674\u96ef\u81ea\u62ff\u7740\u4e00\u9762\u9776\u955c\uff0c\u8d34\u5728\u4e24\u592a\u9633\u4e0a\u3002\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u75c5\u7684\u84ec\u5934\u9b3c\u4e00\u6837\uff0c\u5982\u4eca\u8d34\u4e86\u8fd9\u4e2a\uff0c\u5012\u4fcf\u76ae\u4e86\u3002\u4e8c\u5976\u5976\u8d34\u60ef\u4e86\uff0c\u5012\u4e0d\u5927\u663e\u3002\u201d\u8bf4\u6bd5\uff0c\u53c8\u5411\u5b9d\u7389\u9053\uff1a\u201c\u4e8c\u5976\u5976\u8bf4\u4e86\uff1a\u660e\u65e5\u662f\u8205\u8001\u7237\u751f\u65e5\uff0c\u592a\u592a\u8bf4\u4e86\u53eb\u4f60\u53bb\u5462\u3002\u660e\u513f\u7a7f\u4ec0\u4e48\u8863\u88f3\uff1f\u4eca\u513f\u665a\u4e0a\u597d\u6253\u70b9\u9f50\u5907\u4e86\uff0c\u7701\u5f97\u660e\u513f\u65e9\u8d77\u8d39\u624b\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u4ec0\u4e48\u987a\u624b\u5c31\u662f\u4ec0\u4e48\u7f62\u4e86\u3002\u4e00\u5e74\u95f9\u751f\u65e5\u4e5f\u95f9\u4e0d\u6e05\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u8d77\u8eab\u51fa\u623f\uff0c\u5f80\u60dc\u6625\u623f\u4e2d\u53bb\u770b\u753b\u3002\ -\u521a\u5230\u9662\u95e8\u5916\u8fb9\uff0c\u5ffd\u89c1\u5b9d\u7434\u7684\u5c0f\u4e2b\u9b1f\u540d\u5c0f\u87ba\u8005\u4ece\u90a3\u8fb9\u8fc7\u53bb\uff0c\u5b9d\u7389\u5fd9\u8d76\u4e0a\u95ee\uff1a\u201c\u90a3\u53bb\uff1f\u201d\u5c0f\u87ba\u7b11\u9053\uff1a\u201c\u6211\u4eec\u4e8c\u4f4d\u59d1\u5a18\u90fd\u5728\u6797\u59d1\u5a18\u623f\u91cc\u5462\uff0c\u6211\u5982\u4eca\u4e5f\u5f80\u90a3\u91cc\u53bb\u3002\u201d\u5b9d\u7389\u542c\u4e86\uff0c\u8f6c\u6b65\u4e5f\u4fbf\u540c\u4ed6\u5f80\u6f47\u6e58\u9986\u6765\u3002\u4e0d\u4f46\u5b9d\u9497\u59ca\u59b9\u5728\u6b64\uff0c\u4e14\u8fde\u90a2\u5cab\u70df\u4e5f\u5728\u90a3\u91cc\uff0c\u56db\u4eba\u56f4\u5750\u5728\u718f\u7b3c\u4e0a\u53d9\u5bb6\u5e38\u3002\u7d2b\u9e43\u5012\u5750\u5728\u6696\u9601\u91cc\uff0c\u4e34\u7a97\u4f5c\u9488\u9ef9\u3002\u4e00\u89c1\u4ed6\u6765\uff0c\u90fd\u7b11\u8bf4\uff1a\u201c\u53c8\u6765\u4e86\u4e00\u4e2a\uff01\u53ef\u6ca1\u4e86\u4f60\u7684\u5750\u5904\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u597d\u4e00\u5e45\u2018\u51ac\u95fa\u96c6\u8273\u56fe\u2019\uff01\u53ef\u60dc\u6211\u8fdf\u6765\u4e86\u4e00\u6b65\u3002\u6a2a\u7ad6\u8fd9\u5c4b\u5b50\u6bd4\u5404\u5c4b\u5b50\u6696\uff0c\u8fd9\u6905\u5b50\u5750\u7740\u5e76\u4e0d\u51b7\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u5750\u5728\u9edb\u7389\u5e38\u5750\u7684\u642d\u7740\u7070\u9f20\u6905\u642d\u7684\u4e00\u5f20\u6905\u4e0a\u3002\u56e0\u89c1\u6696\u9601\u4e4b\u4e2d\u6709\u4e00\u7389\u77f3\u6761\u76c6\uff0c\u91cc\u9762\u6512\u4e09\u805a\u4e94\u683d\u7740\u4e00\u76c6\u5355\u74e3\u6c34\u4ed9\uff0c\u70b9\u7740\u5ba3\u77f3\uff0c\u4fbf\u6781\u53e3\u8d5e\uff1a\u201c\u597d\u82b1\uff01\u8fd9\u5c4b\u5b50\u8d8a\u53d1\u6696\uff0c\u8fd9\u82b1\u9999\u7684\u8d8a\u6e05\u9999\u3002\u6628\u65e5\u672a\u89c1\u3002\u201d\u9edb\u7389\u56e0\u8bf4\u9053\uff1a\u201c\u8fd9\u662f\u4f60\u5bb6\u7684\u5927\u603b\u7ba1\u8d56\u5927\u5a76\u5b50\u9001\u859b\u4e8c\u59d1\u5a18\u7684\uff0c\u4e24\u76c6\u814a\u6885\uff0c\u4e24\u76c6\u6c34\u4ed9\u3002\u4ed6\u9001\u4e86\u6211\u4e00\u76c6\u6c34\u4ed9\uff0c\u4ed6\u9001\u4e86\u8549\u4e2b\u5934\u4e00\u76c6\u814a\u6885\u3002\u6211\u539f\u4e0d\u8981\u7684\uff0c\u53c8\u6050\u8f9c\u8d1f\u4e86\u4ed6\u7684\u5fc3\u3002\u4f60\u82e5\u8981\uff0c\u6211\u8f6c\u9001\u4f60\u5982\u4f55\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u6211\u5c4b\u91cc\u5374\u6709\u4e24\u76c6\uff0c\u53ea\u662f\u4e0d\u53ca\u8fd9\u4e2a\u3002\u7434\u59b9\u59b9\u9001\u4f60\u7684\uff0c\u5982\u4f55\u53c8\u8f6c\u9001\u4eba\uff0c\u8fd9\u4e2a\u65ad\u4f7f\u4e0d\u5f97\u3002\u201d\u9edb\u7389\u9053\uff1a\u201c\u6211\u4e00\u65e5\u836f\u540a\u5b50\u4e0d\u79bb\u706b\uff0c\u6211\u7adf\u662f\u836f\u57f9\u7740\u5462\uff0c\u90a3\u91cc\u8fd8\u6401\u7684\u4f4f\u82b1\u9999\u6765\u718f\uff1f\u8d8a\u53d1\u5f31\u4e86\u3002\u51b5\u4e14\u8fd9\u5c4b\u5b50\u91cc\u4e00\u80a1\u836f\u9999\uff0c\u53cd\u628a\u8fd9\u82b1\u9999\u6405\u574f\u4e86\u3002\u4e0d\u5982\u4f60\u62ac\u4e86\u53bb\uff0c\u8fd9\u82b1\u4e5f\u6e05\u51c0\u4e86\uff0c\u6ca1\u6742\u5473\u6765\u6405\u4ed6\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u6211\u5c4b\u91cc\u4eca\u513f\u4e5f\u6709\u75c5\u4eba\u714e\u836f\u5462\uff0c\u4f60\u600e\u4e48\u77e5\u9053\u7684\uff1f\u201d\u9edb\u7389\u7b11\u9053\uff1a\u201c\u8fd9\u8bdd\u5947\u4e86\uff0c\u6211\u539f\u662f\u65e0\u5fc3\u7684\u8bdd\uff0c\u8c01\u77e5\u4f60\u5c4b\u91cc\u7684\u4e8b\uff1f\u4f60\u4e0d\u65e9\u6765\u542c\u8bf4\u53e4\u8bb0\uff0c\u8fd9\u4f1a\u5b50\u6765\u4e86\uff0c\u81ea\u60ca\u81ea\u602a\u7684\u3002\u201d\ -\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u54b1\u4eec\u660e\u513f\u4e0b\u4e00\u793e\u53c8\u6709\u4e86\u9898\u76ee\u4e86\uff0c\u5c31\u548f\u6c34\u4ed9\u814a\u6885\u3002\u201d\u9edb\u7389\u542c\u4e86\uff0c\u7b11\u9053\uff1a\u201c\u7f62\uff0c\u7f62\uff01\u6211\u518d\u4e0d\u6562\u4f5c\u8bd7\u4e86\uff0c\u4f5c\u4e00\u56de\uff0c\u7f5a\u4e00\u56de\uff0c\u6ca1\u7684\u602a\u7f9e\u7684\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u4e24\u624b\u63e1\u8d77\u8138\u6765\u3002\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u4f55\u82e6\u6765\uff01\u53c8\u595a\u843d\u6211\u4f5c\u4ec0\u4e48\u3002\u6211\u8fd8\u4e0d\u6015\u81ca\u5462\uff0c\u4f60\u5012\u63e1\u8d77\u8138\u6765\u4e86\u3002\u201d\u5b9d\u9497\u56e0\u7b11\u9053\uff1a\u201c\u4e0b\u6b21\u6211\u9080\u4e00\u793e\uff0c\u56db\u4e2a\u8bd7\u9898\uff0c\u56db\u4e2a\u8bcd\u9898\u3002\u6bcf\u4eba\u56db\u9996\u8bd7\uff0c\u56db\u9615\u8bcd\u3002\u5934\u4e00\u4e2a\u8bd7\u9898\u300a\u548f\u3008\u592a\u6781\u56fe\u3009\u300b\uff0c\u9650\u4e00\u5148\u7684\u97f5\uff0c\u4e94\u8a00\u5f8b\uff0c\u8981\u628a\u4e00\u5148\u7684\u97f5\u90fd\u7528\u5c3d\u4e86\uff0c\u4e00\u4e2a\u4e0d\u8bb8\u5269\u3002\u201d\u5b9d\u7434\u7b11\u9053\uff1a\u201c\u8fd9\u4e00\u8bf4\uff0c\u53ef\u77e5\u662f\u59d0\u59d0\u4e0d\u662f\u771f\u5fc3\u8d77\u793e\u4e86\uff0c\u8fd9\u5206\u660e\u96be\u4eba\u3002\u82e5\u8bba\u8d77\u6765\uff0c\u4e5f\u5f3a\u626d\u7684\u51fa\u6765\uff0c\u4e0d\u8fc7\u98a0\u6765\u5012\u53bb\u5f04\u4e9b\u300a\u6613\u7ecf\u300b\u4e0a\u7684\u8bdd\u751f\u586b\uff0c\u7a76\u7adf\u6709\u4f55\u8da3\u5473\u3002\u6211\u516b\u5c81\u65f6\u8282\uff0c\u8ddf\u6211\u7236\u4eb2\u5230\u897f\u6d77\u6cbf\u5b50\u4e0a\u4e70\u6d0b\u8d27\uff0c\u8c01\u77e5\u6709\u4e2a\u771f\u771f\u56fd\u7684\u5973\u5b69\u5b50\uff0c\u624d\u5341\u4e94\u5c81\uff0c\u90a3\u8138\u9762\u5c31\u548c\u90a3\u897f\u6d0b\u753b\u4e0a\u7684\u7f8e\u4eba\u4e00\u6837\uff0c\u4e5f\u62ab\u7740\u9ec4\u5934\u53d1\uff0c\u6253\u7740\u8054\u5782\uff0c\u6ee1\u5934\u5e26\u7684\u90fd\u662f\u73ca\u745a\uff0c\u732b\u513f\u773c\uff0c\u7956\u6bcd\u7eff\u8fd9\u4e9b\u5b9d\u77f3\uff0c\u8eab\u4e0a\u7a7f\u7740\u91d1\u4e1d\u7ec7\u7684\u9501\u5b50\u7532\u6d0b\u9526\u8884\u8896\uff0c\u5e26\u7740\u502d\u5200\uff0c\u4e5f\u662f\u9576\u91d1\u5d4c\u5b9d\u7684\uff0c\u5b9e\u5728\u753b\u513f\u4e0a\u7684\u4e5f\u6ca1\u4ed6\u597d\u770b\u3002\u6709\u4eba\u8bf4\u4ed6\u901a\u4e2d\u56fd\u7684\u8bd7\u4e66\uff0c\u4f1a\u8bb2\u4e94\u7ecf\uff0c\u80fd\u4f5c\u8bd7\u586b\u8bcd\uff0c\u56e0\u6b64\u6211\u7236\u4eb2\u592e\u70e6\u4e86\u4e00\u4f4d\u901a\u4e8b\u5b98\uff0c\u70e6\u4ed6\u5199\u4e86\u4e00\u5f20\u5b57\uff0c\u5c31\u5199\u7684\u662f\u4ed6\u4f5c\u7684\u8bd7\u3002\u201d\u4f17\u4eba\u90fd\u79f0\u5947\u9053\u5f02\u3002\u5b9d\u7389\u5fd9\u7b11\u9053\uff1a\u201c\u597d\u59b9\u59b9\uff0c\u4f60\u62ff\u51fa\u6765\u6211\u77a7\u77a7\u3002\u201d\u5b9d\u7434\u7b11\u9053\uff1a\u201c\u5728\u5357\u4eac\u6536\u7740\u5462\uff0c\u6b64\u65f6\u90a3\u91cc\u53bb\u53d6\u6765\uff1f\u201d\u5b9d\u7389\u542c\u4e86\uff0c\u5927\u5931\u6240\u671b\uff0c\u4fbf\u8bf4\uff1a\u201c\u6ca1\u798f\u5f97\u89c1\u8fd9\u4e16\u9762\u3002\u201d\u9edb\u7389\u7b11\u62c9\u5b9d\u7434\u9053\uff1a\u201c\u4f60\u522b\u54c4\u6211\u4eec\u3002\u6211\u77e5\u9053\u4f60\u8fd9\u4e00\u6765\uff0c\u4f60\u7684\u8fd9\u4e9b\u4e1c\u897f\u672a\u5fc5\u653e\u5728\u5bb6\u91cc\uff0c\u81ea\u7136\u90fd\u662f\u8981\u5e26\u4e86\u6765\u7684\uff0c\u8fd9\u4f1a\u5b50\u53c8\u626f\u8c0e\u8bf4\u6ca1\u5e26\u6765\u3002\u4ed6\u4eec\u867d\u4fe1\uff0c\u6211\u662f\u4e0d\u4fe1\u7684\u3002\u201d\u5b9d\u7434\u4fbf\u7ea2\u4e86\u8138\uff0c\u4f4e\u5934\u5fae\u7b11\u4e0d\u8bed\u3002\u5b9d\u9497\u7b11\u9053\uff1a\u201c\u504f\u8fd9\u4e2a\u98a6\u513f\u60ef\u8bf4\u8fd9\u4e9b\u767d\u8bdd\uff0c\u628a\u4f60\u5c31\u4f36\u4fd0\u7684\u3002\u201d\u9edb\u7389\u9053\uff1a\u201c\u82e5\u5e26\u4e86\u6765\uff0c\u5c31\u7ed9\u6211\u4eec\u89c1\u8bc6\u89c1\u8bc6\u4e5f\u7f62\u4e86\u3002\u201d\u5b9d\u9497\u7b11\u9053\uff1a\u201c\u7bb1\u5b50\u7b3c\u5b50\u4e00\u5927\u5806\u8fd8\u6ca1\u7406\u6e05\uff0c\u77e5\u9053\u5728\u90a3\u4e2a\u91cc\u5934\u5462\uff01\u7b49\u8fc7\u65e5\u6536\u62fe\u6e05\u4e86\uff0c\u627e\u51fa\u6765\u5927\u5bb6\u518d\u770b\u5c31\u662f\u4e86\u3002\u201d\u53c8\u5411\u5b9d\u7434\u9053\uff1a\u201c\u4f60\u82e5\u8bb0\u5f97\uff0c\u4f55\u4e0d\u5ff5\u5ff5\u6211\u4eec\u542c\u542c\u3002\u201d\u5b9d\u7434\u65b9\u7b54\u9053\uff1a\u201c\u8bb0\u5f97\u662f\u9996\u4e94\u8a00\u5f8b\uff0c\u5916\u56fd\u7684\u5973\u5b50\u4e5f\u5c31\u96be\u4e3a\u4ed6\u4e86\u3002\u201d\u5b9d\u9497\u9053\uff1a\u201c\u4f60\u4e14\u522b\u5ff5\uff0c\u7b49\u628a\u4e91\u513f\u53eb\u4e86\u6765\uff0c\u4e5f\u53eb\u4ed6\u542c\u542c\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u53eb\u5c0f\u87ba\u6765\u5429\u5490\u9053\uff1a\u201c\u4f60\u5230\u6211\u90a3\u91cc\u53bb\uff0c\u5c31\u8bf4\u6211\u4eec\u8fd9\u91cc\u6709\u4e00\u4e2a\u5916\u56fd\u7f8e\u4eba\u6765\u4e86\uff0c\u4f5c\u7684\u597d\u8bd7\uff0c\u8bf7\u4f60\u8fd9\u2018\u8bd7\u75af\u5b50\u2019\u6765\u77a7\u53bb\uff0c\u518d\u628a\u6211\u4eec\u2018\u8bd7\u5446\u5b50\u2019\u4e5f\u5e26\u6765\u3002\u201d\u5c0f\u87ba\u7b11\u7740\u53bb\u4e86\u3002\ -\u534a\u65e5\uff0c\u53ea\u542c\u6e58\u4e91\u7b11\u95ee\uff1a\u201c\u90a3\u4e00\u4e2a\u5916\u56fd\u7f8e\u4eba\u6765\u4e86\uff1f\u201d\u4e00\u5934\u8bf4\uff0c\u4e00\u5934\u679c\u548c\u9999\u83f1\u6765\u4e86\u3002\u4f17\u4eba\u7b11\u9053\uff1a\u201c\u4eba\u672a\u89c1\u5f62\uff0c\u5148\u5df2\u95fb\u58f0\u3002\u201d\u5b9d\u7434\u7b49\u5fd9\u8ba9\u5750\uff0c\u9042\u628a\u65b9\u624d\u7684\u8bdd\u91cd\u53d9\u4e86\u4e00\u904d\u3002\u6e58\u4e91\u7b11\u9053\uff1a\u201c\u5feb\u5ff5\u6765\u542c\u542c\u3002\u201d\u5b9d\u7434\u56e0\u5ff5\u9053\uff1a\ -\u6628\u591c\u6731\u697c\u68a6\uff0c\u4eca\u5bb5\u6c34\u56fd\u541f\u3002\ -\u5c9b\u4e91\u84b8\u5927\u6d77\uff0c\u5c9a\u6c14\u63a5\u4e1b\u6797\u3002\ -\u6708\u672c\u65e0\u4eca\u53e4\uff0c\u60c5\u7f18\u81ea\u6d45\u6df1\u3002\ -\u6c49\u5357\u6625\u5386\u5386\uff0c\u7109\u5f97\u4e0d\u5173\u5fc3\u3002\u4f17\u4eba\u542c\u4e86\uff0c\u90fd\u9053\u201c\u96be\u4e3a\u4ed6\uff01\u7adf\u6bd4\u6211\u4eec\u4e2d\u56fd\u4eba\u8fd8\u5f3a\u3002\u201d\u4e00\u8bed\u672a\u4e86\uff0c\u53ea\u89c1\u9e9d\u6708\u8d70\u6765\u8bf4\uff1a\u201c\u592a\u592a\u6253\u53d1\u4eba\u6765\u544a\u8bc9\u4e8c\u7237\uff0c\u660e\u513f\u4e00\u65e9\u5f80\u8205\u8205\u90a3\u91cc\u53bb\uff0c\u5c31\u8bf4\u592a\u592a\u8eab\u4e0a\u4e0d\u5927\u597d\uff0c\u4e0d\u5f97\u4eb2\u81ea\u6765\u3002\u201d\u5b9d\u7389\u5fd9\u7ad9\u8d77\u6765\u7b54\u5e94\u9053\uff1a\u201c\u662f\u3002\u201d\u56e0\u95ee\u5b9d\u9497\u5b9d\u7434\u53ef\u53bb\u3002\u5b9d\u9497\u9053\uff1a\u201c\u6211\u4eec\u4e0d\u53bb\uff0c\u6628\u513f\u5355\u9001\u4e86\u793c\u53bb\u4e86\u3002\u201d\u5927\u5bb6\u8bf4\u4e86\u4e00\u56de\u65b9\u6563\u3002\ -\u5b9d\u7389\u56e0\u8ba9\u8bf8\u59ca\u59b9\u5148\u884c\uff0c\u81ea\u5df1\u843d\u540e\u3002\u9edb\u7389\u4fbf\u53c8\u53eb\u4f4f\u4ed6\u95ee\u9053\uff1a\u201c\u88ad\u4eba\u5230\u5e95\u591a\u65e9\u665a\u56de\u6765\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u81ea\u7136\u7b49\u9001\u4e86\u6ba1\u624d\u6765\u5462\u3002\u201d\u9edb\u7389\u8fd8\u6709\u8bdd\u8bf4\uff0c\u53c8\u4e0d\u66fe\u51fa\u53e3\uff0c\u51fa\u4e86\u4e00\u56de\u795e\uff0c\u4fbf\u8bf4\u9053\uff1a\u201c\u4f60\u53bb\u7f62\u3002\u201d\u5b9d\u7389\u4e5f\u89c9\u5fc3\u91cc\u6709\u8bb8\u591a\u8bdd\uff0c\u53ea\u662f\u53e3\u91cc\u4e0d\u77e5\u8981\u8bf4\u4ec0\u4e48\uff0c\u60f3\u4e86\u4e00\u60f3\uff0c\u4e5f\u7b11\u9053\uff1a\u201c\u660e\u513f\u518d\u8bf4\u7f62\u3002\u201d\u4e00\u9762\u4e0b\u4e86\u9636\u77f6\uff0c\u4f4e\u5934\u6b63\u6b32\u8fc8\u6b65\uff0c\u590d\u53c8\u5fd9\u56de\u8eab\u95ee\u9053\uff1a\u201c\u5982\u4eca\u7684\u591c\u8d8a\u53d1\u957f\u4e86\uff0c\u4f60\u4e00\u591c\u54b3\u55fd\u51e0\u904d\uff1f\u9192\u51e0\u6b21\uff1f\u201d\u9edb\u7389\u9053\uff1a\u201c\u6628\u513f\u591c\u91cc\u597d\u4e86\uff0c\u53ea\u55fd\u4e86\u4e24\u904d\uff0c\u5374\u53ea\u7761\u4e86\u56db\u66f4\u4e00\u4e2a\u66f4\u6b21\uff0c\u5c31\u518d\u4e0d\u80fd\u7761\u4e86\u3002\u201d\u5b9d\u7389\u53c8\u7b11\u9053\uff1a\u201c\u6b63\u662f\u6709\u53e5\u8981\u7d27\u7684\u8bdd\uff0c\u8fd9\u4f1a\u5b50\u624d\u60f3\u8d77\u6765\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u4fbf\u6328\u8fc7\u8eab\u6765\uff0c\u6084\u6084\u9053\uff1a\u201c\u6211\u60f3\u5b9d\u59d0\u59d0\u9001\u4f60\u7684\u71d5\u7a9d\uff0d\uff0d\u201d\u4e00\u8bed\u672a\u4e86\uff0c\u53ea\u89c1\u8d75\u59e8\u5a18\u8d70\u4e86\u8fdb\u6765\u77a7\u9edb\u7389\uff0c\u95ee\uff1a\u201c\u59d1\u5a18\u8fd9\u4e24\u5929\u597d\uff1f\u201d\u9edb\u7389\u4fbf\u77e5\u4ed6\u662f\u4ece\u63a2\u6625\u5904\u6765\uff0c\u4ece\u95e8\u524d\u8fc7\uff0c\u987a\u8def\u7684\u4eba\u60c5\u3002\u9edb\u7389\u5fd9\u966a\u7b11\u8ba9\u5750\uff0c\u8bf4\uff1a\u201c\u96be\u5f97\u59e8\u5a18\u60f3\u7740\uff0c\u602a\u51b7\u7684\uff0c\u4eb2\u8eab\u8d70\u6765\u3002\u201d\u53c8\u5fd9\u547d\u5012\u8336\uff0c\u4e00\u9762\u53c8\u4f7f\u773c\u8272\u4e0e\u5b9d\u7389\u3002\u5b9d\u7389\u4f1a\u610f\uff0c\u4fbf\u8d70\u4e86\u51fa\u6765\u3002\ -\u6b63\u503c\u5403\u665a\u996d\u65f6\uff0c\u89c1\u4e86\u738b\u592b\u4eba\uff0c\u738b\u592b\u4eba\u53c8\u5631\u4ed6\u65e9\u53bb\u3002\u5b9d\u7389\u56de\u6765\uff0c\u770b\u6674\u96ef\u5403\u4e86\u836f\u3002\u6b64\u5915\u5b9d\u7389\u4fbf\u4e0d\u547d\u6674\u96ef\u632a\u51fa\u6696\u9601\u6765\uff0c\u81ea\u5df1\u4fbf\u5728\u6674\u96ef\u5916\u8fb9\u3002\u53c8\u547d\u5c06\u718f\u7b3c\u62ac\u81f3\u6696\u9601\u524d\uff0c\u9e9d\u6708\u4fbf\u5728\u718f\u7b3c\u4e0a\u3002\u4e00\u5bbf\u65e0\u8bdd\u3002\ -\u81f3\u6b21\u65e5\uff0c\u5929\u672a\u660e\u65f6\uff0c\u6674\u96ef\u4fbf\u53eb\u9192\u9e9d\u6708\u9053\uff1a\u201c\u4f60\u4e5f\u8be5\u9192\u4e86\uff0c\u53ea\u662f\u7761\u4e0d\u591f\uff01\u4f60\u51fa\u53bb\u53eb\u4eba\u7ed9\u4ed6\u9884\u5907\u8336\u6c34\uff0c\u6211\u53eb\u9192\u4ed6\u5c31\u662f\u4e86\u3002\u201d\u9e9d\u6708\u5fd9\u62ab\u8863\u8d77\u6765\u9053\uff1a\u201c\u54b1\u4eec\u53eb\u8d77\u4ed6\u6765\uff0c\u7a7f\u597d\u8863\u88f3\uff0c\u62ac\u8fc7\u8fd9\u706b\u7bb1\u53bb\uff0c\u518d\u53eb\u4ed6\u4eec\u8fdb\u6765\u3002\u8001\u5b37\u5b37\u4eec\u5df2\u7ecf\u8bf4\u8fc7\uff0c\u4e0d\u53eb\u4ed6\u5728\u8fd9\u5c4b\u91cc\uff0c\u6015\u8fc7\u4e86\u75c5\u6c14\u3002\u5982\u4eca\u4ed6\u4eec\u89c1\u54b1\u4eec\u6324\u5728\u4e00\u5904\uff0c\u53c8\u8be5\u5520\u53e8\u4e86\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u6211\u4e5f\u662f\u8fd9\u4e48\u8bf4\u5462\u3002\u201d\u4e8c\u4eba\u624d\u53eb\u65f6\uff0c\u5b9d\u7389\u5df2\u9192\u4e86\uff0c\u5fd9\u8d77\u8eab\u62ab\u8863\u3002\u9e9d\u6708\u5148\u53eb\u8fdb\u5c0f\u4e2b\u5934\u5b50\u6765\uff0c\u6536\u62fe\u59a5\u5f53\u4e86\uff0c\u624d\u547d\u79cb\u7eb9\u6a80\u4e91\u7b49\u8fdb\u6765\uff0c\u4e00\u540c\u4f0f\u4f8d\u5b9d\u7389\u68b3\u6d17\u6bd5\u3002\u9e9d\u6708\u9053\uff1a\u201c\u5929\u53c8\u9634\u9634\u7684\uff0c\u53ea\u6015\u6709\u96ea\uff0c\u7a7f\u90a3\u4e00\u5957\u6be1\u7684\u7f62\u3002\u201d\u5b9d\u7389\u70b9\u5934\uff0c\u5373\u65f6\u6362\u4e86\u8863\u88f3\u3002\u5c0f\u4e2b\u5934\u4fbf\u7528\u5c0f\u8336\u76d8\u6367\u4e86\u4e00\u76d6\u7897\u5efa\u83b2\u7ea2\u67a3\u513f\u6c64\u6765\uff0c\u5b9d\u7389\u559d\u4e86\u4e24\u53e3\u3002\u9e9d\u6708\u53c8\u6367\u8fc7\u4e00\u5c0f\u789f\u6cd5\u5236\u7d2b\u59dc\u6765\uff0c\u5b9d\u7389\u5659\u4e86\u4e00\u5757\u3002\u53c8\u5631\u5490\u4e86\u6674\u96ef\u4e00\u56de\uff0c\u4fbf\u5f80\u8d3e\u6bcd\u5904\u6765\u3002\ -\u8d3e\u6bcd\u72b9\u672a\u8d77\u6765\uff0c\u77e5\u9053\u5b9d\u7389\u51fa\u95e8\uff0c\u4fbf\u5f00\u4e86\u623f\u95e8\uff0c\u547d\u5b9d\u7389\u8fdb\u53bb\u3002\u5b9d\u7389\u89c1\u8d3e\u6bcd\u8eab\u540e\u5b9d\u7434\u9762\u5411\u91cc\u4e5f\u7761\u672a\u9192\u3002\u8d3e\u6bcd\u89c1\u5b9d\u7389\u8eab\u4e0a\u7a7f\u7740\u8354\u8272\u54c6\u7f57\u5462\u7684\u5929\u9a6c\u7bad\u8896\uff0c\u5927\u7ea2\u7329\u7329\u6be1\u76d8\u91d1\u5f69\u7ee3\u77f3\u9752\u5986\u7f0e\u6cbf\u8fb9\u7684\u6392\u7a57\u8902\u5b50\u3002\u8d3e\u6bcd\u9053\uff1a\u201c\u4e0b\u96ea\u5462\u4e48\uff1f\u201d\u5b9d\u7389\u9053\uff1a\u201c\u5929\u9634\u7740\uff0c\u8fd8\u6ca1\u4e0b\u5462\u3002\u201d\u8d3e\u6bcd\u4fbf\u547d\u9e33\u9e2f\u6765\uff1a\u201c\u628a\u6628\u513f\u90a3\u4e00\u4ef6\u4e4c\u4e91\u8c79\u7684\u6c05\u8863\u7ed9\u4ed6\u7f62\u3002\u201d\u9e33\u9e2f\u7b54\u5e94\u4e86\uff0c\u8d70\u53bb\u679c\u53d6\u4e86\u4e00\u4ef6\u6765\u3002\u5b9d\u7389\u770b\u65f6\uff0c\u91d1\u7fe0\u8f89\u714c\uff0c\u78a7\u5f69\u95ea\u707c\uff0c\u53c8\u4e0d\u4f3c\u5b9d\u7434\u6240\u62ab\u4e4b\u51eb\u9765\u88d8\u3002\u53ea\u542c\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u8fd9\u53eb\u4f5c\u2018\u96c0\u91d1\u5462\u2019\uff0c\u8fd9\u662f\u54e6\u5570\u65af\u56fd\u62ff\u5b54\u96c0\u6bdb\u62c8\u4e86\u7ebf\u7ec7\u7684\u3002\u524d\u513f\u628a\u90a3\u4e00\u4ef6\u91ce\u9e2d\u5b50\u7684\u7ed9\u4e86\u4f60\u5c0f\u59b9\u59b9\uff0c\u8fd9\u4ef6\u7ed9\u4f60\u7f62\u3002\u201d\u5b9d\u7389\u78d5\u4e86\u4e00\u4e2a\u5934\uff0c\u4fbf\u62ab\u5728\u8eab\u4e0a\u3002\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4f60\u5148\u7ed9\u4f60\u5a18\u77a7\u77a7\u53bb\u518d\u53bb\u3002\u201d\u5b9d\u7389\u7b54\u5e94\u4e86\uff0c\u4fbf\u51fa\u6765\uff0c\u53ea\u89c1\u9e33\u9e2f\u7ad9\u5728\u5730\u4e0b\u63c9\u773c\u775b\u3002\u56e0\u81ea\u90a3\u65e5\u9e33\u9e2f\u53d1\u8a93\u51b3\u7edd\u4e4b\u540e\uff0c\u4ed6\u603b\u4e0d\u548c\u5b9d\u7389\u8bb2\u8bdd\u3002\u5b9d\u7389\u6b63\u81ea\u65e5\u591c\u4e0d\u5b89\uff0c\u6b64\u65f6\u89c1\u4ed6\u53c8\u8981\u56de\u907f\uff0c\u5b9d\u7389\u4fbf\u4e0a\u6765\u7b11\u9053\uff1a\u201c\u597d\u59d0\u59d0\uff0c\u4f60\u77a7\u77a7\uff0c\u6211\u7a7f\u7740\u8fd9\u4e2a\u597d\u4e0d\u597d\u3002\u201d\u9e33\u9e2f\u4e00\u6454\u624b\uff0c\u4fbf\u8fdb\u8d3e\u6bcd\u623f\u4e2d\u6765\u4e86\u3002\u5b9d\u7389\u53ea\u5f97\u5230\u4e86\u738b\u592b\u4eba\u623f\u4e2d\uff0c\u4e0e\u738b\u592b\u4eba\u770b\u4e86\uff0c\u7136\u540e\u53c8\u56de\u81f3\u56ed\u4e2d\uff0c\u4e0e\u6674\u96ef\u9e9d\u6708\u770b\u8fc7\u540e\uff0c\u81f3\u8d3e\u6bcd\u623f\u4e2d\u56de\u8bf4\uff1a\u201c\u592a\u592a\u770b\u4e86\uff0c\u53ea\u8bf4\u53ef\u60dc\u4e86\u7684\uff0c\u53eb\u6211\u4ed4\u7ec6\u7a7f\uff0c\u522b\u906d\u8e0f\u4e86\u4ed6\u3002\u201d\u8d3e\u6bcd\u9053\uff1a\u201c\u5c31\u5269\u4e0b\u4e86\u8fd9\u4e00\u4ef6\uff0c\u4f60\u906d\u8e0f\u4e86\u4e5f\u518d\u6ca1\u4e86\u3002\u8fd9\u4f1a\u5b50\u7279\u7ed9\u4f60\u505a\u8fd9\u4e2a\u4e5f\u662f\u6ca1\u6709\u7684\u4e8b\u3002\u201d\u8bf4\u7740\u53c8\u5631\u5490\u4ed6\uff1a\u201c\u4e0d\u8bb8\u591a\u5403\u9152\uff0c\u65e9\u4e9b\u56de\u6765\u3002\u201d\u5b9d\u7389\u5e94\u4e86\u51e0\u4e2a\u201c\u662f\u201d\u3002\ -\u8001\u5b37\u5b37\u8ddf\u81f3\u5385\u4e0a\uff0c\u53ea\u89c1\u5b9d\u7389\u7684\u5976\u5144\u674e\u8d35\u548c\u738b\u8363\uff0c\u5f20\u82e5\u9526\uff0c\u8d75\u4ea6\u534e\u3001\u94b1\u542f\u3001\u5468\u745e\u516d\u4e2a\u4eba\uff0c\u5e26\u7740\u8317\u70df\uff0c\u4f34\u9e64\uff0c\u9504\u836f\uff0c\u626b\u7ea2\u56db\u4e2a\u5c0f\u53ae\uff0c\u80cc\u7740\u8863\u5305\uff0c\u62b1\u7740\u5750\u8925\uff0c\u7b3c\u7740\u4e00\u5339\u96d5\u978d\u5f69\u8f94\u7684\u767d\u9a6c\uff0c\u65e9\u5df2\u4f3a\u5019\u591a\u65f6\u4e86\u3002\u8001\u5b37\u5b37\u53c8\u5429\u5490\u4e86\u4ed6\u516d\u4eba\u4e9b\u8bdd\uff0c\u516d\u4e2a\u4eba\u5fd9\u7b54\u5e94\u4e86\u51e0\u4e2a\u201c\u662f\u201d\uff0c\u5fd9\u6367\u97ad\u5760\u956b\u3002\u5b9d\u7389\u6162\u6162\u7684\u4e0a\u4e86\u9a6c\uff0c\u674e\u8d35\u548c\u738b\u8363\u7b3c\u7740\u56bc\u73af\uff0c\u94b1\u542f\u5468\u745e\u4e8c\u4eba\u5728\u524d\u5f15\u5bfc\uff0c\u5f20\u82e5\u9526\uff0c\u8d75\u4ea6\u534e\u5728\u4e24\u8fb9\u7d27\u8d34\u5b9d\u7389\u540e\u8eab\u3002\u5b9d\u7389\u5728\u9a6c\u4e0a\u7b11\u9053\uff1a\u201c\u5468\u54e5\uff0c\u94b1\u54e5\uff0c\u54b1\u4eec\u6253\u8fd9\u89d2\u95e8\u8d70\u7f62\uff0c\u7701\u5f97\u5230\u4e86\u8001\u7237\u7684\u4e66\u623f\u95e8\u53e3\u53c8\u4e0b\u6765\u3002\u201d\u5468\u745e\u4fa7\u8eab\u7b11\u9053\uff1a\u201c\u8001\u7237\u4e0d\u5728\u5bb6\uff0c\u4e66\u623f\u5929\u5929\u9501\u7740\u7684\uff0c\u7237\u53ef\u4ee5\u4e0d\u7528\u4e0b\u6765\u7f62\u4e86\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u867d\u9501\u7740\uff0c\u4e5f\u8981\u4e0b\u6765\u7684\u3002\u201d\u94b1\u542f\u674e\u8d35\u7b49\u90fd\u7b11\u9053\uff1a\u201c\u7237\u8bf4\u7684\u662f\u3002\u4fbf\u6258\u61d2\u4e0d\u4e0b\u6765\uff0c\u5018\u6216\u9047\u89c1\u8d56\u5927\u7237\u6797\u4e8c\u7237\uff0c\u867d\u4e0d\u597d\u8bf4\u7237\uff0c\u4e5f\u529d\u4e24\u53e5\u3002\u6709\u7684\u4e0d\u662f\uff0c\u90fd\u6d3e\u5728\u6211\u4eec\u8eab\u4e0a\uff0c\u53c8\u8bf4\u6211\u4eec\u4e0d\u6559\u7237\u793c\u4e86\u3002\u201d\u5468\u745e\u94b1\u542f\u4fbf\u4e00\u76f4\u51fa\u89d2\u95e8\u6765\u3002\ -\u6b63\u8bf4\u8bdd\u65f6\uff0c\u9876\u5934\u679c\u89c1\u8d56\u5927\u8fdb\u6765\u3002\u5b9d\u7389\u5fd9\u7b3c\u4f4f\u9a6c\uff0c\u610f\u6b32\u4e0b\u6765\u3002\u8d56\u5927\u5fd9\u4e0a\u6765\u62b1\u4f4f\u817f\u3002\u5b9d\u7389\u4fbf\u5728\u956b\u4e0a\u7ad9\u8d77\u6765\uff0c\u7b11\u643a\u4ed6\u7684\u624b\uff0c\u8bf4\u4e86\u51e0\u53e5\u8bdd\u3002\u63a5\u7740\u53c8\u89c1\u4e00\u4e2a\u5c0f\u53ae\u5e26\u7740\u4e8c\u4e09\u5341\u4e2a\u62ff\u626b\u5e1a\u7c38\u7b95\u7684\u4eba\u8fdb\u6765\uff0c\u89c1\u4e86\u5b9d\u7389\uff0c\u90fd\u987a\u5899\u5782\u624b\u7acb\u4f4f\uff0c\u72ec\u90a3\u4e3a\u9996\u7684\u5c0f\u53ae\u6253\u5343\u513f\uff0c\u8bf7\u4e86\u4e00\u4e2a\u5b89\u3002\u5b9d\u7389\u4e0d\u8bc6\u540d\u59d3\uff0c\u53ea\u5fae\u7b11\u70b9\u4e86\u70b9\u5934\u513f\u3002\u9a6c\u5df2\u8fc7\u53bb\uff0c\u90a3\u4eba\u65b9\u5e26\u4eba\u53bb\u4e86\u3002\u4e8e\u662f\u51fa\u4e86\u89d2\u95e8\uff0c\u95e8\u5916\u53c8\u6709\u674e\u8d35\u7b49\u516d\u4eba\u7684\u5c0f\u53ae\u5e76\u51e0\u4e2a\u9a6c\u592b\uff0c\u65e9\u9884\u5907\u4e0b\u5341\u6765\u5339\u9a6c\u4e13\u5019\u3002\u4e00\u51fa\u4e86\u89d2\u95e8\uff0c\u674e\u8d35\u7b49\u90fd\u5404\u4e0a\u4e86\u9a6c\uff0c\u524d\u5f15\u508d\u56f4\u7684\u4e00\u9635\u70df\u53bb\u4e86\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\ -\u8fd9\u91cc\u6674\u96ef\u5403\u4e86\u836f\uff0c\u4ecd\u4e0d\u89c1\u75c5\u9000\uff0c\u6025\u7684\u4e71\u9a82\u5927\u592b\uff0c\u8bf4\uff1a\u201c\u53ea\u4f1a\u9a97\u4eba\u7684\u94b1\uff0c\u4e00\u5242\u597d\u836f\u4e5f\u4e0d\u7ed9\u4eba\u5403\u3002\u201d\u9e9d\u6708\u7b11\u529d\u4ed6\u9053\uff1a\u201c\u4f60\u592a\u6027\u6025\u4e86\uff0c\u4fd7\u8bed\u8bf4\uff1a\u2018\u75c5\u6765\u5982\u5c71\u5012\uff0c\u75c5\u53bb\u5982\u62bd\u4e1d\u3002\u2019\u53c8\u4e0d\u662f\u8001\u541b\u7684\u4ed9\u4e39\uff0c\u90a3\u6709\u8fd9\u6837\u7075\u836f\uff01\u4f60\u53ea\u9759\u517b\u51e0\u5929\uff0c\u81ea\u7136\u597d\u4e86\u3002\u4f60\u8d8a\u6025\u8d8a\u7740\u624b\u3002\u201d\u6674\u96ef\u53c8\u9a82\u5c0f\u4e2b\u5934\u5b50\u4eec\uff1a\u201c\u90a3\u91cc\u94bb\u6c99\u53bb\u4e86\uff01\u7785\u6211\u75c5\u4e86\uff0c\u90fd\u5927\u80c6\u5b50\u8d70\u4e86\u3002\u660e\u513f\u6211\u597d\u4e86\uff0c\u4e00\u4e2a\u4e00\u4e2a\u7684\u624d\u63ed\u4f60\u4eec\u7684\u76ae\u5462\uff01\u201d\u552c\u7684\u5c0f\u4e2b\u5934\u5b50\u7bc6\u513f\u5fd9\u8fdb\u6765\u95ee\uff1a\u201c\u59d1\u5a18\u4f5c\u4ec0\u4e48\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u522b\u4eba\u90fd\u6b7b\u7edd\u4e86\uff0c\u5c31\u5269\u4e86\u4f60\u4e0d\u6210\uff1f\u201d\u8bf4\u7740\uff0c\u53ea\u89c1\u5760\u513f\u4e5f\u8e6d\u4e86\u8fdb\u6765\u3002\u6674\u96ef\u9053\uff1a\u201c\u4f60\u77a7\u77a7\u8fd9\u5c0f\u8e44\u5b50\uff0c\u4e0d\u95ee\u4ed6\u8fd8\u4e0d\u6765\u5462\u3002\u8fd9\u91cc\u53c8\u653e\u6708\u94b1\u4e86\uff0c\u53c8\u6563\u679c\u5b50\u4e86\uff0c\u4f60\u8be5\u8dd1\u5728\u5934\u91cc\u4e86\u3002\u4f60\u5f80\u524d\u4e9b\uff0c\u6211\u4e0d\u662f\u8001\u864e\u5403\u4e86\u4f60\uff01\u201d\u5760\u513f\u53ea\u5f97\u524d\u51d1\u3002\u6674\u96ef\u4fbf\u51b7\u4e0d\u9632\u6b20\u8eab\u4e00\u628a\u5c06\u4ed6\u7684\u624b\u6293\u4f4f\uff0c\u5411\u6795\u8fb9\u53d6\u4e86\u4e00\u4e08\u9752\uff0c\u5411\u4ed6\u624b\u4e0a\u4e71\u6233\uff0c\u53e3\u5185\u9a82\u9053\uff1a\u201c\u8981\u8fd9\u722a\u5b50\u4f5c\u4ec0\u4e48\uff1f\u62c8\u4e0d\u5f97\u9488\uff0c\u62ff\u4e0d\u52a8\u7ebf\uff0c\u53ea\u4f1a\u5077\u5634\u5403\u3002\u773c\u76ae\u5b50\u53c8\u6d45\uff0c\u722a\u5b50\u53c8\u8f7b\uff0c\u6253\u5634\u73b0\u4e16\u7684\uff0c\u4e0d\u5982\u6233\u70c2\u4e86\uff01\u201d\u5760\u513f\u75bc\u7684\u4e71\u54ed\u4e71\u558a\u3002\u9e9d\u6708\u5fd9\u62c9\u5f00\u5760\u513f\uff0c\u6309\u6674\u96ef\u7761\u4e0b\uff0c\u7b11\u9053\uff1a\u201c\u624d\u51fa\u4e86\u6c57\uff0c\u53c8\u4f5c\u6b7b\u3002\u7b49\u4f60\u597d\u4e86\uff0c\u8981\u6253\u591a\u5c11\u6253\u4e0d\u7684\uff1f\u8fd9\u4f1a\u5b50\u95f9\u4ec0\u4e48\uff01\u201d\u6674\u96ef\u4fbf\u547d\u4eba\u53eb\u5b8b\u5b37\u5b37\u8fdb\u6765\uff0c\u8bf4\u9053\uff1a\u201c\u5b9d\u4e8c\u7237\u624d\u544a\u8bc9\u4e86\u6211\uff0c\u53eb\u6211\u544a\u8bc9\u4f60\u4eec\uff0c\u5760\u513f\u5f88\u61d2\uff0c\u5b9d\u4e8c\u7237\u5f53\u9762\u4f7f\u4ed6\uff0c\u4ed6\u62e8\u5634\u513f\u4e0d\u52a8\uff0c\u8fde\u88ad\u4eba\u4f7f\u4ed6\uff0c\u4ed6\u80cc\u540e\u9a82\u4ed6\u3002\u4eca\u513f\u52a1\u5fc5\u6253\u53d1\u4ed6\u51fa\u53bb\uff0c\u660e\u513f\u5b9d\u4e8c\u7237\u4eb2\u81ea\u56de\u592a\u592a\u5c31\u662f\u4e86\u3002\u201d\u5b8b\u5b37\u5b37\u542c\u4e86\uff0c\u5fc3\u4e0b\u4fbf\u77e5\u956f\u5b50\u4e8b\u53d1\uff0c\u56e0\u7b11\u9053\uff1a\u201c\u867d\u5982\u6b64\u8bf4\uff0c\u4e5f\u7b49\u82b1\u59d1\u5a18\u56de\u6765\u77e5\u9053\u4e86\uff0c\u518d\u6253\u53d1\u4ed6\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u5b9d\u4e8c\u7237\u4eca\u513f\u5343\u53ee\u549b\u4e07\u5631\u5490\u7684\uff0c\u4ec0\u4e48\u2018\u82b1\u59d1\u5a18\u2019\u2018\u8349\u59d1\u5a18\u2019\uff0c\u6211\u4eec\u81ea\u7136\u6709\u9053\u7406\u3002\u4f60\u53ea\u4f9d\u6211\u7684\u8bdd\uff0c\u5feb\u53eb\u4ed6\u5bb6\u7684\u4eba\u6765\u9886\u4ed6\u51fa\u53bb\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u4e5f\u7f62\u4e86\uff0c\u65e9\u4e5f\u53bb\uff0c\u665a\u4e5f\u53bb\uff0c\u5e26\u4e86\u53bb\u65e9\u6e05\u9759\u4e00\u65e5\u3002\u201d\ -\u5b8b\u5b37\u5b37\u542c\u4e86\uff0c\u53ea\u5f97\u51fa\u53bb\u5524\u4e86\u4ed6\u6bcd\u4eb2\u6765\uff0c\u6253\u70b9\u4e86\u4ed6\u7684\u4e1c\u897f\uff0c\u53c8\u6765\u89c1\u6674\u96ef\u7b49\uff0c\u8bf4\u9053\uff1a\u201c\u59d1\u5a18\u4eec\u600e\u4e48\u4e86\uff0c\u4f60\u4f84\u5973\u513f\u4e0d\u597d\uff0c\u4f60\u4eec\u6559\u5bfc\u4ed6\uff0c\u600e\u4e48\u64b5\u51fa\u53bb\uff1f\u4e5f\u5230\u5e95\u7ed9\u6211\u4eec\u7559\u4e2a\u8138\u513f\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u4f60\u8fd9\u8bdd\u53ea\u7b49\u5b9d\u7389\u6765\u95ee\u4ed6\uff0c\u4e0e\u6211\u4eec\u65e0\u5e72\u3002\u201d\u90a3\u5ab3\u5987\u51b7\u7b11\u9053\uff1a\u201c\u6211\u6709\u80c6\u5b50\u95ee\u4ed6\u53bb\uff01\u4ed6\u90a3\u4e00\u4ef6\u4e8b\u4e0d\u662f\u542c\u59d1\u5a18\u4eec\u7684\u8c03\u505c\uff1f\u4ed6\u7eb5\u4f9d\u4e86\uff0c\u59d1\u5a18\u4eec\u4e0d\u4f9d\uff0c\u4e5f\u672a\u5fc5\u4e2d\u7528\u3002\u6bd4\u5982\u65b9\u624d\u8bf4\u8bdd\uff0c\u867d\u662f\u80cc\u5730\u91cc\uff0c\u59d1\u5a18\u5c31\u76f4\u53eb\u4ed6\u7684\u540d\u5b57\u3002\u5728\u59d1\u5a18\u4eec\u5c31\u4f7f\u5f97\uff0c\u5728\u6211\u4eec\u5c31\u6210\u4e86\u91ce\u4eba\u4e86\u3002\u201d\u6674\u96ef\u542c\u8bf4\uff0c\u4e00\u53d1\u6025\u7ea2\u4e86\u8138\uff0c\u8bf4\u9053\uff1a\u201c\u6211\u53eb\u4e86\u4ed6\u7684\u540d\u5b57\u4e86\uff0c\u4f60\u5728\u8001\u592a\u592a\u8ddf\u524d\u544a\u6211\u53bb\uff0c\u8bf4\u6211\u6492\u91ce\uff0c\u4e5f\u64b5\u51fa\u6211\u53bb\u3002\u201d\u9e9d\u6708\u5fd9\u9053\uff1a\u201c\u5ac2\u5b50\uff0c\u4f60\u53ea\u7ba1\u5e26\u4e86\u4eba\u51fa\u53bb\uff0c\u6709\u8bdd\u518d\u8bf4\u3002\u8fd9\u4e2a\u5730\u65b9\u5c82\u6709\u4f60\u53eb\u558a\u8bb2\u793c\u7684\uff1f\u4f60\u89c1\u8c01\u548c\u6211\u4eec\u8bb2\u8fc7\u793c\uff1f\u522b\u8bf4\u5ac2\u5b50\u4f60\uff0c\u5c31\u662f\u8d56\u5976\u5976\u6797\u5927\u5a18\uff0c\u4e5f\u5f97\u62c5\u5f85\u6211\u4eec\u4e09\u5206\u3002\u4fbf\u662f\u53eb\u540d\u5b57\uff0c\u4ece\u5c0f\u513f\u76f4\u5230\u5982\u4eca\uff0c\u90fd\u662f\u8001\u592a\u592a\u5429\u5490\u8fc7\u7684\uff0c\u4f60\u4eec\u4e5f\u77e5\u9053\u7684\uff0c\u6050\u6015\u96be\u517b\u6d3b\uff0c\u5df4\u5df4\u7684\u5199\u4e86\u4ed6\u7684\u5c0f\u540d\u513f\uff0c\u5404\u5904\u8d34\u7740\u53eb\u4e07\u4eba\u53eb\u53bb\uff0c\u4e3a\u7684\u662f\u597d\u517b\u6d3b\u3002\u8fde\u6311\u6c34\u6311\u7caa\u82b1\u5b50\u90fd\u53eb\u5f97\uff0c\u4f55\u51b5\u6211\u4eec\uff01\u8fde\u6628\u513f\u6797\u5927\u5a18\u53eb\u4e86\u4e00\u58f0\u2018\u7237\u2019\uff0c\u8001\u592a\u592a\u8fd8\u8bf4\u4ed6\u5462\uff0c\u6b64\u662f\u4e00\u4ef6\u3002\u4e8c\u5219\uff0c\u6211\u4eec\u8fd9\u4e9b\u4eba\u5e38\u56de\u8001\u592a\u592a\u7684\u8bdd\u53bb\uff0c\u53ef\u4e0d\u53eb\u7740\u540d\u5b57\u56de\u8bdd\uff0c\u96be\u9053\u4e5f\u79f0\u2019\u7237\u2019\uff1f\u90a3\u4e00\u65e5\u4e0d\u628a\u5b9d\u7389\u4e24\u4e2a\u5b57\u5ff5\u4e8c\u767e\u904d\uff0c\u504f\u5ac2\u5b50\u53c8\u6765\u6311\u8fd9\u4e2a\u4e86\uff01\u8fc7\u4e00\u65e5\u5ac2\u5b50\u95f2\u4e86\uff0c\u5728\u8001\u592a\u592a\uff0c\u592a\u592a\u8ddf\u524d\uff0c\u542c\u542c\u6211\u4eec\u5f53\u7740\u9762\u513f\u53eb\u4ed6\u5c31\u77e5\u9053\u4e86\u3002\u5ac2\u5b50\u539f\u4e5f\u4e0d\u5f97\u5728\u8001\u592a\u592a\uff0c\u592a\u592a\u8ddf\u524d\u5f53\u4e9b\u4f53\u7edf\u5dee\u4e8b\uff0c\u6210\u5e74\u5bb6\u53ea\u5728\u4e09\u95e8\u5916\u5934\u6df7\uff0c\u602a\u4e0d\u5f97\u4e0d\u77e5\u6211\u4eec\u91cc\u5934\u7684\u89c4\u77e9\u3002\u8fd9\u91cc\u4e0d\u662f\u5ac2\u5b50\u4e45\u7ad9\u7684\uff0c\u518d\u4e00\u4f1a\uff0c\u4e0d\u7528\u6211\u4eec\u8bf4\u8bdd\uff0c\u5c31\u6709\u4eba\u6765\u95ee\u4f60\u4e86\u3002\u6709\u4ec0\u4e48\u5206\u8bc1\u8bdd\uff0c\u4e14\u5e26\u4e86\u4ed6\u53bb\uff0c\u4f60\u56de\u4e86\u6797\u5927\u5a18\uff0c\u53eb\u4ed6\u6765\u627e\u4e8c\u7237\u8bf4\u8bdd\u3002\u5bb6\u91cc\u4e0a\u5343\u7684\u4eba\uff0c\u4f60\u4e5f\u8dd1\u6765\uff0c\u6211\u4e5f\u8dd1\u6765\uff0c\u6211\u4eec\u8ba4\u4eba\u95ee\u59d3\uff0c\u8fd8\u8ba4\u4e0d\u6e05\u5462\uff01\u201d\u8bf4\u7740\uff0c\u4fbf\u53eb\u5c0f\u4e2b\u5934\u5b50\uff1a\u201c\u62ff\u4e86\u64e6\u5730\u7684\u5e03\u6765\u64e6\u5730\uff01\u201d\u90a3\u5ab3\u5987\u542c\u4e86\uff0c\u65e0\u8a00\u53ef\u5bf9\uff0c\u4ea6\u4e0d\u6562\u4e45\u7acb\uff0c\u8d4c\u6c14\u5e26\u4e86\u5760\u513f\u5c31\u8d70\u3002\u5b8b\u5988\u5988\u5fd9\u9053\uff1a\u201c\u602a\u9053\u4f60\u8fd9\u5ac2\u5b50\u4e0d\u77e5\u89c4\u77e9\uff0c\u4f60\u5973\u513f\u5728\u8fd9\u5c4b\u91cc\u4e00\u573a\uff0c\u4e34\u53bb\u65f6\uff0c\u4e5f\u7ed9\u59d1\u5a18\u4eec\u78d5\u4e2a\u5934\u3002\u6ca1\u6709\u522b\u7684\u8c22\u793c\uff0c____\u4fbf\u6709\u8c22\u793c\uff0c\u4ed6\u4eec\u4e5f\u4e0d\u5e0c\u7f55\uff0c____\u4e0d\u8fc7\u78d5\u4e2a\u5934\uff0c\u5c3d\u4e86\u5fc3\u3002\u600e\u4e48\u8bf4\u8d70\u5c31\u8d70\uff1f\u201d\u5760\u513f\u542c\u4e86\uff0c\u53ea\u5f97\u7ffb\u8eab\u8fdb\u6765\uff0c\u7ed9\u4ed6\u4e24\u4e2a\u78d5\u4e86\u4e24\u4e2a\u5934\uff0c\u53c8\u627e\u79cb\u7eb9\u7b49\u3002\u4ed6\u4eec\u4e5f\u4e0d\u776c\u4ed6\u3002\u90a3\u5ab3\u5987\u55d0\u58f0\u53f9\u6c14\uff0c\u53e3\u4e0d\u6562\u8a00\uff0c\u62b1\u6068\u800c\u53bb\u3002\ -\u6674\u96ef\u65b9\u624d\u53c8\u95ea\u4e86\u98ce\uff0c\u7740\u4e86\u6c14\uff0c\u53cd\u89c9\u66f4\u4e0d\u597d\u4e86\uff0c\u7ffb\u817e\u81f3\u638c\u706f\uff0c\u521a\u5b89\u9759\u4e86\u4e9b\u3002\u53ea\u89c1\u5b9d\u7389\u56de\u6765\uff0c\u8fdb\u95e8\u5c31\u55d0\u58f0\u8dfa\u811a\u3002\u9e9d\u6708\u5fd9\u95ee\u539f\u6545\uff0c\u5b9d\u7389\u9053\uff1a\u201c\u4eca\u513f\u8001\u592a\u592a\u559c\u559c\u6b22\u6b22\u7684\u7ed9\u4e86\u8fd9\u4e2a\u8902\u5b50\uff0c\u8c01\u77e5\u4e0d\u9632\u540e\u895f\u5b50\u4e0a\u70e7\u4e86\u4e00\u5757\uff0c\u5e78\u800c\u5929\u665a\u4e86\uff0c\u8001\u592a\u592a\uff0c\u592a\u592a\u90fd\u4e0d\u7406\u8bba\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u8131\u4e0b\u6765\u3002\u9e9d\u6708\u77a7\u65f6\uff0c\u679c\u89c1\u6709\u6307\u9876\u5927\u7684\u70e7\u773c\uff0c\u8bf4\uff1a\u201c\u8fd9\u5fc5\u5b9a\u662f\u624b\u7089\u91cc\u7684\u706b\u8ff8\u4e0a\u4e86\u3002\u8fd9\u4e0d\u503c\u4ec0\u4e48\uff0c\u8d76\u7740\u53eb\u4eba\u6084\u6084\u7684\u62ff\u51fa\u53bb\uff0c\u53eb\u4e2a\u80fd\u5e72\u7ec7\u8865\u5320\u4eba\u7ec7\u4e0a\u5c31\u662f\u4e86\u3002\u201d\u8bf4\u7740\u4fbf\u7528\u5305\u88b1\u5305\u4e86\uff0c\u4ea4\u4e0e\u4e00\u4e2a\u5988\u5988\u9001\u51fa\u53bb\u3002\u8bf4\uff1a\u201c\u8d76\u5929\u4eae\u5c31\u6709\u624d\u597d\u3002\u5343\u4e07\u522b\u7ed9\u8001\u592a\u592a\uff0c\u592a\u592a\u77e5\u9053\u3002\u201d\u5a46\u5b50\u53bb\u4e86\u534a\u65e5\uff0c\u4ecd\u65e7\u62ff\u56de\u6765\uff0c\u8bf4\uff1a\u201c\u4e0d\u4f46\u80fd\u5e72\u7ec7\u8865\u5320\u4eba\uff0c\u5c31\u8fde\u88c1\u7f1d\u7ee3\u5320\u5e76\u4f5c\u5973\u5de5\u7684\u95ee\u4e86\uff0c\u90fd\u4e0d\u8ba4\u5f97\u8fd9\u662f\u4ec0\u4e48\uff0c\u90fd\u4e0d\u6562\u63fd\u3002\u201d\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u600e\u4e48\u6837\u5462\uff01\u660e\u513f\u4e0d\u7a7f\u4e5f\u7f62\u4e86\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u660e\u513f\u662f\u6b63\u65e5\u5b50\uff0c\u8001\u592a\u592a\uff0c\u592a\u592a\u8bf4\u4e86\uff0c\u8fd8\u53eb\u7a7f\u8fd9\u4e2a\u53bb\u5462\u3002\u504f\u5934\u4e00\u65e5\u70e7\u4e86\uff0c\u5c82\u4e0d\u626b\u5174\u3002\u201d\u6674\u96ef\u542c\u4e86\u534a\u65e5\uff0c\u5fcd\u4e0d\u4f4f\u7ffb\u8eab\u8bf4\u9053\uff1a\u201c\u62ff\u6765\u6211\u77a7\u77a7\u7f62\u3002\u6ca1\u4e2a\u798f\u6c14\u7a7f\u5c31\u7f62\u4e86\u3002\u8fd9\u4f1a\u5b50\u53c8\u7740\u6025\u3002\u201d\u5b9d\u7389\u7b11\u9053\uff1a\u201c\u8fd9\u8bdd\u5012\u8bf4\u7684\u662f\u3002\u201d\u8bf4\u7740\uff0c\u4fbf\u9012\u4e0e\u6674\u96ef\uff0c\u53c8\u79fb\u8fc7\u706f\u6765\uff0c\u7ec6\u770b\u4e86\u4e00\u4f1a\u3002\u6674\u96ef\u9053\uff1a\u201c\u8fd9\u662f\u5b54\u96c0\u91d1\u7ebf\u7ec7\u7684\uff0c\u5982\u4eca\u54b1\u4eec\u4e5f\u62ff\u5b54\u96c0\u91d1\u7ebf\u5c31\u50cf\u754c\u7ebf\u4f3c\u7684\u754c\u5bc6\u4e86\uff0c\u53ea\u6015\u8fd8\u53ef\u6df7\u5f97\u8fc7\u53bb\u3002\u201d\u9e9d\u6708\u7b11\u9053\uff1a\u201c\u5b54\u96c0\u7ebf\u73b0\u6210\u7684\uff0c\u4f46\u8fd9\u91cc\u9664\u4e86\u4f60\uff0c\u8fd8\u6709\u8c01\u4f1a\u754c\u7ebf\uff1f\u201d\u6674\u96ef\u9053\uff1a\u201c\u8bf4\u4e0d\u5f97\uff0c\u6211\u6323\u547d\u7f62\u4e86\u3002\u201d\u5b9d\u7389\u5fd9\u9053\uff1a\u201c\u8fd9\u5982\u4f55\u4f7f\u5f97\uff01\u624d\u597d\u4e86\u4e9b\uff0c\u5982\u4f55\u505a\u5f97\u6d3b\u3002\u201d\u6674\u96ef\u9053\uff1a\u201c\u4e0d\u7528\u4f60\u874e\u874e\u87ab\u87ab\u7684\uff0c\u6211\u81ea\u77e5\u9053\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u5750\u8d77\u6765\uff0c\u633d\u4e86\u4e00\u633d\u5934\u53d1\uff0c\u62ab\u4e86\u8863\u88f3\uff0c\u53ea\u89c9\u5934\u91cd\u8eab\u8f7b\uff0c\u6ee1\u773c\u91d1\u661f\u4e71\u8ff8\uff0c\u5b9e\u5b9e\u6491\u4e0d\u4f4f\u3002\u82e5\u4e0d\u505a\uff0c\u53c8\u6015\u5b9d\u7389\u7740\u6025\uff0c\u5c11\u4e0d\u5f97\u6068\u547d\u54ac\u7259\u6371\u7740\u3002\u4fbf\u547d\u9e9d\u6708\u53ea\u5e2e\u7740\u62c8\u7ebf\u3002\u6674\u96ef\u5148\u62ff\u4e86\u4e00\u6839\u6bd4\u4e00\u6bd4\uff0c\u7b11\u9053\uff1a\u201c\u8fd9\u867d\u4e0d\u5f88\u50cf\uff0c\u82e5\u8865\u4e0a\uff0c\u4e5f\u4e0d\u5f88\u663e\u3002\u201d\u5b9d\u7389\u9053\uff1a\u201c\u8fd9\u5c31\u5f88\u597d\uff0c\u90a3\u91cc\u53c8\u627e\u54e6\u5570\u5636\u56fd\u7684\u88c1\u7f1d\u53bb\u3002\u201d\u6674\u96ef\u5148\u5c06\u91cc\u5b50\u62c6\u5f00\uff0c\u7528\u8336\u676f\u53e3\u5927\u7684\u4e00\u4e2a\u7af9\u5f13\u9489\u7262\u5728\u80cc\u9762\uff0c\u518d\u5c06\u7834\u53e3\u56db\u8fb9\u7528\u91d1\u5200\u522e\u7684\u6563\u677e\u677e\u7684\uff0c\u7136\u540e\u7528\u9488\u7eab\u4e86\u4e24\u6761\uff0c\u5206\u51fa\u7ecf\u7eac\uff0c\u4ea6\u5982\u754c\u7ebf\u4e4b\u6cd5\uff0c\u5148\u754c\u51fa\u5730\u5b50\u540e\uff0c\u4f9d\u672c\u8863\u4e4b\u7eb9\u6765\u56de\u7ec7\u8865\u3002\u8865\u4e24\u9488\uff0c\u53c8\u770b\u770b\uff0c\u7ec7\u8865\u4e24\u9488\uff0c\u53c8\u7aef\u8be6\u7aef\u8be6\u3002\u65e0\u5948\u5934\u6655\u773c\u9ed1\uff0c\u6c14\u5598\u795e\u865a\uff0c\u8865\u4e0d\u4e0a\u4e09\u4e94\u9488\uff0c\u4f0f\u5728\u6795\u4e0a\u6b47\u4e00\u4f1a\u3002\u5b9d\u7389\u5728\u65c1\uff0c\u4e00\u65f6\u53c8\u95ee\uff1a\u201c\u5403\u4e9b\u6eda\u6c34\u4e0d\u5403\uff1f\u201d\u4e00\u65f6\u53c8\u547d\uff1a\u201c\u6b47\u4e00\u6b47\u3002\u201d\u4e00\u65f6\u53c8\u62ff\u4e00\u4ef6\u7070\u9f20\u6597\u7bf7\u66ff\u4ed6\u62ab\u5728\u80cc\u4e0a\uff0c\u4e00\u65f6\u53c8\u547d\u62ff\u4e2a\u62d0\u6795\u4e0e\u4ed6\u9760\u7740\u3002\u6025\u7684\u6674\u96ef\u592e\u9053\uff1a\u201c\u5c0f\u7956\u5b97\uff01\u4f60\u53ea\u7ba1\u7761\u7f62\u3002\u518d\u71ac\u4e0a\u534a\u591c\uff0c\u660e\u513f\u628a\u773c\u775b\u62a0\u6402\u4e86\uff0c\u600e\u4e48\u5904\uff01\u201d\u5b9d\u7389\u89c1\u4ed6\u7740\u6025\uff0c\u53ea\u5f97\u80e1\u4e71\u7761\u4e0b\uff0c\u4ecd\u7761\u4e0d\u7740\u3002\u4e00\u65f6\u53ea\u542c\u81ea\u9e23\u949f\u5df2\u6572\u4e86\u56db\u4e0b\uff0c\u521a\u521a\u8865\u5b8c\uff0c\u53c8\u7528\u5c0f\u7259\u5237\u6162\u6162\u7684\u5254\u51fa\u7ed2\u6bdb\u6765\u3002\u9e9d\u6708\u9053\uff1a\u201c\u8fd9\u5c31\u5f88\u597d\uff0c\u82e5\u4e0d\u7559\u5fc3\uff0c\u518d\u770b\u4e0d\u51fa\u7684\u3002\u201d\u5b9d\u7389\u5fd9\u8981\u4e86\u77a7\u77a7\uff0c\u8bf4\u9053\uff1a\u201c\u771f\u771f\u4e00\u6837\u4e86\u3002\u201d\u6674\u96ef\u5df2\u55fd\u4e86\u51e0\u9635\uff0c\u597d\u5bb9\u6613\u8865\u5b8c\u4e86\uff0c\u8bf4\u4e86\u4e00\u58f0\uff1a\u201c\u8865\u867d\u8865\u4e86\uff0c\u5230\u5e95\u4e0d\u50cf\uff0c\u6211\u4e5f\u518d\u4e0d\u80fd\u4e86\uff01\u201d\u55f3\u54df\u4e86\u4e00\u58f0\uff0c\u4fbf\u8eab\u4e0d\u7531\u4e3b\u5012\u4e0b\u3002\u8981\u77e5\u7aef\u7684\uff0c\u4e14\u542c\u4e0b\u56de\u5206\u89e3\u3002\ -\u8bdd\u8bf4\u5b9d\u7389\u89c1\u6674\u96ef\u5c06\u96c0\u88d8\u8865\u5b8c\uff0c\u5df2\u4f7f\u7684\u529b\u5c3d\u795e\u5371\uff0c\u5fd9\u547d\u5c0f\u4e2b\u5934\u5b50\u6765\u66ff\u4ed6\u6376\u7740\uff0c\u5f7c\u6b64\u6376\u6253\u4e86\u4e00\u4f1a\u6b47\u4e0b\u3002\u6ca1\u4e00\u987f\u996d\u7684\u5de5\u592b\uff0c\u5929\u5df2\u5927\u4eae\uff0c\u4e14\u4e0d\u51fa\u95e8\uff0c\u53ea\u53eb\u5feb\u4f20\u5927\u592b\u3002\u4e00\u65f6\u738b\u592a\u533b\u6765\u4e86\uff0c\u8bca\u4e86\u8109\uff0c\u7591\u60d1\u8bf4\u9053\uff1a\u201c\u6628\u65e5\u5df2\u597d\u4e86\u4e9b\uff0c\u4eca\u65e5\u5982\u4f55\u53cd\u865a\u5fae\u6d6e\u7f29\u8d77\u6765\uff0c\u6562\u662f\u5403\u591a\u4e86\u996e\u98df\uff1f\u4e0d\u7136\u5c31\u662f\u52b3\u4e86\u795e\u601d\u3002\u5916\u611f\u5374\u5012\u6e05\u4e86\uff0c\u8fd9\u6c57\u540e\u5931\u4e8e\u8c03\u517b\uff0c\u975e\u540c\u5c0f\u53ef\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u51fa\u53bb\u5f00\u4e86\u836f\u65b9\u8fdb\u6765\u3002\u5b9d\u7389\u770b\u65f6\uff0c\u5df2\u5c06\u758f\u6563\u9a71\u90aa\u8bf8\u836f\u51cf\u53bb\u4e86\uff0c\u5012\u6dfb\u4e86\u832f\u82d3\uff0c\u5730\u9ec4\uff0c\u5f53\u5f52\u7b49\u76ca\u795e\u517b\u8840\u4e4b\u5242\u3002\u5b9d\u7389\u5fd9\u547d\u4eba\u714e\u53bb\uff0c\u4e00\u9762\u53f9\u8bf4\uff1a\u201c\u8fd9\u600e\u4e48\u5904\uff01\u5018\u6216\u6709\u4e2a\u597d\u6b79\uff0c\u90fd\u662f\u6211\u7684\u7f6a\u5b7d\u3002\u201d\u6674\u96ef\u7761\u5728\u6795\u4e0a\u55d0\u9053\uff1a\u201c\u597d\u592a\u7237\uff01\u4f60\u5e72\u4f60\u7684\u53bb\u7f62\uff0c\u90a3\u91cc\u5c31\u5f97\u75e8\u75c5\u4e86\u3002\u201d\u5b9d\u7389\u65e0\u5948\uff0c\u53ea\u5f97\u53bb\u4e86\u3002\u81f3\u4e0b\u534a\u5929\uff0c\u8bf4\u8eab\u4e0a\u4e0d\u597d\u5c31\u56de\u6765\u4e86\u3002\u6674\u96ef\u6b64\u75c7\u867d\u91cd\uff0c\u5e78\u4e8f\u4ed6\u7d20\u4e60\u662f\u4e2a\u4f7f\u529b\u4e0d\u4f7f\u5fc3\u7684\uff0c\u518d\u7d20\u4e60\u996e\u98df\u6e05\u6de1\uff0c\u9965\u9971\u65e0\u4f24\u3002\u8fd9\u8d3e\u5b85\u4e2d\u7684\u98ce\u4fd7\u79d8\u6cd5\uff0c\u65e0\u8bba\u4e0a\u4e0b\uff0c\u53ea\u4e00\u7565\u6709\u4e9b\u4f24\u98ce\u54b3\u55fd\uff0c\u603b\u4ee5\u51c0\u997f\u4e3a\u4e3b\uff0c\u6b21\u5219\u670d\u836f\u8c03\u517b\u3002\u6545\u4e8e\u524d\u65e5\u4e00\u75c5\u65f6\uff0c\u51c0\u997f\u4e86\u4e24\u4e09\u65e5\uff0c\u53c8\u8c28\u614e\u670d\u836f\u8c03\u6cbb\uff0c\u5982\u4eca\u52b3\u788c\u4e86\u4e9b\uff0c\u53c8\u52a0\u500d\u57f9\u517b\u4e86\u51e0\u65e5\uff0c\u4fbf\u6e10\u6e10\u7684\u597d\u4e86\u3002\u8fd1\u65e5\u56ed\u4e2d\u59ca\u59b9\u7686\u5404\u5728\u623f\u4e2d\u5403\u996d\uff0c\u708a\u7228\u996e\u98df\u4ea6\u4fbf\uff0c\u5b9d\u7389\u81ea\u80fd\u53d8\u6cd5\u8981\u6c64\u8981\u7fb9\u8c03\u505c\uff0c\u4e0d\u5fc5\u7ec6\u8bf4\u3002\ -\u88ad\u4eba\u9001\u6bcd\u6ba1\u540e\uff0c\u4e1a\u5df2\u56de\u6765\uff0c\u9e9d\u6708\u4fbf\u5c06\u5e73\u513f\u6240\u8bf4\u5b8b\u5988\u5760\u513f\u4e00\u4e8b\uff0c\u5e76\u6674\u96ef\u64b5\u9010\u51fa\u53bb\u7b49\u8bdd\uff0c\u4e00\u4e00\u4e5f\u66fe\u56de\u8fc7\u5b9d\u7389\u3002\u88ad\u4eba\u4e5f\u6ca1\u522b\u8bf4\uff0c\u53ea\u8bf4\u592a\u6027\u6025\u4e86\u4e9b\u3002\u53ea\u56e0\u674e\u7ea8\u4ea6\u56e0\u65f6\u6c14\u611f\u5192\uff0c\u90a2\u592b\u4eba\u53c8\u6b63\u5bb3\u706b\u773c\uff0c\u8fce\u6625\u5cab\u70df\u7686\u8fc7\u53bb\u671d\u5915\u4f8d\u836f\uff0c\u674e\u5a76\u4e4b\u5f1f\u53c8\u63a5\u4e86\u674e\u5a76\u548c\u674e\u7eb9\u674e\u7eee\u5bb6\u53bb\u4f4f\u51e0\u65e5\uff0c\u5b9d\u7389\u53c8\u89c1\u88ad\u4eba\u5e38\u5e38\u601d\u6bcd\u542b\u60b2\uff0c\u6674\u96ef\u72b9\u672a\u5927\u6108\uff1a\u56e0\u6b64\u8bd7\u793e\u4e4b\u65e5\uff0c\u7686\u672a\u6709\u4eba\u4f5c\u5174\uff0c\u4fbf\u7a7a\u4e86\u51e0\u793e\u3002\ -\u5f53\u4e0b\u5df2\u662f\u814a\u6708\uff0c\u79bb\u5e74\u65e5\u8fd1\uff0c\u738b\u592b\u4eba\u4e0e\u51e4\u59d0\u6cbb\u529e\u5e74\u4e8b\u3002\u738b\u5b50\u817e\u5347\u4e86\u4e5d\u7701\u90fd\u68c0\u70b9\uff0c\u8d3e\u96e8\u6751\u8865\u6388\u4e86\u5927\u53f8\u9a6c\uff0c\u534f\u7406\u519b\u673a\u53c2\u8d5e\u671d\u653f\uff0c\u4e0d\u9898\u3002\ -\u4e14\u8bf4\u8d3e\u73cd\u90a3\u8fb9\uff0c\u5f00\u4e86\u5b97\u7960\uff0c\u7740\u4eba\u6253\u626b\uff0c\u6536\u62fe\u4f9b\u5668\uff0c\u8bf7\u795e\u4e3b\uff0c\u53c8\u6253\u626b\u4e0a\u623f\uff0c\u4ee5\u5907\u60ac\u4f9b\u9057\u771f\u5f71\u50cf\u3002\u6b64\u65f6\u8363\u5b81\u4e8c\u5e9c\u5185\u5916\u4e0a\u4e0b\uff0c\u7686\u662f\u5fd9\u5fd9\u788c\u788c\u3002\u8fd9\u65e5\u5b81\u5e9c\u4e2d\u5c24\u6c0f\u6b63\u8d77\u6765\u540c\u8d3e\u84c9\u4e4b\u59bb\u6253\u70b9\u9001\u8d3e\u6bcd\u8fd9\u8fb9\u9488\u7ebf\u793c\u7269\uff0c\u6b63\u503c\u4e2b\u5934\u6367\u4e86\u4e00\u8336\u76d8\u62bc\u5c81\u951e\u5b50\u8fdb\u6765\uff0c\u56de\u8bf4\uff1a\u201c\u5174\u513f\u56de\u5976\u5976\uff0c\u524d\u513f\u90a3\u4e00\u5305\u788e\u91d1\u5b50\u5171\u662f\u4e00\u767e\u4e94\u5341\u4e09\u4e24\u516d\u94b1\u4e03\u5206\uff0c\u91cc\u5934\u6210\u8272\u4e0d\u7b49\uff0c\u5171\u603b\u503e\u4e86\u4e8c\u767e\u4e8c\u5341\u4e2a\u951e\u5b50\u3002\u201d\u8bf4\u7740\u9012\u4e0a\u53bb\u3002\u5c24\u6c0f\u770b\u4e86\u770b\uff0c\u53ea\u89c1\u4e5f\u6709\u6885\u82b1\u5f0f\u7684\uff0c\u4e5f\u6709\u6d77\u68e0\u5f0f\u7684\uff0c\u4e5f\u6709\u7b14\u952d\u5982\u610f\u7684\uff0c\u4e5f\u6709\u516b\u5b9d\u8054\u6625\u7684\u3002\u5c24\u6c0f\u547d\uff1a\u201c\u6536\u8d77\u8fd9\u4e2a\u6765\uff0c\u53eb\u4ed6\u628a\u94f6\u951e\u5b50\u5feb\u5feb\u4ea4\u4e86\u8fdb\u6765\u3002\u201d\u4e2b\u9b1f\u7b54\u5e94\u53bb\u4e86\u3002\ -\u4e00\u65f6\u8d3e\u73cd\u8fdb\u6765\u5403\u996d\uff0c\u8d3e\u84c9\u4e4b\u59bb\u56de\u907f\u4e86\u3002\u8d3e\u73cd\u56e0\u95ee\u5c24\u6c0f\uff1a\u201c\u54b1\u4eec\u6625\u796d\u7684\u6069\u8d4f\u53ef\u9886\u4e86\u4e0d\u66fe\uff1f\u201d\u5c24\u6c0f\u9053\uff1a\u201c\u4eca\u513f\u6211\u6253\u53d1\u84c9\u513f\u5173\u53bb\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u54b1\u4eec\u5bb6\u867d\u4e0d\u7b49\u8fd9\u51e0\u4e24\u94f6\u5b50\u4f7f\uff0c\u591a\u5c11\u662f\u7687\u4e0a\u5929\u6069\u3002\u65e9\u5173\u4e86\u6765\uff0c\u7ed9\u90a3\u8fb9\u8001\u592a\u592a\u89c1\u8fc7\uff0c\u7f6e\u4e86\u7956\u5b97\u7684\u4f9b\uff0c\u4e0a\u9886\u7687\u4e0a\u7684\u6069\uff0c\u4e0b\u5219\u662f\u6258\u7956\u5b97\u7684\u798f\u3002\u54b1\u4eec\u90a3\u6015\u7528\u4e00\u4e07\u94f6\u5b50\u4f9b\u7956\u5b97\uff0c\u5230\u5e95\u4e0d\u5982\u8fd9\u4e2a\u53c8\u4f53\u9762\uff0c\u53c8\u662f\u6cbe\u6069\u9521\u798f\u7684\u3002\u9664\u54b1\u4eec\u8fd9\u6837\u4e00\u4e8c\u5bb6\u4e4b\u5916\uff0c\u90a3\u4e9b\u4e16\u88ad\u7a77\u5b98\u513f\u5bb6\uff0c\u82e5\u4e0d\u4ed7\u7740\u8fd9\u94f6\u5b50\uff0c\u62ff\u4ec0\u4e48\u4e0a\u4f9b\u8fc7\u5e74\uff1f\u771f\u6b63\u7687\u6069\u6d69\u5927\uff0c\u60f3\u7684\u5468\u5230\u3002\u201d\u5c24\u6c0f\u9053\uff1a\u201c\u6b63\u662f\u8fd9\u8bdd\u3002\u201d\ -\u4e8c\u4eba\u6b63\u8bf4\u7740\uff0c\u53ea\u89c1\u4eba\u56de\uff1a\u201c\u54e5\u513f\u6765\u4e86\u201d\u3002\u8d3e\u73cd\u4fbf\u547d\u53eb\u4ed6\u8fdb\u6765\u3002\u53ea\u89c1\u8d3e\u84c9\u6367\u4e86\u4e00\u4e2a\u5c0f\u9ec4\u5e03\u53e3\u888b\u8fdb\u6765\u3002\u8d3e\u73cd\u9053\uff1a\u201c\u600e\u4e48\u53bb\u4e86\u8fd9\u4e00\u65e5\u3002\u201d\u8d3e\u84c9\u966a\u7b11\u56de\u8bf4\uff1a\u201c\u4eca\u513f\u4e0d\u5728\u793c\u90e8\u5173\u9886\uff0c\u53c8\u5206\u5728\u5149\u7984\u5bfa\u5e93\u4e0a\uff0c\u56e0\u53c8\u5230\u4e86\u5149\u7984\u5bfa\u624d\u9886\u4e86\u4e0b\u6765\u3002\u5149\u7984\u5bfa\u7684\u5b98\u513f\u4eec\u90fd\u8bf4\u95ee\u7236\u4eb2\u597d\uff0c\u591a\u65e5\u4e0d\u89c1\uff0c\u90fd\u7740\u5b9e\u60f3\u5ff5\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u4ed6\u4eec\u90a3\u91cc\u662f\u60f3\u6211\u3002\u8fd9\u53c8\u5230\u4e86\u5e74\u4e0b\u4e86\uff0c\u4e0d\u662f\u60f3\u6211\u7684\u4e1c\u897f\uff0c\u5c31\u662f\u60f3\u6211\u7684\u620f\u9152\u4e86\u3002\u201d\u4e00\u9762\u8bf4\uff0c\u4e00\u9762\u77a7\u90a3\u9ec4\u5e03\u53e3\u888b\uff0c\u4e0a\u6709\u5370\u5c31\u662f\u201c\u7687\u6069\u6c38\u9521\u201d\u56db\u4e2a\u5927\u5b57\uff0c\u90a3\u4e00\u8fb9\u53c8\u6709\u793c\u90e8\u7960\u796d\u53f8\u7684\u5370\u8bb0\uff0c\u53c8\u5199\u7740\u4e00\u884c\u5c0f\u5b57\uff0c\u9053\u662f\u201c\u5b81\u56fd\u516c\u8d3e\u6f14\u8363\u56fd\u516c\u8d3e\u6e90\u6069\u8d50\u6c38\u8fdc\u6625\u796d\u8d4f\u5171\u4e8c\u5206\uff0c\u51c0\u6298\u94f6\u82e5\u5e72\u4e24\uff0c\u67d0\u5e74\u6708\u65e5\u9f99\u7981\u5c09\u5019\u8865\u4f8d\u536b\u8d3e\u84c9\u5f53\u5802\u9886\u8bab\uff0c\u503c\u5e74\u5bfa\u4e1e\u67d0\u4eba\u201d\uff0c\u4e0b\u9762\u4e00\u4e2a\u6731\u7b14\u82b1\u62bc\u3002\ -\u8d3e\u73cd\u5403\u8fc7\u996d\uff0c\u76e5\u6f31\u6bd5\uff0c\u6362\u4e86\u9774\u5e3d\uff0c\u547d\u8d3e\u84c9\u6367\u7740\u94f6\u5b50\u8ddf\u4e86\u6765\uff0c\u56de\u8fc7\u8d3e\u6bcd\u738b\u592b\u4eba\uff0c\u53c8\u81f3\u8fd9\u8fb9\u56de\u8fc7\u8d3e\u8d66\u90a2\u592b\u4eba\uff0c\u65b9\u56de\u5bb6\u53bb\uff0c\u53d6\u51fa\u94f6\u5b50\uff0c\u547d\u5c06\u53e3\u888b\u5411\u5b97\u7960\u5927\u7089\u5185\u711a\u4e86\u3002\u53c8\u547d\u8d3e\u84c9\u9053\uff1a\u201c\u4f60\u53bb\u95ee\u95ee\u4f60\u740f\u4e8c\u5a76\u5b50\uff0c\u6b63\u6708\u91cc\u8bf7\u5403\u5e74\u9152\u7684\u65e5\u5b50\u62df\u4e86\u6ca1\u6709\u3002\u82e5\u62df\u5b9a\u4e86\uff0c\u53eb\u4e66\u623f\u91cc\u660e\u767d\u5f00\u4e86\u5355\u5b50\u6765\uff0c\u54b1\u4eec\u518d\u8bf7\u65f6\uff0c\u5c31\u4e0d\u80fd\u91cd\u72af\u4e86\u3002\u65e7\u5e74\u4e0d\u7559\u5fc3\u91cd\u4e86\u51e0\u5bb6\uff0c\u4e0d\u8bf4\u54b1\u4eec\u4e0d\u7559\u795e\uff0c\u5012\u50cf\u4e24\u5b85\u5546\u8bae\u5b9a\u4e86\u9001\u865a\u60c5\u6015\u8d39\u4e8b\u4e00\u6837\u3002\u201d\u8d3e\u84c9\u5fd9\u7b54\u5e94\u4e86\u8fc7\u53bb\u3002\u4e00\u65f6\uff0c\u62ff\u4e86\u8bf7\u4eba\u5403\u5e74\u9152\u7684\u65e5\u671f\u5355\u5b50\u6765\u4e86\u3002\u8d3e\u73cd\u770b\u4e86\uff0c\u547d\u4ea4\u4e0e\u8d56\u5347\u53bb\u770b\u4e86\uff0c\u8bf7\u4eba\u522b\u91cd\u8fd9\u4e0a\u5934\u65e5\u5b50\u3002\u56e0\u5728\u5385\u4e0a\u770b\u7740\u5c0f\u53ae\u4eec\u62ac\u56f4\u5c4f\uff0c\u64e6\u62b9\u51e0\u6848\u91d1\u94f6\u4f9b\u5668\u3002\u53ea\u89c1\u5c0f\u53ae\u624b\u91cc\u62ff\u7740\u4e2a\u7980\u5e16\u5e76\u4e00\u7bc7\u5e10\u76ee\uff0c\u56de\u8bf4\uff1a\u201c\u9ed1\u5c71\u6751\u7684\u4e4c\u5e84\u5934\u6765\u4e86\u3002\u201d\ -\u8d3e\u73cd\u9053\uff1a\u201c\u8fd9\u4e2a\u8001\u780d\u5934\u7684\u4eca\u513f\u624d\u6765\u3002\u201d\u8bf4\u7740\uff0c\u8d3e\u84c9\u63a5\u8fc7\u7980\u5e16\u548c\u5e10\u76ee\uff0c\u5fd9\u5c55\u5f00\u6367\u7740\uff0c\u8d3e\u73cd\u5012\u80cc\u7740\u4e24\u624b\uff0c\u5411\u8d3e\u84c9\u624b\u5185\u53ea\u770b\u7ea2\u7980\u5e16\u4e0a\u5199\u7740\uff1a\u201c\u95e8\u4e0b\u5e84\u5934\u4e4c\u8fdb\u5b5d\u53e9\u8bf7\u7237\u3001\u5976\u5976\u4e07\u798f\u91d1\u5b89\uff0c\u5e76\u516c\u5b50\u5c0f\u59d0\u91d1\u5b89\u3002\u65b0\u6625\u5927\u559c\u5927\u798f\uff0c\u8363\u8d35\u5e73\u5b89\uff0c\u52a0\u5b98\u8fdb\u7984\uff0c\u4e07\u4e8b\u5982\u610f\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u5e84\u5bb6\u4eba\u6709\u4e9b\u610f\u601d\u3002\u201d\u8d3e\u84c9\u4e5f\u5fd9\u7b11\u8bf4\uff1a\u201c\u522b\u770b\u6587\u6cd5\uff0c\u53ea\u53d6\u4e2a\u5409\u5229\u7f62\u4e86\u3002\u201d\u4e00\u9762\u5fd9\u5c55\u5f00\u5355\u5b50\u770b\u65f6\uff0c\u53ea\u89c1\u4e0a\u9762\u5199\u7740\uff1a\u201c\u5927\u9e7f\u4e09\u5341\u53ea\uff0c\u7350\u5b50\u4e94\u5341\u53ea\uff0c\u72cd\u5b50\u4e94\u5341\u53ea\uff0c\u66b9\u732a\u4e8c\u5341\u4e2a\uff0c\u6c64\u732a\u4e8c\u5341\u4e2a\uff0c\u9f99\u732a\u4e8c\u5341\u4e2a\uff0c\u91ce\u732a\u4e8c\u5341\u4e2a\uff0c\u5bb6\u814a\u732a\u4e8c\u5341\u4e2a\uff0c\u91ce\u7f8a\u4e8c\u5341\u4e2a\uff0c\u9752\u7f8a\u4e8c\u5341\u4e2a\uff0c\u5bb6\u6c64\u7f8a\u4e8c\u5341\u4e2a\uff0c\u5bb6\u98ce\u7f8a\u4e8c\u5341\u4e2a\uff0c\u9c9f\u9cc7\u9c7c\u4e8c\u4e2a\uff0c\u5404\u8272\u6742\u9c7c\u4e8c\u767e\u65a4\uff0c\u6d3b\u9e21\uff0c\u9e2d\uff0c\u9e45\u5404\u4e8c\u767e\u53ea\uff0c\u98ce\u9e21\u3001\u9e2d\u3001\u9e45\u4e8c\u767e\u53ea\uff0c\u91ce\u9e21\uff0c\u5154\u5b50\u5404\u4e8c\u767e\u5bf9\uff0c\u718a\u638c\u4e8c\u5341\u5bf9\uff0c\u9e7f\u7b4b\u4e8c\u5341\u65a4\uff0c\u6d77\u53c2\u4e94\u5341\u65a4\uff0c\u9e7f\u820c\u4e94\u5341\u6761\uff0c\u725b\u820c\u4e94\u5341\u6761\uff0c\u86cf\u5e72\u4e8c\u5341\u65a4\uff0c\u699b\u3001\u677e\u3001\u6843\u3001\u674f\u7a70\u5404\u4e8c\u53e3\u888b\uff0c\u5927\u5bf9\u867e\u4e94\u5341\u5bf9\uff0c\u5e72\u867e\u4e8c\u767e\u65a4\uff0c\u94f6\u971c\u70ad\u4e0a\u7b49\u9009\u7528\u4e00\u5343\u65a4\uff0c\u4e2d\u7b49\u4e8c\u5343\u65a4\uff0c\u67f4\u70ad\u4e09\u4e07\u65a4\uff0c\u5fa1\u7530\u80ed\u8102\u7c73\u4e8c\u77f3\uff0c\u78a7\u7cef\u4e94\u5341\u659b\uff0c\u767d\u7cef\u4e94\u5341\u659b\uff0c\u7c89\u7cb3\u4e94\u5341\u659b\uff0c\u6742\u8272\u7cb1\u8c37\u5404\u4e94\u5341\u659b\uff0c\u4e0b\u7528\u5e38\u7c73\u4e00\u5343\u77f3\uff0c\u5404\u8272\u5e72\u83dc\u4e00\u8f66\uff0c\u5916\u5356\u7cb1\u8c37\uff0c\u7272\u53e3\u5404\u9879\u4e4b\u94f6\u5171\u6298\u94f6\u4e8c\u5343\u4e94\u767e\u4e24\u3002\u5916\u95e8\u4e0b\u5b5d\u656c\u54e5\u513f\u59d0\u513f\u987d\u610f\uff1a\u6d3b\u9e7f\u4e24\u5bf9\uff0c\u6d3b\u767d\u5154\u56db\u5bf9\uff0c\u9ed1\u5154\u56db\u5bf9\uff0c\u6d3b\u9526\u9e21\u4e24\u5bf9\uff0c\u897f\u6d0b\u9e2d\u4e24\u5bf9\u3002\u201d\ -\u8d3e\u73cd\u4fbf\u547d\u5e26\u8fdb\u4ed6\u6765\u3002\u4e00\u65f6\uff0c\u53ea\u89c1\u4e4c\u8fdb\u5b5d\u8fdb\u6765\uff0c\u53ea\u5728\u9662\u5185\u78d5\u5934\u8bf7\u5b89\u3002\u8d3e\u73cd\u547d\u4eba\u62c9\u4ed6\u8d77\u6765\uff0c\u7b11\u8bf4\uff1a\u201c\u4f60\u8fd8\u786c\u6717\u3002\u201d\u4e4c\u8fdb\u5b5d\u7b11\u56de\uff1a\u201c\u6258\u7237\u7684\u798f\uff0c\u8fd8\u80fd\u8d70\u5f97\u52a8\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u4f60\u513f\u5b50\u4e5f\u5927\u4e86\uff0c\u8be5\u53eb\u4ed6\u8d70\u8d70\u4e5f\u7f62\u4e86\u3002\u201d\u4e4c\u8fdb\u5b5d\u7b11\u9053\uff1a\u201c\u4e0d\u7792\u7237\u8bf4\uff0c\u5c0f\u7684\u4eec\u8d70\u60ef\u4e86\uff0c\u4e0d\u6765\u4e5f\u95f7\u7684\u614c\u3002\u4ed6\u4eec\u53ef\u4e0d\u662f\u90fd\u613f\u610f\u6765\u89c1\u89c1\u5929\u5b50\u811a\u4e0b\u4e16\u9762\uff1f\u4ed6\u4eec\u5230\u5e95\u5e74\u8f7b\uff0c\u6015\u8def\u4e0a\u6709\u95ea\u5931\uff0c\u518d\u8fc7\u51e0\u5e74\u5c31\u53ef\u653e\u5fc3\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u4f60\u8d70\u4e86\u51e0\u65e5\uff1f\u201d\u4e4c\u8fdb\u5b5d\u9053\uff1a\u201c\u56de\u7237\u7684\u8bdd\uff0c\u4eca\u5e74\u96ea\u5927\uff0c\u5916\u5934\u90fd\u662f\u56db\u4e94\u5c3a\u6df1\u7684\u96ea\uff0c\u524d\u65e5\u5ffd\u7136\u4e00\u6696\u4e00\u5316\uff0c\u8def\u4e0a\u7adf\u96be\u8d70\u7684\u5f88\uff0c\u803d\u6401\u4e86\u51e0\u65e5\u3002\u867d\u8d70\u4e86\u4e00\u4e2a\u6708\u96f6\u4e24\u65e5\uff0c\u56e0\u65e5\u5b50\u6709\u9650\u4e86\uff0c\u6015\u7237\u5fc3\u7126\uff0c\u53ef\u4e0d\u8d76\u7740\u6765\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u6211\u8bf4\u5462\uff0c\u600e\u4e48\u4eca\u513f\u624d\u6765\u3002\u6211\u624d\u770b\u90a3\u5355\u5b50\u4e0a\uff0c\u4eca\u5e74\u4f60\u8fd9\u8001\u8d27\u53c8\u6765\u6253\u64c2\u53f0\u6765\u4e86\u3002\u201d\u4e4c\u8fdb\u5b5d\u5fd9\u8fdb\u524d\u4e86\u4e24\u6b65\uff0c\u56de\u9053\uff1a\u201c\u56de\u7237\u8bf4\uff0c\u4eca\u5e74\u5e74\u6210\u5b9e\u5728\u4e0d\u597d\u3002\u4ece\u4e09\u6708\u4e0b\u96e8\u8d77\uff0c\u63a5\u63a5\u8fde\u8fde\u76f4\u5230\u516b\u6708\uff0c\u7adf\u6ca1\u6709\u4e00\u8fde\u6674\u8fc7\u4e94\u65e5\u3002\u4e5d\u6708\u91cc\u4e00\u573a\u7897\u5927\u7684\u96f9\u5b50\uff0c\u65b9\u8fd1\u4e00\u5343\u4e09\u767e\u91cc\u5730\uff0c\u8fde\u4eba\u5e26\u623f\u5e76\u7272\u53e3\u7cae\u98df\uff0c\u6253\u4f24\u4e86\u4e0a\u5343\u4e0a\u4e07\u7684\uff0c\u6240\u4ee5\u624d\u8fd9\u6837\u3002\u5c0f\u7684\u5e76\u4e0d\u6562\u8bf4\u8c0e\u3002\u201d\u8d3e\u73cd\u76b1\u7709\u9053\uff1a\u201c\u6211\u7b97\u5b9a\u4e86\u4f60\u81f3\u5c11\u4e5f\u6709\u4e94\u5343\u4e24\u94f6\u5b50\u6765\uff0c\u8fd9\u591f\u4f5c\u4ec0\u4e48\u7684\uff01\u5982\u4eca\u4f60\u4eec\u4e00\u5171\u53ea\u5269\u4e86\u516b\u4e5d\u4e2a\u5e84\u5b50\uff0c\u4eca\u5e74\u5012\u6709\u4e24\u5904\u62a5\u4e86\u65f1\u6d9d\uff0c\u4f60\u4eec\u53c8\u6253\u64c2\u53f0\uff0c\u771f\u771f\u662f\u53c8\u6559\u522b\u8fc7\u5e74\u4e86\u3002\u201d\u4e4c\u8fdb\u5b5d\u9053\uff1a\u201c\u7237\u7684\u8fd9\u5730\u65b9\u8fd8\u7b97\u597d\u5462\uff01\u6211\u5144\u5f1f\u79bb\u6211\u90a3\u91cc\u53ea\u4e00\u767e\u591a\u91cc\uff0c\u8c01\u77e5\u7adf\u5927\u5dee\u4e86\u3002\u4ed6\u73b0\u7ba1\u7740\u90a3\u5e9c\u91cc\u516b\u5904\u5e84\u5730\uff0c\u6bd4\u7237\u8fd9\u8fb9\u591a\u7740\u51e0\u500d\uff0c\u4eca\u5e74\u4e5f\u53ea\u8fd9\u4e9b\u4e1c\u897f\uff0c\u4e0d\u8fc7\u591a\u4e8c\u4e09\u5343\u4e24\u94f6\u5b50\uff0c\u4e5f\u662f\u6709\u9965\u8352\u6253\u5462\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u6b63\u662f\u5462\uff0c\u6211\u8fd9\u8fb9\u90fd\u53ef\uff0c\u5df2\u6ca1\u6709\u4ec0\u4e48\u5916\u9879\u5927\u4e8b\uff0c\u4e0d\u8fc7\u662f\u4e00\u5e74\u7684\u8d39\u7528\u8d39\u4e9b\u3002\u6211\u53d7\u4e9b\u59d4\u5c48\u5c31\u7701\u4e9b\u3002\u518d\u8005\u5e74\u4f8b\u9001\u4eba\u8bf7\u4eba\uff0c\u6211\u628a\u8138\u76ae\u539a\u4e9b\u3002\u53ef\u7701\u4e9b\u4e5f\u5c31\u5b8c\u4e86\u3002\u6bd4\u4e0d\u5f97\u90a3\u5e9c\u91cc\uff0c\u8fd9\u51e0\u5e74\u6dfb\u4e86\u8bb8\u591a\u82b1\u94b1\u7684\u4e8b\uff0c\u4e00\u5b9a\u4e0d\u53ef\u514d\u662f\u8981\u82b1\u7684\uff0c\u5374\u53c8\u4e0d\u6dfb\u4e9b\u94f6\u5b50\u4ea7\u4e1a\u3002\u8fd9\u4e00\u4e8c\u5e74\u5012\u8d54\u4e86\u8bb8\u591a\uff0c\u4e0d\u548c\u4f60\u4eec\u8981\uff0c\u627e\u8c01\u53bb\uff01\u201d\u4e4c\u8fdb\u5b5d\u7b11\u9053\uff1a\u201c\u90a3\u5e9c\u91cc\u5982\u4eca\u867d\u6dfb\u4e86\u4e8b\uff0c\u6709\u53bb\u6709\u6765\uff0c\u5a18\u5a18\u548c\u4e07\u5c81\u7237\u5c82\u4e0d\u8d4f\u7684\uff01\u201d\u8d3e\u73cd\u542c\u4e86\uff0c\u7b11\u5411\u8d3e\u84c9\u7b49\u9053\uff1a\u201c\u4f60\u4eec\u542c\uff0c\u4ed6\u8fd9\u8bdd\u53ef\u7b11\u4e0d\u53ef\u7b11\uff1f\u201d\u8d3e\u84c9\u7b49\u5fd9\u7b11\u9053\uff1a\u201c\u4f60\u4eec\u5c71\u5773\u6d77\u6cbf\u5b50\u4e0a\u7684\u4eba\uff0c\u90a3\u91cc\u77e5\u9053\u8fd9\u9053\u7406\u3002\u5a18\u5a18\u96be\u9053\u628a\u7687\u4e0a\u7684\u5e93\u7ed9\u4e86\u6211\u4eec\u4e0d\u6210\uff01\u4ed6\u5fc3\u91cc\u7eb5\u6709\u8fd9\u5fc3\uff0c\u4ed6\u4e5f\u4e0d\u80fd\u4f5c\u4e3b\u3002\u5c82\u6709\u4e0d\u8d4f\u4e4b\u7406\uff0c\u6309\u65f6\u5230\u8282\u4e0d\u8fc7\u662f\u4e9b\u5f69\u7f0e\u53e4\u8463\u987d\u610f\u513f\u3002\u7eb5\u8d4f\u94f6\u5b50\uff0c\u4e0d\u8fc7\u4e00\u767e\u4e24\u91d1\u5b50\uff0c\u624d\u503c\u4e86\u4e00\u5343\u4e24\u94f6\u5b50\uff0c\u591f\u4e00\u5e74\u7684\u4ec0\u4e48\uff1f\u8fd9\u4e8c\u5e74\u90a3\u4e00\u5e74\u4e0d\u591a\u8d54\u51fa\u51e0\u5343\u94f6\u5b50\u6765\uff01\u5934\u4e00\u5e74\u7701\u4eb2\u8fde\u76d6\u82b1\u56ed\u5b50\uff0c\u4f60\u7b97\u7b97\u90a3\u4e00\u6ce8\u5171\u82b1\u4e86\u591a\u5c11\uff0c\u5c31\u77e5\u9053\u4e86\u3002\u518d\u4e24\u5e74\u518d\u4e00\u56de\u7701\u4eb2\uff0c\u53ea\u6015\u5c31\u7cbe\u7a77\u4e86\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u6240\u4ee5\u4ed6\u4eec\u5e84\u5bb6\u8001\u5b9e\u4eba\uff0c\u5916\u660e\u4e0d\u77e5\u91cc\u6697\u7684\u4e8b\u3002\u9ec4\u67cf\u6728\u4f5c\u78ec\u69cc\u5b50\uff0c----\u5916\u5934\u4f53\u9762\u91cc\u5934\u82e6\u3002\u201d\u8d3e\u84c9\u53c8\u7b11\u5411\u8d3e\u73cd\u9053\uff1a\u201c\u679c\u771f\u90a3\u5e9c\u91cc\u7a77\u4e86\u3002\u524d\u513f\u6211\u542c\u89c1\u51e4\u59d1\u5a18\u548c\u9e33\u9e2f\u6084\u6084\u5546\u8bae\uff0c\u8981\u5077\u51fa\u8001\u592a\u592a\u7684\u4e1c\u897f\u53bb\u5f53\u94f6\u5b50\u5462\u3002\u201d\u8d3e\u73cd\u7b11\u9053\uff1a\u201c\u90a3\u53c8\u662f\u4f60\u51e4\u59d1\u5a18\u7684\u9b3c\uff0c\u90a3\u91cc\u5c31\u7a77\u5230\u5982\u6b64\u3002\u4ed6\u5fc5\u5b9a\u662f\u89c1\u53bb\u8def\u592a\u591a\u4e86\uff0c\u5b9e\u5728\u8d54\u7684\u72e0\u4e86\uff0c\u4e0d\u77e5\u53c8\u8981\u7701\u90a3\u4e00\u9879\u7684\u94b1\uff0c\u5148\u8bbe\u6b64\u6cd5\u4f7f\u4eba\u77e5\u9053\uff0c\u8bf4\u7a77\u5230\u5982\u6b64\u4e86\u3002\u6211\u5fc3\u91cc\u5374\u6709\u4e00\u4e2a\u7b97\u76d8\uff0c\u8fd8\u4e0d\u81f3\u5982\u6b64\u7530\u5730\u3002\u201d\u8bf4\u7740\uff0c\u547d\u4eba\u5e26\u4e86\u4e4c\u8fdb\u5b5d\u51fa\u53bb\uff0c\u597d\u751f\u5f85\u4ed6\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\ -\u8fd9\u91cc\u8d3e\u73cd\u5429\u5490\u5c06\u65b9\u624d\u5404\u7269\uff0c\u7559\u51fa\u4f9b\u7956\u7684\u6765\uff0c\u5c06\u5404\u6837\u53d6\u4e86\u4e9b\uff0c\u547d\u8d3e\u84c9\u9001\u8fc7\u8363\u5e9c\u91cc\u3002\u7136\u540e\u81ea\u5df1\u7559\u4e86\u5bb6\u4e2d\u6240\u7528\u7684\uff0c\u4f59\u8005\u6d3e\u51fa\u7b49\u4f8b\u6765\uff0c\u4e00\u5206\u4e00\u5206\u7684\u5806\u5728\u6708\u53f0\u4e0b\uff0c\u547d\u4eba\u5c06\u65cf\u4e2d\u7684\u5b50\u4f84\u5524\u6765\u4e0e\u4ed6\u4eec\u3002\u63a5\u7740\u8363\u56fd\u5e9c\u4e5f\u9001\u4e86\u8bb8\u591a\u4f9b\u7956\u4e4b\u7269\u53ca\u8d3e\u73cd\u4e4b\u7269\u3002\u8d3e\u73cd\u770b\u7740\u6536\u62fe\u5b8c\u5907\u4f9b\u5668\uff0c\u9778\u7740\u978b\uff0c\u62ab\u7740\u731e\u7301\u72f2\u5927\u88d8\uff0c\u547d\u4eba\u5728\u5385\u67f1\u4e0b\u77f3\u77f6\u4e0a\u592a\u9633\u4e2d\u94fa\u4e86\u4e00\u4e2a\u5927\u72fc\u76ae\u8925\u5b50\uff0c\u8d1f\u6684\u95f2\u770b\u5404\u5b50\u5f1f\u4eec\u6765\u9886\u53d6\u5e74\u7269\u3002\u56e0\u89c1\u8d3e\u82b9\u4ea6\u6765\u9886\u7269\uff0c\u8d3e\u73cd\u53eb\u4ed6\u8fc7\u6765\uff0c\u8bf4\u9053\uff1a\u201c\u4f60\u4f5c\u4ec0\u4e48\u4e5f\u6765\u4e86\uff1f\u8c01\u53eb\u4f60\u6765\u7684\uff1f\u201d\u8d3e\u82b9\u5782\u624b\u56de\u8bf4\uff1a\u201c\u542c\u89c1\u5927\u7237\u8fd9\u91cc\u53eb\u6211\u4eec\u9886\u4e1c\u897f\uff0c\u6211\u6ca1\u7b49\u4eba\u53bb\u5c31\u6765\u4e86\u3002\u201d\u8d3e\u73cd\u9053\uff1a\u201c\u6211\u8fd9\u4e1c\u897f\uff0c\u539f\u662f\u7ed9\u4f60\u90a3\u4e9b\u95f2\u7740\u65e0\u4e8b\u7684\u65e0\u8fdb\u76ca\u7684\u5c0f\u53d4\u53d4\u5144\u5f1f\u4eec\u7684\u3002\u90a3\u4e8c\u5e74\u4f60\u95f2\u7740\uff0c\u6211\u4e5f\u7ed9\u8fc7\u4f60\u7684\u3002\u4f60\u5982\u4eca\u5728\u90a3\u5e9c\u91cc\u7ba1\u4e8b\uff0c\u5bb6\u5e99\u91cc\u7ba1\u548c\u5c1a\u9053\u58eb\u4eec\uff0c\u4e00\u6708\u53c8\u6709\u4f60\u7684\u5206\u4f8b\u5916\uff0c\u8fd9\u4e9b\u548c\u5c1a\u7684\u5206\u4f8b\u94f6\u5b50\u90fd\u4ece\u4f60\u624b\u91cc\u8fc7\uff0c\u4f60\u8fd8\u6765\u53d6\u8fd9\u4e2a\uff0c\u592a\u4e5f\u8d2a\u4e86\uff01\u4f60\u81ea\u5df1\u77a7\u77a7\uff0c\u4f60\u7a7f\u7684\u50cf\u4e2a\u624b\u91cc\u4f7f\u94b1\u529e\u4e8b\u7684\uff1f\u5148\u524d\u8bf4\u4f60\u6ca1\u8fdb\u76ca\uff0c\u5982\u4eca\u53c8\u600e\u4e48\u4e86\uff1f\u6bd4\u5148\u5012\u4e0d\u50cf\u4e86\u3002\u201d\u8d3e\u82b9\u9053\uff1a\u201c\u6211\u5bb6\u91cc\u539f\u4eba\u53e3\u591a\uff0c\u8d39\u7528\u5927\u3002\u201d\u8d3e\u73cd\u51b7\u7b11\u9053\uff1a\u201c\u4f60\u8fd8\u652f\u543e\u6211\u3002\u4f60\u5728\u5bb6\u5e99\u91cc\u5e72\u7684\u4e8b\uff0c\u6253\u8c05\u6211\u4e0d\u77e5\u9053\u5462\u3002\u4f60\u5230\u4e86\u90a3\u91cc\u81ea\u7136\u662f\u7237\u4e86\uff0c\u6ca1\u4eba\u6562\u8fdd\u62d7\u4f60\u3002\u4f60\u624b\u91cc\u53c8\u6709\u4e86\u94b1\uff0c\u79bb\u7740\u6211\u4eec\u53c8\u8fdc\uff0c\u4f60\u5c31\u4e3a\u738b\u79f0\u9738\u8d77\u6765\uff0c\u591c\u591c\u62db\u805a\u532a\u7c7b\u8d4c\u94b1\uff0c\u517b\u8001\u5a46\u5c0f\u5b50\u3002\u8fd9\u4f1a\u5b50\u82b1\u7684\u8fd9\u4e2a\u5f62\u50cf\uff0c\u4f60\u8fd8\u6562\u9886\u4e1c\u897f\u6765\uff1f\u9886\u4e0d\u6210\u4e1c\u897f\uff0c\u9886\u4e00\u987f\u9a6e\u6c34\u68cd\u53bb\u624d\u7f62\u3002\u7b49\u8fc7\u4e86\u5e74\uff0c\u6211\u5fc5\u548c\u4f60\u740f\u4e8c\u53d4\u8bf4\uff0c\u6362\u56de\u4f60\u6765\u3002\u201d\u8d3e\u82b9\u7ea2\u4e86\u8138\uff0c\u4e0d\u6562\u7b54\u5e94\u3002\u4eba\u56de\uff1a\u201c\u5317\u5e9c\u6c34\u738b\u7237\u9001\u4e86\u5b57\u8054\uff0c\u8377\u5305\u6765\u4e86\u3002\u201d\u8d3e\u73cd\u542c\u8bf4\uff0c\u5fd9\u547d\u8d3e\u84c9\u51fa\u53bb\u6b3e\u5f85\uff0c\u201c\u53ea\u8bf4\u6211\u4e0d\u5728\u5bb6\u3002\u201d\u8d3e\u84c9\u53bb\u4e86\uff0c\u8fd9\u91cc\u8d3e\u73cd\u770b\u7740\u9886\u5b8c\u4e1c\u897f\uff0c\u56de\u623f\u4e0e\u5c24\u6c0f\u5403\u6bd5\u665a\u996d\uff0c\u4e00\u5bbf\u65e0\u8bdd\u3002\u81f3\u6b21\u65e5\uff0c\u66f4\u6bd4\u5f80\u65e5\u5fd9\uff0c\u90fd\u4e0d\u5fc5\u7ec6\u8bf4\u3002\ -\u5df2\u5230\u4e86\u814a\u6708\u4e8c\u5341\u4e5d\u65e5\u4e86\uff0c\u5404\u8272\u9f50\u5907\uff0c\u4e24\u5e9c\u4e2d\u90fd\u6362\u4e86\u95e8\u795e\uff0c\u8054\u5bf9\uff0c\u6302\u724c\uff0c\u65b0\u6cb9\u4e86\u6843\u7b26\uff0c\u7115\u7136\u4e00\u65b0\u3002\u5b81\u56fd\u5e9c\u4ece\u5927\u95e8\u3001\u4eea\u95e8\u3001\u5927\u5385\u3001\u6696\u9601\u3001\u5185\u5385\u3001\u5185\u4e09\u95e8\u3001\u5185\u4eea\u95e8\u5e76\u5185\u585e\u95e8\uff0c\u76f4\u5230\u6b63\u5802\uff0c\u4e00\u8def\u6b63\u95e8\u5927\u5f00\uff0c\u4e24\u8fb9\u9636\u4e0b\u4e00\u8272\u6731\u7ea2\u5927\u9ad8\u7167\uff0c\u70b9\u7684\u4e24\u6761\u91d1\u9f99\u4e00\u822c\u3002\u6b21\u65e5\uff0c\u7531\u8d3e\u6bcd\u6709\u8bf0\u5c01\u8005\uff0c\u7686\u6309\u54c1\u7ea7\u7740\u671d\u670d\uff0c\u5148\u5750\u516b\u4eba\u5927\u8f7f\uff0c\u5e26\u9886\u7740\u4f17\u4eba\u8fdb\u5bab\u671d\u8d3a\uff0c\u884c\u793c\u9886\u5bb4\u6bd5\u56de\u6765\uff0c\u4fbf\u5230\u5b81\u56fd\u5e9c\u6696\u9601\u4e0b\u8f7f\u3002\u8bf8\u5b50\u5f1f\u6709\u672a\u968f\u5165\u671d\u8005\uff0c\u7686\u5728\u5b81\u5e9c\u95e8\u524d\u6392\u73ed\u4f3a\u4faf\uff0c\u7136\u540e\u5f15\u5165\u5b97\u7960\u3002\u4e14\u8bf4\u5b9d\u7434\u662f\u521d\u6b21\uff0c\u4e00\u9762\u7ec6\u7ec6\u7559\u795e\u6253\u8c05\u8fd9\u5b97\u7960\uff0c\u539f\u6765\u5b81\u5e9c\u897f\u8fb9\u53e6\u4e00\u4e2a\u9662\u5b50\uff0c\u9ed1\u6cb9\u6805\u680f\u5185\u4e94\u95f4\u5927\u95e8\uff0c\u4e0a\u60ac\u4e00\u5757\u533e\uff0c\u5199\u7740\u662f\u201c\u8d3e\u6c0f\u5b97\u7960\u201d\u56db\u4e2a\u5b57\uff0c\u65c1\u4e66\u201c\u884d\u5723\u516c\u5b54\u7ee7\u5b97\u4e66\u201d\u3002\u4e24\u65c1\u6709\u4e00\u526f\u957f\u8054\uff0c\u5199\u9053\u662f\uff1a\ -\u809d\u8111\u6d82\u5730\uff0c\u5146\u59d3\u8d56\u4fdd\u80b2\u4e4b\u6069\uff0c\ -\u529f\u540d\u8d2f\u5929\uff0c\u767e\u4ee3\u4ef0\u84b8\u5c1d\u4e4b\u76db\u3002\u4ea6\u884d\u5723\u516c\u6240\u4e66\u3002\u8fdb\u5165\u9662\u4e2d\uff0c\u767d\u77f3\u752c\u8def\uff0c\u4e24\u8fb9\u7686\u662f\u82cd\u677e\u7fe0\u67cf\u3002\u6708\u53f0\u4e0a\u8bbe\u7740\u9752\u7eff\u53e4\u94dc\u9f0e\u5f5d\u7b49\u5668\u3002\u62b1\u53a6\u524d\u4e0a\u9762\u60ac\u4e00\u4e5d\u9f99\u91d1\u533e\uff0c\u5199\u9053\u662f\uff1a\u201c\u661f\u8f89\u8f85\u5f3c\u201d\u3002\u4e43\u5148\u7687\u5fa1\u7b14\u3002\u4e24\u8fb9\u4e00\u526f\u5bf9\u8054\uff0c\u5199\u9053\u662f\uff1a\ -\u52cb\u4e1a\u6709\u5149\u662d\u65e5\u6708\uff0c\u529f\u540d\u65e0\u95f4\u53ca\u513f\u5b59\u3002\u4ea6\u662f\u5fa1\u7b14\u3002\u4e94\u95f4\u6b63\u6bbf\u524d\u60ac\u4e00\u95f9\u9f99\u586b\u9752\u533e\uff0c\u5199\u9053\u662f\uff1a\u201c\u614e\u7ec8\u8ffd\u8fdc\u201d\u3002\u65c1\u8fb9\u4e00\u526f\u5bf9\u8054\uff0c\u5199\u9053\u662f\uff1a\ -\u5df2\u540e\u513f\u5b59\u627f\u798f\u5fb7\uff0c\u81f3\u4eca\u9ece\u5eb6\u5ff5\u8363\u5b81\u3002\u4ff1\u662f\u5fa1\u7b14\u3002\u91cc\u8fb9\u9999\u70db\u8f89\u714c\uff0c\u9526\u5e5b\u7ee3\u5e55\uff0c\u867d\u5217\u7740\u795e\u4e3b\uff0c\u5374\u770b\u4e0d\u771f\u5207\u3002\u53ea\u89c1\u8d3e\u5e9c\u4eba\u5206\u662d\u7a46\u6392\u73ed\u7acb\u5b9a\uff1a\u8d3e\u656c\u4e3b\u796d\uff0c\u8d3e\u8d66\u966a\u796d\uff0c\u8d3e\u73cd\u732e\u7235\uff0c\u8d3e\u740f\u8d3e\u742e\u732e\u5e1b\uff0c\u5b9d\u7389\u6367\u9999\uff0c\u8d3e\u83d6\u8d3e\u83f1\u5c55\u62dc\u6bef\uff0c\u5b88\u711a\u6c60\u3002\u9752\u8863\u4e50\u594f\uff0c\u4e09\u732e\u7235\uff0c\u62dc\u5174\u6bd5\uff0c\u711a\u5e1b\u5960\u9152\uff0c\u793c\u6bd5\uff0c\u4e50\u6b62\uff0c\u9000\u51fa\u3002\ -\u4f17\u4eba\u56f4\u968f\u7740\u8d3e\u6bcd\u81f3\u6b63\u5802\u4e0a\uff0c\u5f71\u524d\u9526\u5e54\u9ad8\u6302\uff0c\u5f69\u5c4f\u5f20\u62a4\uff0c\u9999\u70db\u8f89\u714c\u3002\u4e0a\u9762\u6b63\u5c45\u4e2d\u60ac\u7740\u5b81\u8363\u4e8c\u7956\u9057\u50cf\uff0c\u7686\u662f\u62ab\u87d2\u8170\u7389\uff1b\u4e24\u8fb9\u8fd8\u6709\u51e0\u8f74\u5217\u7956\u9057\u5f71\u3002\u8d3e\u8347\u8d3e\u82b7\u7b49\u4ece\u5185\u4eea\u95e8\u6328\u6b21\u5217\u7ad9\uff0c\u76f4\u5230\u6b63\u5802\u5eca\u4e0b\u3002\u69db\u5916\u65b9\u662f\u8d3e\u656c\u8d3e\u8d66\uff0c\u69db\u5185\u662f\u5404\u5973\u7737\u3002\u4f17\u5bb6\u4eba\u5c0f\u53ae\u7686\u5728\u4eea\u95e8\u4e4b\u5916\u3002\u6bcf\u4e00\u9053\u83dc\u81f3\uff0c\u4f20\u81f3\u4eea\u95e8\uff0c\u8d3e\u8347\u8d3e\u82b7\u7b49\u4fbf\u63a5\u4e86\uff0c\u6309\u6b21\u4f20\u81f3\u9636\u4e0a\u8d3e\u656c\u624b\u4e2d\u3002\u8d3e\u84c9\u7cfb\u957f\u623f\u957f\u5b59\uff0c\u72ec\u4ed6\u968f\u5973\u7737\u5728\u69db\u5185\u3002\u6bcf\u8d3e\u656c\u6367\u83dc\u81f3\uff0c\u4f20\u4e8e\u8d3e\u84c9\uff0c\u8d3e\u84c9\u4fbf\u4f20\u4e8e\u4ed6\u59bb\u5b50\uff0c\u53c8\u4f20\u4e8e\u51e4\u59d0\u5c24\u6c0f\u8bf8\u4eba\uff0c\u76f4\u4f20\u81f3\u4f9b\u684c\u524d\uff0c\u65b9\u4f20\u4e8e\u738b\u592b\u4eba\u3002\u738b\u592b\u4eba\u4f20\u4e8e\u8d3e\u6bcd\uff0c\u8d3e\u6bcd\u65b9\u6367\u653e\u5728\u684c\u4e0a\u3002\u90a2\u592b\u4eba\u5728\u4f9b\u684c\u4e4b\u897f\uff0c\u4e1c\u5411\u7acb\uff0c\u540c\u8d3e\u6bcd\u4f9b\u653e\u3002\u76f4\u81f3\u5c06\u83dc\u996d\u6c64\u70b9\u9152\u8336\u4f20\u5b8c\uff0c\u8d3e\u84c9\u65b9\u9000\u51fa\u4e0b\u9636\uff0c\u5f52\u5165\u8d3e\u82b9\u9636\u4f4d\u4e4b\u9996\u3002\u51e1\u4ece\u6587\u65c1\u4e4b\u540d\u8005\uff0c\u8d3e\u656c\u4e3a\u9996\uff0c\u4e0b\u5219\u4ece\u7389\u8005\uff0c\u8d3e\u73cd\u4e3a\u9996\uff0c\u518d\u4e0b\u4ece\u8349\u5934\u8005\uff0c\u8d3e\u84c9\u4e3a\u9996\uff0c\u5de6\u662d\u53f3\u7a46\uff0c\u7537\u4e1c\u5973\u897f\uff0c\u4fdf\u8d3e\u6bcd\u62c8\u9999\u4e0b\u62dc\uff0c\u4f17\u4eba\u65b9\u4e00\u9f50\u8dea\u4e0b\uff0c\u5c06\u4e94\u95f4\u5927\u5385\uff0c\u4e09\u95f4\u62b1\u53a6\uff0c\u5185\u5916\u5eca\u6a90\uff0c\u9636\u4e0a\u9636\u4e0b\u4e24\u4e39\u5880\u5185\uff0c\u82b1\u56e2\u9526\u7c07\uff0c\u585e\u7684\u65e0\u4e00\u9699\u7a7a\u5730\u3002\u9e26\u96c0\u65e0\u95fb\uff0c\u53ea\u542c\u94ff\u9535\u53ee\u5f53\uff0c\u91d1\u94c3\u7389\u73ee\u5fae\u5fae\u6447\u66f3\u4e4b\u58f0\uff0c\u5e76\u8d77\u8dea\u9774\u5c65\u98d2\u6c93\u4e4b\u54cd\u3002\u4e00\u65f6\u793c\u6bd5\uff0c\u8d3e\u656c\u8d3e\u8d66\u7b49\u4fbf\u5fd9\u9000\u51fa\uff0c\u81f3\u8363\u5e9c\u4e13\u5019\u4e0e\u8d3e\u6bcd\u884c\u793c\u3002\ -\u5c24\u6c0f\u4e0a\u623f\u65e9\u5df2\u88ad\u5730\u94fa\u6ee1\u7ea2\u6be1\uff0c\u5f53\u5730\u653e\u7740\u50cf\u9f3b\u4e09\u8db3\u9cc5\u6cbf\u938f\u91d1\u73d0\u7405\u5927\u706b\u76c6\uff0c\u6b63\u9762\u7095\u4e0a\u94fa\u65b0\u7329\u7ea2\u6be1\uff0c\u8bbe\u7740\u5927\u7ea2\u5f69\u7ee3\u4e91\u9f99\u6367\u5bff\u7684\u9760\u80cc\u5f15\u6795\uff0c\u5916\u53e6\u6709\u9ed1\u72d0\u76ae\u7684\u88b1\u5b50\u642d\u5728\u4e0a\u9762\uff0c\u5927\u767d\u72d0\u76ae\u5750\u8925\uff0c\u8bf7\u8d3e\u6bcd\u4e0a\u53bb\u5750\u4e86\u3002\u4e24\u8fb9\u53c8\u94fa\u76ae\u8925\uff0c\u8ba9\u8d3e\u6bcd\u4e00\u8f88\u7684\u4e24\u4e09\u4e2a\u59af\u5a0c\u5750\u4e86\u3002\u8fd9\u8fb9\u6a2a\u5934\u6392\u63d2\u4e4b\u540e\u5c0f\u7095\u4e0a\uff0c\u4e5f\u94fa\u4e86\u76ae\u8925\uff0c\u8ba9\u90a2\u592b\u4eba\u7b49\u5750\u4e86\u3002\u5730\u4e0b\u4e24\u9762\u76f8\u5bf9\u5341\u4e8c\u5f20\u96d5\u6f06\u6905\u4e0a\uff0c\u90fd\u662f\u4e00\u8272\u7070\u9f20\u6905\u642d\u5c0f\u8925\uff0c\u6bcf\u4e00\u5f20\u6905\u4e0b\u4e00\u4e2a\u5927\u94dc\u811a\u7089\uff0c\u8ba9\u5b9d\u7434\u7b49\u59ca\u59b9\u5750\u4e86\u3002\u5c24\u6c0f\u7528\u8336\u76d8\u4eb2\u6367\u8336\u4e0e\u8d3e\u6bcd\uff0c\u84c9\u59bb\u6367\u4e0e\u4f17\u8001\u7956\u6bcd\uff0c\u7136\u540e\u5c24\u6c0f\u53c8\u6367\u4e0e\u90a2\u592b\u4eba\u7b49\uff0c\u84c9\u59bb\u53c8\u6367\u4e0e\u4f17\u59ca\u59b9\u3002\u51e4\u59d0\u674e\u7ea8\u7b49\u53ea\u5728\u5730\u4e0b\u4f3a\u4faf\u3002\u8336\u6bd5\uff0c\u90a2\u592b\u4eba\u7b49\u4fbf\u5148\u8d77\u8eab\u6765\u4f8d\u8d3e\u6bcd\u3002\u8d3e\u6bcd\u5403\u8336\uff0c\u4e0e\u8001\u59af\u5a0c\u95f2\u8bdd\u4e86\u4e24\u4e09\u53e5\uff0c\u4fbf\u547d\u770b\u8f7f\u3002\u51e4\u59d0\u513f\u5fd9\u4e0a\u53bb\u633d\u8d77\u6765\u3002\u5c24\u6c0f\u7b11\u56de\u8bf4\uff1a\u201c\u5df2\u7ecf\u9884\u5907\u4e0b\u8001\u592a\u592a\u7684\u665a\u996d\u3002\u6bcf\u5e74\u90fd\u4e0d\u80af\u8d4f\u4e9b\u4f53\u9762\u7528\u8fc7\u665a\u996d\u8fc7\u53bb\uff0c\u679c\u7136\u6211\u4eec\u5c31\u4e0d\u53ca\u51e4\u4e2b\u5934\u4e0d\u6210\uff1f\u201d\u51e4\u59d0\u513f\u6400\u7740\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u8001\u7956\u5b97\u5feb\u8d70\uff0c\u54b1\u4eec\u5bb6\u53bb\u5403\u996d\uff0c\u522b\u7406\u4ed6\u3002\u201d\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4f60\u8fd9\u91cc\u4f9b\u7740\u7956\u5b97\uff0c\u5fd9\u7684\u4ec0\u4e48\u4f3c\u7684\uff0c\u90a3\u91cc\u6401\u5f97\u4f4f\u6211\u95f9\u3002\u51b5\u4e14\u6bcf\u5e74\u6211\u4e0d\u5403\uff0c\u4f60\u4eec\u4e5f\u8981\u9001\u53bb\u7684\u3002\u4e0d\u5982\u8fd8\u9001\u4e86\u53bb\uff0c\u6211\u5403\u4e0d\u4e86\u7559\u7740\u660e\u513f\u518d\u5403\uff0c\u5c82\u4e0d\u591a\u5403\u4e9b\u3002\u201d\u8bf4\u7684\u4f17\u4eba\u90fd\u7b11\u4e86\u3002\u53c8\u5429\u5490\u4ed6\uff1a\u201c\u597d\u751f\u6d3e\u59a5\u5f53\u4eba\u591c\u91cc\u770b\u9999\u706b\uff0c\u4e0d\u662f\u5927\u610f\u5f97\u7684\u3002\u201d\u5c24\u6c0f\u7b54\u5e94\u4e86\u3002\u4e00\u9762\u8d70\u51fa\u6765\u81f3\u6696\u9601\u524d\u4e0a\u4e86\u8f7f\u3002\u5c24\u6c0f\u7b49\u95ea\u8fc7\u5c4f\u98ce\uff0c\u5c0f\u53ae\u4eec\u624d\u9886\u8f7f\u592b\uff0c\u8bf7\u4e86\u8f7f\u51fa\u5927\u95e8\u3002\u5c24\u6c0f\u4ea6\u968f\u90a2\u592b\u4eba\u7b49\u540c\u81f3\u8363\u5e9c\u3002\ -\u8fd9\u91cc\u8f7f\u51fa\u5927\u95e8\uff0c\u8fd9\u4e00\u6761\u8857\u4e0a\uff0c\u4e1c\u4e00\u8fb9\u5408\u9762\u8bbe\u5217\u7740\u5b81\u56fd\u516c\u7684\u4eea\u4ed7\u6267\u4e8b\u4e50\u5668\uff0c\u897f\u4e00\u8fb9\u5408\u9762\u8bbe\u5217\u7740\u8363\u56fd\u516c\u7684\u4eea\u4ed7\u6267\u4e8b\u4e50\u5668\uff0c\u6765\u5f80\u884c\u4eba\u7686\u5c4f\u9000\u4e0d\u4ece\u6b64\u8fc7\u3002\u4e00\u65f6\u6765\u81f3\u8363\u5e9c\uff0c\u4e5f\u662f\u5927\u95e8\u6b63\u5385\u76f4\u5f00\u5230\u5e95\u3002\u5982\u4eca\u4fbf\u4e0d\u5728\u6696\u9601\u4e0b\u8f7f\u4e86\uff0c\u8fc7\u4e86\u5927\u5385\uff0c\u4fbf\u8f6c\u5f2f\u5411\u897f\uff0c\u81f3\u8d3e\u6bcd\u8fd9\u8fb9\u6b63\u5385\u4e0a\u4e0b\u8f7f\u3002\u4f17\u4eba\u56f4\u968f\u540c\u81f3\u8d3e\u6bcd\u6b63\u5ba4\u4e4b\u4e2d\uff0c\u4ea6\u662f\u9526\u88c0\u7ee3\u5c4f\uff0c\u7115\u7136\u4e00\u65b0\u3002\u5f53\u5730\u706b\u76c6\u5185\u711a\u7740\u677e\u67cf\u9999\uff0c\u767e\u5408\u8349\u3002\u8d3e\u6bcd\u5f52\u4e86\u5750\uff0c\u8001\u5b37\u5b37\u6765\u56de\uff1a\u201c\u8001\u592a\u592a\u4eec\u6765\u884c\u793c\u3002\u201d\u8d3e\u6bcd\u5fd9\u53c8\u8d77\u8eab\u8981\u8fce\uff0c\u53ea\u89c1\u4e24\u4e09\u4e2a\u8001\u59af\u5a0c\u5df2\u8fdb\u6765\u4e86\u3002\u5927\u5bb6\u633d\u624b\uff0c\u7b11\u4e86\u4e00\u56de\uff0c\u8ba9\u4e86\u4e00\u56de\u3002\u5403\u8336\u53bb\u540e\uff0c\u8d3e\u6bcd\u53ea\u9001\u81f3\u5185\u4eea\u95e8\u4fbf\u56de\u6765\uff0c\u5f52\u6b63\u5750\u3002\u8d3e\u656c\u8d3e\u8d66\u7b49\u9886\u8bf8\u5b50\u5f1f\u8fdb\u6765\u3002\u8d3e\u6bcd\u7b11\u9053\uff1a\u201c\u4e00\u5e74\u4ef7\u96be\u4e3a\u4f60\u4eec\uff0c\u4e0d\u884c\u793c\u7f62\u3002\u201d\u4e00\u9762\u8bf4\u7740\uff0c\u4e00\u9762\u7537\u4e00\u8d77\uff0c\u5973\u4e00\u8d77\uff0c\u4e00\u8d77\u4e00\u8d77\u4ff1\u884c\u8fc7\u4e86\u793c\u3002\u5de6\u53f3\u4e24\u65c1\u8bbe\u4e0b\u4ea4\u6905\uff0c\u7136\u540e\u53c8\u6309\u957f\u5e7c\u6328\u6b21\u5f52\u5750\u53d7\u793c\u3002\u4e24\u5e9c\u7537\u5987\u5c0f\u53ae\u4e2b\u9b1f\u4ea6\u6309\u5dee\u5f79\u4e0a\u4e2d\u4e0b\u884c\u793c\u6bd5\uff0c\u6563\u62bc\u5c81\u94b1\u3001\u8377\u5305\u3001\u91d1\u94f6\u951e\uff0c\u6446\u4e0a\u5408\u6b22\u5bb4\u6765\u3002\u7537\u4e1c\u5973\u897f\u5f52\u5750\uff0c\u732e\u5c60\u82cf\u9152\uff0c\u5408\u6b22\u6c64\u3001\u5409\u7965\u679c\u3001\u5982\u610f\u7cd5\u6bd5\uff0c\u8d3e\u6bcd\u8d77\u8eab\u8fdb\u5185\u95f4\u66f4\u8863\uff0c\u4f17\u4eba\u65b9\u5404\u6563\u51fa\u3002\u90a3\u665a\u5404\u5904\u4f5b\u5802\u7076\u738b\u524d\u711a\u9999\u4e0a\u4f9b\uff0c\u738b\u592b\u4eba\u6b63\u623f\u9662\u5185\u8bbe\u7740\u5929\u5730\u7eb8\u9a6c\u9999\u4f9b\uff0c\u5927\u89c2\u56ed\u6b63\u95e8\u4e0a\u4e5f\u6311\u7740\u5927\u660e\u89d2\u706f\uff0c\u4e24\u6e9c\u9ad8\u7167\uff0c\u5404\u5904\u7686\u6709\u8def\u706f\u3002\u4e0a\u4e0b\u4eba\u7b49\uff0c\u7686\u6253\u626e\u7684\u82b1\u56e2\u9526\u7c07\uff0c\u4e00\u591c\u4eba\u58f0\u5608\u6742\uff0c\u8bed\u7b11\u55a7\u9617\uff0c\u7206\u7af9\u8d77\u706b\uff0c\u7edc\u7ece\u4e0d\u7edd\u3002\ -\u81f3\u6b21\u65e5\u4e94\u9f13\uff0c\u8d3e\u6bcd\u7b49\u53c8\u6309\u54c1\u5927\u5986\uff0c\u6446\u5168\u526f\u6267\u4e8b\u8fdb\u5bab\u671d\u8d3a\uff0c\u517c\u795d\u5143\u6625\u5343\u79cb\u3002\u9886\u5bb4\u56de\u6765\uff0c\u53c8\u81f3\u5b81\u5e9c\u796d\u8fc7\u5217\u7956\uff0c\u65b9\u56de\u6765\u53d7\u793c\u6bd5\uff0c\u4fbf\u6362\u8863\u6b47\u606f\u3002\u6240\u6709\u8d3a\u8282\u6765\u7684\u4eb2\u53cb\u4e00\u6982\u4e0d\u4f1a\uff0c\u53ea\u548c\u859b\u59e8\u5988\u674e\u5a76\u4e8c\u4eba\u8bf4\u8bdd\u53d6\u4fbf\uff0c\u6216\u8005\u540c\u5b9d\u7389\uff0c\u5b9d\u7434\uff0c\u9497\uff0c\u7389\u7b49\u59ca\u59b9\u8d76\u56f4\u68cb\u62b9\u724c\u4f5c\u620f\u3002\u738b\u592b\u4eba\u4e0e\u51e4\u59d0\u662f\u5929\u5929\u5fd9\u7740\u8bf7\u4eba\u5403\u5e74\u9152\uff0c\u90a3\u8fb9\u5385\u4e0a\u9662\u5185\u7686\u662f\u620f\u9152\uff0c\u4eb2\u53cb\u7edc\u7ece\u4e0d\u7edd\uff0c\u4e00\u8fde\u5fd9\u4e86\u4e03\u516b\u65e5\u624d\u5b8c\u4e86\u3002\u65e9\u53c8\u5143\u5bb5\u5c06\u8fd1\uff0c\u5b81\u8363\u4e8c\u5e9c\u7686\u5f20\u706f\u7ed3\u5f69\u3002\u5341\u4e00\u65e5\u662f\u8d3e\u8d66\u8bf7\u8d3e\u6bcd\u7b49\uff0c\u6b21\u65e5\u8d3e\u73cd\u53c8\u8bf7\uff0c\u8d3e\u6bcd\u7686\u53bb\u968f\u4fbf\u9886\u4e86\u534a\u65e5\u3002\u738b\u592b\u4eba\u548c\u51e4\u59d0\u513f\u8fde\u65e5\u88ab\u4eba\u8bf7\u53bb\u5403\u5e74\u9152\uff0c\u4e0d\u80fd\u80dc\u8bb0\u3002\ -\u81f3\u5341\u4e94\u65e5\u4e4b\u5915\uff0c\u8d3e\u6bcd\u4fbf\u5728\u5927\u82b1\u5385\u4e0a\u547d\u6446\u51e0\u5e2d\u9152\uff0c\u5b9a\u4e00\u73ed\u5c0f\u620f\uff0c\u6ee1\u6302\u5404\u8272\u4f73\u706f\uff0c\u5e26\u9886\u8363\u5b81\u4e8c\u5e9c\u5404\u5b50\u4f84\u5b59\u7537\u5b59\u5ab3\u7b49\u5bb6\u5bb4\u3002\u8d3e\u656c\u7d20\u4e0d\u8339\u9152\uff0c\u4e5f\u4e0d\u53bb\u8bf7\u4ed6\uff0c\u4e8e\u540e\u5341\u4e03\u65e5\u7956\u7940\u5df2\u5b8c\uff0c\u4ed6\u4fbf\u4ecd\u51fa\u57ce\u53bb\u4fee\u517b\u3002\u4fbf\u8fd9\u51e0\u65e5\u5728\u5bb6\u5185\uff0c\u4ea6\u662f\u51c0\u5ba4\u9ed8\u5904\uff0c\u4e00\u6982\u65e0\u542c\u65e0\u95fb\uff0c\u4e0d\u5728\u8bdd\u4e0b\u3002\u8d3e\u8d66\u7565\u9886\u4e86\u8d3e\u6bcd\u4e4b\u8d50\uff0c\u4e5f\u4fbf\u544a\u8f9e\u800c\u53bb\u3002\u8d3e\u6bcd\u77e5\u4ed6\u5728\u6b64\u5f7c\u6b64\u4e0d\u4fbf\uff0c\u4e5f\u5c31\u968f\u4ed6\u53bb\u4e86\u3002\u8d3e\u8d66\u81ea\u5230\u5bb6\u4e2d\u4e0e\u4f17\u95e8\u5ba2\u8d4f\u706f\u5403\u9152\uff0c\u81ea\u7136\u662f\u7b19\u6b4c\u8052\u8033\uff0c\u9526\u7ee3\u76c8\u7738\uff0c\u5176\u53d6\u4fbf\u5feb\u4e50\u53e6\u4e0e\u8fd9\u8fb9\u4e0d\u540c\u7684\u3002\ -\u8fd9\u8fb9\u8d3e\u6bcd\u82b1\u5385\u4e4b\u4e0a\u5171\u6446\u4e86\u5341\u6765\u5e2d\u3002\u6bcf\u4e00\u5e2d\u65c1\u8fb9\u8bbe\u4e00\u51e0\uff0c\u51e0\u4e0a\u8bbe\u7089\u74f6\u4e09\u4e8b\uff0c\u711a\u7740\u5fa1\u8d50\u767e\u5408\u5bab\u9999\u3002\u53c8\u6709\u516b\u5bf8\u6765\u957f\u56db\u4e94\u5bf8\u5bbd\u4e8c\u4e09\u5bf8\u9ad8\u7684\u70b9\u7740\u5c71\u77f3\u5e03\u6ee1\u9752\u82d4\u7684\u5c0f\u76c6\u666f\uff0c\u4ff1\u662f\u65b0\u9c9c\u82b1\u5349\u3002\u53c8\u6709\u5c0f\u6d0b\u6f06\u8336\u76d8\uff0c\u5185\u653e\u7740\u65e7\u7a91\u8336\u676f\u5e76\u5341\u9526\u5c0f\u8336\u540a\uff0c\u91cc\u9762\u6ce1\u7740\u4e0a\u7b49\u540d\u8336\u3002\u4e00\u8272\u7686\u662f\u7d2b\u6a80\u900f\u96d5\uff0c\u5d4c\u7740\u5927\u7ea2\u7eb1\u900f\u7ee3\u82b1\u5349\u5e76\u8349\u5b57\u8bd7\u8bcd\u7684\u748e\u73de\u3002\u539f\u6765\u7ee3\u8fd9\u748e\u73de\u7684\u4e5f\u662f\u4e2a\u59d1\u82cf\u5973\u5b50\uff0c\u540d\u5524\u6167\u5a18\u3002\u56e0\u4ed6\u4ea6\u662f\u4e66\u9999\u5ba6\u95e8\u4e4b\u5bb6\uff0c\u4ed6\u539f\u7cbe\u4e8e\u4e66\u753b\uff0c\u4e0d\u8fc7\u5076\u7136\u7ee3\u4e00\u4e24\u4ef6\u9488\u7ebf\u4f5c\u800d\uff0c\u5e76\u975e\u5e02\u5356\u4e4b\u7269\u3002\u51e1\u8fd9\u5c4f\u4e0a\u6240\u7ee3\u4e4b\u82b1\u5349\uff0c\u7686\u4eff\u7684\u662f\u5510\uff0c\u5b8b\uff0c\u5143\uff0c\u660e\u5404\u540d\u5bb6\u7684\u6298\u679d\u82b1\u5349\uff0c\u6545\u5176\u683c\u5f0f\u914d\u8272\u7686\u4ece\u96c5\uff0c\u672c\u6765\u975e\u4e00\u5473\u6d53\u8273\u5320\u5de5\u53ef\u6bd4\u6bcf\u4e00\u679d\u82b1\u4fa7\u7686\u7528\u53e4\u4eba\u9898\u6b64\u82b1\u4e4b\u65e7\u53e5\uff0c\u6216\u8bd7\u8bcd\u6b4c\u8d4b\u4e0d\u4e00\uff0c\u7686\u7528\u9ed1\u7ed2\u7ee3\u51fa\u8349\u5b57\u6765\uff0c\u4e14\u5b57\u8ff9\u52fe\u8e22\uff0c\u8f6c\u6298\uff0c\u8f7b\u91cd\uff0c\u8fde\u65ad\u7686\u4e0e\u7b14\u8349\u65e0\u5f02\uff0c\u4ea6\u4e0d\u6bd4\u5e02\u7ee3\u5b57\u8ff9\u677f\u5f3a\u53ef\u6068\u3002\u4ed6\u4e0d\u4ed7\u6b64\u6280\u83b7\u5229\uff0c\u6240\u4ee5\u5929\u4e0b\u867d\u77e5\uff0c\u5f97\u8005\u751a\u5c11\uff0c\u51e1\u4e16\u5ba6\u5bcc\u8d35\u4e4b\u5bb6\uff0c\u65e0\u6b64\u7269\u8005\u751a\u591a\uff0c\u5f53\u4eca\u4fbf\u79f0\u4e3a\u201c\u6167\u7ee3\u201d\u3002\u7adf\u6709\u4e16\u4fd7\u5c04\u5229\u8005\uff0c\u8fd1\u65e5\u4eff\u5176\u9488\u8ff9\uff0c\u611a\u4eba\u83b7\u5229\u3002\u504f\u8fd9\u6167\u5a18\u547d\u592d\uff0c\u5341\u516b\u5c81\u4fbf\u6b7b\u4e86\uff0c\u5982\u4eca\u7adf\u4e0d\u80fd\u518d\u5f97\u4e00\u4ef6\u7684\u4e86\u3002\u51e1\u6240\u6709\u4e4b\u5bb6\uff0c\u7eb5\u6709\u4e00\u4e24\u4ef6\uff0c\u7686\u73cd\u85cf\u4e0d\u7528\u3002\u6709\u90a3\u4e00\u5e72\u7ff0\u6797\u6587\u9b54\u5148\u751f\u4eec\uff0c\u56e0\u6df1\u60dc\u201c\u6167\u7ee3\u201d\u4e4b\u4f73\uff0c\u4fbf\u8bf4\u8fd9\u201c\u7ee3\u201d\u5b57\u4e0d\u80fd\u5c3d\u5176\u5999\uff0c\u8fd9\u6837\u7b14\u8ff9\u8bf4\u4e00\u201c\u7ee3\u201d\u5b57\uff0c\u53cd\u4f3c\u4e4e\u5510\u7a81\u4e86\uff0c\u4fbf\u5927\u5bb6\u5546\u8bae\u4e86\uff0c\u5c06\u201c\u7ee3\u201d\u5b57\u4fbf\u9690\u53bb\uff0c\u6362\u4e86\u4e00\u4e2a\u201c\u7eb9\u201c\u5b57\uff0c\u6240\u4ee5\u5982\u4eca\u90fd\u79f0\u4e3a\u201c\u6167\u7eb9\u201d\u3002\u82e5\u6709\u4e00\u4ef6\u771f\u201c\u6167\u7eb9\u201d\u4e4b\u7269\uff0c\u4ef7\u5219\u65e0\u9650\u3002\u8d3e\u5e9c\u4e4b\u8363\uff0c\u4e5f\u53ea\u6709\u4e24\u4e09\u4ef6\uff0c\u4e0a\u5e74\u5c06\u90a3\u4e24\u4ef6\u5df2\u8fdb\u4e86\u4e0a\uff0c\u76ee\u4e0b\u53ea\u5269\u8fd9\u4e00\u526f\u748e\u73de\uff0c\u4e00\u5171\u5341\u516d\u6247\uff0c\u8d3e\u6bcd\u7231\u5982\u73cd\u5b9d\uff0c\u4e0d\u5165\u5728\u8bf7\u5ba2\u5404\u8272\u9648\u8bbe\u4e4b\u5185\uff0c\u53ea\u7559\u5728\u81ea\u5df1\u8fd9\u8fb9\uff0c\u9ad8\u5174\u6446\u9152\u65f6\u8d4f\u73a9\u3002\u53c8\u6709\u5404\u8272\u65e7\u7a91\u5c0f\u74f6\u4e2d\u90fd\u70b9\u7f00\u7740\u201c\u5c81\u5bd2\u4e09\u53cb\u201d\u201c\u7389\u5802\u5bcc\u8d35\u201d\u7b49\u9c9c\u82b1\u8349\u3002\ -\u4e0a\u9762\u4e24\u5e2d\u662f\u674e\u5a76\u859b\u59e8\u5988\u4e8c\u4f4d\u3002\u8d3e\u6bcd\u4e8e\u4e1c\u8fb9\u8bbe\u4e00\u900f\u96d5\u5914\u9f99\u62a4\u5c4f\u77ee\u8db3\u77ed\u69bb\uff0c\u9760\u80cc\u5f15\u6795\u76ae\u8925\u4ff1\u5168\u3002\u69bb\u4e4b\u4e0a\u4e00\u5934\u53c8\u8bbe\u4e00\u4e2a\u6781\u8f7b\u5de7\u6d0b\u6f06\u63cf\u91d1\u5c0f\u51e0\uff0c\u51e0\u4e0a\u653e\u7740\u8336\u540a\u3001\u8336\u7897\u3001\u6f31\u76c2\u3001\u6d0b\u5dfe\u4e4b\u7c7b\uff0c\u53c8\u6709\u4e00\u4e2a\u773c\u955c\u5323\u5b50\u3002\u8d3e\u6bcd\u6b6a\u5728\u69bb\u4e0a\uff0c\u4e0e\u4f17\u4eba\u8bf4\u7b11\u4e00\u56de\uff0c\u53c8\u81ea\u53d6\u773c\u955c\u5411\u620f\u53f0\u4e0a\u7167\u4e00\u56de\uff0c\u53c8\u5411\u859b\u59e8\u5988\u674e\u5a76\u7b11\u8bf4\uff1a\u201c\u6055\u6211\u8001\u4e86\uff0c\u9aa8\u5934\u75bc\uff0c\u653e\u8086\uff0c\u5bb9\u6211\u6b6a\u7740\u76f8\u966a\u7f62\u3002\u201d\u56e0\u53c8\u547d\u7425\u73c0\u5750\u5728\u69bb\u4e0a\uff0c\u62ff\u7740\u7f8e\u4eba\u62f3\u6376\u817f\u3002\u69bb\u4e0b\u5e76\u4e0d\u6446\u5e2d\u9762\uff0c\u53ea\u6709\u4e00\u5f20\u9ad8\u51e0\uff0c\u5374\u8bbe\u7740\u748e\u73de\u82b1\u74f6\u9999\u7089\u7b49\u7269\u3002\u5916\u53e6\u8bbe\u4e00\u7cbe\u81f4\u5c0f\u9ad8\u684c\uff0c\u8bbe\u7740\u9152\u676f\u5319\u7bb8\uff0c\u5c06\u81ea\u5df1\u8fd9\u4e00\u5e2d\u8bbe\u4e8e\u69bb\u65c1\uff0c\u547d\u5b9d\u7434\u3001\u6e58\u4e91\u3001\u9edb\u7389\u3001\u5b9d\u7389\u56db\u4eba\u5750\u7740\u3002\u6bcf\u4e00\u9994\u4e00\u679c\u6765\uff0c\u5148\u6367\u4e0e\u8d3e\u6bcd\u770b\u4e86\uff0c\u559c\u5219\u7559\u5728\u5c0f\u684c\u4e0a\u5c1d\u4e00\u5c1d\uff0c\u4ecd\u64a4\u4e86\u653e\u5728\u4ed6\u56db\u4eba\u5e2d\u4e0a\uff0c\u53ea\u7b97\u4ed6\u56db\u4eba\u662f\u8ddf\u7740\u8d3e\u6bcd\u5750\u3002\u6545\u4e0b\u9762\u65b9\u662f\u90a2\u592b\u4eba\u738b\u592b\u4eba\u4e4b\u4f4d\uff0c\u518d\u4e0b\u4fbf\u662f\u5c24\u6c0f\uff0c\u674e\u7ea8\uff0c\u51e4\u59d0\uff0c\u8d3e\u84c9\u4e4b\u59bb\u3002\u897f\u8fb9\u4e00\u8def\u4fbf\u662f\u5b9d\u9497\u3001\u674e\u7eb9\u3001\u674e\u7eee\u3001\u5cab\u70df\u3001\u8fce\u6625\u59ca\u59b9\u7b49\u3002\u4e24\u8fb9\u5927\u6881\u4e0a\uff0c\u6302\u7740\u4e00\u5bf9\u8054\u4e09\u805a\u4e94\u73bb\u7483\u8299\u84c9\u5f69\u7a57\u706f\u3002\u6bcf\u4e00\u5e2d\u524d\u7ad6\u4e00\u67c4\u6f06\u5e72\u5012\u5782\u8377\u53f6\uff0c\u53f6\u4e0a\u6709\u70db\u4fe1\u63d2\u7740\u5f69\u70db\u3002\u8fd9\u8377\u53f6\u4e43\u662f\u933e\u73d0\u7405\u7684\uff0c\u6d3b\u4fe1\u53ef\u4ee5\u626d\u8f6c\uff0c\u5982\u4eca\u7686\u5c06\u8377\u53f6\u626d\u8f6c\u5411\u5916\uff0c\u5c06\u706f\u5f71\u903c\u4f4f\u5168\u5411\u5916\u7167\uff0c\u770b\u620f\u5206\u5916\u771f\u5207\u3002\u7a97\u683c\u95e8\u6237\u4e00\u9f50\u6458\u4e0b\uff0c\u5168\u6302\u5f69\u7a57\u5404\u79cd\u5bab\u706f\u3002\u5eca\u6a90\u5185\u5916\u53ca\u4e24\u8fb9\u6e38\u5eca\u7f69\u68da\uff0c\u5c06\u5404\u8272\u7f8a\u89d2\u3001\u73bb\u7483\u3001\u6233\u7eb1\u3001\u6599\u4e1d\uff0c\u6216\u7ee3\uff0c\u6216\u753b\uff0c\u6216\u5806\uff0c\u6216\u62a0\uff0c\u6216\u7ee2\uff0c\u6216\u7eb8\u8bf8\u706f\u6302\u6ee1\u3002\u5eca\u4e0a\u51e0\u5e2d\uff0c\u4fbf\u662f\u8d3e\u73cd\u3001\u8d3e\u740f\u3001\u8d3e\u73af\u3001\u8d3e\u742e\u3001\u8d3e\u84c9\u3001\u8d3e\u82b9\u3001\u8d3e\u82b8\u3001\u8d3e\u83f1\u3001\u8d3e\u83d6\u7b49\u3002\ -\u8d3e\u6bcd\u4e5f\u66fe\u5dee\u4eba\u53bb\u8bf7\u4f17\u65cf\u4e2d\u7537\u5973\uff0c\u5948\u4ed6\u4eec\u6216\u6709\u5e74\u8fc8\u61d2\u4e8e\u70ed\u95f9\u7684\uff0c\u6216\u6709\u5bb6\u5185\u6ca1\u6709\u4eba\u4e0d\u4fbf\u6765\u7684\uff0c\u6216\u6709\u75be\u75c5\u6df9\u7f20\uff0c\u6b32\u6765\u7adf\u4e0d\u80fd\u6765\u7684\uff0c\u6216\u6709\u4e00\u7b49\u5992\u5bcc\u6127\u8d2b\u4e0d\u6765\u7684\uff0c\u751a\u81f3\u4e8e\u6709\u4e00\u7b49\u618e\u754f\u51e4\u59d0\u4e4b\u4e3a\u4eba\u800c\u8d4c\u6c14\u4e0d\u6765\u7684\uff0c\u6216\u6709\u7f9e\u53e3\u7f9e\u811a\uff0c\u4e0d\u60ef\u89c1\u4eba\uff0c\u4e0d\u6562\u6765\u7684\uff1a\u56e0\u6b64\u65cf\u4f17\u867d\u591a\uff0c\u5973\u5ba2\u6765\u8005\u53ea\u4e0d\u8fc7\u8d3e\u83cc\u4e4b\u6bcd\u5a04\u6c0f\u5e26\u4e86\u8d3e\u83cc\u6765\u4e86\uff0c\u7537\u5b50\u53ea\u6709\u8d3e\u82b9\uff0c\u8d3e\u82b8\uff0c\u8d3e\u83d6\uff0c\u8d3e\u83f1\u56db\u4e2a\u73b0\u662f\u5728\u51e4\u59d0\u9ebe\u4e0b\u529e\u4e8b\u7684\u6765\u4e86\u3002\u5f53\u4e0b\u4eba\u867d\u4e0d\u5168\uff0c\u5728\u5bb6\u5ead\u95f4\u5c0f\u5bb4\u4e2d\uff0c\u6570\u6765\u4e5f\u7b97\u662f\u70ed\u95f9\u7684\u4e86\u3002\u5f53\u53c8\u6709\u6797\u4e4b\u5b5d\u4e4b\u59bb\u5e26\u4e86\u516d\u4e2a\u5ab3\u5987\uff0c\u62ac\u4e86\u4e09\u5f20\u7095\u684c\uff0c\u6bcf\u4e00\u5f20\u4e0a\u642d\u7740\u4e00\u6761\u7ea2\u6be1\uff0c\u6be1\u4e0a\u653e\u7740\u9009\u51c0\u4e00\u822c\u5927\u65b0\u51fa\u5c40\u7684\u94dc\u94b1\uff0c\u7528\u5927\u7ea2\u5f69\u7ef3\u4e32\u7740\uff0c\u6bcf\u4e8c\u4eba\u642d\u4e00\u5f20\u3002\u5171\u4e09\u5f20\u3002\u6797\u4e4b\u5b5d\u5bb6\u7684\u6307\u793a\u5c06\u90a3\u4e24\u5f20\u6446\u81f3\u859b\u59e8\u5988\u674e\u5a76\u7684\u5e2d\u4e0b\uff0c\u5c06\u4e00\u5f20\u9001\u81f3\u8d3e\u6bcd\u69bb\u4e0b\u6765\u3002\u8d3e\u6bcd\u4fbf\u8bf4\uff1a\u201c\u653e\u5728\u5f53\u5730\u7f62\u3002\u201d\u8fd9\u5ab3\u5987\u4eec\u90fd\u7d20\u77e5\u89c4\u77e9\u7684\uff0c\u653e\u4e0b\u684c\u5b50\uff0c\u4e00\u5e76\u5c06\u94b1\u90fd\u6253\u5f00\uff0c\u5c06\u5f69\u7ef3\u62bd\u53bb\uff0c\u6563\u5806\u5728\u684c\u4e0a\u3002\u6b63\u5531\u300a\u897f\u697c\u00b7\u697c\u4f1a\u300b\u8fd9\u51fa\u5c06\u7ec8\uff0c\u4e8e\u53d4\u591c\u56e0\u8d4c\u6c14\u53bb\u4e86\uff0c\u90a3\u6587\u8c79\u4fbf\u53d1\u79d1\u8be8\u9053\uff1a\u201c\u4f60\u8d4c\u6c14\u53bb\u4e86\uff0c\u6070\u597d\u4eca\u65e5\u6b63\u6708\u5341\u4e94\uff0c\u8363\u56fd\u5e9c\u4e2d\u8001\u7956\u5b97\u5bb6\u5bb4\uff0c\u5f85\u6211\u9a91\u4e86\u8fd9\u9a6c\uff0c\u8d76\u8fdb\u53bb\u8ba8\u4e9b\u679c\u5b50\u5403\u662f\u8981\u7d27\u7684\u3002\u201d\u8bf4\u6bd5\uff0c\u5f15\u7684\u8d3e\u6bcd\u7b49\u90fd\u7b11\u4e86\u3002\u859b\u59e8\u5988\u7b49\u90fd\u8bf4\uff1a\u201c\u597d\u4e2a\u9b3c\u5934\u5b69\u5b50\uff0c\u53ef\u601c\u89c1\u7684\u3002\u201d\u51e4\u59d0\u4fbf\u8bf4\uff1a\u201c\u8fd9\u5b69\u5b50\u624d\u4e5d\u5c81\u4e86\u3002\u201d\u8d3e\u6bcd\u7b11\u8bf4\uff1a\u201c\u96be\u4e3a\u4ed6\u8bf4\u7684\u5de7\u3002\u201d\u4fbf\u8bf4\u4e86\u4e00\u4e2a\u201c\u8d4f\u201d\u5b57\u3002\u65e9\u6709\u4e09\u4e2a\u5ab3\u5987\u5df2\u7ecf\u624b\u4e0b\u9884\u5907\u4e0b\u7c38\u7ba9\uff0c\u542c\u89c1\u4e00\u4e2a\u201c\u8d4f\u201d\u5b57\uff0c\u8d70\u4e0a\u53bb\u5411\u684c\u4e0a\u7684\u6563\u94b1\u5806\u5185\uff0c\u6bcf\u4eba\u4fbf\u64ae\u4e86\u4e00\u7c38\u7ba9\uff0c\u8d70\u51fa\u6765\u5411\u620f\u53f0\u8bf4\uff1a\u201c\u8001\u7956\u5b97\u3001\u59e8\u592a\u592a\u3001\u4eb2\u5bb6\u592a\u592a\u8d4f\u6587\u8c79\u4e70\u679c\u5b50\u5403\u7684\uff01\u201d\u8bf4\u7740\uff0c\u5411\u53f0\u4e0a\u4fbf\u4e00\u6492\uff0c\u53ea\u542c\u8c41\u5577\u5577\u6ee1\u53f0\u7684\u94b1\u54cd\u3002\u8d3e\u73cd\u8d3e\u740f\u5df2\u547d\u5c0f\u53ae\u4eec\u62ac\u4e86\u5927\u7c38\u7ba9\u7684\u94b1\u6765\uff0c\u6697\u6697\u7684\u9884\u5907\u5728\u90a3\u91cc\u3002\u542c\u89c1\u8d3e\u6bcd\u4e00\u8d4f\uff0c\u8981\u77e5\u7aef\u7684\ -\u4e00\u5929\uff0c\u4ef5\u6c89\u86cb\u7ed9\u6211\u6253\u6765\u7535\u8bdd\u3002\u4ed6\u8bf4\uff1a\u201c\u4f60\u6562\u4e0d\u6562\u548c\u6211\u4e3e\u884c\u78b0\u78b0\u8f66\u5927\u6218\u201d\u6211\u51f3\u8c6a\u723d\u7684\u7b54\u5e94\u4e86\uff1a\u201c\u6211\u5f53\u7136\u6562\u201d\uff0c\u5468\u65e5\u4e0b\u5348\u5728xx\u8defxx\u5927\u53a6\u4e3e\u884c\uff0c\u8c01\u4e0d\u6765\u8c01\u5c31\u662f\u6002\u8d27\u3002\ -\u6211\u539f\u672c\u4ee5\u4e3a\u6211\u6050\u5413\u4e86\u4ef5\u6c89\u86cb\uff0c\u4ef5\u6c89\u86cb\u5e94\u8be5\u8eb2\u5728\u5bb6\uff0c\u4e0d\u6562\u627e\u6211\uff0c\u53ef\u6b63\u5f53\u8fd9\u65f6\uff0c\u6211\u542c\u89c1\u7acb\u97f3\u4e50\u58f0\uff0c\u539f\u6765\u662f\u6211\u624b\u673a\u54cd\u4e86\uff0c\u4e00\u770b\uff0c\u7adf\u7136\u662f\u4ef5\u6c89\u86cb\u6253\u6765\u7684\u7535\u8bdd\uff0c\u4ed6\u8fd8\u771f\u6709\u52c7\u6c14\uff0c\u6211\u63a5\u901a\u4e86\u7535\u8bdd\uff0c\u542c\u9053\u7535\u8bdd\u90a3\u5934\u9a82\u9053\uff1a\u201c\u5c0f\u5e9f\u7269\uff0c\u4f60\u600e\u4e48\u4e48\u8fd8\u4e0d\u6765\uff0c\u518d\u4e0d\u6765\u4f60\u5988\u7684\u6ccc\u5c3f\u7cfb\u7edf\u5c31\u88ab\u6211\u641e\u574f\u4e86\u3002\u201d\u6211\u542c\u5230\u4ed6\u5bf9\u6211\u7684\u6bd2\u9a82\u4e4b\u540e\uff0c\u6211\u56de\u9a82\u9053\uff1a\u201c\u6211\u8981\u628a\u4f60\u6302\u5230\u540c\u6027\u604b\u7f51\u7ad9\u4e0a\uff0c\u5e2e\u4f60\u7092\u4f5c\u4e00\u756a\uff0c\u4f60\u8bf4\u597d\u4e0d\u597d\u554a\u3002\u201d\ -\u4ed6\u5413\u5f97\u6ca1\u518d\u56de\u5e94\u6211\uff0c\u53ef\u662f\u5230\u4e86\u5468\u65e5\uff0c\u4ef5\u6c89\u86cb\u7adf\u7136\u53c8\u7ed9\u6211\u6253\u7535\u8bdd\u4e86\uff0c\u4ed6\u8fd8\u771f\u8981\u548c\u6211\u4e3e\u884c\u78b0\u78b0\u8f66\u5927\u6218\uff0c\u4e8e\u662f\u6211\u6309\u7167\u7ea6\u5b9a\uff0c\u5230\u8fbe\u4e86xx\u5927\u53a6\uff0c\u53ef\u4ed6\u5df2\u7ecf\u7b49\u6211\u5f88\u4e45\u4e86\u3002\ -\u7b2c\u4e00\u56de\u5408\uff0c\u6211\u5360\u4eca\u4e0a\u98ce\uff0c\u4ed6\u6bd4\u4e0d\u8fc7\u6211\uff0c\u5230\u4e86\u7b2c\u516d\u56de\u5408\uff0c\u4ed6\u5c31\u4e3b\u52a8\u8ba4\u8f93\u4e86\u3002\ -\u7b2c\u4e8c\u5c40\uff0c\u4ed6\u5f00\u59cb\u5360\u4e0a\u98ce\uff0c\u6211\u4e5f\u4e0d\u7518\u52bf\u5f31\uff0c\u6211\u4eec\u50f5\u6301\u4e86\u4e00\u767e\u591a\u4e2a\u56de\u5408\uff0c\u6211\u56e0\u4e3a\u8f7b\u654c\uff0c\u88ab\u4ed6\u51fb\u8d25\u4e86\u3002\ -\u4ece\u90a3\u65f6\u5f00\u59cb\uff0c\u6211\u5c31\u4e0d\u8f7b\u654c\u4e86\uff0c\u6211\u8ba4\u771f\u7814\u7a76\u4ed6\u7684\u5957\u8def\uff0c\u4e8e\u662f\u6211\u603b\u7ed3\u51fa\u4e86\u4e00\u5957\u79cd\u65b9\u6848\u3002\ -\u7b2c\u4e8c\u5929\uff0c\u6211\u4eec\u4e3e\u884c\u7b2c\u4e09\u5c40\uff0c\u4ed6\u4f7f\u7528\u7956\u4f20\u65b9\u6848\uff0c\u5bf9\u6211\u53d1\u52a8\u731b\u70c8\u7684\u653b\u51fb\uff0c\u6211\u4eec\u52bf\u5747\u529b\u654c\uff0c\u5e73\u5206\u79cb\u8272\uff0c\u6211\u4eec\u6bd4\u4e863\u4e2a\u591a\u5c0f\u65f6\uff0c\u4e5f\u6ca1\u5206\u51fa\u80dc\u8d1f\u3002\ -\u540e\u6765\uff0c\u4ed6\u4e0d\u77e5\u4e0d\u89c9\u7684\u7761\u7740\u4e86\uff0c\u6211\u8d81\u7740\u8fd9\u4e2a\u597d\u673a\u4f1a\uff0c\u4e00\u8bb0\u51cc\u8f66\u6f02\u79fb\uff0c\u4e00\u98de\u51b2\u5929\uff0c\u6253\u7684\u4ed6\u4e0d\u6562\u8fd8\u624b\uff0c\u5bf9\u4ed6\u7684\u6253\u51fb\u6bd4\u5c60\u6740\u4eb2\u5a18\u8fd8\u5927\u3002\ -A1A0 \u3001 \u3002 \u30fb \u02c9 \u02c7 \u00a8 \u3003 \u3005 \u2015 \uff5e \u2016 \u2026 \u2018 \u2019\ -A1B0 \u201c \u201d \u3014 \u3015 \u3008 \u3009 \u300a \u300b \u300c \u300d \u300e \u300f \u3016 \u3017 \u3010 \u3011\ -A1C0 \u00b1 \u00d7 \u00f7 \u2236 \u2227 \u2228 \u2211 \u220f \u222a \u2229 \u2208 \u2237 \u221a \u22a5 \u2225 \u2220\ -A1D0 \u2312 \u2299 \u222b \u222e \u2261 \u224c \u2248 \u223d \u221d \u2260 \u226e \u226f \u2264 \u2265 \u221e \u2235\ -A1E0 \u2234 \u2642 \u2640 \u00b0 \u2032 \u2033 \u2103 \uff04 \u00a4 \uffe0 \uffe1 \u2030 \u00a7 \u2116 \u2606 \u2605\ -A1F0 \u25cb \u25cf \u25ce \u25c7 \u25c6 \u25a1 \u25a0 \u25b3 \u25b2 \u203b \u2192 \u2190 \u2191 \u2193 \u3013 \ -\u7b2c02\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A2A0 \ -A2B0 \u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496\ -A2C0 \u2497 \u2498 \u2499 \u249a \u249b \u2474 \u2475 \u2476 \u2477 \u2478 \u2479 \u247a \u247b \u247c \u247d \u247e\ -A2D0 \u247f \u2480 \u2481 \u2482 \u2483 \u2484 \u2485 \u2486 \u2487 \u2460 \u2461 \u2462 \u2463 \u2464 \u2465 \u2466\ -A2E0 \u2467 \u2468 \u2469 \u3220 \u3221 \u3222 \u3223 \u3224 \u3225 \u3226 \u3227 \u3228 \u3229 \ -A2F0 \u2160 \u2161 \u2162 \u2163 \u2164 \u2165 \u2166 \u2167 \u2168 \u2169 \u216a \u216b \ -\u7b2c03\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A3A0 \uff01 \uff02 \uff03 \uffe5 \uff05 \uff06 \uff07 \uff08 \uff09 \uff0a \uff0b \uff0c \uff0d \uff0e \uff0f\ -A3B0 \uff10 \uff11 \uff12 \uff13 \uff14 \uff15 \uff16 \uff17 \uff18 \uff19 \uff1a \uff1b \uff1c \uff1d \uff1e \uff1f\ -A3C0 \uff20 \uff21 \uff22 \uff23 \uff24 \uff25 \uff26 \uff27 \uff28 \uff29 \uff2a \uff2b \uff2c \uff2d \uff2e \uff2f\ -A3D0 \uff30 \uff31 \uff32 \uff33 \uff34 \uff35 \uff36 \uff37 \uff38 \uff39 \uff3a \uff3b \uff3c \uff3d \uff3e \uff3f\ -A3E0 \uff40 \uff41 \uff42 \uff43 \uff44 \uff45 \uff46 \uff47 \uff48 \uff49 \uff4a \uff4b \uff4c \uff4d \uff4e \uff4f\ -A3F0 \uff50 \uff51 \uff52 \uff53 \uff54 \uff55 \uff56 \uff57 \uff58 \uff59 \uff5a \uff5b \uff5c \uff5d \uffe3 \ -\u7b2c04\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A4A0 \u3041 \u3042 \u3043 \u3044 \u3045 \u3046 \u3047 \u3048 \u3049 \u304a \u304b \u304c \u304d \u304e \u304f\ -A4B0 \u3050 \u3051 \u3052 \u3053 \u3054 \u3055 \u3056 \u3057 \u3058 \u3059 \u305a \u305b \u305c \u305d \u305e \u305f\ -A4C0 \u3060 \u3061 \u3062 \u3063 \u3064 \u3065 \u3066 \u3067 \u3068 \u3069 \u306a \u306b \u306c \u306d \u306e \u306f\ -A4D0 \u3070 \u3071 \u3072 \u3073 \u3074 \u3075 \u3076 \u3077 \u3078 \u3079 \u307a \u307b \u307c \u307d \u307e \u307f\ -A4E0 \u3080 \u3081 \u3082 \u3083 \u3084 \u3085 \u3086 \u3087 \u3088 \u3089 \u308a \u308b \u308c \u308d \u308e \u308f\ -A4F0 \u3090 \u3091 \u3092 \u3093 \ -\u7b2c05\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A5A0 \u30a1 \u30a2 \u30a3 \u30a4 \u30a5 \u30a6 \u30a7 \u30a8 \u30a9 \u30aa \u30ab \u30ac \u30ad \u30ae \u30af\ -A5B0 \u30b0 \u30b1 \u30b2 \u30b3 \u30b4 \u30b5 \u30b6 \u30b7 \u30b8 \u30b9 \u30ba \u30bb \u30bc \u30bd \u30be \u30bf\ -A5C0 \u30c0 \u30c1 \u30c2 \u30c3 \u30c4 \u30c5 \u30c6 \u30c7 \u30c8 \u30c9 \u30ca \u30cb \u30cc \u30cd \u30ce \u30cf\ -A5D0 \u30d0 \u30d1 \u30d2 \u30d3 \u30d4 \u30d5 \u30d6 \u30d7 \u30d8 \u30d9 \u30da \u30db \u30dc \u30dd \u30de \u30df\ -A5E0 \u30e0 \u30e1 \u30e2 \u30e3 \u30e4 \u30e5 \u30e6 \u30e7 \u30e8 \u30e9 \u30ea \u30eb \u30ec \u30ed \u30ee \u30ef\ -A5F0 \u30f0 \u30f1 \u30f2 \u30f3 \u30f4 \u30f5 \u30f6 \ -\u7b2c06\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A6A0 \u0391 \u0392 \u0393 \u0394 \u0395 \u0396 \u0397 \u0398 \u0399 \u039a \u039b \u039c \u039d \u039e \u039f\ -A6B0 \u03a0 \u03a1 \u03a3 \u03a4 \u03a5 \u03a6 \u03a7 \u03a8 \u03a9 \ -A6C0 \u03b1 \u03b2 \u03b3 \u03b4 \u03b5 \u03b6 \u03b7 \u03b8 \u03b9 \u03ba \u03bb \u03bc \u03bd \u03be \u03bf\ -A6D0 \u03c0 \u03c1 \u03c3 \u03c4 \u03c5 \u03c6 \u03c7 \u03c8 \u03c9 \ -A6E0 \ -A6F0 \ -\u7b2c07\u533a +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\ -A7A0 \u0410 \u0411 \u0412 \u0413 \u0414 \u0415 \u0401 \u0416 \u0417 \u0418 \u0419 \u041a \u041b \u041c \u041d\ -A7B0 \u041e \u041f \u0420 \u0421 \u0422 \u0423 \u0424 \u0425 \u0426 \u0427 \u0428 \u0429 \u042a \u042b \u042c \u042d\ -A7C0 \u042e \u042f \ -A7D0 \u0430 \u0431 \u0432 \u0433 \u0434 \u0435 \u0451 \u0436 \u0437 \u0438 \u0439 \u043a \u043b \u043c \u043d\ -A7E0 \u043e \u043f \u0440 \u0441 \u0442 \u0443 \u0444 \u0445 \u0446 \u0447 \u0448 \u0449 \u044a \u044b \u044c \u044d\ -A7F0 \u044e \u044f \ -" +#define _big_test_string_utf8 "The quick brown fox jumps over the lazy dog.0123456789你好,世界!" constexpr const char big_test_string_utf8[] = _big_test_string_utf8; diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index 963d9691..0afe3497 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -32,13 +32,11 @@ preferred. For all names and aliases, note where it comes from. xxx is the name as used in the C code (lowercase). xxx_index provides a unique index for the encoding. It will be used in a enum for fast - access to the encoding. + access to the encoding. We removed all '-' and '_' of encoding's name. And + turn their names to upper case. */ -/* The list of all system independent user-visible encodings. */ - -// Notice: We removed all '-' and '_' of encoding's name. - +// ASCII DEFENCODING(("USASCII", /* IANA */ "ASCII", /* IANA, JDK 1.1 */ "ISO646US", /* IANA */ @@ -48,127 +46,105 @@ DEFENCODING(("USASCII", /* IANA */ "ANSIX3.41986", /* IANA */ "IBM367", /* IANA */ "US", /* IANA */ - "csASCII", /* IANA */ + "CSASCII", /* IANA */ + "367", /* IANA */ + "CP367", /* IANA */ "646", /* Solaris */ ), - ascii, - ASCII, - {ascii_mbtowc, nullptr}, {ascii_wctomb, nullptr}) - + ascii, ASCII, {ascii_mbtowc, nullptr}, {ascii_wctomb, nullptr}) DEFCODEPAGE(367, ascii) - -/* General multi-byte encodings */ -DEFENCODING(("UTF8", /* IANA, RFC 2279 */ +// General multi-byte encodings +// UTF-8, the MOST common encoding. +DEFENCODING(("UTF8", /* IANA, RFC 2279 */ + "U8", /* cppp-reiconv */ + "CP65001", /* IANA */ + "65001", /* IANA */ ), - utf8, - UTF8, - {utf8_mbtowc, nullptr}, {utf8_wctomb, nullptr}) - + utf8, UTF8, {utf8_mbtowc, nullptr}, {utf8_wctomb, nullptr}) DEFCODEPAGE(65001, utf8) DEFENCODING(("UCS2", /* glibc */ "ISO10646UCS2", /* IANA */ - "csUnicode", /* IANA */ + "CSUNICODE", /* IANA */ ), - ucs2, - UCS2, - {ucs2_mbtowc, nullptr}, {ucs2_wctomb, nullptr}) - + ucs2, UCS2, {ucs2_mbtowc, nullptr}, {ucs2_wctomb, nullptr}) DEFENCODING(("UCS2BE", /* glibc */ "UNICODEBIG", /* glibc */ "UNICODE11", /* IANA */ - "csUnicode11", /* IANA */ + "CSUNICODE11", /* IANA */ + "CP1201", /* Windows */ + "1201" /* Windows */ ), - ucs2be, - UCS2BE, - {ucs2be_mbtowc, nullptr}, {ucs2be_wctomb, nullptr}) - + ucs2be, UCS2BE, {ucs2be_mbtowc, nullptr}, {ucs2be_wctomb, nullptr}) DEFCODEPAGE(1201, ucs2be) DEFENCODING(("UCS2LE", /* glibc */ "UNICODELITTLE", /* glibc */ + "CP1200", /* Windows */ + "1200", /* Windows */ ), - ucs2le, - UCS2LE, - {ucs2le_mbtowc, nullptr}, {ucs2le_wctomb, nullptr}) - + ucs2le, UCS2LE, {ucs2le_mbtowc, nullptr}, {ucs2le_wctomb, nullptr}) DEFCODEPAGE(1200, ucs2le) DEFENCODING(("UCS4", /* glibc */ "ISO10646UCS4", /* IANA */ - "csUCS4", /* IANA */ + "CSUCS4", /* IANA */ ), - ucs4, - UCS4, - {ucs4_mbtowc, nullptr}, {ucs4_wctomb, nullptr}) - + ucs4, UCS4, {ucs4_mbtowc, nullptr}, {ucs4_wctomb, nullptr}) -DEFENCODING(("UCS4BE", /* glibc */ +DEFENCODING(("UCS4BE", /* glibc */ + "12001", /* Windows */ + "CP12001", /* Windows */ ), - ucs4be, - UCS4BE, - {ucs4be_mbtowc, nullptr}, {ucs4be_wctomb, nullptr}) - + ucs4be, UCS4BE, {ucs4be_mbtowc, nullptr}, {ucs4be_wctomb, nullptr}) DEFCODEPAGE(12001, ucs4be) -DEFENCODING(("UCS4LE", /* glibc */ +DEFENCODING(("UCS4LE", /* glibc */ + "CP12000", /* Windows */ + "12000", /* Windows */ ), - ucs4le, - UCS4LE, - {ucs4le_mbtowc, nullptr}, {ucs4le_wctomb, nullptr}) - + ucs4le, UCS4LE, {ucs4le_mbtowc, nullptr}, {ucs4le_wctomb, nullptr}) DEFCODEPAGE(12000, ucs4le) DEFENCODING(("UTF16", /* IANA, RFC 2781 */ + "U16", /* cppp-reiconv */ ), - utf16, - UTF16, - {utf16_mbtowc, nullptr}, {utf16_wctomb, nullptr}) + utf16, UTF16, {utf16_mbtowc, nullptr}, {utf16_wctomb, nullptr}) DEFENCODING(("UTF16BE", /* IANA, RFC 2781 */ + "U16BE", /* cppp-reiconv */ ), - utf16be, - UTF16BE, - {utf16be_mbtowc, nullptr}, {utf16be_wctomb, nullptr}) + utf16be, UTF16BE, {utf16be_mbtowc, nullptr}, {utf16be_wctomb, nullptr}) DEFENCODING(("UTF16LE", /* IANA, RFC 2781 */ + "U16LE", /* cppp-reiconv */ ), - utf16le, - UTF16LE, - {utf16le_mbtowc, nullptr}, {utf16le_wctomb, nullptr}) + utf16le, UTF16LE, {utf16le_mbtowc, nullptr}, {utf16le_wctomb, nullptr}) DEFENCODING(("UTF32", /* IANA, Unicode 3.1 */ + "U32", /* cppp-reiconv */ ), - utf32, - UTF32, - {utf32_mbtowc, nullptr}, {utf32_wctomb, nullptr}) + utf32, UTF32, {utf32_mbtowc, nullptr}, {utf32_wctomb, nullptr}) DEFENCODING(("UTF32BE", /* IANA, Unicode 3.1 */ + "U32BE", /* cppp-reiconv */ ), - utf32be, - UTF32BE, - {utf32be_mbtowc, nullptr}, {utf32be_wctomb, nullptr}) - -DEFCODEPAGE(12001, utf32be) + utf32be, UTF32BE, {utf32be_mbtowc, nullptr}, {utf32be_wctomb, nullptr}) DEFENCODING(("UTF32LE", /* IANA, Unicode 3.1 */ + "U32LE", /* cppp-reiconv */ ), - utf32le, - UTF32LE, - {utf32le_mbtowc, nullptr}, {utf32le_wctomb, nullptr}) - -DEFCODEPAGE(12000, utf32le) - + utf32le, UTF32LE, {utf32le_mbtowc, nullptr}, {utf32le_wctomb, nullptr}) DEFENCODING(("UTF7", /* IANA, RFC 2152 */ "UNICODE11UTF7", /* IANA, RFC 1642 */ - "csUnicode11UTF7", /* IANA */ + "CSUNICODE11UTF7", /* IANA */ + "U7", /* cppp-reiconv */ + "CP65000", /* Windows */ + "65000", /* Windows */ ), - utf7, - UTF7, - {utf7_mbtowc, nullptr}, {utf7_wctomb, utf7_reset}) - + utf7, UTF7, {utf7_mbtowc, nullptr}, {utf7_wctomb, utf7_reset}) DEFCODEPAGE(65000, utf7) // UCS-2/4-INTERNAL/SWAPPED are not standard encodings, but are used by @@ -176,66 +152,240 @@ DEFCODEPAGE(65000, utf7) DEFENCODING(("UCS2INTERNAL", /* libiconv */ ), - ucs2internal, - UCS2_INTERNAL, - {ucs2internal_mbtowc, nullptr}, {ucs2internal_wctomb, nullptr}) + ucs2internal, UCS2_INTERNAL, {ucs2internal_mbtowc, nullptr}, {ucs2internal_wctomb, nullptr}) DEFENCODING(("UCS2SWAPPED", /* libiconv */ ), - ucs2swapped, - UCS2_SWAPPED, - {ucs2swapped_mbtowc, nullptr}, {ucs2swapped_wctomb, nullptr}) + ucs2swapped, UCS2_SWAPPED, {ucs2swapped_mbtowc, nullptr}, {ucs2swapped_wctomb, nullptr}) DEFENCODING(("UCS4INTERNAL", /* libiconv */ ), - ucs4internal, - UCS4_INTERNAL, - {ucs4internal_mbtowc, nullptr}, {ucs4internal_wctomb, nullptr}) + ucs4internal, UCS4_INTERNAL, {ucs4internal_mbtowc, nullptr}, {ucs4internal_wctomb, nullptr}) DEFENCODING(("UCS4SWAPPED", /* libiconv */ ), - ucs4swapped, - UCS4_SWAPPED, - {ucs4swapped_mbtowc, nullptr}, {ucs4swapped_wctomb, nullptr}) + ucs4swapped, UCS4_SWAPPED, {ucs4swapped_mbtowc, nullptr}, {ucs4swapped_wctomb, nullptr}) + +DEFENCODING(("C99", ), c99, C99, {c99_mbtowc, nullptr}, {c99_wctomb, nullptr}) -DEFENCODING(("C99", ), - c99, - C99, - {c99_mbtowc, nullptr}, {c99_wctomb, nullptr}) +DEFENCODING(("JAVA", ), java, JAVA, {java_mbtowc, nullptr}, {java_wctomb, nullptr}) + +// CJK encodings +DEFENCODING(("EUCJP", /* IANA, glibc, HP-UX, IRIX, OSF/1, Solaris */ + "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE", /* IANA */ + "CSEUCPKDFMTJAPANESE", /* IANA */ + "IBMEUCJP", /* AIX */ + "SDECKANJI", /* OSF/1 */ + "CP51932", /* Windows */ + "51932", /* Windows */ + ), + euc_jp, EUC_JP, {euc_jp_mbtowc, nullptr}, {euc_jp_wctomb, nullptr}) +DEFCODEPAGE(51932, euc_jp) -DEFENCODING(("JAVA", ), - java, - JAVA, - {java_mbtowc, nullptr}, {java_wctomb, nullptr}) +DEFENCODING(("SHIFTJIS", /* IANA, glibc */ + "SJIS", /* JDK 1.1, HP-UX, OSF/1 */ + "MSKANJI", /* IANA */ + "CSSHIFTJIS", /* IANA */ + "PCK", /* Solaris */ + ), + sjis, SHIFT_JIS, {sjis_mbtowc, nullptr}, {sjis_wctomb, nullptr}) +DEFENCODING(("IBM932", /* AIX */ + "CP932", /* Windows */ + "932", /* Windows */ + ), + cp932, IBM932, {cp932_mbtowc, nullptr}, {cp932_wctomb, nullptr}) +DEFCODEPAGE(932, cp932) -/* Standard 8-bit encodings */ +DEFENCODING(("ISO2022JP", /* IANA, RFC 1468, JDK 1.1 */ + "CSISO2022JP", /* IANA */ + ), + iso2022_jp, ISO2022_JP, {iso2022_jp_mbtowc, nullptr}, {iso2022_jp_wctomb, iso2022_jp_reset}) + +DEFENCODING(("ISO2022JP1", /* RFC 2237 */ + ), + iso2022_jp1, ISO2022_JP1, {iso2022_jp1_mbtowc, nullptr}, {iso2022_jp1_wctomb, iso2022_jp1_reset}) + +DEFENCODING(("ISO2022JP2", /* IANA, RFC 1554 */ + "CSISO2022JP2", /* IANA */ + ), + iso2022_jp2, ISO2022_JP2, {iso2022_jp2_mbtowc, nullptr}, {iso2022_jp2_wctomb, iso2022_jp2_reset}) + +DEFENCODING(("ISO2022JPMS", /* (Unknown) */ + "CP50221", /* Windows */ + "50221", /* Windows */ + ), + iso2022_jpms, ISO2022_JPMS, {iso2022_jpms_mbtowc, nullptr}, {iso2022_jpms_wctomb, iso2022_jpms_reset}) +DEFCODEPAGE(50221, iso2022_jpms) + +DEFENCODING(("EUCCN", /* glibc, IRIX */ + "GB2312", /* IANA */ + "CNGB", /* RFC 1922 */ + "CSGB2312", /* IANA */ + "CHINESE", /* IANA */ + "IBMEUCCN", /* AIX */ + "HP15CN", /* HP-UX */ + "DECHANZI", /* OSF/1 */ + ), + euc_cn, GB2312, {euc_cn_mbtowc, nullptr}, {euc_cn_wctomb, nullptr}) +DEFCODEPAGE(51936, euc_cn) + +DEFENCODING(("GBK", /* IANA, JDK 1.1 */ + ), + ces_gbk, GBK, {ces_gbk_mbtowc, nullptr}, {ces_gbk_wctomb, nullptr}) + +DEFENCODING(("MS936", /* IANA */ + "WINDOWS936", /* IANA */ + "CP936", /* Windows */ + "936", /* Windows */ + ), + cp936, + CP936, // Chinese developer use CP936 more often than MS936 + {cp936_mbtowc, nullptr}, {cp936_wctomb, nullptr}) +DEFCODEPAGE(936, cp936) + +DEFENCODING(("GB18030:2005", /* libiconv */ + ), + gb18030_2005, GB18030_2005, {gb18030_2005_mbtowc, nullptr}, {gb18030_2005_wctomb, nullptr}) + +DEFENCODING(("GB18030", /* IANA, glibc */ + "CSGB18030", /* IANA */ + "GB18030:2022", /* libiconv */ + "CP54936", /* Windows */ + "54936", /* Windows */ + ), + gb18030_2022, GB18030_2022, {gb18030_2022_mbtowc, nullptr}, {gb18030_2022_wctomb, nullptr}) +DEFINDEX(GB18030, GB18030_2022) +DEFCODEPAGE(54936, gb18030_2022) + +DEFENCODING(("ISO2022CN", /* IANA, RFC 1922, JDK 1.1 */ + "CSISO2022CN", /* IANA */ + ), + iso2022_cn, ISO2022_CN, {iso2022_cn_mbtowc, nullptr}, {iso2022_cn_wctomb, iso2022_cn_reset}) + +DEFENCODING(("ISO2022CNEXT", /* IANA, RFC 1922 */ + ), + iso2022_cn_ext, ISO2022_CN_EXT, {iso2022_cn_ext_mbtowc, nullptr}, + {iso2022_cn_ext_wctomb, iso2022_cn_ext_reset}) + +DEFENCODING(("HZ", /* RFC 1843 */ + "HZGB2312", /* IANA, RFC 1842 */ + "CP52936", /* Windows */ + "52936", /* Windows */ + ), + hz, HZ, {hz_mbtowc, nullptr}, {hz_wctomb, hz_reset}) +DEFCODEPAGE(52936, hz) + +DEFENCODING(("EUCTW", /* glibc, HPUX, IRIX, OSF/1 */ + "CSEUCTW", "IBMEUCTW", /* AIX */ + "CNS11643", /* Solaris */ + "CP51950", /* Windows */ + "51950", /* Windows */ + ), + euc_tw, EUC_TW, {euc_tw_mbtowc, nullptr}, {euc_tw_wctomb, nullptr}) +DEFCODEPAGE(51950, euc_tw) + +DEFENCODING(("BIG5", /* IANA, JDK 1.1, glibc */ + "BIGFIVE", /* glibc */ + "CNBIG5", /* RFC 1922 */ + "CSBIG5", /* IANA */ + ), + ces_big5, BIG5, {ces_big5_mbtowc, nullptr}, {ces_big5_wctomb, nullptr}) + +DEFENCODING(("WINDOWS950", /* JDK 1.1 */ + "CP950", /* Windows */ + "950", /* Windows */ + ), + cp950, WINDOWS950, {cp950_mbtowc, nullptr}, {cp950_wctomb, nullptr}) +DEFCODEPAGE(950, cp950) + +DEFENCODING(("BIG5HKSCS:1999", /* libiconv */ + ), + big5hkscs1999, BIG5HKSCS_1999, {big5hkscs1999_mbtowc, big5hkscs1999_flushwc}, + {big5hkscs1999_wctomb, big5hkscs1999_reset}) + +DEFENCODING(("BIG5HKSCS:2001", /* libiconv */), big5hkscs2001, BIG5HKSCS_2001, + {big5hkscs2001_mbtowc, big5hkscs2001_flushwc}, {big5hkscs2001_wctomb, big5hkscs2001_reset}) + +DEFENCODING(("BIG5HKSCS:2004", /* libiconv */), big5hkscs2004, BIG5HKSCS_2004, + {big5hkscs2004_mbtowc, big5hkscs2004_flushwc}, {big5hkscs2004_wctomb, big5hkscs2004_reset}) + +DEFENCODING(("BIG5HKSCS", /* IANA, glibc */ + "BIG5HKSCS:2008", /* libiconv */ + ), + big5hkscs2008, BIG5HKSCS_2008, {big5hkscs2008_mbtowc, big5hkscs2008_flushwc}, + {big5hkscs2008_wctomb, big5hkscs2008_reset}) +DEFINDEX(BIG5HKSCS, BIG5HKSCS_2008) + +DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ + "CSEUCKR", /* IANA */ + "IBMEUCKR", /* AIX */ + "DECKOREAN", /* OSF/1 */ + "5601", /* Solaris */ + "CP51949", /* Windows */ + "51949", /* Windows */ + ), + euc_kr, EUC_KR, {euc_kr_mbtowc, nullptr}, {euc_kr_wctomb, nullptr}) +DEFCODEPAGE(51949, euc_kr) + +DEFENCODING(("UHC", /* glibc */ + "CP949", /* Windows */ + "949", /* Windows */ + ), + cp949, UHC, {cp949_mbtowc, nullptr}, {cp949_wctomb, nullptr}) +DEFCODEPAGE(949, cp949) + +DEFENCODING(("JOHAB", /* glibc */ + "KOKR.JOHAP92", /* Solaris */ + "CP1361", /* Windows */ + "1361", /* Windows */ + ), + johab, JOHAB, {johab_mbtowc, nullptr}, {johab_wctomb, nullptr}) +DEFCODEPAGE(1361, johab) + +DEFENCODING(("ISO2022KR", /* IANA, RFC 1557, JDK 1.1 */ + "CSISO2022KR", /* IANA */ + "CP50225", /* Windows */ + "50225", /* Windows */ + ), + iso2022_kr, ISO2022_KR, {iso2022_kr_mbtowc, nullptr}, {iso2022_kr_wctomb, iso2022_kr_reset}) +DEFCODEPAGE(50225, iso2022_kr) + +DEFENCODING(("DECKANJI", /* OSF/1 */ + ), + dec_kanji, DEC_KANJI, {dec_kanji_mbtowc, nullptr}, {dec_kanji_wctomb, nullptr}) + +DEFENCODING(("DECHANYU", /* OSF/1 */ + ), + dec_hanyu, DEC_HANYU, {dec_hanyu_mbtowc, nullptr}, {dec_hanyu_wctomb, nullptr}) + +// Standard 8-bit encodings DEFENCODING(("ISO88591", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ "ISO88591:1987", /* IANA */ "ISOIR100", /* IANA */ "IBM819", /* IANA */ "LATIN1", /* IANA */ "L1", /* IANA */ - "csISOLatin1", /* IANA */ + "CSISOLATIN1", /* IANA */ + "CP819", /* IANA */ + "819", /* Windows */ + "CP28591", /* Windows */ + "28591", /* Windows */ ), - iso8859_1, - ISO8859_1, - {iso8859_1_mbtowc, nullptr}, {iso8859_1_wctomb, nullptr}) - + iso8859_1, ISO8859_1, {iso8859_1_mbtowc, nullptr}, {iso8859_1_wctomb, nullptr}) DEFCODEPAGE(819, iso8859_1) DEFCODEPAGE(28591, iso8859_1) -DEFENCODING(("ISO88592", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ +DEFENCODING(("ISO88592", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ "ISO88592:1987", /* IANA */ - "ISOIR101", /* IANA */ - "LATIN2", /* IANA */ - "L2", /* IANA */ - "csISOLatin2", /* IANA */ - ), - iso8859_2, - ISO8859_2, - {iso8859_2_mbtowc, nullptr}, {iso8859_2_wctomb, nullptr}) - + "ISOIR101", /* IANA */ + "LATIN2", /* IANA */ + "L2", /* IANA */ + "CSISOLATIN2", /* IANA */ + "CP28592", /* Windows */ + "28592", /* Windows */ + ), + iso8859_2, ISO8859_2, {iso8859_2_mbtowc, nullptr}, {iso8859_2_wctomb, nullptr}) DEFCODEPAGE(28592, iso8859_2) DEFENCODING(("ISO88593", /* IANA, X11R6.4, glibc, FreeBSD, Solaris */ @@ -243,12 +393,11 @@ DEFENCODING(("ISO88593", /* IANA, X11R6.4, glibc, FreeBSD, Solaris */ "ISOIR109", /* IANA */ "LATIN3", /* IANA */ "L3", /* IANA */ - "csISOLatin3", /* IANA */ + "CSISOLATIN3", /* IANA */ + "CP28593", /* Windows */ + "28593", /* Windows */ ), - iso8859_3, - ISO8859_3, - {iso8859_3_mbtowc, nullptr}, {iso8859_3_wctomb, nullptr}) - + iso8859_3, ISO8859_3, {iso8859_3_mbtowc, nullptr}, {iso8859_3_wctomb, nullptr}) DEFCODEPAGE(28593, iso8859_3) DEFENCODING(("ISO88594", /* IANA, X11R6.4, glibc, FreeBSD, OSF/1, Solaris */ @@ -256,24 +405,22 @@ DEFENCODING(("ISO88594", /* IANA, X11R6.4, glibc, FreeBSD, OSF/1, Solaris * "ISOIR110", /* IANA */ "LATIN4", /* IANA */ "L4", /* IANA */ - "csISOLatin4", /* IANA */ + "CSISOLATIN4", /* IANA */ + "CP28594", /* Windows */ + "28594", /* Windows */ ), - iso8859_4, - ISO8859_4, - {iso8859_4_mbtowc, nullptr}, {iso8859_4_wctomb, nullptr}) - + iso8859_4, ISO8859_4, {iso8859_4_mbtowc, nullptr}, {iso8859_4_wctomb, nullptr}) DEFCODEPAGE(28594, iso8859_4) DEFENCODING(("ISO88595", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ "ISO88595:1988", /* IANA */ "ISOIR144", /* IANA */ "CYRILLIC", /* IANA */ - "csISOLatinCyrillic", /* IANA */ + "CSISOLATINCYRILLIC", /* IANA */ + "CP28595", /* Windows */ + "28595", /* Windows */ ), - iso8859_5, - ISO8859_5, - {iso8859_5_mbtowc, nullptr}, {iso8859_5_wctomb, nullptr}) - + iso8859_5, ISO8859_5, {iso8859_5_mbtowc, nullptr}, {iso8859_5_wctomb, nullptr}) DEFCODEPAGE(28595, iso8859_5) DEFENCODING(("ISO88596", /* IANA, X11R6.4, glibc, FreeBSD, AIX, Solaris */ @@ -282,40 +429,39 @@ DEFENCODING(("ISO88596", /* IANA, X11R6.4, glibc, FreeBSD, AIX, Solaris "ECMA114", /* IANA */ "ASMO708", /* IANA */ "ARABIC", /* IANA */ - "csISOLatinArabic", /* IANA */ + "CSISOLATINARABIC", /* IANA */ + "CP28596", /* Windows */ + "28596", /* Windows */ ), - iso8859_6, - ISO8859_6, - {iso8859_6_mbtowc, nullptr}, {iso8859_6_wctomb, nullptr}) - + iso8859_6, ISO8859_6, {iso8859_6_mbtowc, nullptr}, {iso8859_6_wctomb, nullptr}) DEFCODEPAGE(28596, iso8859_6) -DEFENCODING(("ISO88597", /* IANA, RFC 1947, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ - "ISO88597:1987", /* IANA */ - "ISO88597:2003", +DEFENCODING(("ISO88597", /* IANA, RFC 1947, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ + "ISO88597:1987", /* IANA */ + "ISO88597:2003", /* cppp-reiconv */ "ISOIR126", /* IANA */ "ECMA118", /* IANA */ - "ELOT928", /* IANA */ + "ELOT928", /* IANA */ "GREEK8", /* IANA */ "GREEK", /* IANA */ - "csISOLatinGreek", /* IANA */ + "CSISOLATINGREEK", /* IANA */ + "CP28597", /* Windows */ + "28597", /* Windows */ ), - iso8859_7, - ISO8859_7, - {iso8859_7_mbtowc, nullptr}, {iso8859_7_wctomb, nullptr}) - + iso8859_7, ISO8859_7, {iso8859_7_mbtowc, nullptr}, {iso8859_7_wctomb, nullptr}) DEFCODEPAGE(28597, iso8859_7) DEFENCODING(("ISO88598", /* IANA, X11R6.4, glibc, FreeBSD, AIX, OSF/1, Solaris */ "ISO88598:1988", /* IANA */ "ISOIR138", /* IANA */ "HEBREW", /* IANA */ - "csISOLatinHebrew", /* IANA */ + "CSISOLATINHEBREW", /* IANA */ + "CP28598", /* Windows */ + "28598", /* Windows */ + "CP38598", /* Windows */ + "38598", /* Windows */ ), - iso8859_8, - ISO8859_8, - {iso8859_8_mbtowc, nullptr}, {iso8859_8_wctomb, nullptr}) - + iso8859_8, ISO8859_8, {iso8859_8_mbtowc, nullptr}, {iso8859_8_wctomb, nullptr}) DEFCODEPAGE(28598, iso8859_8) DEFCODEPAGE(38598, iso8859_8) @@ -324,41 +470,35 @@ DEFENCODING(("ISO88599", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1 "ISOIR148", /* IANA */ "LATIN5", /* IANA */ "L5", /* IANA */ - "csISOLatin5", /* IANA */ + "CSISOLATIN5", /* IANA */ + "CP28599", /* Windows */ + "28599", /* Windows */ ), - iso8859_9, - ISO8859_9, - {iso8859_9_mbtowc, nullptr}, {iso8859_9_wctomb, nullptr}) - + iso8859_9, ISO8859_9, {iso8859_9_mbtowc, nullptr}, {iso8859_9_wctomb, nullptr}) DEFCODEPAGE(28599, iso8859_9) -DEFENCODING(("ISO885910", /* IANA, X11R6.4, glibc, FreeBSD */ +DEFENCODING(("ISO885910", /* IANA, X11R6.4, glibc, FreeBSD */ "ISO885910:1992", /* IANA */ - "ISOIR157", /* IANA */ - "LATIN6", /* IANA */ - "L6", /* IANA */ - "csISOLatin6", /* IANA */ + "ISOIR157", /* IANA */ + "LATIN6", /* IANA */ + "L6", /* IANA */ + "CSISOLATIN6", /* IANA */ ), - iso8859_10, - ISO8859_10, - {iso8859_10_mbtowc, nullptr}, {iso8859_10_wctomb, nullptr}) + iso8859_10, ISO8859_10, {iso8859_10_mbtowc, nullptr}, {iso8859_10_wctomb, nullptr}) DEFENCODING(("ISO885911", /* glibc, X11R6.7, glibc */ ), - iso8859_11, - ISO8859_11, - {iso8859_11_mbtowc, nullptr}, {iso8859_11_wctomb, nullptr}) + iso8859_11, ISO8859_11, {iso8859_11_mbtowc, nullptr}, {iso8859_11_wctomb, nullptr}) DEFENCODING(("ISO885913", /* IANA, glibc, FreeBSD */ "ISOIR179", /* glibc */ "LATIN7", /* glibc */ "L7", /* glibc */ "IBM921" /* AIX */ + "CP28603", /* Windows */ + "28603", /* Windows */ ), - iso8859_13, - ISO8859_13, - {iso8859_13_mbtowc, nullptr}, {iso8859_13_wctomb, nullptr}) - + iso8859_13, ISO8859_13, {iso8859_13_mbtowc, nullptr}, {iso8859_13_wctomb, nullptr}) DEFCODEPAGE(28603, iso8859_13) DEFENCODING(("ISO885914", /* IANA, glibc, FreeBSD */ @@ -368,19 +508,18 @@ DEFENCODING(("ISO885914", /* IANA, glibc, FreeBSD */ "L8", /* IANA, glibc */ "ISOCELTIC", /* IANA */ ), - iso8859_14, - ISO8859_14, - {iso8859_14_mbtowc, nullptr}, {iso8859_14_wctomb, nullptr}) + iso8859_14, ISO8859_14, {iso8859_14_mbtowc, nullptr}, {iso8859_14_wctomb, nullptr}) DEFENCODING(("ISO885915", /* IANA, glibc, FreeBSD, AIX, OSF/1, Solaris */ "ISO885915:1998", /* glibc */ - "ISOIR203", - "LATIN9", /* IANA */ - ), - iso8859_15, - ISO8859_15, - {iso8859_15_mbtowc, nullptr}, {iso8859_15_wctomb, nullptr}) - + "ISOIR203", /* libiconv */ + "LATIN9", /* IANA */ + "L9", /* cppp-reiconv */ + "CSISO885915" /* IANA */ + "CP28605", /* Windows */ + "28605", /* Windows */ + ), + iso8859_15, ISO8859_15, {iso8859_15_mbtowc, nullptr}, {iso8859_15_wctomb, nullptr}) DEFCODEPAGE(28605, iso8859_15) DEFENCODING(("ISO885916", /* IANA, glibc, FreeBSD */ @@ -388,1479 +527,1112 @@ DEFENCODING(("ISO885916", /* IANA, glibc, FreeBSD */ "ISOIR226", /* IANA */ "LATIN10", /* IANA */ "L10", /* IANA */ + "CSISOLATIN10", /* IANA */ ), - iso8859_16, - ISO8859_16, - {iso8859_16_mbtowc, nullptr}, {iso8859_16_wctomb, nullptr}) + iso8859_16, ISO8859_16, {iso8859_16_mbtowc, nullptr}, {iso8859_16_wctomb, nullptr}) DEFENCODING(("KOI8R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ - "csKOI8R", /* IANA */ + "CSKOI8R", /* IANA */ + "CP20866", /* Windows */ + "20866", /* Windows */ ), - koi8_r, - KOI8_R, - {koi8_r_mbtowc, nullptr}, {koi8_r_wctomb, nullptr}) - + koi8_r, KOI8_R, {koi8_r_mbtowc, nullptr}, {koi8_r_wctomb, nullptr}) DEFCODEPAGE(20866, koi8_r) -DEFENCODING(("KOI8U", /* IANA, RFC 2319 */ +DEFENCODING(("KOI8U", /* IANA, RFC 2319 */ + "CSKOI8U", /* IANA */ ), - koi8_u, - KOI8_U, - {koi8_u_mbtowc, nullptr}, {koi8_u_wctomb, nullptr}) - -DEFENCODING(("KOI8RU", ), - koi8_ru, - KOI8_RU, - {koi8_ru_mbtowc, nullptr}, {koi8_ru_wctomb, nullptr}) + koi8_u, KOI8_U, {koi8_u_mbtowc, nullptr}, {koi8_u_wctomb, nullptr}) +DEFENCODING(("KOI8RU", /* AIX */ + "CSKOI8RU", /* cppp-reiconv */ + "IBM1168", /* AIX */ + "CP21866", /* Windows */ + "21866", /* Windows */ + ), + koi8_ru, KOI8_RU, {koi8_ru_mbtowc, nullptr}, {koi8_ru_wctomb, nullptr}) DEFCODEPAGE(21866, koi8_ru) - -/* Windows 8-bit encodings */ -DEFENCODING(("CP1250", /* JDK 1.1 */ - "csWindows1250", /* IANA */ - "WINDOWS1250", /* IANA */ - "MSEE", ), - cp1250, - MSEE, - {cp1250_mbtowc, nullptr}, {cp1250_wctomb, nullptr}) - +// Windows 8-bit encodings +DEFENCODING(("CP1250", /* JDK 1.1 */ + "CSWINDOWS1250", /* IANA */ + "WINDOWS1250", /* IANA */ + "IBM1250", /* AIX */ + "MSEE", /* Solaris */ + "1250", /* Windows */ + ), + cp1250, MSEE, {cp1250_mbtowc, nullptr}, {cp1250_wctomb, nullptr}) +DEFINDEX(CP1250, MSEE) DEFCODEPAGE(1250, cp1250) -DEFENCODING(("WINDOWS1251", /* IANA */ - "csWindows1251", /* IANA */ - "MSCYRL", - "ANSI1251", /* Solaris */ +DEFENCODING(("WINDOWS1251", /* IANA */ + "CSWINDOWS1251", /* IANA */ + "MSCYRL", /* (Unknown) */ + "ANSI1251", /* Solaris */ + "CP1251", /* Windows */ + "1251", /* Windows */ ), - cp1251, - MSCYRL, - {cp1251_mbtowc, nullptr}, {cp1251_wctomb, nullptr}) - + cp1251, MSCYRL, {cp1251_mbtowc, nullptr}, {cp1251_wctomb, nullptr}) +DEFINDEX(CP1251, MSCYRL) DEFCODEPAGE(1251, cp1251) -DEFENCODING(("WINDOWS1252", /* IANA */ - "csWindows1252", /* IANA */ - "IBM1252", /* AIX */ - "MSANSI", ), - cp1252, - MSANSI, - {cp1252_mbtowc, nullptr}, {cp1252_wctomb, nullptr}) - +DEFENCODING(("WINDOWS1252", /* IANA */ + "CSWINDOWS1252", /* IANA */ + "IBM1252", /* AIX */ + "MSANSI", /* (Unknown) */ + "CP1252", /* Windows */ + "1252", /* Windows */ + ), + cp1252, MSANSI, {cp1252_mbtowc, nullptr}, {cp1252_wctomb, nullptr}) +DEFINDEX(CP1252, MSANSI) DEFCODEPAGE(1252, cp1252) -DEFENCODING(("WINDOWS1253", /* IANA */ - "csWindows1253", /* IANA */ - "MSGREEK", ), - cp1253, - MSGREEK, - {cp1253_mbtowc, nullptr}, {cp1253_wctomb, nullptr}) - +DEFENCODING(("WINDOWS1253", /* IANA */ + "CSWINDOWS1253", /* IANA */ + "MSGREEK", /* (Unknown) */ + "CP1253", /* Windows */ + "1253", /* Windows */ + ), + cp1253, MSGREEK, {cp1253_mbtowc, nullptr}, {cp1253_wctomb, nullptr}) +DEFINDEX(CP1253, MSGREEK) DEFCODEPAGE(1253, cp1253) -DEFENCODING(("WINDOWS1254", /* IANA */ - "csWindows1254", /* IANA */ - "MSTURK", ), - cp1254, - MSTURK, - {cp1254_mbtowc, nullptr}, {cp1254_wctomb, nullptr}) - +DEFENCODING(("WINDOWS1254", /* IANA */ + "CSWINDOWS1254", /* IANA */ + "IBM1254", /* AIX */ + "MSTURK", /* (Unknown) */ + "CP1254", /* Windows */ + "1254", /* Windows */ + ), + cp1254, MSTURK, {cp1254_mbtowc, nullptr}, {cp1254_wctomb, nullptr}) +DEFINDEX(CP1254, MSTURK) DEFCODEPAGE(1254, cp1254) -DEFENCODING(("WINDOWS1255", /* IANA */ - "csWindows1255", /* IANA */ - "MSHEBR", ), - cp1255, - MSHEBR, - {cp1255_mbtowc, cp1255_flushwc}, {cp1255_wctomb, nullptr}) - +DEFENCODING(("WINDOWS1255", /* IANA */ + "CSWINDOWS1255", /* IANA */ + "MSHEBR", /* (Unknown) */ + "IBM1255", /* AIX */ + "CP1255", /* Windows */ + "1255", /* Windows */ + ), + cp1255, MSHEBR, {cp1255_mbtowc, cp1255_flushwc}, {cp1255_wctomb, nullptr}) +DEFINDEX(CP1255, MSHEBR) DEFCODEPAGE(1255, cp1255) -DEFENCODING(("WINDOWS1256", /* IANA */ - "csWindows1256", /* IANA */ - "MSARAB", ), - cp1256, - MSARAB, - {cp1256_mbtowc, nullptr}, {cp1256_wctomb, nullptr}) - +DEFENCODING(("WINDOWS1256", /* IANA */ + "CSWINDOWS1256", /* IANA */ + "IBM1256", /* AIX */ + "MSARAB", /* (Unknown) */ + "CP1256", /* Windows */ + "1256", /* Windows */ + ), + cp1256, MSARAB, {cp1256_mbtowc, nullptr}, {cp1256_wctomb, nullptr}) +DEFINDEX(CP1256, MSARAB) DEFCODEPAGE(1256, cp1256) -DEFENCODING(("WINDOWS1257", /* IANA */ - "csWindows1257", /* IANA */ - "WINBALTRIM", ), - cp1257, - WINBALTRIM, - {cp1257_mbtowc, nullptr}, {cp1257_wctomb, nullptr}) - +DEFENCODING(("WINDOWS1257", /* IANA */ + "CSWINDOWS1257", /* IANA */ + "WINBALTRIM", /* (Unknown) */ + "IBM1257", /* AIX */ + "CP1257", /* Windows */ + "1257", /* Windows */ + ), + cp1257, WINBALTRIM, {cp1257_mbtowc, nullptr}, {cp1257_wctomb, nullptr}) +DEFINDEX(CP1257, WINBALTRIM) DEFCODEPAGE(1257, cp1257) -DEFENCODING(("WINDOWS1258", /* IANA */ - "csWindows1258", /* IANA */ +DEFENCODING(("WINDOWS1258", /* IANA */ + "CSWINDOWS1258", /* IANA */ + "IBM1258", /* AIX */ + "CP1258", /* Windows */ + "1258", /* Windows */ ), - cp1258, - WINDOWS1258, - {cp1258_mbtowc, cp1258_flushwc}, {cp1258_wctomb, nullptr}) - + cp1258, WINDOWS1258, {cp1258_mbtowc, cp1258_flushwc}, {cp1258_wctomb, nullptr}) +DEFINDEX(CP1258, WINDOWS1258) DEFCODEPAGE(1258, cp1258) - -/* DOS 8-bit encodings */ +// DOS 8-bit encodings DEFENCODING(("IBM850", /* IANA */ "850", /* IANA */ - "csPC850Multilingual", /* IANA */ + "CSPC850MULTILINGUAL", /* IANA */ + "CP850", /* Windows */ ), - cp850, - IBM850, - {cp850_mbtowc, nullptr}, {cp850_wctomb, nullptr}) - + cp850, IBM850, {cp850_mbtowc, nullptr}, {cp850_wctomb, nullptr}) DEFCODEPAGE(850, cp850) DEFENCODING(("IBM862", /* IANA */ "862", /* IANA */ - "csPC862LatinHebrew", /* IANA */ + "CSPC862LATINHEBREW", /* IANA */ "DOS862", /* .NET */ + "CP862", /* Windows */ ), - cp862, - IBM862, - {cp862_mbtowc, nullptr}, {cp862_wctomb, nullptr}) - + cp862, IBM862, {cp862_mbtowc, nullptr}, {cp862_wctomb, nullptr}) DEFCODEPAGE(862, cp862) DEFENCODING(("IBM866", /* IANA */ "866", /* IANA */ - "csIBM866", /* IANA */ + "CSIBM866", /* IANA */ + "CP866", /* Windows */ ), - cp866, - IBM866, - {cp866_mbtowc, nullptr}, {cp866_wctomb, nullptr}) - + cp866, IBM866, {cp866_mbtowc, nullptr}, {cp866_wctomb, nullptr}) DEFCODEPAGE(866, cp866) DEFENCODING(("IBM1131", /* AIX */ + "CP1131", /* cppp-reiconv */ + "1131", /* cppp-reiconv */ ), - cp1131, - IBM1131, - {cp1131_mbtowc, nullptr}, {cp1131_wctomb, nullptr}) - + cp1131, IBM1131, {cp1131_mbtowc, nullptr}, {cp1131_wctomb, nullptr}) DEFCODEPAGE(1131, cp1131) -/* Macintosh 8-bit encodings */ - -/* This is the best table for MACINTOSH. The :) - ones in glibc and FreeBSD-iconv are bad quality. */ -DEFENCODING(("MacRoman", /* JDK 1.1 */ +// Macintosh 8-bit encodings +// This is the best table for MACINTOSH. The ones in glibc and FreeBSD-iconv are bad quality. :) +DEFENCODING(("MACROMAN", /* JDK 1.1 */ "MACINTOSH", /* IANA */ "MAC", /* IANA */ - "csMacintosh", /* IANA */ + "CSMACINTOSH", /* IANA */ + "CP10000", /* Windows */ + "10000", /* Windows */ ), - mac_roman, - MACINTOSH, - {mac_roman_mbtowc, nullptr}, {mac_roman_wctomb, nullptr}) - + mac_roman, MACINTOSH, {mac_roman_mbtowc, nullptr}, {mac_roman_wctomb, nullptr}) DEFCODEPAGE(10000, mac_roman) -DEFENCODING(("MacCentralEurope", /* JDK 1.1 */ - "XMacCE", /* Windows */ +DEFENCODING(("MACCENTRALEUROPE", /* JDK 1.1 */ + "XMACCE", /* Windows */ + "CP10029", /* Windows */ + "10029", /* Windows */ ), - mac_centraleurope, - MAC_CENTRALEUROPE, - {mac_centraleurope_mbtowc, nullptr}, {mac_centraleurope_wctomb, nullptr}) - + mac_centraleurope, MAC_CENTRALEUROPE, {mac_centraleurope_mbtowc, nullptr}, + {mac_centraleurope_wctomb, nullptr}) DEFCODEPAGE(10029, mac_centraleurope) -DEFENCODING(("MacIceland", /* JDK 1.1 */ - "XMacIcelandic", /* Windows */ +DEFENCODING(("MACICELAND", /* JDK 1.1 */ + "XMACICELANDIC", /* Windows */ + "CP10079", /* Windows */ + "10079", /* Windows */ ), - mac_iceland, - MAC_ICELAND, - {mac_iceland_mbtowc, nullptr}, {mac_iceland_wctomb, nullptr}) - + mac_iceland, MAC_ICELAND, {mac_iceland_mbtowc, nullptr}, {mac_iceland_wctomb, nullptr}) DEFCODEPAGE(10079, mac_iceland) -DEFENCODING(("MacCroatian", /* JDK 1.1 */ - "XMacCroatian", /* Windows */ +DEFENCODING(("MACCROATIAN", /* JDK 1.1 */ + "XMACCROATIAN", /* Windows */ + "CP10082", /* Windows */ + "10082", /* Windows */ ), - mac_croatian, - MAC_CROATIAN, - {mac_croatian_mbtowc, nullptr}, {mac_croatian_wctomb, nullptr}) - + mac_croatian, MAC_CROATIAN, {mac_croatian_mbtowc, nullptr}, {mac_croatian_wctomb, nullptr}) DEFCODEPAGE(10082, mac_croatian) -DEFENCODING(("MacRomania", /* JDK 1.1 */ - "XMacRomanian", /* Windows */ +DEFENCODING(("MACROMANIA", /* JDK 1.1 */ + "XMACROMANIAN", /* Windows */ + "CP10010", /* Windows */ + "10010", /* Windows */ ), - mac_romania, - MAC_ROMANIA, - {mac_romania_mbtowc, nullptr}, {mac_romania_wctomb, nullptr}) - + mac_romania, MAC_ROMANIA, {mac_romania_mbtowc, nullptr}, {mac_romania_wctomb, nullptr}) DEFCODEPAGE(10010, mac_romania) -DEFENCODING(("MacCyrillic", /* JDK 1.1 */ - "XMacCyrillic", /* Windows */ +DEFENCODING(("MACCYRILLIC", /* JDK 1.1 */ + "XMACCYRILLIC", /* Windows */ + "CP10007", /* Windows */ + "10007", /* Windows */ ), - mac_cyrillic, - MAC_CYRILLIC, - {mac_cyrillic_mbtowc, nullptr}, {mac_cyrillic_wctomb, nullptr}) - + mac_cyrillic, MAC_CYRILLIC, {mac_cyrillic_mbtowc, nullptr}, {mac_cyrillic_wctomb, nullptr}) DEFCODEPAGE(10007, mac_cyrillic) -DEFENCODING(("MacUkraine", /* JDK 1.1 */ - "XMacUkrainian", /* Windows */ +DEFENCODING(("MACUKRAINE", /* JDK 1.1 */ + "XMACUKRAINIAN", /* Windows */ + "CP10017", /* Windows */ + "10017", /* Windows */ ), - mac_ukraine, - MAC_UKRAINE, - {mac_ukraine_mbtowc, nullptr}, {mac_ukraine_wctomb, nullptr}) - + mac_ukraine, MAC_UKRAINE, {mac_ukraine_mbtowc, nullptr}, {mac_ukraine_wctomb, nullptr}) DEFCODEPAGE(10017, mac_ukraine) -DEFENCODING(("MacGreek", /* JDK 1.1 */ - "XMacGreek", /* Windows */ +DEFENCODING(("MACGREEK", /* JDK 1.1 */ + "XMACGREEK", /* Windows */ + "CP10006", /* Windows */ + "10006", /* Windows */ ), - mac_greek, - MAC_GREEK, - {mac_greek_mbtowc, nullptr}, {mac_greek_wctomb, nullptr}) - + mac_greek, MAC_GREEK, {mac_greek_mbtowc, nullptr}, {mac_greek_wctomb, nullptr}) DEFCODEPAGE(10006, mac_greek) -DEFENCODING(("MacTurkish", /* JDK 1.1 */ - "xmacturkish", /* Windows */ +DEFENCODING(("MACTURKISH", /* JDK 1.1 */ + "XMACTURKISH", /* Windows */ + "CP10081", /* Windows */ + "10081", /* Windows */ ), - mac_turkish, - MAC_TURKISH, - {mac_turkish_mbtowc, nullptr}, {mac_turkish_wctomb, nullptr}) - + mac_turkish, MAC_TURKISH, {mac_turkish_mbtowc, nullptr}, {mac_turkish_wctomb, nullptr}) DEFCODEPAGE(10081, mac_turkish) -DEFENCODING(("MacHebrew", /* JDK 1.1 */ - "XMacHebrew", /* Windows */ +DEFENCODING(("MACHEBREW", /* JDK 1.1 */ + "XMACHEBREW", /* Windows */ + "CP10005", /* Windows */ + "10005", /* Windows */ ), - mac_hebrew, - MAC_HEBREW, - {mac_hebrew_mbtowc, nullptr}, {mac_hebrew_wctomb, nullptr}) - + mac_hebrew, MAC_HEBREW, {mac_hebrew_mbtowc, nullptr}, {mac_hebrew_wctomb, nullptr}) DEFCODEPAGE(10005, mac_hebrew) -DEFENCODING(("MacArabic", /* JDK 1.1 */ - "XMacArabic", /* Windows */ +DEFENCODING(("MACARABIC", /* JDK 1.1 */ + "XMACARABIC", /* Windows */ + "CP10004", /* Windows */ + "10004", /* Windows */ ), - mac_arabic, - MAC_ARABIC, - {mac_arabic_mbtowc, nullptr}, {mac_arabic_wctomb, nullptr}) - + mac_arabic, MAC_ARABIC, {mac_arabic_mbtowc, nullptr}, {mac_arabic_wctomb, nullptr}) DEFCODEPAGE(10004, mac_arabic) -DEFENCODING(("MacThai", /* JDK 1.1 */ - "XMacThai", /* Windows */ +DEFENCODING(("MACTHAI", /* JDK 1.1 */ + "XMACTHAI", /* Windows */ + "CP10021", /* Windows */ + "10021", /* Windows */ ), - mac_thai, - MAC_THAI, - {mac_thai_mbtowc, nullptr}, {mac_thai_wctomb, nullptr}) - + mac_thai, MAC_THAI, {mac_thai_mbtowc, nullptr}, {mac_thai_wctomb, nullptr}) DEFCODEPAGE(10021, mac_thai) -/* Other platform specific 8-bit encodings */ - +// Other platform specific 8-bit encodings DEFENCODING(("HPROMAN8", /* IANA, X11R6.4 */ "ROMAN8", /* IANA */ "R8", /* IANA */ - "csHPRoman8", /* IANA */ + "CSHPROMAN8", /* IANA */ + "CP1051", /* Windows */ ), - hp_roman8, - HPROMAN8, - {hp_roman8_mbtowc, nullptr}, {hp_roman8_wctomb, nullptr}) + hp_roman8, HPROMAN8, {hp_roman8_mbtowc, nullptr}, {hp_roman8_wctomb, nullptr}) -DEFENCODING(("NEXTSTEP", ), - nextstep, - NEXTSTEP, - {nextstep_mbtowc, nullptr}, {nextstep_wctomb, nullptr}) - - -/* Regional 8-bit encodings used for a single language */ -DEFENCODING(("ARMSCII8", ), - armscii_8, - ARMSCII8, - {armscii_8_mbtowc, nullptr}, {armscii_8_wctomb, nullptr}) +DEFENCODING(("NEXTSTEP", /* (Unknown) */ + ), + nextstep, NEXTSTEP, {nextstep_mbtowc, nullptr}, {nextstep_wctomb, nullptr}) -DEFENCODING(("GEORGIANACADEMY", ), - georgian_academy, - GEORGIANACADEMY, - {georgian_academy_mbtowc, nullptr}, {georgian_academy_wctomb, nullptr}) +// Regional 8-bit encodings used for a single language +DEFENCODING(("ARMSCII8", /* Armenia Standard */ + ), + armscii_8, ARMSCII8, {armscii_8_mbtowc, nullptr}, {armscii_8_wctomb, nullptr}) -DEFENCODING(("GEORGIANPS", ), - georgian_ps, - GEORGIANPS, - {georgian_ps_mbtowc, nullptr}, {georgian_ps_wctomb, nullptr}) +DEFENCODING(("GEORGIANACADEMY", /* Georgia Academy */ + ), + georgian_academy, GEORGIANACADEMY, {georgian_academy_mbtowc, nullptr}, {georgian_academy_wctomb, nullptr}) -DEFENCODING(("KOI8T", ), - koi8_t, - KOI8T, - {koi8_t_mbtowc, nullptr}, {koi8_t_wctomb, nullptr}) +DEFENCODING(("GEORGIANPS", /* Georgia PS */ + ), + georgian_ps, GEORGIANPS, {georgian_ps_mbtowc, nullptr}, {georgian_ps_wctomb, nullptr}) -DEFENCODING(("PT154", /* IANA, glibc */ - "PTCP154", /* IANA */ - "CYRILLICASIAN", /* IANA */ - "csPTCP154", /* IANA */ +DEFENCODING(("KOI8T", /* (Unknown) */ ), - pt154, - PT154, - {pt154_mbtowc, nullptr}, {pt154_wctomb, nullptr}) + koi8_t, KOI8T, {koi8_t_mbtowc, nullptr}, {koi8_t_wctomb, nullptr}) +DEFENCODING(("PT154", /* IANA, glibc */ + "PTCP154", /* IANA */ + "CYRILLICASIAN", /* IANA */ + "CSPTCP154", /* IANA */ + "IBM1169", /* AIX */ + "CYRIILLICASIAN", /* AIX */ + "CP154", /* cppp-reiconv */ + "154", /* cppp-reiconv */ + ), + pt154, PT154, {pt154_mbtowc, nullptr}, {pt154_wctomb, nullptr}) DEFCODEPAGE(154, pt154) DEFENCODING(("RK1048", /* IANA, glibc */ "STRK10482002", /* IANA */ "KZ1048", /* IANA */ - "csKZ1048", /* IANA */ + "CSKZ1048", /* IANA */ ), - rk1048, - RK1048, - {rk1048_mbtowc, nullptr}, {rk1048_wctomb, nullptr}) - -DEFENCODING(("MULELAO1", ), - mulelao, - MULELAO1, - {mulelao_mbtowc, nullptr}, {mulelao_wctomb, nullptr}) + rk1048, RK1048, {rk1048_mbtowc, nullptr}, {rk1048_wctomb, nullptr}) -DEFENCODING(("IBMCP1133", ), - cp1133, - IBMCP1133, - {cp1133_mbtowc, nullptr}, {cp1133_wctomb, nullptr}) +DEFENCODING(("MULELAO1", /* (Unknown) */ + ), + mulelao, MULELAO1, {mulelao_mbtowc, nullptr}, {mulelao_wctomb, nullptr}) +DEFENCODING(("IBMCP1133", /* (Unknown) */ + "CP1133", /* cppp-reiconv */ + "1133", /* cppp-reiconv */ + ), + cp1133, IBMCP1133, {cp1133_mbtowc, nullptr}, {cp1133_wctomb, nullptr}) DEFCODEPAGE(1133, cp1133) -DEFENCODING(("TIS620", /* IANA, glibc, HP-UX */ - "TIS6200", /* glibc */ - "TIS620.25291", /* glibc */ - "TIS620.25330", /* glibc */ - "TIS620.25331", - "ISOIR166", /* glibc */ - "TACTIS", /* OSF/1 */ - "TIS620.2533", /* Solaris */ +DEFENCODING(("TIS620", /* IANA, glibc, HP-UX */ + "TIS6200", /* glibc */ + "TIS620.25291", /* glibc */ + "TIS620.25330", /* glibc */ + "TIS620.25331", "ISOIR166", /* glibc */ + "TACTIS", /* OSF/1 */ + "TIS620.2533", /* Solaris */ ), - tis620, - TIS620, - {tis620_mbtowc, nullptr}, {tis620_wctomb, nullptr}) + tis620, TIS620, {tis620_mbtowc, nullptr}, {tis620_wctomb, nullptr}) -DEFENCODING(("WINDOWS874", /* IANA */ - "csWindows874", /* IANA */ +DEFENCODING(("WINDOWS874", /* IANA */ + "CSWINDOWS874", /* IANA */ + "MS874", /* AIX */ + "CP874", /* Windows */ + "874", /* Windows */ ), - cp874, - WINDOWS874, - {cp874_mbtowc, nullptr}, {cp874_wctomb, nullptr}) - + cp874, WINDOWS874, {cp874_mbtowc, nullptr}, {cp874_wctomb, nullptr}) DEFCODEPAGE(874, cp874) -DEFENCODING(("VISCII", /* IANA, RFC 1456 */ - "VISCII1.11", - "csVISCII", /* IANA */ +DEFENCODING(("VISCII", /* IANA, RFC 1456 */ + "VISCII1.11", /* IANA */ + "CSVISCII", /* IANA */ ), - viscii, - VISCII, - {viscii_mbtowc, nullptr}, {viscii_wctomb, nullptr}) + viscii, VISCII, {viscii_mbtowc, nullptr}, {viscii_wctomb, nullptr}) -DEFENCODING(("TCVN", - "TCVN5712", - "TCVN57121", - "TCVN57121:1993", ), - tcvn, - TCVN, - {tcvn_mbtowc, tcvn_flushwc}, {tcvn_wctomb, nullptr}) +DEFENCODING(("TCVN", /* (Unknown) */ + "TCVN5712", /* (Unknown) */ + "TCVN57121", /* (Unknown) */ + "TCVN57121:1993", /* (Unknown) */ + ), + tcvn, TCVN, {tcvn_mbtowc, tcvn_flushwc}, {tcvn_wctomb, nullptr}) -/* CJK character sets (not documented) */ +// CJK character sets (not documented) DEFENCODING(("JISC62201969RO", /* IANA */ "ISO646JP", /* IANA */ "ISOIR14", /* IANA */ "JP", /* IANA */ - "csISO14JISC6220ro", /* IANA */ - ), - iso646_jp, - JP, - {iso646_jp_mbtowc, nullptr}, {iso646_jp_wctomb, nullptr}) - -DEFENCODING(("JISX0201", /* IANA */ - "JISX02011976", - "X0201", /* IANA */ - "csHalfWidthKatakana", /* IANA */ - ), - jisx0201, - JISX0201, - {jisx0201_mbtowc, nullptr}, {jisx0201_wctomb, nullptr}) - -DEFENCODING(("JISX0208", - "JISX02081983", /* IANA */ - "JISX02081990", - "JIS0208", - "X0208", /* IANA */ - "ISOIR87", /* IANA */ - "JISC62261983", /* IANA */ - "csISO87JISX0208", /* IANA */ - ), - jisx0208, - JISX0208, - {jisx0208_mbtowc, nullptr}, {jisx0208_wctomb, nullptr}) - -DEFENCODING(("JISX0212", - "JISX0212.19900", - "JISX02121990", /* IANA */ - "X0212", /* IANA */ - "ISOIR159", /* IANA */ - "csISO159JISX02121990", /* IANA */ - ), - jisx0212, - JISX0212, - {jisx0212_mbtowc, nullptr}, {jisx0212_wctomb, nullptr}) + "CSISO14JISC6220RO", /* IANA */ + ), + iso646_jp, JP, {iso646_jp_mbtowc, nullptr}, {iso646_jp_wctomb, nullptr}) + +DEFENCODING(("JISX0201", /* IANA */ + "JISX02011976", "X0201", /* IANA */ + "CSHALFWIDTHKATAKANA", /* IANA */ + ), + jisx0201, JISX0201, {jisx0201_mbtowc, nullptr}, {jisx0201_wctomb, nullptr}) + +DEFENCODING(("JISX0208", "JISX02081983", /* IANA */ + "JISX02081990", "JIS0208", "X0208", /* IANA */ + "ISOIR87", /* IANA */ + "JISC62261983", /* IANA */ + "CSISO87JISX0208", /* IANA */ + ), + jisx0208, JISX0208, {jisx0208_mbtowc, nullptr}, {jisx0208_wctomb, nullptr}) + +DEFENCODING(("JISX0212", "JISX0212.19900", "JISX02121990", /* IANA */ + "X0212", /* IANA */ + "ISOIR159", /* IANA */ + "CSISO159JISX02121990", /* IANA */ + ), + jisx0212, JISX0212, {jisx0212_mbtowc, nullptr}, {jisx0212_wctomb, nullptr}) DEFENCODING(("GB198880", /* IANA */ "ISO646CN", /* IANA */ "ISOIR57", /* IANA */ "CN", /* IANA */ - "csISO57GB1988", /* IANA */ + "CSISO57GB1988", /* IANA */ ), - iso646_cn, - GB1988_80, - {iso646_cn_mbtowc, nullptr}, {iso646_cn_wctomb, nullptr}) + iso646_cn, GB1988_80, {iso646_cn_mbtowc, nullptr}, {iso646_cn_wctomb, nullptr}) DEFENCODING(("GB231280", /* IANA */ "ISOIR58", /* IANA */ - "csISO58GB231280", /* IANA */ + "CSISO58GB231280", /* IANA */ ), - gb2312, - GB2312_80, - {gb2312_mbtowc, nullptr}, {gb2312_wctomb, nullptr}) + gb2312, GB2312_80, {gb2312_mbtowc, nullptr}, {gb2312_wctomb, nullptr}) -DEFENCODING(("ISOIR165", - "CNGBISOIR165", /* RFC 1922 */ +DEFENCODING(("ISOIR165", "CNGBISOIR165", /* RFC 1922 */ ), - isoir165, - CNGBISOIR165, - {isoir165_mbtowc, nullptr}, {isoir165_wctomb, nullptr}) + isoir165, CNGBISOIR165, {isoir165_mbtowc, nullptr}, {isoir165_wctomb, nullptr}) -DEFENCODING(("KSC5601", /* IANA */ - "KSC56011987", /* IANA */ - "KSC56011989", /* IANA */ +DEFENCODING(("KSC5601", /* IANA */ + "KSC56011987", /* IANA */ + "KSC56011989", /* IANA */ "ISOIR149", /* IANA */ - "csKSC56011987", /* IANA */ + "CSKSC56011987", /* IANA */ "KOREAN", /* IANA */ ), - ksc5601, - KOREAN, - {ksc5601_mbtowc, nullptr}, {ksc5601_wctomb, nullptr}) - - -/* CJK encodings */ -DEFENCODING(("EUCJP", /* IANA, glibc, HP-UX, IRIX, OSF/1, Solaris */ - "ExtendedUNIXCodePackedFormatforJapanese", /* IANA */ - "csEUCPkdFmtJapanese", /* IANA */ - "IBMEUCJP", /* AIX */ - "SDECKANJI", /* OSF/1 */ - ), - euc_jp, - EUC_JP, - {euc_jp_mbtowc, nullptr}, {euc_jp_wctomb, nullptr}) - -DEFCODEPAGE(51932, euc_jp) - -DEFENCODING(("SHIFTJIS", /* IANA, glibc */ - "SJIS", /* JDK 1.1, HP-UX, OSF/1 */ - "MSKANJI", /* IANA */ - "csShiftJIS", /* IANA */ - "PCK", /* Solaris */ - ), - sjis, - SHIFT_JIS, - {sjis_mbtowc, nullptr}, {sjis_wctomb, nullptr}) - -DEFENCODING(("IBM932", /* AIX */ - ), - cp932, - IBM932, - {cp932_mbtowc, nullptr}, {cp932_wctomb, nullptr}) - -DEFCODEPAGE(932, cp932) - -DEFENCODING(("ISO2022JP", /* IANA, RFC 1468, JDK 1.1 */ - "csISO2022JP", /* IANA */ - ), - iso2022_jp, - ISO2022_JP, - {iso2022_jp_mbtowc, nullptr}, {iso2022_jp_wctomb, iso2022_jp_reset}) - -DEFENCODING(("ISO2022JP1", /* RFC 2237 */ - ), - iso2022_jp1, - ISO2022_JP1, - {iso2022_jp1_mbtowc, nullptr}, {iso2022_jp1_wctomb, iso2022_jp1_reset}) - -DEFENCODING(("ISO2022JP2", /* IANA, RFC 1554 */ - "csISO2022JP2", /* IANA */ - ), - iso2022_jp2, - ISO2022_JP2, - {iso2022_jp2_mbtowc, nullptr}, {iso2022_jp2_wctomb, iso2022_jp2_reset}) - -DEFENCODING(("ISO2022JPMS", ), - iso2022_jpms, - ISO2022_JPMS, - {iso2022_jpms_mbtowc, nullptr}, {iso2022_jpms_wctomb, iso2022_jpms_reset}) - -DEFCODEPAGE(50221, iso2022_jpms) - -DEFENCODING(("EUCCN", /* glibc, IRIX */ - "GB2312", /* IANA */ - "CNGB", /* RFC 1922 */ - "csGB2312", /* IANA */ - "CHINESE", /* IANA */ - "IBMEUCCN", /* AIX */ - "HP15CN", /* HP-UX */ - "DECHANZI", /* OSF/1 */ - ), - euc_cn, - GB2312, - {euc_cn_mbtowc, nullptr}, {euc_cn_wctomb, nullptr}) - -DEFCODEPAGE(51936, euc_cn) - -DEFENCODING(("GBK", /* IANA, JDK 1.1 */ - ), - ces_gbk, - GBK, - {ces_gbk_mbtowc, nullptr}, {ces_gbk_wctomb, nullptr}) - -DEFENCODING(("MS936", /* IANA */ - "WINDOWS936", /* IANA */ - ), - cp936, - CP936, // Chinese developer use CP936 more often than MS936 - {cp936_mbtowc, nullptr}, {cp936_wctomb, nullptr}) - -DEFCODEPAGE(936, cp936) - -DEFENCODING(("GB18030:2005", ), - gb18030_2005, - GB18030_2005, - {gb18030_2005_mbtowc, nullptr}, {gb18030_2005_wctomb, nullptr}) - -DEFENCODING(("GB18030", /* IANA, glibc */ - "GB18030:2022", ), - gb18030_2022, - GB18030_2022, - {gb18030_2022_mbtowc, nullptr}, {gb18030_2022_wctomb, nullptr}) - -DEFINDEX(GB18030, GB18030_2022) - -DEFCODEPAGE(54936, gb18030_2022) - -DEFENCODING(("ISO2022CN", /* IANA, RFC 1922, JDK 1.1 */ - "csISO2022CN", /* IANA */ - ), - iso2022_cn, - ISO2022_CN, - {iso2022_cn_mbtowc, nullptr}, {iso2022_cn_wctomb, iso2022_cn_reset}) - -DEFENCODING(("ISO2022CNEXT", /* IANA, RFC 1922 */ - ), - iso2022_cn_ext, - ISO2022_CN_EXT, - {iso2022_cn_ext_mbtowc, nullptr}, {iso2022_cn_ext_wctomb, iso2022_cn_ext_reset}) - -DEFENCODING(("HZ", /* RFC 1843 */ - "HZGB2312", /* IANA, RFC 1842 */ - ), - hz, - HZ, - {hz_mbtowc, nullptr}, {hz_wctomb, hz_reset}) - -DEFCODEPAGE(52936, hz) - -DEFENCODING(("EUCTW", /* glibc, HPUX, IRIX, OSF/1 */ - "csEUCTW", - "IBMEUCTW", /* AIX */ - "CNS11643", /* Solaris */ - ), - euc_tw, - EUC_TW, - {euc_tw_mbtowc, nullptr}, {euc_tw_wctomb, nullptr}) - -DEFCODEPAGE(51950, euc_tw) - -DEFENCODING(("BIG5", /* IANA, JDK 1.1, glibc */ - "BIGFIVE", /* glibc */ - "CNBIG5", /* RFC 1922 */ - "csBig5", /* IANA */ - ), - ces_big5, - BIG5, - {ces_big5_mbtowc, nullptr}, {ces_big5_wctomb, nullptr}) - -DEFENCODING(("WINDOWS950", /* JDK 1.1 */ - ), - cp950, - WINDOWS950, - {cp950_mbtowc, nullptr}, {cp950_wctomb, nullptr}) - -DEFCODEPAGE(950, cp950) - -DEFENCODING(("BIG5HKSCS:1999", ), - big5hkscs1999, - BIG5HKSCS_1999, - {big5hkscs1999_mbtowc, big5hkscs1999_flushwc}, {big5hkscs1999_wctomb, big5hkscs1999_reset}) - -DEFENCODING(("BIG5HKSCS:2001", ), - big5hkscs2001, - BIG5HKSCS_2001, - {big5hkscs2001_mbtowc, big5hkscs2001_flushwc}, {big5hkscs2001_wctomb, big5hkscs2001_reset}) - -DEFENCODING(("BIG5HKSCS:2004", ), - big5hkscs2004, - BIG5HKSCS_2004, - {big5hkscs2004_mbtowc, big5hkscs2004_flushwc}, {big5hkscs2004_wctomb, big5hkscs2004_reset}) - -DEFENCODING(("BIG5HKSCS", /* IANA, glibc */ - "BIG5HKSCS:2008", ), - big5hkscs2008, - BIG5HKSCS_2008, - {big5hkscs2008_mbtowc, big5hkscs2008_flushwc}, {big5hkscs2008_wctomb, big5hkscs2008_reset}) - -DEFINDEX(BIG5HKSCS, BIG5HKSCS_2008) - -DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ - "csEUCKR", /* IANA */ - "IBMEUCKR", /* AIX */ - "DECKOREAN", /* OSF/1 */ - "5601", /* Solaris */ - ), - euc_kr, - EUC_KR, - {euc_kr_mbtowc, nullptr}, {euc_kr_wctomb, nullptr}) - -DEFCODEPAGE(51949, euc_kr) - -DEFENCODING(("UHC", /* glibc */ - ), - cp949, - UHC, - {cp949_mbtowc, nullptr}, {cp949_wctomb, nullptr}) - -DEFCODEPAGE(949, cp949) - -DEFENCODING(("JOHAB", /* glibc */ - "KOKR.JOHAP92", /* Solaris */ - ), - johab, - JOHAB, - {johab_mbtowc, nullptr}, {johab_wctomb, nullptr}) + ksc5601, KOREAN, {ksc5601_mbtowc, nullptr}, {ksc5601_wctomb, nullptr}) -DEFCODEPAGE(1361, johab) - -DEFENCODING(("ISO2022KR", /* IANA, RFC 1557, JDK 1.1 */ - "csISO2022KR", /* IANA */ - ), - iso2022_kr, - ISO2022_KR, - {iso2022_kr_mbtowc, nullptr}, {iso2022_kr_wctomb, iso2022_kr_reset}) - -DEFCODEPAGE(50225, iso2022_kr) - -DEFENCODING(("DECKANJI", ), - dec_kanji, - DEC_KANJI, - {dec_kanji_mbtowc, nullptr}, {dec_kanji_wctomb, nullptr}) - -DEFENCODING(("DECHANYU", /* OSF/1 */ - ), - dec_hanyu, - DEC_HANYU, - {dec_hanyu_mbtowc, nullptr}, {dec_hanyu_wctomb, nullptr}) - -/* Encodings used by system dependent locales on AIX. */ +// AIX locales DEFENCODING(("IBM856", /* AIX */ + "CP856", /* AIX */ + "856", /* AIX */ ), - cp856, - IBM856, - {cp856_mbtowc, nullptr}, {cp856_wctomb, nullptr}) - + cp856, IBM856, {cp856_mbtowc, nullptr}, {cp856_wctomb, nullptr}) DEFCODEPAGE(856, cp856) DEFENCODING(("IBM922", /* AIX */ + "CP922", /* AIX */ + "922", /* AIX */ ), - cp922, - IBM922, - {cp922_mbtowc, nullptr}, {cp922_wctomb, nullptr}) - + cp922, IBM922, {cp922_mbtowc, nullptr}, {cp922_wctomb, nullptr}) DEFCODEPAGE(922, cp922) DEFENCODING(("IBM943", /* AIX */ + "CP943", /* AIX */ + "943", /* AIX */ ), - cp943, - IBM943, - {cp943_mbtowc, nullptr}, {cp943_wctomb, nullptr}) - + cp943, IBM943, {cp943_mbtowc, nullptr}, {cp943_wctomb, nullptr}) DEFCODEPAGE(943, cp943) DEFENCODING(("IBM1046", /* AIX */ + "CP1046", /* AIX */ + "1046", /* AIX */ ), - cp1046, - IBM1046, - {cp1046_mbtowc, nullptr}, {cp1046_wctomb, nullptr}) - + cp1046, IBM1046, {cp1046_mbtowc, nullptr}, {cp1046_wctomb, nullptr}) DEFCODEPAGE(1046, cp1046) DEFENCODING(("IBM1124", /* AIX */ + "CP1124", /* AIX */ + "1124", /* AIX */ ), - cp1124, - IBM1124, - {cp1124_mbtowc, nullptr}, {cp1124_wctomb, nullptr}) - + cp1124, IBM1124, {cp1124_mbtowc, nullptr}, {cp1124_wctomb, nullptr}) DEFCODEPAGE(1124, cp1124) DEFENCODING(("IBM1129", /* AIX */ + "CP1129", /* AIX */ + "1129", /* AIX */ ), - cp1129, - IBM1129, - {cp1129_mbtowc, nullptr}, {cp1129_wctomb, nullptr}) - + cp1129, IBM1129, {cp1129_mbtowc, nullptr}, {cp1129_wctomb, nullptr}) DEFCODEPAGE(1129, cp1129) DEFENCODING(("IBM1161", /* glibc */ - "csIBM1161", /* glibc */ + "CSIBM1161", /* glibc */ + "CP1161", /* AIX */ + "1161", /* AIX */ ), - cp1161, - IBM1161, - {cp1161_mbtowc, nullptr}, {cp1161_wctomb, nullptr}) - + cp1161, IBM1161, {cp1161_mbtowc, nullptr}, {cp1161_wctomb, nullptr}) DEFCODEPAGE(1161, cp1161) DEFENCODING(("IBM1162", /* glibc */ - "csIBM1162", /* glibc */ + "CSIBM1162", /* glibc */ + "CP1162", /* AIX */ + "1162", /* AIX */ ), - cp1162, - IBM1162, - {cp1162_mbtowc, nullptr}, {cp1162_wctomb, nullptr}) - + cp1162, IBM1162, {cp1162_mbtowc, nullptr}, {cp1162_wctomb, nullptr}) DEFCODEPAGE(1162, cp1162) DEFENCODING(("IBM1163", /* glibc */ - "csIBM1163", /* glibc */ + "CSIBM1163", /* glibc */ + "CP1163", /* AIX */ + "1163", /* AIX */ ), - cp1163, - IBM1163, - {cp1163_mbtowc, nullptr}, {cp1163_wctomb, nullptr}) - + cp1163, IBM1163, {cp1163_mbtowc, nullptr}, {cp1163_wctomb, nullptr}) DEFCODEPAGE(1163, cp1163) -/* Encodings used by system dependent locales on MS-DOS. */ +// MS-DOS locales DEFENCODING(("IBM437", /* IANA */ "437", /* IANA */ - "csPC8CodePage437", /* IANA */ + "CSPC8CODEPAGE437", /* IANA */ + "CP437", /* IANA */ ), - cp437, - CP437, - {cp437_mbtowc, nullptr}, {cp437_wctomb, nullptr}) - + cp437, CP437, {cp437_mbtowc, nullptr}, {cp437_wctomb, nullptr}) DEFCODEPAGE(437, cp437) DEFENCODING(("IBM737", /* Windows */ + "CP737", /* Windows */ + "737", /* Windows */ ), - cp737, - CP737, - {cp737_mbtowc, nullptr}, {cp737_wctomb, nullptr}) - + cp737, CP737, {cp737_mbtowc, nullptr}, {cp737_wctomb, nullptr}) DEFCODEPAGE(737, cp737) DEFENCODING(("IBM775", /* IANA */ - "csPC775Baltic", /* IANA */ + "CSPC775BALTIC", /* IANA */ + "CP775", /* Windows */ + "775", /* Windows */ ), - cp775, - CP775, - {cp775_mbtowc, nullptr}, {cp775_wctomb, nullptr}) - + cp775, CP775, {cp775_mbtowc, nullptr}, {cp775_wctomb, nullptr}) DEFCODEPAGE(775, cp775) DEFENCODING(("IBM852", /* IANA */ "852", /* IANA */ - "csPCp852", /* IANA */ + "CSPCP852", /* IANA */ + "CP852", /* Windows */ ), - cp852, - CP852, - {cp852_mbtowc, nullptr}, {cp852_wctomb, nullptr}) - + cp852, CP852, {cp852_mbtowc, nullptr}, {cp852_wctomb, nullptr}) DEFCODEPAGE(852, cp852) -DEFENCODING(("IBM853", - "853", +DEFENCODING(("IBM853", /* (Unknown) */ + "853", /* (Unknown) */ "CCSID853", /* dbpedia.org */ - "csIBM853" /* I don't know */ + "CSIBM853", /* (Unknown) */ + "CP853" /* cppp-reiconv */ ), - cp853, - CP853, - {cp853_mbtowc, nullptr}, {cp853_wctomb, nullptr}) - + cp853, CP853, {cp853_mbtowc, nullptr}, {cp853_wctomb, nullptr}) DEFCODEPAGE(853, cp853) DEFENCODING(("IBM855", /* IANA */ "855", /* IANA */ - "csIBM855", /* IANA */ + "CSIBM855", /* IANA */ + "CP855" /* Windows */ ), - cp855, - CP855, - {cp855_mbtowc, nullptr}, {cp855_wctomb, nullptr}) - + cp855, CP855, {cp855_mbtowc, nullptr}, {cp855_wctomb, nullptr}) DEFCODEPAGE(855, cp855) DEFENCODING(("IBM857", /* IANA */ "857", /* IANA */ - "csIBM857", /* IANA */ + "CSIBM857", /* IANA */ + "CP857", /* Windows */ ), - cp857, - CP857, - {cp857_mbtowc, nullptr}, {cp857_wctomb, nullptr}) - + cp857, CP857, {cp857_mbtowc, nullptr}, {cp857_wctomb, nullptr}) DEFCODEPAGE(857, cp857) -DEFENCODING(("IBM858", - "858", - "IBM00858", /* Windows */ - "csIBM858"), - cp858, - CP858, - {cp858_mbtowc, nullptr}, {cp858_wctomb, nullptr}) - +DEFENCODING(("IBM858", /* Solaris */ + "858", /* Solaris */ + "IBM00858", /* Windows */ + "CP858", /* Windows */ + "CCSID00858", /* Solaris */ + "CP00858", /* Solaris */ + "CSIBM858" /* Solaris */ + ), + cp858, CP858, {cp858_mbtowc, nullptr}, {cp858_wctomb, nullptr}) DEFCODEPAGE(858, cp858) DEFENCODING(("IBM860", /* IANA */ "860", /* IANA */ - "csIBM860", /* IANA */ + "CSIBM860", /* IANA */ + "CP860", /* AIX */ ), - cp860, - CP860, - {cp860_mbtowc, nullptr}, {cp860_wctomb, nullptr}) - + cp860, CP860, {cp860_mbtowc, nullptr}, {cp860_wctomb, nullptr}) DEFCODEPAGE(860, cp860) DEFENCODING(("IBM861", /* IANA */ "861", /* IANA */ + "CP861", /* IANA */ "CPIS", /* IANA */ - "csIBM861", /* IANA */ + "CSIBM861", /* IANA */ ), - cp861, - CP861, - {cp861_mbtowc, nullptr}, {cp861_wctomb, nullptr}) - + cp861, CP861, {cp861_mbtowc, nullptr}, {cp861_wctomb, nullptr}) DEFCODEPAGE(861, cp861) DEFENCODING(("IBM863", /* IANA */ "863", /* IANA */ - "csIBM863", /* IANA */ + "CSIBM863", /* IANA */ + "CP863", /* AIX */ ), - cp863, - CP863, - {cp863_mbtowc, nullptr}, {cp863_wctomb, nullptr}) - + cp863, CP863, {cp863_mbtowc, nullptr}, {cp863_wctomb, nullptr}) DEFCODEPAGE(863, cp863) DEFENCODING(("IBM864", /* IANA */ - "csIBM864", /* IANA */ + "CSIBM864", /* IANA */ + "CP864", /* AIX */ + "864", /* IANA */ ), - cp864, - CP864, - {cp864_mbtowc, nullptr}, {cp864_wctomb, nullptr}) - + cp864, CP864, {cp864_mbtowc, nullptr}, {cp864_wctomb, nullptr}) DEFCODEPAGE(864, cp864) DEFENCODING(("IBM865", /* IANA */ "865", /* IANA */ - "csIBM865", /* IANA */ + "CSIBM865", /* IANA */ + "CP865", /* AIX */ ), - cp865, - CP865, - {cp865_mbtowc, nullptr}, {cp865_wctomb, nullptr}) - + cp865, CP865, {cp865_mbtowc, nullptr}, {cp865_wctomb, nullptr}) DEFCODEPAGE(865, cp865) DEFENCODING(("IBM869", /* IANA */ "869", /* IANA */ "CPGR", /* IANA */ - "csIBM869", /* IANA */ + "CSIBM869", /* IANA */ + "CP869", /* AIX */ + "CP-GR", /* AIX */ ), - cp869, - CP869, - {cp869_mbtowc, nullptr}, {cp869_wctomb, nullptr}) - + cp869, CP869, {cp869_mbtowc, nullptr}, {cp869_wctomb, nullptr}) DEFCODEPAGE(869, cp869) -DEFENCODING(("IBM1125", - "1125", - "SYSTEM1125", - "csIBM1125" /* I don't know */ +DEFENCODING(("IBM1125", /* AIX */ + "1125", /* AIX */ + "SYSTEM1125", /* AIX */ + "CSIBM1125", /* AIX */ + "RUSCII", /* AIX */ + "CP866U", /* AIX */ + "CP1125", /* AIX */ ), - cp1125, - CP1125, - {cp1125_mbtowc, nullptr}, {cp1125_wctomb, nullptr}) - + cp1125, CP1125, {cp1125_mbtowc, nullptr}, {cp1125_wctomb, nullptr}) DEFCODEPAGE(1125, cp1125) -/* Encodings used by system dependent locales on z/OS. */ +// z/OS locales DEFENCODING(("IBM037", /* IANA */ "EBCDICCPUS", /* IANA */ "EBCDICCPCA", /* IANA */ "EBCDICCPWT", /* IANA */ "EBCDICCPNL", /* IANA */ - "csIBM037", /* IANA */ + "CSIBM037", /* IANA */ + "CP037", /* IANA */ + "CP0037", /* IANA */ ), - ebcdic037, - EBCDIC_037, - {ebcdic037_mbtowc, nullptr}, {ebcdic037_wctomb, nullptr}) - + ebcdic037, EBCDIC_037, {ebcdic037_mbtowc, nullptr}, {ebcdic037_wctomb, nullptr}) DEFCODEPAGE(37, ebcdic037) DEFENCODING(("IBM273", /* IANA */ - "csIBM273", /* IANA */ + "CSIBM273", /* IANA */ + "CP273", /* AIX */ + "273", /* AIX */ ), - ebcdic273, - EBCDIC_273, - {ebcdic273_mbtowc, nullptr}, {ebcdic273_wctomb, nullptr}) - + ebcdic273, EBCDIC_273, {ebcdic273_mbtowc, nullptr}, {ebcdic273_wctomb, nullptr}) DEFCODEPAGE(273, ebcdic273) DEFENCODING(("IBM277", /* IANA */ "EBCDICCPDK", /* IANA */ "EBCDICCPNO", /* IANA */ - "csIBM277", /* IANA */ + "CSIBM277", /* IANA */ + "CP277", /* AIX */ + "277", /* AIX */ ), - ebcdic277, - EBCDIC_277, - {ebcdic277_mbtowc, nullptr}, {ebcdic277_wctomb, nullptr}) - + ebcdic277, EBCDIC_277, {ebcdic277_mbtowc, nullptr}, {ebcdic277_wctomb, nullptr}) DEFCODEPAGE(277, ebcdic277) DEFENCODING(("IBM278", /* IANA */ "EBCDICCPFI", /* IANA */ "EBCDICCPSE", /* IANA */ - "csIBM278", /* IANA */ + "CSIBM278", /* IANA */ + "CP278", /* AIX */ + "278", /* AIX */ ), - ebcdic278, - EBCDIC_278, - {ebcdic278_mbtowc, nullptr}, {ebcdic278_wctomb, nullptr}) - + ebcdic278, EBCDIC_278, {ebcdic278_mbtowc, nullptr}, {ebcdic278_wctomb, nullptr}) DEFCODEPAGE(278, ebcdic278) DEFENCODING(("IBM280", /* IANA */ "EBCDICCPIT", /* IANA */ - "csIBM280", /* IANA */ + "CSIBM280", /* IANA */ + "CP280", /* AIX */ + "280", /* AIX */ ), - ebcdic280, - EBCDIC_280, - {ebcdic280_mbtowc, nullptr}, {ebcdic280_wctomb, nullptr}) - + ebcdic280, EBCDIC_280, {ebcdic280_mbtowc, nullptr}, {ebcdic280_wctomb, nullptr}) DEFCODEPAGE(280, ebcdic280) -DEFENCODING(("IBM282", ), - ebcdic282, - EBCDIC_282, - {ebcdic282_mbtowc, nullptr}, {ebcdic282_wctomb, nullptr}) - +DEFENCODING(("IBM282", /* (Unknown) */ + "282", /* cppp-reiconv */ + "CP282", /* cppp-reiconv */ + ), + ebcdic282, EBCDIC_282, {ebcdic282_mbtowc, nullptr}, {ebcdic282_wctomb, nullptr}) DEFCODEPAGE(282, ebcdic282) -DEFENCODING(("IBM284", /* IANA */ - "EBCDICCPES", /* IANA */ - "csIBM284", /* IANA */ +DEFENCODING(("IBM284", /* IANA */ + "EBCDICCPES", /* IANA */ + "CSIBM284", /* IANA */ + "CP284", /* AIX */ + "284", /* AIX */ ), - ebcdic284, - EBCDIC_284, - {ebcdic284_mbtowc, nullptr}, {ebcdic284_wctomb, nullptr}) - + ebcdic284, EBCDIC_284, {ebcdic284_mbtowc, nullptr}, {ebcdic284_wctomb, nullptr}) DEFCODEPAGE(284, ebcdic284) -DEFENCODING(("IBM285", /* IANA */ - "CP285", /* IANA */ - "EBCDICCPGB", /* IANA */ - "csIBM285", /* IANA */ +DEFENCODING(("IBM285", /* IANA */ + "CP285", /* IANA */ + "EBCDICCPGB", /* IANA */ + "CSIBM285", /* IANA */ + "285", /* AIX */ ), - ebcdic285, - EBCDIC_285, - {ebcdic285_mbtowc, nullptr}, {ebcdic285_wctomb, nullptr}) - + ebcdic285, EBCDIC_285, {ebcdic285_mbtowc, nullptr}, {ebcdic285_wctomb, nullptr}) DEFCODEPAGE(285, ebcdic285) -DEFENCODING(("IBM297", /* IANA */ - "EBCDICCPFR", /* IANA */ - "csIBM297", /* IANA */ +DEFENCODING(("IBM297", /* IANA */ + "EBCDICCPFR", /* IANA */ + "CSIBM297", /* IANA */ + "CP297", /* AIX */ + "297", /* AIX */ ), - ebcdic297, - EBCDIC_297, - {ebcdic297_mbtowc, nullptr}, {ebcdic297_wctomb, nullptr}) - + ebcdic297, EBCDIC_297, {ebcdic297_mbtowc, nullptr}, {ebcdic297_wctomb, nullptr}) DEFCODEPAGE(297, ebcdic297) -DEFENCODING(("IBM423", /* IANA */ - "EBCDICCPGR", /* IANA */ - "csIBM423", /* IANA */ +DEFENCODING(("IBM423", /* IANA */ + "EBCDICCPGR", /* IANA */ + "CSIBM423", /* IANA */ + "CP423", /* AIX */ + "423", /* AIX */ ), - ebcdic423, - EBCDIC_423, - {ebcdic423_mbtowc, nullptr}, {ebcdic423_wctomb, nullptr}) - + ebcdic423, EBCDIC_423, {ebcdic423_mbtowc, nullptr}, {ebcdic423_wctomb, nullptr}) DEFCODEPAGE(423, ebcdic423) -DEFENCODING(("IBM424", /* IANA */ - "EBCDICCPHE", /* IANA */ - "csIBM424", /* IANA */ +DEFENCODING(("IBM424", /* IANA */ + "EBCDICCPHE", /* IANA */ + "CSIBM424", /* IANA */ + "CP424", /* AIX */ + "424", /* AIX */ ), - ebcdic424, - EBCDIC_424, - {ebcdic424_mbtowc, nullptr}, {ebcdic424_wctomb, nullptr}) - + ebcdic424, EBCDIC_424, {ebcdic424_mbtowc, nullptr}, {ebcdic424_wctomb, nullptr}) DEFCODEPAGE(424, ebcdic424) -DEFENCODING(("IBM425", ), - ebcdic425, - EBCDIC_425, - {ebcdic425_mbtowc, nullptr}, {ebcdic425_wctomb, nullptr}) - +DEFENCODING(("IBM425", /* (Unknown) */ + "CP425", /* cppp-reiconv */ + "425", /* cppp-reiconv */ + ), + ebcdic425, EBCDIC_425, {ebcdic425_mbtowc, nullptr}, {ebcdic425_wctomb, nullptr}) DEFCODEPAGE(425, ebcdic425) -DEFENCODING(("IBM500", /* IANA */ - "EBCDICCPBE", /* IANA */ - "EBCDICCPCH", /* IANA */ - "csIBM500", /* IANA */ +DEFENCODING(("IBM500", /* IANA */ + "EBCDICCPBE", /* IANA */ + "EBCDICCPCH", /* IANA */ + "CSIBM500", /* IANA */ + "CP500", /* AIX */ + "500", /* AIX */ ), - ebcdic500, - EBCDIC_500, - {ebcdic500_mbtowc, nullptr}, {ebcdic500_wctomb, nullptr}) + ebcdic500, EBCDIC_500, {ebcdic500_mbtowc, nullptr}, {ebcdic500_wctomb, nullptr}) DEFCODEPAGE(500, ebcdic500) -DEFENCODING(("IBM838", +DEFENCODING(("IBM838", /* AIX */ "IBMTHAI", /* IANA */ - "csIBMThai", /* IANA */ + "CSIBMTHAI", /* IANA */ + "CP838", /* AIX */ + "838", /* AIX */ ), - ebcdic838, - EBCDIC_838, - {ebcdic838_mbtowc, nullptr}, {ebcdic838_wctomb, nullptr}) - + ebcdic838, EBCDIC_838, {ebcdic838_mbtowc, nullptr}, {ebcdic838_wctomb, nullptr}) DEFCODEPAGE(838, ebcdic838) -DEFENCODING(("IBM870", /* IANA */ - "CP870", /* IANA */ - "EBCDICCPROECE", /* IANA */ - "EBCDICCPYU", /* IANA */ - "csIBM870", /* IANA */ +DEFENCODING(("IBM870", /* IANA */ + "CP870", /* IANA */ + "EBCDICCPROECE", /* IANA */ + "EBCDICCPYU", /* IANA */ + "CSIBM870", /* IANA */ + "870", /* AIX */ ), - ebcdic870, - EBCDIC_870, - {ebcdic870_mbtowc, nullptr}, {ebcdic870_wctomb, nullptr}) - + ebcdic870, EBCDIC_870, {ebcdic870_mbtowc, nullptr}, {ebcdic870_wctomb, nullptr}) DEFCODEPAGE(870, ebcdic870) -DEFENCODING(("IBM871", /* IANA */ - "EBCDICCPIS", /* IANA */ - "csIBM871", /* IANA */ +DEFENCODING(("IBM871", /* IANA */ + "EBCDICCPIS", /* IANA */ + "CSIBM871", /* IANA */ + "CP871", /* AIX */ + "871", /* AIX */ ), - ebcdic871, - EBCDIC_871, - {ebcdic871_mbtowc, nullptr}, {ebcdic871_wctomb, nullptr}) - + ebcdic871, EBCDIC_871, {ebcdic871_mbtowc, nullptr}, {ebcdic871_wctomb, nullptr}) DEFCODEPAGE(871, ebcdic871) -DEFENCODING(("IBM875", /* glibc */ - "EBCDICGREEK", /* glibc */ +DEFENCODING(("IBM875", /* glibc */ + "EBCDICGREEK", /* glibc */ + "CP875", /* AIX */ + "875", /* AIX */ ), - ebcdic875, - EBCDIC_875, - {ebcdic875_mbtowc, nullptr}, {ebcdic875_wctomb, nullptr}) - + ebcdic875, EBCDIC_875, {ebcdic875_mbtowc, nullptr}, {ebcdic875_wctomb, nullptr}) DEFCODEPAGE(875, ebcdic875) -DEFENCODING(("IBM880", /* IANA */ - "EBCDICCYRILLIC", /* IANA */ - "csIBM880", /* IANA */ +DEFENCODING(("IBM880", /* IANA */ + "EBCDICCYRILLIC", /* IANA */ + "CSIBM880", /* IANA */ + "CP880", /* cppp-reiconv */ + "880", /*cppp-reiconv*/ ), - ebcdic880, - EBCDIC_880, - {ebcdic880_mbtowc, nullptr}, {ebcdic880_wctomb, nullptr}) - + ebcdic880, EBCDIC_880, {ebcdic880_mbtowc, nullptr}, {ebcdic880_wctomb, nullptr}) DEFCODEPAGE(880, ebcdic880) -DEFENCODING(("IBM905", /* IANA */ - "EBCDICCPTR", /* IANA */ - "csIBM905", /* IANA */ +DEFENCODING(("IBM905", /* IANA */ + "EBCDICCPTR", /* IANA */ + "CSIBM905", /* IANA */ ), - ebcdic905, - EBCDIC_905, - {ebcdic905_mbtowc, nullptr}, {ebcdic905_wctomb, nullptr}) - + ebcdic905, EBCDIC_905, {ebcdic905_mbtowc, nullptr}, {ebcdic905_wctomb, nullptr}) DEFCODEPAGE(905, ebcdic905) -DEFENCODING(("IBM924", - "IBM00924", /* IANA */ - "CCSID00924", /* IANA */ - "CP00924", /* IANA */ - "EBCDICLATIN9EURO", /* IANA */ - "csIBM00924", /* IANA */ +DEFENCODING(("IBM924", /* SUSE Linux Enterprise Server */ + "IBM00924", /* IANA */ + "CCSID00924", /* IANA */ + "CP00924", /* IANA */ + "EBCDICLATIN9EURO", /* IANA */ + "CSIBM00924", /* IANA */ + "CP924", /* SUSE Linux Enterprise Server */ + "924", /* SUSE Linux Enterprise Server */ ), - ebcdic924, - EBCDIC_924, - {ebcdic924_mbtowc, nullptr}, {ebcdic924_wctomb, nullptr}) - + ebcdic924, EBCDIC_924, {ebcdic924_mbtowc, nullptr}, {ebcdic924_wctomb, nullptr}) DEFCODEPAGE(924, ebcdic924) DEFENCODING(("IBM1025", /* glibc */ + "CP1025", /* AIX */ + "1025", /* AIX */ ), - ebcdic1025, - EBCDIC_1025, - {ebcdic1025_mbtowc, nullptr}, {ebcdic1025_wctomb, nullptr}) - + ebcdic1025, EBCDIC_1025, {ebcdic1025_mbtowc, nullptr}, {ebcdic1025_wctomb, nullptr}) DEFCODEPAGE(1025, ebcdic1025) DEFENCODING(("IBM1026", /* IANA */ - "csIBM1026", /* IANA */ + "CSIBM1026", /* IANA */ + "CP1026", /* AIX */ + "1026", /* AIX */ ), - ebcdic1026, - EBCDIC_1026, - {ebcdic1026_mbtowc, nullptr}, {ebcdic1026_wctomb, nullptr}) - + ebcdic1026, EBCDIC_1026, {ebcdic1026_mbtowc, nullptr}, {ebcdic1026_wctomb, nullptr}) DEFCODEPAGE(1026, ebcdic1026) DEFENCODING(("IBM1047", /* IANA */ - "csIBM1047", /* IANA */ + "CSIBM1047", /* IANA */ + "CP1047", /* AIX */ + "1047", /* AIX */ ), - ebcdic1047, - EBCDIC_1047, - {ebcdic1047_mbtowc, nullptr}, {ebcdic1047_wctomb, nullptr}) - + ebcdic1047, EBCDIC_1047, {ebcdic1047_mbtowc, nullptr}, {ebcdic1047_wctomb, nullptr}) DEFCODEPAGE(1047, ebcdic1047) DEFENCODING(("IBM1097", /* glibc */ + "CP1097", /* AIX */ ), - ebcdic1097, - EBCDIC_1097, - {ebcdic1097_mbtowc, nullptr}, {ebcdic1097_wctomb, nullptr}) - + ebcdic1097, EBCDIC_1097, {ebcdic1097_mbtowc, nullptr}, {ebcdic1097_wctomb, nullptr}) DEFCODEPAGE(1097, ebcdic1097) DEFENCODING(("IBM1112", /* glibc */ + "CP1112", /* AIX */ + "1112", /* AIX */ ), - ebcdic1112, - EBCDIC_1112, - {ebcdic1112_mbtowc, nullptr}, {ebcdic1112_wctomb, nullptr}) - + ebcdic1112, EBCDIC_1112, {ebcdic1112_mbtowc, nullptr}, {ebcdic1112_wctomb, nullptr}) DEFCODEPAGE(1112, ebcdic1112) DEFENCODING(("IBM1122", /* glibc */ + "CP1122", /* AIX */ + "1122", /* AIX */ ), - ebcdic1122, - EBCDIC_1122, - {ebcdic1122_mbtowc, nullptr}, {ebcdic1122_wctomb, nullptr}) - + ebcdic1122, EBCDIC_1122, {ebcdic1122_mbtowc, nullptr}, {ebcdic1122_wctomb, nullptr}) DEFCODEPAGE(1122, ebcdic1122) DEFENCODING(("IBM1123", /* glibc */ + "CP1123", /* AIX */ + "1123", /* AIX */ ), - ebcdic1123, - EBCDIC_1123, - {ebcdic1123_mbtowc, nullptr}, {ebcdic1123_wctomb, nullptr}) - + ebcdic1123, EBCDIC_1123, {ebcdic1123_mbtowc, nullptr}, {ebcdic1123_wctomb, nullptr}) DEFCODEPAGE(1123, ebcdic1123) DEFENCODING(("IBM1130", /* glibc */ + "CP1130", /* cppp-reiconv */ + "1130", /* cppp-reiconv */ ), - ebcdic1130, - EBCDIC_1130, - {ebcdic1130_mbtowc, nullptr}, {ebcdic1130_wctomb, nullptr}) - + ebcdic1130, EBCDIC_1130, {ebcdic1130_mbtowc, nullptr}, {ebcdic1130_wctomb, nullptr}) DEFCODEPAGE(1130, ebcdic1130) DEFENCODING(("IBM1132", /* glibc */ + "CP1132", /* cppp-reiconv */ + "1132", /* cppp-reiconv */ ), - ebcdic1132, - EBCDIC_1132, - {ebcdic1132_mbtowc, nullptr}, {ebcdic1132_wctomb, nullptr}) - + ebcdic1132, EBCDIC_1132, {ebcdic1132_mbtowc, nullptr}, {ebcdic1132_wctomb, nullptr}) DEFCODEPAGE(1132, ebcdic1132) DEFENCODING(("IBM1137", /* glibc */ + "CP1137", /* cppp-reiconv */ + "1137", /* cppp-reiconv */ ), - ebcdic1137, - EBCDIC_1137, - {ebcdic1137_mbtowc, nullptr}, {ebcdic1137_wctomb, nullptr}) - + ebcdic1137, EBCDIC_1137, {ebcdic1137_mbtowc, nullptr}, {ebcdic1137_wctomb, nullptr}) DEFCODEPAGE(1137, ebcdic1137) -DEFENCODING(("IBM1140", +DEFENCODING(("IBM1140", /* IANA */ "IBM01140", /* IANA */ "CCSID01140", /* IANA */ "CP01140", /* IANA */ "EBCDICUS37+EURO", /* IANA */ - "csIBM01140", /* IANA */ + "CSIBM01140", /* IANA */ + "CP1140", /* AIX */ + "1140", /* AIX */ ), - ebcdic1140, - EBCDIC_1140, - {ebcdic1140_mbtowc, nullptr}, {ebcdic1140_wctomb, nullptr}) - + ebcdic1140, EBCDIC_1140, {ebcdic1140_mbtowc, nullptr}, {ebcdic1140_wctomb, nullptr}) DEFCODEPAGE(1140, ebcdic1140) -DEFENCODING(("IBM1141", +DEFENCODING(("IBM1141", /* IANA */ "IBM01141", /* IANA */ "CCSID01141", /* IANA */ "CP01141", /* IANA */ "EBCDICDE273+EURO", /* IANA */ - "csIBM01141", /* IANA */ + "CSIBM01141", /* IANA */ + "CP1141", /* AIX */ + "1141", /* AIX */ ), - ebcdic1141, - EBCDIC_1141, - {ebcdic1141_mbtowc, nullptr}, {ebcdic1141_wctomb, nullptr}) - + ebcdic1141, EBCDIC_1141, {ebcdic1141_mbtowc, nullptr}, {ebcdic1141_wctomb, nullptr}) DEFCODEPAGE(1141, ebcdic1141) -DEFENCODING(("IBM1142", +DEFENCODING(("IBM1142", /* AIX */ "IBM01142", /* IANA */ "CCSID01142", /* IANA */ "CP01142", /* IANA */ "EBCDICDK277+EURO", /* IANA */ "EBCDICNO277+EURO", /* IANA */ - "csIBM01142", /* IANA */ + "CSIBM01142", /* IANA */ + "CP1142", /* AIX */ + "1142", /* AIX */ ), - ebcdic1142, - EBCDIC_1142, - {ebcdic1142_mbtowc, nullptr}, {ebcdic1142_wctomb, nullptr}) - + ebcdic1142, EBCDIC_1142, {ebcdic1142_mbtowc, nullptr}, {ebcdic1142_wctomb, nullptr}) DEFCODEPAGE(1142, ebcdic1142) -DEFENCODING(("IBM1143", +DEFENCODING(("IBM1143", /* AIX */ "IBM01143", /* IANA */ "CCSID01143", /* IANA */ "CP01143", /* IANA */ "EBCDICFI278+EURO", /* IANA */ "EBCDICSE278+EURO", /* IANA */ - "csIBM01143", /* IANA */ + "CSIBM01143", /* IANA */ + "CP1143", /* AIX */ + "1143", /* AIX */ ), - ebcdic1143, - EBCDIC_1143, - {ebcdic1143_mbtowc, nullptr}, {ebcdic1143_wctomb, nullptr}) - + ebcdic1143, EBCDIC_1143, {ebcdic1143_mbtowc, nullptr}, {ebcdic1143_wctomb, nullptr}) DEFCODEPAGE(1143, ebcdic1143) -DEFENCODING(("IBM1144", +DEFENCODING(("IBM1144", /* AIX */ "IBM01144", /* IANA */ "CCSID01144", /* IANA */ "CP01144", /* IANA */ "EBCDICIT280+EURO", /* IANA */ - "csPC8CodePage1144", /* IANA */ + "CSPC8CODEPAGE1144", /* IANA */ + "CP1144", /* AIX */ + "1144", /* AIX */ ), - ebcdic1144, - EBCDIC_1144, - {ebcdic1144_mbtowc, nullptr}, {ebcdic1144_wctomb, nullptr}) - + ebcdic1144, EBCDIC_1144, {ebcdic1144_mbtowc, nullptr}, {ebcdic1144_wctomb, nullptr}) DEFCODEPAGE(1144, ebcdic1144) -DEFENCODING(("IBM1145", +DEFENCODING(("IBM1145", /* AIX */ "IBM01145", /* IANA */ "CCSID01145", /* IANA */ "CP01145", /* IANA */ "EBCDICES284+EURO", /* IANA */ - "csIBM01145", /* IANA */ + "CSIBM01145", /* IANA */ + "CP1145", /* AIX */ + "1145", /* AIX */ ), - ebcdic1145, - EBCDIC_1145, - {ebcdic1145_mbtowc, nullptr}, {ebcdic1145_wctomb, nullptr}) - + ebcdic1145, EBCDIC_1145, {ebcdic1145_mbtowc, nullptr}, {ebcdic1145_wctomb, nullptr}) DEFCODEPAGE(1145, ebcdic1145) -DEFENCODING(("IBM1146", +DEFENCODING(("IBM1146", /* AIX */ "IBM01146", /* IANA */ "CCSID01146", /* IANA */ "CP01146", /* IANA */ "EBCDICGB285+EURO", /* IANA */ - "csPC8CodePage1146", /* IANA */ + "CSPC8CODEPAGE1146", /* IANA */ + "CP1146", /* AIX */ + "1146", /* AIX */ ), - ebcdic1146, - EBCDIC_1146, - {ebcdic1146_mbtowc, nullptr}, {ebcdic1146_wctomb, nullptr}) - + ebcdic1146, EBCDIC_1146, {ebcdic1146_mbtowc, nullptr}, {ebcdic1146_wctomb, nullptr}) DEFCODEPAGE(1146, ebcdic1146) -DEFENCODING(("IBM1147", +DEFENCODING(("IBM1147", /* AIX */ "IBM01147", /* IANA */ "CCSID01147", /* IANA */ "CP01147", /* IANA */ "EBCDICFR297+EURO", /* IANA */ - "csIBM01147", /* IANA */ + "CSIBM01147", /* IANA */ + "CP1147", /* AIX */ + "1147", /* AIX */ ), - ebcdic1147, - EBCDIC_1147, - {ebcdic1147_mbtowc, nullptr}, {ebcdic1147_wctomb, nullptr}) - + ebcdic1147, EBCDIC_1147, {ebcdic1147_mbtowc, nullptr}, {ebcdic1147_wctomb, nullptr}) DEFCODEPAGE(1147, ebcdic1147) -DEFENCODING(("IBM1148", +DEFENCODING(("IBM1148", /* AIX */ "IBM01148", /* IANA */ "CCSID01148", /* IANA */ "CP01148", /* IANA */ "EBCDICINTERNATIONAL500+EURO", /* IANA */ - "csIBM01148", /* IANA */ + "CSIBM01148", /* IANA */ + "CP1148", /* AIX */ + "1148", /* AIX */ ), - ebcdic1148, - EBCDIC_1148, - {ebcdic1148_mbtowc, nullptr}, {ebcdic1148_wctomb, nullptr}) - + ebcdic1148, EBCDIC_1148, {ebcdic1148_mbtowc, nullptr}, {ebcdic1148_wctomb, nullptr}) DEFCODEPAGE(1148, ebcdic1148) -DEFENCODING(("IBM1149", +DEFENCODING(("IBM1149", /* AIX */ "IBM01149", /* IANA */ "CCSID01149", /* IANA */ "CP01149", /* IANA */ "EBCDICIS871+EURO", /* IANA */ - "csIBM01149", /* IANA */ + "CSIBM01149", /* IANA */ + "CP1149", /* AIX */ + "1149", /* AIX */ ), - ebcdic1149, - EBCDIC_1149, - {ebcdic1149_mbtowc, nullptr}, {ebcdic1149_wctomb, nullptr}) - + ebcdic1149, EBCDIC_1149, {ebcdic1149_mbtowc, nullptr}, {ebcdic1149_wctomb, nullptr}) DEFCODEPAGE(1149, ebcdic1149) DEFENCODING(("IBM1153", /* glibc */ + "CP1153", /* cppp-reiconv */ + "1153", /* cppp-reiconv */ ), - ebcdic1153, - EBCDIC_1153, - {ebcdic1153_mbtowc, nullptr}, {ebcdic1153_wctomb, nullptr}) - + ebcdic1153, EBCDIC_1153, {ebcdic1153_mbtowc, nullptr}, {ebcdic1153_wctomb, nullptr}) DEFCODEPAGE(1153, ebcdic1153) DEFENCODING(("IBM1154", /* glibc */ + "CP1154", /* cppp-reiconv */ + "1154", /* cppp-reiconv */ ), - ebcdic1154, - EBCDIC_1154, - {ebcdic1154_mbtowc, nullptr}, {ebcdic1154_wctomb, nullptr}) - + ebcdic1154, EBCDIC_1154, {ebcdic1154_mbtowc, nullptr}, {ebcdic1154_wctomb, nullptr}) DEFCODEPAGE(1154, ebcdic1154) DEFENCODING(("IBM1155", /* glibc */ + "CP1155", /* cppp-reiconv */ + "1155", /* cppp-reiconv */ ), - ebcdic1155, - EBCDIC_1155, - {ebcdic1155_mbtowc, nullptr}, {ebcdic1155_wctomb, nullptr}) - + ebcdic1155, EBCDIC_1155, {ebcdic1155_mbtowc, nullptr}, {ebcdic1155_wctomb, nullptr}) DEFCODEPAGE(1155, ebcdic1155) DEFENCODING(("IBM1156", /* glibc */ + "CP1156", /* cppp-reiconv */ + "1156", /* cppp-reiconv */ ), - ebcdic1156, - EBCDIC_1156, - {ebcdic1156_mbtowc, nullptr}, {ebcdic1156_wctomb, nullptr}) - + ebcdic1156, EBCDIC_1156, {ebcdic1156_mbtowc, nullptr}, {ebcdic1156_wctomb, nullptr}) DEFCODEPAGE(1156, ebcdic1156) DEFENCODING(("IBM1157", /* glibc */ + "CP1157", /* cppp-reiconv */ + "1157", /* cppp-reiconv */ ), - ebcdic1157, - EBCDIC_1157, - {ebcdic1157_mbtowc, nullptr}, {ebcdic1157_wctomb, nullptr}) - + ebcdic1157, EBCDIC_1157, {ebcdic1157_mbtowc, nullptr}, {ebcdic1157_wctomb, nullptr}) DEFCODEPAGE(1157, ebcdic1157) DEFENCODING(("IBM1158", /* glibc */ + "CP1158", /* cppp-reiconv */ + "1158", /* cppp-reiconv */ ), - ebcdic1158, - EBCDIC_1158, - {ebcdic1158_mbtowc, nullptr}, {ebcdic1158_wctomb, nullptr}) - + ebcdic1158, EBCDIC_1158, {ebcdic1158_mbtowc, nullptr}, {ebcdic1158_wctomb, nullptr}) DEFCODEPAGE(1158, ebcdic1158) DEFENCODING(("IBM1160", /* glibc */ + "CP1160", /* cppp-reiconv */ + "1160", /* cppp-reiconv */ ), - ebcdic1160, - EBCDIC_1160, - {ebcdic1160_mbtowc, nullptr}, {ebcdic1160_wctomb, nullptr}) - + ebcdic1160, EBCDIC_1160, {ebcdic1160_mbtowc, nullptr}, {ebcdic1160_wctomb, nullptr}) DEFCODEPAGE(1160, ebcdic1160) DEFENCODING(("IBM1164", /* glibc */ + "CP1164", /* cppp-reiconv */ + "1164", /* cppp-reiconv */ ), - ebcdic1164, - EBCDIC_1164, - {ebcdic1164_mbtowc, nullptr}, {ebcdic1164_wctomb, nullptr}) - + ebcdic1164, EBCDIC_1164, {ebcdic1164_mbtowc, nullptr}, {ebcdic1164_wctomb, nullptr}) DEFCODEPAGE(1164, ebcdic1164) -DEFENCODING(("IBM1165", ), - ebcdic1165, - EBCDIC_1165, - {ebcdic1165_mbtowc, nullptr}, {ebcdic1165_wctomb, nullptr}) - +DEFENCODING(("IBM1165", /* libiconv */ + "CP1165", /* cppp-reiconv */ + "1165", /* cppp-reiconv */ + ), + ebcdic1165, EBCDIC_1165, {ebcdic1165_mbtowc, nullptr}, {ebcdic1165_wctomb, nullptr}) DEFCODEPAGE(1165, ebcdic1165) DEFENCODING(("IBM1166", /* glibc */ + "CP1166", /* cppp-reiconv */ + "1166", /* cppp-reiconv */ ), - ebcdic1166, - EBCDIC_1166, - {ebcdic1166_mbtowc, nullptr}, {ebcdic1166_wctomb, nullptr}) - + ebcdic1166, EBCDIC_1166, {ebcdic1166_mbtowc, nullptr}, {ebcdic1166_wctomb, nullptr}) DEFCODEPAGE(1166, ebcdic1166) DEFENCODING(("IBM4971", /* glibc */ + "CP4971", /* cppp-reiconv */ + "4971", /* cppp-reiconv */ ), - ebcdic4971, - EBCDIC_4971, - {ebcdic4971_mbtowc, nullptr}, {ebcdic4971_wctomb, nullptr}) - + ebcdic4971, EBCDIC_4971, {ebcdic4971_mbtowc, nullptr}, {ebcdic4971_wctomb, nullptr}) DEFCODEPAGE(4971, ebcdic4971) DEFENCODING(("IBM12712", /* glibc */ + "CP12712", /* cppp-reiconv */ + "12712", /* cppp-reiconv */ ), - ebcdic12712, - EBCDIC_12712, - {ebcdic12712_mbtowc, nullptr}, {ebcdic12712_wctomb, nullptr}) - + ebcdic12712, EBCDIC_12712, {ebcdic12712_mbtowc, nullptr}, {ebcdic12712_wctomb, nullptr}) DEFCODEPAGE(12712, ebcdic12712) DEFENCODING(("IBM16804", /* glibc */ + "CP16804", /* cppp-reiconv */ + "16804", /* cppp-reiconv */ ), - ebcdic16804, - EBCDIC_16804, - {ebcdic16804_mbtowc, nullptr}, {ebcdic16804_wctomb, nullptr}) - + ebcdic16804, EBCDIC_16804, {ebcdic16804_mbtowc, nullptr}, {ebcdic16804_wctomb, nullptr}) DEFCODEPAGE(16804, ebcdic16804) -DEFENCODING(("EUCJISX0213", - "EUCJIS2004", /* x0213.org */ +// Extra encodigns +DEFENCODING(("EUCJISX0213", /* x0213.org */ + "EUCJIS2004", /* x0213.org */ ), - euc_jisx0213, - EUC_JISX0213, - {euc_jisx0213_mbtowc, euc_jisx0213_flushwc}, {euc_jisx0213_wctomb, euc_jisx0213_reset}) + euc_jisx0213, EUC_JISX0213, {euc_jisx0213_mbtowc, euc_jisx0213_flushwc}, + {euc_jisx0213_wctomb, euc_jisx0213_reset}) -DEFENCODING(("SHIFTJISX0213", - "SHIFTJIS2004", /* x0213.org */ +DEFENCODING(("SHIFTJISX0213", /* x0213.org */ + "SHIFTJIS2004", /* x0213.org */ ), - shift_jisx0213, - SHIFT_JISX0213, - {shift_jisx0213_mbtowc, shift_jisx0213_flushwc}, {shift_jisx0213_wctomb, shift_jisx0213_reset}) + shift_jisx0213, SHIFT_JISX0213, {shift_jisx0213_mbtowc, shift_jisx0213_flushwc}, + {shift_jisx0213_wctomb, shift_jisx0213_reset}) -DEFENCODING(("ISO2022JP3", +DEFENCODING(("ISO2022JP3", /* x0213.org */ "ISO2022JP2004", /* x0213.org */ ), - iso2022_jp3, - ISO2022_JP3, - {iso2022_jp3_mbtowc, iso2022_jp3_flushwc}, {iso2022_jp3_wctomb, iso2022_jp3_reset}) - -DEFENCODING(("BIG52003", ), - big5_2003, - BIG5_2003, - {big5_2003_mbtowc, nullptr}, {big5_2003_wctomb, nullptr}) + iso2022_jp3, ISO2022_JP3, {iso2022_jp3_mbtowc, iso2022_jp3_flushwc}, + {iso2022_jp3_wctomb, iso2022_jp3_reset}) -DEFENCODING(("TDS565", - "ISOIR230", ), - tds565, - TDS565, - {tds565_mbtowc, nullptr}, {tds565_wctomb, nullptr}) +DEFENCODING(("BIG52003", /* (Unknown) */ + ), + big5_2003, BIG5_2003, {big5_2003_mbtowc, nullptr}, {big5_2003_wctomb, nullptr}) -DEFENCODING(("ATARIST", - "ATARI", ), - atarist, - ATARIST, - {atarist_mbtowc, nullptr}, {atarist_wctomb, nullptr}) +DEFENCODING(("TDS565", /* (Unknown) */ + "ISOIR230", /* (Unknown) */ + ), + tds565, TDS565, {tds565_mbtowc, nullptr}, {tds565_wctomb, nullptr}) +DEFENCODING(("ATARIST", /* (Unknown) */ + "ATARI", /* (Unknown) */ + ), + atarist, ATARIST, {atarist_mbtowc, nullptr}, {atarist_wctomb, nullptr}) DEFINDEX(ATARI, ATARIST) -DEFENCODING(("RISCOSLATIN1", ), - riscos1, - RISCOS_LATIN1, - {riscos1_mbtowc, nullptr}, {riscos1_wctomb, nullptr}) +DEFENCODING(("RISCOSLATIN1", /* (Unknown) */ + ), + riscos1, RISCOS_LATIN1, {riscos1_mbtowc, nullptr}, {riscos1_wctomb, nullptr}) diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index 7eebb5a3..94da48b4 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -1,6 +1,6 @@ /* C++ code produced by gperf version 3.1 */ /* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases.gperf */ -/* Computed positions: -k'1-2,4-10,$' */ +/* Computed positions: -k'1-10,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ @@ -32,12 +32,12 @@ #line 1 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; -#define TOTAL_KEYWORDS 555 +#define TOTAL_KEYWORDS 840 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 39 -#define MIN_HASH_VALUE 7 -#define MAX_HASH_VALUE 2577 -/* maximum key range = 2571, duplicates = 0 */ +#define MIN_HASH_VALUE 4 +#define MAX_HASH_VALUE 4067 +/* maximum key range = 4064, duplicates = 0 */ class HashPool { @@ -52,19 +52,20 @@ HashPool::aliases_hash (const char *str, size_t len) { static const unsigned short asso_values[] = { - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 0, 2578, 28, 4, - 58, 142, 16, 1, 0, 104, 18, 186, 721, 2578, - 2578, 2578, 2578, 2578, 2578, 6, 254, 0, 54, 16, - 13, 318, 81, 0, 736, 92, 707, 81, 17, 27, - 8, 2578, 628, 0, 446, 667, 22, 364, 41, 2, - 1, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578 + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 1, 44, 4068, 3, 0, + 34, 260, 15, 6, 98, 544, 64, 341, 644, 844, + 849, 805, 4068, 4068, 4068, 530, 441, 0, 748, 328, + 469, 5, 177, 0, 589, 510, 3, 1, 11, 386, + 25, 112, 151, 0, 424, 2, 182, 536, 220, 14, + 2, 8, 0, 0, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068 }; unsigned int hval = len; @@ -83,7 +84,7 @@ HashPool::aliases_hash (const char *str, size_t len) hval += asso_values[static_cast(str[6])]; /*FALLTHROUGH*/ case 6: - hval += asso_values[static_cast(str[5])]; + hval += asso_values[static_cast(str[5]+4)]; /*FALLTHROUGH*/ case 5: hval += asso_values[static_cast(str[4])]; @@ -92,8 +93,10 @@ HashPool::aliases_hash (const char *str, size_t len) hval += asso_values[static_cast(str[3])]; /*FALLTHROUGH*/ case 3: + hval += asso_values[static_cast(str[2])]; + /*FALLTHROUGH*/ case 2: - hval += asso_values[static_cast(str[1])]; + hval += asso_values[static_cast(str[1]+2)]; /*FALLTHROUGH*/ case 1: hval += asso_values[static_cast(str[0])]; @@ -104,2639 +107,4061 @@ HashPool::aliases_hash (const char *str, size_t len) struct stringpool_t { - char stringpool_str7[sizeof("CSASCII")]; - char stringpool_str8[sizeof("CSVISCII")]; - char stringpool_str11[sizeof("ASCII")]; - char stringpool_str12[sizeof("CPIS")]; - char stringpool_str13[sizeof("5601")]; - char stringpool_str14[sizeof("1125")]; - char stringpool_str19[sizeof("646")]; - char stringpool_str21[sizeof("866")]; - char stringpool_str22[sizeof("865")]; - char stringpool_str23[sizeof("855")]; - char stringpool_str25[sizeof("861")]; - char stringpool_str28[sizeof("VISCII")]; - char stringpool_str33[sizeof("CP285")]; - char stringpool_str36[sizeof("CN")]; - char stringpool_str38[sizeof("CSUCS4")]; - char stringpool_str39[sizeof("CP01146")]; - char stringpool_str40[sizeof("858")]; - char stringpool_str41[sizeof("CP01145")]; - char stringpool_str47[sizeof("CP01141")]; - char stringpool_str48[sizeof("VISCII1.11")]; - char stringpool_str49[sizeof("860")]; - char stringpool_str50[sizeof("850")]; - char stringpool_str58[sizeof("ISO646CN")]; - char stringpool_str69[sizeof("ECMA114")]; - char stringpool_str71[sizeof("CP01144")]; - char stringpool_str73[sizeof("ECMA118")]; - char stringpool_str75[sizeof("CP01148")]; - char stringpool_str79[sizeof("862")]; - char stringpool_str80[sizeof("852")]; - char stringpool_str85[sizeof("HZ")]; - char stringpool_str90[sizeof("MAC")]; - char stringpool_str93[sizeof("CSKZ1048")]; - char stringpool_str95[sizeof("CP01140")]; - char stringpool_str102[sizeof("ANSI1251")]; - char stringpool_str103[sizeof("PCK")]; - char stringpool_str104[sizeof("MSANSI")]; - char stringpool_str110[sizeof("X0201")]; - char stringpool_str116[sizeof("CCSID01146")]; - char stringpool_str117[sizeof("MSEE")]; - char stringpool_str118[sizeof("CCSID01145")]; - char stringpool_str124[sizeof("CCSID01141")]; - char stringpool_str126[sizeof("857")]; - char stringpool_str129[sizeof("CP1250")]; - char stringpool_str130[sizeof("HP15CN")]; - char stringpool_str133[sizeof("CSUNICODE11")]; - char stringpool_str136[sizeof("KSC5601")]; - char stringpool_str138[sizeof("X0208")]; - char stringpool_str139[sizeof("CSUNICODE")]; - char stringpool_str140[sizeof("CSPC8CODEPAGE1146")]; - char stringpool_str148[sizeof("CCSID01144")]; - char stringpool_str151[sizeof("CSPCP852")]; - char stringpool_str152[sizeof("CCSID01148")]; - char stringpool_str153[sizeof("CHINESE")]; - char stringpool_str154[sizeof("CSKSC56011987")]; - char stringpool_str155[sizeof("CP01142")]; - char stringpool_str156[sizeof("CSPC8CODEPAGE1144")]; - char stringpool_str160[sizeof("XMACCE")]; - char stringpool_str163[sizeof("863")]; - char stringpool_str164[sizeof("853")]; - char stringpool_str172[sizeof("CCSID01140")]; - char stringpool_str173[sizeof("CP870")]; - char stringpool_str179[sizeof("KZ1048")]; - char stringpool_str181[sizeof("KOREAN")]; - char stringpool_str183[sizeof("DECHANZI")]; - char stringpool_str194[sizeof("X0212")]; - char stringpool_str207[sizeof("869")]; - char stringpool_str208[sizeof("ASMO708")]; - char stringpool_str221[sizeof("DOS862")]; - char stringpool_str228[sizeof("MS936")]; - char stringpool_str231[sizeof("ISO88596")]; - char stringpool_str232[sizeof("CCSID01142")]; - char stringpool_str233[sizeof("ISO88595")]; - char stringpool_str236[sizeof("ISO885916")]; - char stringpool_str237[sizeof("CSUNICODE11UTF7")]; - char stringpool_str238[sizeof("ISO885915")]; - char stringpool_str239[sizeof("ISO88591")]; - char stringpool_str243[sizeof("CSPC8CODEPAGE437")]; - char stringpool_str244[sizeof("ISO885911")]; - char stringpool_str245[sizeof("ISO2022CN")]; - char stringpool_str247[sizeof("CP01147")]; - char stringpool_str257[sizeof("CSISO2022CN")]; - char stringpool_str260[sizeof("BIG5")]; - char stringpool_str263[sizeof("ISO88594")]; - char stringpool_str264[sizeof("HPROMAN8")]; - char stringpool_str265[sizeof("437")]; - char stringpool_str267[sizeof("ISO88598")]; - char stringpool_str268[sizeof("ISO885914")]; - char stringpool_str269[sizeof("IBM1166")]; - char stringpool_str270[sizeof("IBM1156")]; - char stringpool_str271[sizeof("IBM1165")]; - char stringpool_str272[sizeof("IBM1155")]; - char stringpool_str277[sizeof("IBM1161")]; - char stringpool_str278[sizeof("IBM866")]; - char stringpool_str279[sizeof("IBM856")]; - char stringpool_str280[sizeof("IBM865")]; - char stringpool_str281[sizeof("IBM855")]; - char stringpool_str285[sizeof("IBM1146")]; - char stringpool_str286[sizeof("IBM861")]; - char stringpool_str287[sizeof("IBM1145")]; - char stringpool_str292[sizeof("ISO885910")]; - char stringpool_str293[sizeof("IBM1141")]; - char stringpool_str301[sizeof("IBM1164")]; - char stringpool_str302[sizeof("IBM1154")]; - char stringpool_str306[sizeof("IBM1158")]; - char stringpool_str309[sizeof("IBM1046")]; - char stringpool_str310[sizeof("IBM864")]; - char stringpool_str314[sizeof("IBM01146")]; - char stringpool_str315[sizeof("IBM858")]; - char stringpool_str316[sizeof("IBM01145")]; - char stringpool_str317[sizeof("IBM1144")]; - char stringpool_str319[sizeof("CP00924")]; - char stringpool_str321[sizeof("IBM1148")]; - char stringpool_str322[sizeof("IBM01141")]; - char stringpool_str323[sizeof("CP01143")]; - char stringpool_str324[sizeof("CCSID01147")]; - char stringpool_str325[sizeof("IBM1160")]; - char stringpool_str326[sizeof("CSBIG5")]; - char stringpool_str328[sizeof("BIGFIVE")]; - char stringpool_str329[sizeof("IBM1125")]; - char stringpool_str333[sizeof("CNS11643")]; - char stringpool_str334[sizeof("IBM860")]; - char stringpool_str335[sizeof("IBM850")]; - char stringpool_str336[sizeof("IBM425")]; - char stringpool_str338[sizeof("IBM285")]; - char stringpool_str341[sizeof("IBM1140")]; - char stringpool_str342[sizeof("EBCDICCPIS")]; - char stringpool_str343[sizeof("CNBIG5")]; - char stringpool_str344[sizeof("IBM16804")]; - char stringpool_str345[sizeof("IBM500")]; - char stringpool_str346[sizeof("IBM01144")]; - char stringpool_str347[sizeof("ISO88592")]; - char stringpool_str350[sizeof("IBM01148")]; - char stringpool_str351[sizeof("IBM1026")]; - char stringpool_str352[sizeof("IBM880")]; - char stringpool_str353[sizeof("IBM1025")]; - char stringpool_str354[sizeof("EBCDICCPCA")]; - char stringpool_str355[sizeof("EBCDICCPFI")]; - char stringpool_str358[sizeof("EBCDICCPES")]; - char stringpool_str359[sizeof("IBM1124")]; - char stringpool_str360[sizeof("CSIBM1161")]; - char stringpool_str361[sizeof("CSIBM866")]; - char stringpool_str363[sizeof("CSIBM865")]; - char stringpool_str364[sizeof("CSIBM855")]; - char stringpool_str365[sizeof("CCSID853")]; - char stringpool_str366[sizeof("IBM424")]; - char stringpool_str368[sizeof("IBM284")]; - char stringpool_str369[sizeof("CSIBM861")]; - char stringpool_str370[sizeof("IBM01140")]; - char stringpool_str373[sizeof("IBM00858")]; - char stringpool_str374[sizeof("EBCDICCPSE")]; - char stringpool_str375[sizeof("C99")]; - char stringpool_str384[sizeof("IBM875")]; - char stringpool_str385[sizeof("IBM1162")]; - char stringpool_str389[sizeof("IBM1112")]; - char stringpool_str390[sizeof("IBM871")]; - char stringpool_str392[sizeof("IBM280")]; - char stringpool_str393[sizeof("CSIBM864")]; - char stringpool_str394[sizeof("IBM862")]; - char stringpool_str395[sizeof("IBM852")]; - char stringpool_str396[sizeof("CCSID00924")]; - char stringpool_str398[sizeof("CSIBM858")]; - char stringpool_str399[sizeof("CSIBM01145")]; - char stringpool_str400[sizeof("CCSID01143")]; - char stringpool_str401[sizeof("IBM1142")]; - char stringpool_str405[sizeof("CSIBM01141")]; - char stringpool_str411[sizeof("CP01149")]; - char stringpool_str412[sizeof("CSIBM1125")]; - char stringpool_str413[sizeof("EBCDICCPNO")]; - char stringpool_str417[sizeof("CSIBM860")]; - char stringpool_str419[sizeof("IBM1131")]; - char stringpool_str421[sizeof("CSIBM285")]; - char stringpool_str424[sizeof("ANSIX3.41986")]; - char stringpool_str428[sizeof("CSIBM500")]; - char stringpool_str430[sizeof("IBM01142")]; - char stringpool_str433[sizeof("CSIBM01148")]; - char stringpool_str434[sizeof("CSIBM1026")]; - char stringpool_str435[sizeof("CSIBM880")]; - char stringpool_str437[sizeof("BIG5HKSCS")]; - char stringpool_str438[sizeof("IBM870")]; - char stringpool_str439[sizeof("ISO88597")]; - char stringpool_str440[sizeof("IBM1252")]; - char stringpool_str442[sizeof("ANSIX3.41968")]; - char stringpool_str443[sizeof("IBM1122")]; - char stringpool_str448[sizeof("KSC56011987")]; - char stringpool_str449[sizeof("CSIBM424")]; - char stringpool_str451[sizeof("CSIBM284")]; - char stringpool_str452[sizeof("IBM282")]; - char stringpool_str453[sizeof("CSIBM01140")]; - char stringpool_str455[sizeof("EBCDICCPHE")]; - char stringpool_str456[sizeof("IBM838")]; - char stringpool_str458[sizeof("IBM278")]; - char stringpool_str459[sizeof("EBCDICES284+EURO")]; - char stringpool_str467[sizeof("IBM1130")]; - char stringpool_str468[sizeof("CSIBM1162")]; - char stringpool_str470[sizeof("IBM775")]; - char stringpool_str473[sizeof("CSIBM871")]; - char stringpool_str475[sizeof("CSIBM280")]; - char stringpool_str476[sizeof("IBM905")]; - char stringpool_str478[sizeof("IBM1157")]; - char stringpool_str479[sizeof("CSWINDOWS1256")]; - char stringpool_str480[sizeof("CSWINDOWS1255")]; - char stringpool_str483[sizeof("CSWINDOWS1251")]; - char stringpool_str484[sizeof("TCVN")]; - char stringpool_str487[sizeof("IBM857")]; - char stringpool_str488[sizeof("CCSID01149")]; - char stringpool_str489[sizeof("EBCDICIS871+EURO")]; - char stringpool_str492[sizeof("PT154")]; - char stringpool_str493[sizeof("IBM1147")]; - char stringpool_str495[sizeof("CSWINDOWS1254")]; - char stringpool_str497[sizeof("CSWINDOWS1258")]; - char stringpool_str500[sizeof("CSPTCP154")]; - char stringpool_str504[sizeof("EBCDICCPCH")]; - char stringpool_str506[sizeof("PTCP154")]; - char stringpool_str507[sizeof("CSWINDOWS1250")]; - char stringpool_str508[sizeof("CSWINDOWS874")]; - char stringpool_str509[sizeof("TDS565")]; - char stringpool_str512[sizeof("IBM921")]; - char stringpool_str513[sizeof("CSIBM01142")]; - char stringpool_str515[sizeof("ISO88593")]; - char stringpool_str517[sizeof("IBM1047")]; - char stringpool_str520[sizeof("ISO885913")]; - char stringpool_str521[sizeof("CSIBM870")]; - char stringpool_str522[sizeof("IBM01147")]; - char stringpool_str527[sizeof("IBM1132")]; - char stringpool_str529[sizeof("CNGB")]; - char stringpool_str530[sizeof("KSC56011989")]; - char stringpool_str536[sizeof("IBM924")]; - char stringpool_str537[sizeof("CSWINDOWS1252")]; - char stringpool_str541[sizeof("CSIBM278")]; - char stringpool_str542[sizeof("EBCDICFI278+EURO")]; - char stringpool_str545[sizeof("EBCDICSE278+EURO")]; - char stringpool_str548[sizeof("IBM12712")]; - char stringpool_str553[sizeof("IBM1163")]; - char stringpool_str554[sizeof("IBM1153")]; - char stringpool_str559[sizeof("CSIBM905")]; - char stringpool_str562[sizeof("IBM863")]; - char stringpool_str563[sizeof("IBM853")]; - char stringpool_str566[sizeof("TIS620")]; - char stringpool_str569[sizeof("IBM1143")]; - char stringpool_str570[sizeof("CSIBM857")]; - char stringpool_str573[sizeof("EBCDICNO277+EURO")]; - char stringpool_str575[sizeof("IBM4971")]; - char stringpool_str580[sizeof("EBCDICCPDK")]; - char stringpool_str582[sizeof("CSGB2312")]; - char stringpool_str583[sizeof("CSWINDOWS1257")]; - char stringpool_str588[sizeof("CSMACINTOSH")]; - char stringpool_str594[sizeof("IBM00924")]; - char stringpool_str595[sizeof("TIS6200")]; - char stringpool_str598[sizeof("IBM01143")]; - char stringpool_str599[sizeof("EBCDICDE273+EURO")]; - char stringpool_str600[sizeof("CSIBM1047")]; - char stringpool_str603[sizeof("ISO88599")]; - char stringpool_str605[sizeof("CSIBM01147")]; - char stringpool_str610[sizeof("IBM367")]; - char stringpool_str611[sizeof("IBM1123")]; - char stringpool_str618[sizeof("IBM423")]; - char stringpool_str619[sizeof("IBM1137")]; - char stringpool_str620[sizeof("IBM922")]; - char stringpool_str621[sizeof("CSWINDOWS1253")]; - char stringpool_str623[sizeof("SYSTEM1125")]; - char stringpool_str626[sizeof("IBM437")]; - char stringpool_str627[sizeof("MACTHAI")]; - char stringpool_str628[sizeof("EBCDICCPBE")]; - char stringpool_str630[sizeof("IBM277")]; - char stringpool_str634[sizeof("ISOIR6")]; - char stringpool_str636[sizeof("CSIBM1163")]; - char stringpool_str638[sizeof("IBM037")]; - char stringpool_str640[sizeof("ISOIR166")]; - char stringpool_str642[sizeof("ISOIR165")]; - char stringpool_str645[sizeof("CSIBM863")]; - char stringpool_str646[sizeof("CSIBM853")]; - char stringpool_str647[sizeof("TCVN57121")]; - char stringpool_str650[sizeof("IBM869")]; - char stringpool_str654[sizeof("IBM819")]; - char stringpool_str657[sizeof("IBM1149")]; - char stringpool_str661[sizeof("BIG52003")]; - char stringpool_str663[sizeof("XMACTHAI")]; - char stringpool_str664[sizeof("HZGB2312")]; - char stringpool_str665[sizeof("TIS620.25291")]; - char stringpool_str666[sizeof("R8")]; - char stringpool_str667[sizeof("GBK")]; - char stringpool_str669[sizeof("US")]; - char stringpool_str671[sizeof("ISOIR14")]; - char stringpool_str672[sizeof("ISOIR58")]; - char stringpool_str674[sizeof("USASCII")]; - char stringpool_str675[sizeof("EBCDICDK277+EURO")]; - char stringpool_str676[sizeof("ISOIR101")]; - char stringpool_str677[sizeof("CSIBM00924")]; - char stringpool_str678[sizeof("ARMSCII8")]; - char stringpool_str681[sizeof("CSIBM01143")]; - char stringpool_str685[sizeof("ISO646.IRV:1991")]; - char stringpool_str686[sizeof("IBM01149")]; - char stringpool_str687[sizeof("IBM1097")]; - char stringpool_str688[sizeof("ISOIR144")]; - char stringpool_str691[sizeof("ISO646US")]; - char stringpool_str692[sizeof("ISOIR148")]; - char stringpool_str693[sizeof("ISO2022CNEXT")]; - char stringpool_str696[sizeof("TCVN5712")]; - char stringpool_str698[sizeof("ISOIR126")]; - char stringpool_str699[sizeof("IBM1129")]; - char stringpool_str700[sizeof("ISOIR110")]; - char stringpool_str701[sizeof("CSIBM423")]; - char stringpool_str703[sizeof("UCS4")]; - char stringpool_str704[sizeof("IBM932")]; - char stringpool_str705[sizeof("IBMCP1133")]; - char stringpool_str706[sizeof("IBM273")]; - char stringpool_str709[sizeof("L6")]; - char stringpool_str711[sizeof("L5")]; - char stringpool_str712[sizeof("IBM297")]; - char stringpool_str713[sizeof("CSIBM277")]; - char stringpool_str714[sizeof("IBM737")]; - char stringpool_str717[sizeof("L1")]; - char stringpool_str719[sizeof("CSISO58GB231280")]; - char stringpool_str720[sizeof("ROMAN8")]; - char stringpool_str721[sizeof("CSIBM037")]; - char stringpool_str722[sizeof("EUCCN")]; - char stringpool_str724[sizeof("ISOIR100")]; - char stringpool_str733[sizeof("CSIBM869")]; - char stringpool_str736[sizeof("LATIN6")]; - char stringpool_str738[sizeof("LATIN5")]; - char stringpool_str739[sizeof("CSISO57GB1988")]; - char stringpool_str740[sizeof("SJIS")]; - char stringpool_str741[sizeof("L4")]; - char stringpool_str742[sizeof("L10")]; - char stringpool_str743[sizeof("ISO10646UCS4")]; - char stringpool_str744[sizeof("LATIN1")]; - char stringpool_str745[sizeof("L8")]; - char stringpool_str746[sizeof("IBM943")]; - char stringpool_str748[sizeof("MACINTOSH")]; - char stringpool_str749[sizeof("TIS620.25331")]; - char stringpool_str751[sizeof("UHC")]; - char stringpool_str752[sizeof("ISOIR226")]; - char stringpool_str754[sizeof("JP")]; - char stringpool_str758[sizeof("JAVA")]; - char stringpool_str760[sizeof("STRK10482002")]; - char stringpool_str768[sizeof("LATIN4")]; - char stringpool_str769[sizeof("CSIBM01149")]; - char stringpool_str772[sizeof("LATIN8")]; - char stringpool_str773[sizeof("TIS620.25330")]; - char stringpool_str776[sizeof("ISO646JP")]; - char stringpool_str785[sizeof("ISO10646UCS2")]; - char stringpool_str787[sizeof("UCS2")]; - char stringpool_str789[sizeof("CSIBM273")]; - char stringpool_str794[sizeof("IBMTHAI")]; - char stringpool_str795[sizeof("CSIBM297")]; - char stringpool_str797[sizeof("LATIN10")]; - char stringpool_str802[sizeof("UNICODE11")]; - char stringpool_str806[sizeof("RK1048")]; - char stringpool_str813[sizeof("CSHPROMAN8")]; - char stringpool_str818[sizeof("ISOIR138")]; - char stringpool_str823[sizeof("GB18030")]; - char stringpool_str825[sizeof("L2")]; - char stringpool_str827[sizeof("CSISO14JISC6220RO")]; - char stringpool_str840[sizeof("GB2312")]; - char stringpool_str844[sizeof("ISOIR57")]; - char stringpool_str847[sizeof("MSKANJI")]; - char stringpool_str849[sizeof("ISOIR157")]; - char stringpool_str852[sizeof("LATIN2")]; - char stringpool_str857[sizeof("EBCDICINTERNATIONAL500+EURO")]; - char stringpool_str858[sizeof("GB231280")]; - char stringpool_str861[sizeof("ISOIR87")]; - char stringpool_str868[sizeof("MACROMANIA")]; - char stringpool_str871[sizeof("MACROMAN")]; - char stringpool_str876[sizeof("GB198880")]; - char stringpool_str877[sizeof("CSIBMTHAI")]; - char stringpool_str881[sizeof("XMACICELANDIC")]; - char stringpool_str882[sizeof("DECKOREAN")]; - char stringpool_str883[sizeof("WINDOWS1256")]; - char stringpool_str884[sizeof("WINDOWS1255")]; - char stringpool_str886[sizeof("TIS620.2533")]; - char stringpool_str887[sizeof("WINDOWS1251")]; - char stringpool_str889[sizeof("EBCDICIT280+EURO")]; - char stringpool_str892[sizeof("ISOIR230")]; - char stringpool_str893[sizeof("JIS0208")]; - char stringpool_str894[sizeof("ARABIC")]; - char stringpool_str899[sizeof("WINDOWS1254")]; - char stringpool_str901[sizeof("WINDOWS1258")]; - char stringpool_str904[sizeof("TACTIS")]; - char stringpool_str906[sizeof("ISOIR127")]; - char stringpool_str907[sizeof("JISX0201")]; - char stringpool_str910[sizeof("XMACROMANIAN")]; - char stringpool_str911[sizeof("WINDOWS1250")]; - char stringpool_str914[sizeof("SDECKANJI")]; - char stringpool_str917[sizeof("L7")]; - char stringpool_str918[sizeof("CSISO87JISX0208")]; - char stringpool_str929[sizeof("DECKANJI")]; - char stringpool_str932[sizeof("MSGREEK")]; - char stringpool_str935[sizeof("JISX0208")]; - char stringpool_str941[sizeof("WINDOWS1252")]; - char stringpool_str943[sizeof("CNGBISOIR165")]; - char stringpool_str944[sizeof("LATIN7")]; - char stringpool_str950[sizeof("CSEUCPKDFMTJAPANESE")]; - char stringpool_str951[sizeof("MACICELAND")]; - char stringpool_str953[sizeof("EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE")]; - char stringpool_str960[sizeof("CSISO2022KR")]; - char stringpool_str963[sizeof("ISO2022JP")]; - char stringpool_str964[sizeof("ISO2022JP1")]; - char stringpool_str965[sizeof("NEXTSTEP")]; - char stringpool_str966[sizeof("ISO885916:2001")]; - char stringpool_str968[sizeof("EBCDICCYRILLIC")]; - char stringpool_str971[sizeof("JISX0212.19900")]; - char stringpool_str973[sizeof("WINDOWS874")]; - char stringpool_str975[sizeof("UCS4BE")]; - char stringpool_str979[sizeof("IBMEUCCN")]; - char stringpool_str980[sizeof("ISO88595:1988")]; - char stringpool_str981[sizeof("ISO885915:1998")]; - char stringpool_str984[sizeof("CSISO2022JP")]; - char stringpool_str987[sizeof("WINDOWS1257")]; - char stringpool_str990[sizeof("MACARABIC")]; - char stringpool_str991[sizeof("JISX0212")]; - char stringpool_str993[sizeof("L3")]; - char stringpool_str995[sizeof("ISO88594:1988")]; - char stringpool_str996[sizeof("ISO885914:1998")]; - char stringpool_str997[sizeof("ISO88598:1988")]; - char stringpool_str1002[sizeof("CSISO159JISX02121990")]; - char stringpool_str1006[sizeof("ISOIR203")]; - char stringpool_str1009[sizeof("EBCDICCPUS")]; - char stringpool_str1013[sizeof("ISOIR159")]; - char stringpool_str1015[sizeof("EBCDICGB285+EURO")]; - char stringpool_str1016[sizeof("EBCDICCPROECE")]; - char stringpool_str1017[sizeof("UCS2BE")]; - char stringpool_str1020[sizeof("LATIN3")]; - char stringpool_str1025[sizeof("WINDOWS1253")]; - char stringpool_str1026[sizeof("XMACARABIC")]; - char stringpool_str1028[sizeof("ISOIR149")]; - char stringpool_str1033[sizeof("ISO2022JP2004")]; - char stringpool_str1034[sizeof("KOI8T")]; - char stringpool_str1035[sizeof("CSISO2022JP2")]; - char stringpool_str1038[sizeof("ISO2022JPMS")]; - char stringpool_str1040[sizeof("ISOIR109")]; - char stringpool_str1048[sizeof("ISO885910:1992")]; - char stringpool_str1062[sizeof("WINDOWS950")]; - char stringpool_str1065[sizeof("ISO88596:1987")]; - char stringpool_str1069[sizeof("ISO88591:1987")]; - char stringpool_str1072[sizeof("ISO2022JP2")]; - char stringpool_str1085[sizeof("ATARI")]; - char stringpool_str1096[sizeof("GREEK8")]; - char stringpool_str1097[sizeof("JISX02011976")]; - char stringpool_str1108[sizeof("LATIN9")]; - char stringpool_str1111[sizeof("JISC62201969RO")]; - char stringpool_str1116[sizeof("ISOIR179")]; - char stringpool_str1121[sizeof("ISO88593:1988")]; - char stringpool_str1122[sizeof("UTF16")]; - char stringpool_str1123[sizeof("ISO88592:1987")]; - char stringpool_str1139[sizeof("JISX02081990")]; - char stringpool_str1147[sizeof("WINDOWS936")]; - char stringpool_str1150[sizeof("UCS4SWAPPED")]; - char stringpool_str1151[sizeof("GREEK")]; - char stringpool_str1153[sizeof("UTF8")]; - char stringpool_str1155[sizeof("JISX02121990")]; - char stringpool_str1167[sizeof("BIG5HKSCS:2001")]; - char stringpool_str1168[sizeof("EBCDICCPGB")]; - char stringpool_str1169[sizeof("ISO88597:1987")]; - char stringpool_str1178[sizeof("ISOCELTIC")]; - char stringpool_str1179[sizeof("BIG5HKSCS:2004")]; - char stringpool_str1181[sizeof("BIG5HKSCS:2008")]; - char stringpool_str1189[sizeof("CSPC775BALTIC")]; - char stringpool_str1192[sizeof("UCS2SWAPPED")]; - char stringpool_str1196[sizeof("JISC62261983")]; - char stringpool_str1198[sizeof("ISOIR199")]; - char stringpool_str1214[sizeof("CSISOLATIN6")]; - char stringpool_str1215[sizeof("CSISOLATIN5")]; - char stringpool_str1218[sizeof("CSISOLATIN1")]; - char stringpool_str1219[sizeof("CSISOLATINARABIC")]; - char stringpool_str1221[sizeof("CSISOLATINCYRILLIC")]; - char stringpool_str1228[sizeof("MACCROATIAN")]; - char stringpool_str1229[sizeof("MSARAB")]; - char stringpool_str1230[sizeof("CSISOLATIN4")]; - char stringpool_str1234[sizeof("EBCDICCPIT")]; - char stringpool_str1240[sizeof("ISO2022JP3")]; - char stringpool_str1252[sizeof("EBCDICFR297+EURO")]; - char stringpool_str1253[sizeof("JISX02081983")]; - char stringpool_str1257[sizeof("MACGREEK")]; - char stringpool_str1258[sizeof("XMACCROATIAN")]; - char stringpool_str1261[sizeof("ISO88597:2003")]; - char stringpool_str1268[sizeof("CPGR")]; - char stringpool_str1272[sizeof("CSISOLATIN2")]; - char stringpool_str1279[sizeof("EBCDICUS37+EURO")]; - char stringpool_str1282[sizeof("JOHAB")]; - char stringpool_str1284[sizeof("SHIFTJIS")]; - char stringpool_str1286[sizeof("CSSHIFTJIS")]; - char stringpool_str1293[sizeof("XMACGREEK")]; - char stringpool_str1308[sizeof("CSKOI8R")]; - char stringpool_str1310[sizeof("CSISOLATINGREEK")]; - char stringpool_str1321[sizeof("GEORGIANPS")]; - char stringpool_str1325[sizeof("UTF7")]; - char stringpool_str1326[sizeof("GEORGIANACADEMY")]; - char stringpool_str1333[sizeof("ISO88599:1989")]; - char stringpool_str1349[sizeof("BIG5HKSCS:1999")]; - char stringpool_str1356[sizeof("CSISOLATIN3")]; - char stringpool_str1376[sizeof("UTF32")]; - char stringpool_str1390[sizeof("SHIFTJIS2004")]; - char stringpool_str1398[sizeof("KOI8R")]; - char stringpool_str1405[sizeof("EBCDICGREEK")]; - char stringpool_str1410[sizeof("UTF16BE")]; - char stringpool_str1424[sizeof("CYRILLIC")]; - char stringpool_str1428[sizeof("UCS4LE")]; - char stringpool_str1440[sizeof("EUCJP")]; - char stringpool_str1452[sizeof("CYRILLICASIAN")]; - char stringpool_str1456[sizeof("ELOT928")]; - char stringpool_str1470[sizeof("UCS2LE")]; - char stringpool_str1475[sizeof("HEBREW")]; - char stringpool_str1476[sizeof("KOI8U")]; - char stringpool_str1500[sizeof("SHIFTJISX0213")]; - char stringpool_str1511[sizeof("TCVN57121:1993")]; - char stringpool_str1518[sizeof("DECHANYU")]; - char stringpool_str1520[sizeof("MULELAO1")]; - char stringpool_str1526[sizeof("EBCDICLATIN9EURO")]; - char stringpool_str1539[sizeof("MACUKRAINE")]; - char stringpool_str1559[sizeof("ISO2022KR")]; - char stringpool_str1562[sizeof("XMACUKRAINIAN")]; - char stringpool_str1566[sizeof("MSTURK")]; - char stringpool_str1573[sizeof("UNICODE11UTF7")]; - char stringpool_str1575[sizeof("EUCJIS2004")]; - char stringpool_str1583[sizeof("CSISOLATINHEBREW")]; - char stringpool_str1598[sizeof("EBCDICCPWT")]; - char stringpool_str1606[sizeof("UTF32BE")]; - char stringpool_str1608[sizeof("GB18030:2005")]; - char stringpool_str1611[sizeof("EBCDICCPFR")]; - char stringpool_str1613[sizeof("MSHEBR")]; - char stringpool_str1615[sizeof("CSHALFWIDTHKATAKANA")]; - char stringpool_str1617[sizeof("CSPC862LATINHEBREW")]; - char stringpool_str1665[sizeof("GB18030:2022")]; - char stringpool_str1675[sizeof("KOKR.JOHAP92")]; - char stringpool_str1678[sizeof("EBCDICCPYU")]; - char stringpool_str1681[sizeof("UNICODEBIG")]; - char stringpool_str1697[sizeof("IBMEUCJP")]; - char stringpool_str1703[sizeof("EUCJISX0213")]; - char stringpool_str1773[sizeof("EBCDICCPNL")]; - char stringpool_str1819[sizeof("MACHEBREW")]; - char stringpool_str1830[sizeof("RISCOSLATIN1")]; - char stringpool_str1848[sizeof("CSEUCTW")]; - char stringpool_str1855[sizeof("XMACHEBREW")]; - char stringpool_str1862[sizeof("EUCTW")]; - char stringpool_str1863[sizeof("UTF16LE")]; - char stringpool_str1916[sizeof("EBCDICCPGR")]; - char stringpool_str1939[sizeof("MACCENTRALEUROPE")]; - char stringpool_str1963[sizeof("UNICODELITTLE")]; - char stringpool_str1979[sizeof("ATARIST")]; - char stringpool_str2022[sizeof("CSEUCKR")]; - char stringpool_str2036[sizeof("EUCKR")]; - char stringpool_str2044[sizeof("EBCDICCPTR")]; - char stringpool_str2047[sizeof("XMACTURKISH")]; - char stringpool_str2059[sizeof("UTF32LE")]; - char stringpool_str2092[sizeof("MACTURKISH")]; - char stringpool_str2105[sizeof("KOI8RU")]; - char stringpool_str2119[sizeof("IBMEUCTW")]; - char stringpool_str2131[sizeof("MSCYRL")]; - char stringpool_str2142[sizeof("MACCYRILLIC")]; - char stringpool_str2178[sizeof("XMACCYRILLIC")]; - char stringpool_str2228[sizeof("CSPC850MULTILINGUAL")]; - char stringpool_str2293[sizeof("IBMEUCKR")]; - char stringpool_str2526[sizeof("UCS4INTERNAL")]; - char stringpool_str2568[sizeof("UCS2INTERNAL")]; - char stringpool_str2577[sizeof("WINBALTRIM")]; + char stringpool_str4[sizeof("MAC")]; + char stringpool_str6[sizeof("US")]; + char stringpool_str7[sizeof("SJIS")]; + char stringpool_str22[sizeof("1201")]; + char stringpool_str25[sizeof("1251")]; + char stringpool_str26[sizeof("12001")]; + char stringpool_str28[sizeof("1200")]; + char stringpool_str31[sizeof("1250")]; + char stringpool_str32[sizeof("12000")]; + char stringpool_str37[sizeof("1255")]; + char stringpool_str38[sizeof("CN")]; + char stringpool_str45[sizeof("425")]; + char stringpool_str48[sizeof("10010")]; + char stringpool_str49[sizeof("500")]; + char stringpool_str51[sizeof("10000")]; + char stringpool_str54[sizeof("L2")]; + char stringpool_str55[sizeof("1254")]; + char stringpool_str57[sizeof("10005")]; + char stringpool_str63[sizeof("424")]; + char stringpool_str75[sizeof("10004")]; + char stringpool_str76[sizeof("10021")]; + char stringpool_str77[sizeof("5601")]; + char stringpool_str79[sizeof("U32")]; + char stringpool_str84[sizeof("1025")]; + char stringpool_str89[sizeof("CSUCS4")]; + char stringpool_str93[sizeof("1252")]; + char stringpool_str106[sizeof("10081")]; + char stringpool_str108[sizeof("1361")]; + char stringpool_str113[sizeof("50221")]; + char stringpool_str118[sizeof("L4")]; + char stringpool_str125[sizeof("50225")]; + char stringpool_str131[sizeof("861")]; + char stringpool_str137[sizeof("860")]; + char stringpool_str143[sizeof("865")]; + char stringpool_str153[sizeof("1258")]; + char stringpool_str155[sizeof("CPIS")]; + char stringpool_str161[sizeof("864")]; + char stringpool_str166[sizeof("16804")]; + char stringpool_str167[sizeof("L6")]; + char stringpool_str171[sizeof("CP500")]; + char stringpool_str172[sizeof("CP1051")]; + char stringpool_str174[sizeof("10082")]; + char stringpool_str176[sizeof("CP10010")]; + char stringpool_str178[sizeof("CP1141")]; + char stringpool_str181[sizeof("HZ")]; + char stringpool_str185[sizeof("CP10000")]; + char stringpool_str190[sizeof("CP1140")]; + char stringpool_str191[sizeof("CP10005")]; + char stringpool_str192[sizeof("CP154")]; + char stringpool_str195[sizeof("CYRILLIC")]; + char stringpool_str197[sizeof("CSVISCII")]; + char stringpool_str199[sizeof("862")]; + char stringpool_str200[sizeof("CP1201")]; + char stringpool_str201[sizeof("838")]; + char stringpool_str202[sizeof("MSCYRL")]; + char stringpool_str203[sizeof("CP1251")]; + char stringpool_str209[sizeof("CP10004")]; + char stringpool_str210[sizeof("CP12001")]; + char stringpool_str212[sizeof("CP1200")]; + char stringpool_str214[sizeof("MACCYRILLIC")]; + char stringpool_str215[sizeof("CP1250")]; + char stringpool_str216[sizeof("CP12000")]; + char stringpool_str217[sizeof("CP425")]; + char stringpool_str221[sizeof("1256")]; + char stringpool_str225[sizeof("CP01141")]; + char stringpool_str231[sizeof("CP01140")]; + char stringpool_str232[sizeof("CP850")]; + char stringpool_str235[sizeof("CP424")]; + char stringpool_str237[sizeof("CP01145")]; + char stringpool_str238[sizeof("CP855")]; + char stringpool_str241[sizeof("10006")]; + char stringpool_str242[sizeof("CP1154")]; + char stringpool_str248[sizeof("PT154")]; + char stringpool_str249[sizeof("1046")]; + char stringpool_str251[sizeof("CP1144")]; + char stringpool_str255[sizeof("CP01144")]; + char stringpool_str260[sizeof("CP280")]; + char stringpool_str261[sizeof("CP1161")]; + char stringpool_str262[sizeof("CP10021")]; + char stringpool_str265[sizeof("L1")]; + char stringpool_str266[sizeof("CP285")]; + char stringpool_str268[sizeof("1026")]; + char stringpool_str270[sizeof("CP1124")]; + char stringpool_str271[sizeof("L3")]; + char stringpool_str272[sizeof("L10")]; + char stringpool_str273[sizeof("CP1160")]; + char stringpool_str276[sizeof("CP1254")]; + char stringpool_str279[sizeof("1141")]; + char stringpool_str280[sizeof("CP65001")]; + char stringpool_str282[sizeof("1155")]; + char stringpool_str284[sizeof("CP284")]; + char stringpool_str285[sizeof("1140")]; + char stringpool_str286[sizeof("CP65000")]; + char stringpool_str289[sizeof("CP1112")]; + char stringpool_str290[sizeof("CP880")]; + char stringpool_str291[sizeof("1145")]; + char stringpool_str293[sizeof("CP01142")]; + char stringpool_str294[sizeof("CP852")]; + char stringpool_str296[sizeof("X0201")]; + char stringpool_str299[sizeof("CP50221")]; + char stringpool_str300[sizeof("1154")]; + char stringpool_str304[sizeof("CP1142")]; + char stringpool_str309[sizeof("1144")]; + char stringpool_str310[sizeof("1125")]; + char stringpool_str311[sizeof("CP50225")]; + char stringpool_str318[sizeof("CP861")]; + char stringpool_str322[sizeof("CP282")]; + char stringpool_str323[sizeof("CP1122")]; + char stringpool_str324[sizeof("CP860")]; + char stringpool_str327[sizeof("866")]; + char stringpool_str328[sizeof("1124")]; + char stringpool_str329[sizeof("CP1252")]; + char stringpool_str330[sizeof("CP865")]; + char stringpool_str332[sizeof("1112")]; + char stringpool_str334[sizeof("CP1164")]; + char stringpool_str347[sizeof("1142")]; + char stringpool_str348[sizeof("CP864")]; + char stringpool_str353[sizeof("CP01148")]; + char stringpool_str354[sizeof("CP858")]; + char stringpool_str361[sizeof("X0212")]; + char stringpool_str362[sizeof("1161")]; + char stringpool_str364[sizeof("UCS4")]; + char stringpool_str365[sizeof("CP16804")]; + char stringpool_str366[sizeof("1122")]; + char stringpool_str368[sizeof("1160")]; + char stringpool_str374[sizeof("1165")]; + char stringpool_str375[sizeof("CP10006")]; + char stringpool_str386[sizeof("CP862")]; + char stringpool_str387[sizeof("CP1162")]; + char stringpool_str389[sizeof("924")]; + char stringpool_str392[sizeof("1164")]; + char stringpool_str395[sizeof("646")]; + char stringpool_str398[sizeof("1158")]; + char stringpool_str402[sizeof("UCS2")]; + char stringpool_str407[sizeof("1148")]; + char stringpool_str408[sizeof("871")]; + char stringpool_str414[sizeof("870")]; + char stringpool_str418[sizeof("932")]; + char stringpool_str420[sizeof("875")]; + char stringpool_str421[sizeof("CP01146")]; + char stringpool_str422[sizeof("CP856")]; + char stringpool_str423[sizeof("CP1131")]; + char stringpool_str424[sizeof("X0208")]; + char stringpool_str427[sizeof("922")]; + char stringpool_str430[sizeof("1162")]; + char stringpool_str431[sizeof("20866")]; + char stringpool_str433[sizeof("CP866U")]; + char stringpool_str435[sizeof("CP1130")]; + char stringpool_str438[sizeof("874")]; + char stringpool_str450[sizeof("LATIN1")]; + char stringpool_str457[sizeof("LATIN10")]; + char stringpool_str461[sizeof("U16")]; + char stringpool_str462[sizeof("CPGR")]; + char stringpool_str463[sizeof("CSPC850MULTILINGUAL")]; + char stringpool_str464[sizeof("CP-GR")]; + char stringpool_str466[sizeof("1156")]; + char stringpool_str475[sizeof("1146")]; + char stringpool_str484[sizeof("CSIBM01141")]; + char stringpool_str490[sizeof("CSIBM01140")]; + char stringpool_str496[sizeof("CSIBM01145")]; + char stringpool_str502[sizeof("HP15CN")]; + char stringpool_str505[sizeof("CSIBM1125")]; + char stringpool_str506[sizeof("278")]; + char stringpool_str509[sizeof("CP950")]; + char stringpool_str510[sizeof("CP1155")]; + char stringpool_str514[sizeof("CP866")]; + char stringpool_str519[sizeof("CP1145")]; + char stringpool_str521[sizeof("CP1361")]; + char stringpool_str523[sizeof("LATIN4")]; + char stringpool_str524[sizeof("1131")]; + char stringpool_str530[sizeof("1130")]; + char stringpool_str537[sizeof("ASCII")]; + char stringpool_str538[sizeof("CP1125")]; + char stringpool_str540[sizeof("CSASCII")]; + char stringpool_str541[sizeof("CP1025")]; + char stringpool_str542[sizeof("USASCII")]; + char stringpool_str544[sizeof("CP1255")]; + char stringpool_str545[sizeof("1253")]; + char stringpool_str546[sizeof("936")]; + char stringpool_str549[sizeof("CP1132")]; + char stringpool_str551[sizeof("MSANSI")]; + char stringpool_str552[sizeof("CSIBM01142")]; + char stringpool_str553[sizeof("423")]; + char stringpool_str555[sizeof("L5")]; + char stringpool_str556[sizeof("ISOIR101")]; + char stringpool_str557[sizeof("CSIBM1161")]; + char stringpool_str558[sizeof("1166")]; + char stringpool_str559[sizeof("ISOIR110")]; + char stringpool_str561[sizeof("CP924")]; + char stringpool_str562[sizeof("ISOIR100")]; + char stringpool_str576[sizeof("LATIN2")]; + char stringpool_str577[sizeof("154")]; + char stringpool_str579[sizeof("CSISO2022CN")]; + char stringpool_str580[sizeof("CSIBM424")]; + char stringpool_str582[sizeof("ISOIR14")]; + char stringpool_str588[sizeof("ISO2022CN")]; + char stringpool_str592[sizeof("1132")]; + char stringpool_str594[sizeof("UHC")]; + char stringpool_str598[sizeof("ISOIR144")]; + char stringpool_str599[sizeof("CP922")]; + char stringpool_str602[sizeof("CP1165")]; + char stringpool_str608[sizeof("CP838")]; + char stringpool_str610[sizeof("PTCP154")]; + char stringpool_str612[sizeof("CSIBM01148")]; + char stringpool_str617[sizeof("850")]; + char stringpool_str620[sizeof("CSIBM280")]; + char stringpool_str623[sizeof("855")]; + char stringpool_str624[sizeof("51950")]; + char stringpool_str625[sizeof("CSIBM1162")]; + char stringpool_str626[sizeof("CSIBM285")]; + char stringpool_str632[sizeof("12712")]; + char stringpool_str633[sizeof("CP00924")]; + char stringpool_str638[sizeof("KSC5601")]; + char stringpool_str644[sizeof("CSIBM284")]; + char stringpool_str646[sizeof("MS874")]; + char stringpool_str651[sizeof("863")]; + char stringpool_str653[sizeof("65001")]; + char stringpool_str657[sizeof("21866")]; + char stringpool_str659[sizeof("65000")]; + char stringpool_str663[sizeof("ISOIR165")]; + char stringpool_str667[sizeof("ANSI1251")]; + char stringpool_str679[sizeof("852")]; + char stringpool_str680[sizeof("CSKZ1048")]; + char stringpool_str682[sizeof("UCS4LE")]; + char stringpool_str687[sizeof("280")]; + char stringpool_str692[sizeof("CSIBM1026")]; + char stringpool_str693[sizeof("285")]; + char stringpool_str694[sizeof("RUSCII")]; + char stringpool_str695[sizeof("KOI8U")]; + char stringpool_str696[sizeof("ISOIR148")]; + char stringpool_str697[sizeof("CP00858")]; + char stringpool_str699[sizeof("VISCII")]; + char stringpool_str701[sizeof("UCS2LE")]; + char stringpool_str706[sizeof("U32LE")]; + char stringpool_str711[sizeof("284")]; + char stringpool_str712[sizeof("U8")]; + char stringpool_str713[sizeof("L8")]; + char stringpool_str717[sizeof("880")]; + char stringpool_str725[sizeof("CP423")]; + char stringpool_str739[sizeof("858")]; + char stringpool_str741[sizeof("CYRILLICASIAN")]; + char stringpool_str742[sizeof("CYRIILLICASIAN")]; + char stringpool_str745[sizeof("CP01143")]; + char stringpool_str746[sizeof("CP853")]; + char stringpool_str747[sizeof("VISCII1.11")]; + char stringpool_str749[sizeof("282")]; + char stringpool_str758[sizeof("10029")]; + char stringpool_str764[sizeof("CP871")]; + char stringpool_str767[sizeof("JP")]; + char stringpool_str770[sizeof("CP870")]; + char stringpool_str776[sizeof("CP875")]; + char stringpool_str781[sizeof("IBM01141")]; + char stringpool_str782[sizeof("IBM500")]; + char stringpool_str783[sizeof("ISOIR126")]; + char stringpool_str785[sizeof("UTF8")]; + char stringpool_str787[sizeof("IBM01140")]; + char stringpool_str790[sizeof("1153")]; + char stringpool_str791[sizeof("LATIN5")]; + char stringpool_str793[sizeof("IBM01145")]; + char stringpool_str794[sizeof("CP874")]; + char stringpool_str796[sizeof("28605")]; + char stringpool_str799[sizeof("1143")]; + char stringpool_str801[sizeof("CSBIG5")]; + char stringpool_str802[sizeof("CSIBM500")]; + char stringpool_str805[sizeof("MS936")]; + char stringpool_str807[sizeof("856")]; + char stringpool_str810[sizeof("CP12712")]; + char stringpool_str811[sizeof("IBM01144")]; + char stringpool_str813[sizeof("869")]; + char stringpool_str818[sizeof("1123")]; + char stringpool_str820[sizeof("IBM1141")]; + char stringpool_str823[sizeof("52936")]; + char stringpool_str824[sizeof("CNBIG5")]; + char stringpool_str825[sizeof("CP932")]; + char stringpool_str826[sizeof("IBM1140")]; + char stringpool_str830[sizeof("IBM1112")]; + char stringpool_str832[sizeof("IBM1145")]; + char stringpool_str838[sizeof("CP863")]; + char stringpool_str843[sizeof("IBM850")]; + char stringpool_str847[sizeof("ISOIR166")]; + char stringpool_str849[sizeof("IBM01142")]; + char stringpool_str850[sizeof("IBM1144")]; + char stringpool_str852[sizeof("CP51950")]; + char stringpool_str854[sizeof("UTF16")]; + char stringpool_str859[sizeof("KOI8RU")]; + char stringpool_str861[sizeof("R8")]; + char stringpool_str862[sizeof("CP278")]; + char stringpool_str866[sizeof("IBM1125")]; + char stringpool_str869[sizeof("IBM1025")]; + char stringpool_str871[sizeof("IBM280")]; + char stringpool_str875[sizeof("ISOIR226")]; + char stringpool_str877[sizeof("CSIBM00924")]; + char stringpool_str882[sizeof("1163")]; + char stringpool_str883[sizeof("IBM424")]; + char stringpool_str884[sizeof("IBM1124")]; + char stringpool_str888[sizeof("IBM1142")]; + char stringpool_str889[sizeof("U7")]; + char stringpool_str890[sizeof("L7")]; + char stringpool_str891[sizeof("EUCCN")]; + char stringpool_str894[sizeof("950")]; + char stringpool_str898[sizeof("273")]; + char stringpool_str900[sizeof("775")]; + char stringpool_str901[sizeof("IBM880")]; + char stringpool_str902[sizeof("CP819")]; + char stringpool_str905[sizeof("CP1156")]; + char stringpool_str906[sizeof("54936")]; + char stringpool_str907[sizeof("CP01149")]; + char stringpool_str909[sizeof("IBM01148")]; + char stringpool_str911[sizeof("ISOIR230")]; + char stringpool_str914[sizeof("CP1146")]; + char stringpool_str916[sizeof("CNGB")]; + char stringpool_str917[sizeof("CP1046")]; + char stringpool_str920[sizeof("CSPTCP154")]; + char stringpool_str922[sizeof("IBM1122")]; + char stringpool_str923[sizeof("IBM861")]; + char stringpool_str927[sizeof("UNICODE11")]; + char stringpool_str928[sizeof("SYSTEM1125")]; + char stringpool_str932[sizeof("IBM284")]; + char stringpool_str935[sizeof("IBM860")]; + char stringpool_str936[sizeof("CP1026")]; + char stringpool_str937[sizeof("MACTHAI")]; + char stringpool_str939[sizeof("CP1256")]; + char stringpool_str940[sizeof("51932")]; + char stringpool_str941[sizeof("ISOIR138")]; + char stringpool_str944[sizeof("CP10029")]; + char stringpool_str948[sizeof("IBM1148")]; + char stringpool_str953[sizeof("CP936")]; + char stringpool_str957[sizeof("IBM852")]; + char stringpool_str960[sizeof("TCVN")]; + char stringpool_str961[sizeof("1149")]; + char stringpool_str962[sizeof("943")]; + char stringpool_str967[sizeof("CP1153")]; + char stringpool_str972[sizeof("BIG5")]; + char stringpool_str976[sizeof("CP1143")]; + char stringpool_str977[sizeof("IBM01146")]; + char stringpool_str980[sizeof("1129")]; + char stringpool_str981[sizeof("MACINTOSH")]; + char stringpool_str983[sizeof("CSPCP852")]; + char stringpool_str985[sizeof("IBM282")]; + char stringpool_str986[sizeof("UTF32")]; + char stringpool_str991[sizeof("MSEE")]; + char stringpool_str993[sizeof("KOI8R")]; + char stringpool_str995[sizeof("CP1123")]; + char stringpool_str996[sizeof("IBM864")]; + char stringpool_str997[sizeof("CP1166")]; + char stringpool_str1000[sizeof("CP869")]; + char stringpool_str1001[sizeof("CP1253")]; + char stringpool_str1004[sizeof("CSIBM01143")]; + char stringpool_str1009[sizeof("819")]; + char stringpool_str1013[sizeof("CP10081")]; + char stringpool_str1015[sizeof("ISOIR58")]; + char stringpool_str1016[sizeof("IBM1146")]; + char stringpool_str1019[sizeof("IBM1046")]; + char stringpool_str1020[sizeof("STRK10482002")]; + char stringpool_str1024[sizeof("U16LE")]; + char stringpool_str1027[sizeof("CSEUCKR")]; + char stringpool_str1030[sizeof("28591")]; + char stringpool_str1032[sizeof("CP943")]; + char stringpool_str1035[sizeof("CSHPROMAN8")]; + char stringpool_str1042[sizeof("28595")]; + char stringpool_str1044[sizeof("1133")]; + char stringpool_str1049[sizeof("IBM862")]; + char stringpool_str1053[sizeof("IBM1026")]; + char stringpool_str1059[sizeof("CP1163")]; + char stringpool_str1060[sizeof("28594")]; + char stringpool_str1063[sizeof("CP4971")]; + char stringpool_str1067[sizeof("CP28591")]; + char stringpool_str1070[sizeof("CSIBM423")]; + char stringpool_str1072[sizeof("MSKANJI")]; + char stringpool_str1076[sizeof("CP1158")]; + char stringpool_str1077[sizeof("CSIBM1163")]; + char stringpool_str1079[sizeof("CP28595")]; + char stringpool_str1081[sizeof("CP10082")]; + char stringpool_str1085[sizeof("CP1148")]; + char stringpool_str1089[sizeof("RK1048")]; + char stringpool_str1090[sizeof("TIS620")]; + char stringpool_str1092[sizeof("ARMSCII8")]; + char stringpool_str1094[sizeof("TIS6200")]; + char stringpool_str1096[sizeof("CP21866")]; + char stringpool_str1097[sizeof("CP28594")]; + char stringpool_str1098[sizeof("28592")]; + char stringpool_str1099[sizeof("CP20866")]; + char stringpool_str1102[sizeof("CSGB2312")]; + char stringpool_str1109[sizeof("IBM1155")]; + char stringpool_str1110[sizeof("CP1258")]; + char stringpool_str1112[sizeof("437")]; + char stringpool_str1113[sizeof("1257")]; + char stringpool_str1114[sizeof("IBMEUCCN")]; + char stringpool_str1116[sizeof("CCSID01141")]; + char stringpool_str1117[sizeof("CP51932")]; + char stringpool_str1120[sizeof("UCS4BE")]; + char stringpool_str1122[sizeof("CCSID01140")]; + char stringpool_str1124[sizeof("949")]; + char stringpool_str1127[sizeof("IBM1154")]; + char stringpool_str1128[sizeof("CCSID01145")]; + char stringpool_str1129[sizeof("GEORGIANPS")]; + char stringpool_str1130[sizeof("10017")]; + char stringpool_str1131[sizeof("853")]; + char stringpool_str1133[sizeof("10007")]; + char stringpool_str1135[sizeof("CP28592")]; + char stringpool_str1137[sizeof("IBM1250")]; + char stringpool_str1139[sizeof("UCS2BE")]; + char stringpool_str1141[sizeof("1047")]; + char stringpool_str1143[sizeof("IBM1255")]; + char stringpool_str1144[sizeof("U32BE")]; + char stringpool_str1146[sizeof("CCSID01144")]; + char stringpool_str1151[sizeof("IBM425")]; + char stringpool_str1155[sizeof("ISO646US")]; + char stringpool_str1158[sizeof("28598")]; + char stringpool_str1160[sizeof("DOS862")]; + char stringpool_str1161[sizeof("IBM1254")]; + char stringpool_str1166[sizeof("CSIBM01149")]; + char stringpool_str1168[sizeof("ISOIR203")]; + char stringpool_str1172[sizeof("IBM855")]; + char stringpool_str1174[sizeof("ISOCELTIC")]; + char stringpool_str1175[sizeof("ISO646CN")]; + char stringpool_str1177[sizeof("ISO10646UCS4")]; + char stringpool_str1181[sizeof("ISO2022JP1")]; + char stringpool_str1182[sizeof("CSISO2022JP")]; + char stringpool_str1183[sizeof("ISO2022JPMS")]; + char stringpool_str1184[sizeof("CCSID01142")]; + char stringpool_str1185[sizeof("GB2312")]; + char stringpool_str1186[sizeof("LATIN6")]; + char stringpool_str1190[sizeof("L9")]; + char stringpool_str1192[sizeof("CSISO2022JP2")]; + char stringpool_str1194[sizeof("CP949")]; + char stringpool_str1195[sizeof("CP28598")]; + char stringpool_str1196[sizeof("ISO10646UCS2")]; + char stringpool_str1199[sizeof("IBM1252")]; + char stringpool_str1200[sizeof("IBM285")]; + char stringpool_str1205[sizeof("ISO2022JP")]; + char stringpool_str1206[sizeof("ISO88591")]; + char stringpool_str1207[sizeof("ISO885911")]; + char stringpool_str1209[sizeof("IBM924")]; + char stringpool_str1210[sizeof("MACROMAN")]; + char stringpool_str1211[sizeof("TIS620.25291")]; + char stringpool_str1212[sizeof("CNS11643")]; + char stringpool_str1213[sizeof("ISO885910")]; + char stringpool_str1218[sizeof("ISO88595")]; + char stringpool_str1219[sizeof("ISO885915")]; + char stringpool_str1221[sizeof("CP1133")]; + char stringpool_str1222[sizeof("CSIBM278")]; + char stringpool_str1223[sizeof("GB231280")]; + char stringpool_str1225[sizeof("IBM1158")]; + char stringpool_str1226[sizeof("28596")]; + char stringpool_str1229[sizeof("CSISO2022KR")]; + char stringpool_str1230[sizeof("ECMA114")]; + char stringpool_str1233[sizeof("ISO2022JP2004")]; + char stringpool_str1236[sizeof("ISO88594")]; + char stringpool_str1237[sizeof("ISO885914")]; + char stringpool_str1238[sizeof("ISOIR109")]; + char stringpool_str1241[sizeof("ISOIR159")]; + char stringpool_str1244[sizeof("CCSID01148")]; + char stringpool_str1248[sizeof("LATIN3")]; + char stringpool_str1249[sizeof("ISO2022JP2")]; + char stringpool_str1250[sizeof("ISOIR149")]; + char stringpool_str1251[sizeof("CP51949")]; + char stringpool_str1254[sizeof("CP273")]; + char stringpool_str1256[sizeof("CP775")]; + char stringpool_str1258[sizeof("CP10017")]; + char stringpool_str1259[sizeof("IBM1258")]; + char stringpool_str1260[sizeof("CP54936")]; + char stringpool_str1262[sizeof("IBM922")]; + char stringpool_str1263[sizeof("CP28596")]; + char stringpool_str1264[sizeof("IBM865")]; + char stringpool_str1266[sizeof("NEXTSTEP")]; + char stringpool_str1267[sizeof("CP10007")]; + char stringpool_str1268[sizeof("10079")]; + char stringpool_str1272[sizeof("CSIBM905")]; + char stringpool_str1274[sizeof("ISO88592")]; + char stringpool_str1277[sizeof("HZGB2312")]; + char stringpool_str1279[sizeof("CP52936")]; + char stringpool_str1286[sizeof("JIS0208")]; + char stringpool_str1287[sizeof("ISOIR6")]; + char stringpool_str1288[sizeof("MSHEBR")]; + char stringpool_str1291[sizeof("CSISO58GB231280")]; + char stringpool_str1293[sizeof("IBM1156")]; + char stringpool_str1300[sizeof("IBM1131")]; + char stringpool_str1301[sizeof("IBM01143")]; + char stringpool_str1302[sizeof("CCSID00858")]; + char stringpool_str1304[sizeof("28603")]; + char stringpool_str1305[sizeof("XMACCYRILLIC")]; + char stringpool_str1306[sizeof("IBM1130")]; + char stringpool_str1309[sizeof("51949")]; + char stringpool_str1312[sizeof("CCSID01146")]; + char stringpool_str1313[sizeof("CP01147")]; + char stringpool_str1314[sizeof("CP857")]; + char stringpool_str1318[sizeof("CP1149")]; + char stringpool_str1319[sizeof("CSIBM855")]; + char stringpool_str1327[sizeof("IBM1256")]; + char stringpool_str1328[sizeof("ECMA118")]; + char stringpool_str1332[sizeof("ISO2022CNEXT")]; + char stringpool_str1334[sizeof("ISO88598")]; + char stringpool_str1337[sizeof("CP1129")]; + char stringpool_str1340[sizeof("IBM1143")]; + char stringpool_str1341[sizeof("HPROMAN8")]; + char stringpool_str1350[sizeof("TDS565")]; + char stringpool_str1353[sizeof("CSISO159JISX02121990")]; + char stringpool_str1357[sizeof("LATIN8")]; + char stringpool_str1358[sizeof("1157")]; + char stringpool_str1367[sizeof("1147")]; + char stringpool_str1368[sizeof("IBM1132")]; + char stringpool_str1369[sizeof("IBM871")]; + char stringpool_str1371[sizeof("CSIBM880")]; + char stringpool_str1374[sizeof("IBM1123")]; + char stringpool_str1376[sizeof("PCK")]; + char stringpool_str1377[sizeof("GB18030")]; + char stringpool_str1378[sizeof("ISO2022KR")]; + char stringpool_str1379[sizeof("UNICODEBIG")]; + char stringpool_str1380[sizeof("CSIBMTHAI")]; + char stringpool_str1381[sizeof("IBM870")]; + char stringpool_str1384[sizeof("38598")]; + char stringpool_str1388[sizeof("KSC56011989")]; + char stringpool_str1389[sizeof("CSISOLATIN1")]; + char stringpool_str1390[sizeof("TACTIS")]; + char stringpool_str1393[sizeof("CSISOLATIN10")]; + char stringpool_str1394[sizeof("CSISOLATINARABIC")]; + char stringpool_str1395[sizeof("CSISOLATIN5")]; + char stringpool_str1396[sizeof("CSISOLATINCYRILLIC")]; + char stringpool_str1398[sizeof("ATARI")]; + char stringpool_str1399[sizeof("CSIBM861")]; + char stringpool_str1400[sizeof("IBM1161")]; + char stringpool_str1401[sizeof("CSISO14JISC6220RO")]; + char stringpool_str1402[sizeof("ISO88596")]; + char stringpool_str1403[sizeof("ISO885916")]; + char stringpool_str1404[sizeof("CSISOLATIN4")]; + char stringpool_str1405[sizeof("CSIBM860")]; + char stringpool_str1406[sizeof("IBM1160")]; + char stringpool_str1407[sizeof("4971")]; + char stringpool_str1411[sizeof("CSIBM865")]; + char stringpool_str1412[sizeof("IBM1165")]; + char stringpool_str1415[sizeof("367")]; + char stringpool_str1421[sizeof("CP38598")]; + char stringpool_str1423[sizeof("CSISOLATIN2")]; + char stringpool_str1425[sizeof("UCS4INTERNAL")]; + char stringpool_str1429[sizeof("CSIBM864")]; + char stringpool_str1430[sizeof("IBM1164")]; + char stringpool_str1431[sizeof("JISX0201")]; + char stringpool_str1435[sizeof("CSIBM858")]; + char stringpool_str1437[sizeof("TIS620.25331")]; + char stringpool_str1439[sizeof("UTF16LE")]; + char stringpool_str1440[sizeof("TIS620.25330")]; + char stringpool_str1444[sizeof("UCS2INTERNAL")]; + char stringpool_str1446[sizeof("IBM905")]; + char stringpool_str1447[sizeof("KZ1048")]; + char stringpool_str1460[sizeof("MACARABIC")]; + char stringpool_str1462[sizeof("U16BE")]; + char stringpool_str1463[sizeof("IBM01149")]; + char stringpool_str1466[sizeof("277")]; + char stringpool_str1468[sizeof("IBM1162")]; + char stringpool_str1470[sizeof("XMACCE")]; + char stringpool_str1477[sizeof("UNICODE11UTF7")]; + char stringpool_str1482[sizeof("MSTURK")]; + char stringpool_str1483[sizeof("MACTURKISH")]; + char stringpool_str1487[sizeof("CSISOLATIN6")]; + char stringpool_str1488[sizeof("IBM932")]; + char stringpool_str1493[sizeof("CSUNICODE11")]; + char stringpool_str1496[sizeof("JISX0212")]; + char stringpool_str1501[sizeof("SHIFTJIS")]; + char stringpool_str1502[sizeof("IBM1149")]; + char stringpool_str1507[sizeof("CP037")]; + char stringpool_str1508[sizeof("EUCJP")]; + char stringpool_str1509[sizeof("CCSID00924")]; + char stringpool_str1511[sizeof("CSKSC56011987")]; + char stringpool_str1513[sizeof("MACGREEK")]; + char stringpool_str1514[sizeof("MSGREEK")]; + char stringpool_str1515[sizeof("JISX0212.19900")]; + char stringpool_str1519[sizeof("CP437")]; + char stringpool_str1526[sizeof("IBM921CP28603")]; + char stringpool_str1528[sizeof("IBM1168")]; + char stringpool_str1529[sizeof("C99")]; + char stringpool_str1534[sizeof("BIG5HKSCS")]; + char stringpool_str1536[sizeof("IBM1129")]; + char stringpool_str1537[sizeof("ISO646.IRV:1991")]; + char stringpool_str1539[sizeof("KOI8T")]; + char stringpool_str1542[sizeof("BIG52003")]; + char stringpool_str1543[sizeof("CSMACINTOSH")]; + char stringpool_str1550[sizeof("28593")]; + char stringpool_str1551[sizeof("CP1157")]; + char stringpool_str1557[sizeof("SHIFTJIS2004")]; + char stringpool_str1559[sizeof("JISX0208")]; + char stringpool_str1560[sizeof("CP1147")]; + char stringpool_str1562[sizeof("CNGBISOIR165")]; + char stringpool_str1563[sizeof("CP1047")]; + char stringpool_str1565[sizeof("CSIBM1047")]; + char stringpool_str1567[sizeof("IBM856")]; + char stringpool_str1569[sizeof("IBMCP1133")]; + char stringpool_str1572[sizeof("CSIBM01147")]; + char stringpool_str1575[sizeof("CSGB18030")]; + char stringpool_str1576[sizeof("ISOIR199")]; + char stringpool_str1585[sizeof("CP1257")]; + char stringpool_str1587[sizeof("CP28593")]; + char stringpool_str1590[sizeof("LATIN9")]; + char stringpool_str1591[sizeof("KSC56011987")]; + char stringpool_str1593[sizeof("MULELAO1")]; + char stringpool_str1595[sizeof("CSIBM866")]; + char stringpool_str1596[sizeof("IBM1166")]; + char stringpool_str1602[sizeof("CP367")]; + char stringpool_str1608[sizeof("IBM423")]; + char stringpool_str1612[sizeof("1137")]; + char stringpool_str1613[sizeof("ASMO708")]; + char stringpool_str1614[sizeof("CSIBM273")]; + char stringpool_str1615[sizeof("CSPC8CODEPAGE1144")]; + char stringpool_str1617[sizeof("IBM1153")]; + char stringpool_str1619[sizeof("CP297")]; + char stringpool_str1621[sizeof("DECHANZI")]; + char stringpool_str1629[sizeof("IBM853")]; + char stringpool_str1631[sizeof("CSEUCTW")]; + char stringpool_str1632[sizeof("IBM00924")]; + char stringpool_str1635[sizeof("UTF32LE")]; + char stringpool_str1636[sizeof("CCSID01143")]; + char stringpool_str1637[sizeof("DECHANYU")]; + char stringpool_str1641[sizeof("737")]; + char stringpool_str1647[sizeof("ISOIR157")]; + char stringpool_str1649[sizeof("CSISOLATIN3")]; + char stringpool_str1652[sizeof("HEBREW")]; + char stringpool_str1653[sizeof("GEORGIANACADEMY")]; + char stringpool_str1658[sizeof("MACCROATIAN")]; + char stringpool_str1659[sizeof("IBM866")]; + char stringpool_str1661[sizeof("CSWINDOWS1251")]; + char stringpool_str1664[sizeof("CSWINDOWS1250")]; + char stringpool_str1667[sizeof("CSWINDOWS1255")]; + char stringpool_str1672[sizeof("CSISO885915CP28605")]; + char stringpool_str1675[sizeof("ISOIR127")]; + char stringpool_str1676[sizeof("CSWINDOWS1254")]; + char stringpool_str1681[sizeof("EUCKR")]; + char stringpool_str1685[sizeof("IBMTHAI")]; + char stringpool_str1686[sizeof("UNICODELITTLE")]; + char stringpool_str1690[sizeof("CP10079")]; + char stringpool_str1695[sizeof("CSWINDOWS1252")]; + char stringpool_str1696[sizeof("TIS620.2533")]; + char stringpool_str1698[sizeof("CSPC8CODEPAGE1146")]; + char stringpool_str1699[sizeof("857")]; + char stringpool_str1701[sizeof("ISO2022JP3")]; + char stringpool_str1703[sizeof("IBM12712")]; + char stringpool_str1710[sizeof("IBM875")]; + char stringpool_str1712[sizeof("28599")]; + char stringpool_str1721[sizeof("IBM863")]; + char stringpool_str1723[sizeof("ELOT928")]; + char stringpool_str1724[sizeof("ROMAN8")]; + char stringpool_str1725[sizeof("CSWINDOWS1258")]; + char stringpool_str1726[sizeof("ISO88593")]; + char stringpool_str1727[sizeof("ISO885913")]; + char stringpool_str1731[sizeof("IBMEUCJP")]; + char stringpool_str1737[sizeof("IBM16804")]; + char stringpool_str1738[sizeof("IBM858")]; + char stringpool_str1739[sizeof("CSWINDOWS874")]; + char stringpool_str1745[sizeof("UTF7")]; + char stringpool_str1746[sizeof("IBM00858")]; + char stringpool_str1749[sizeof("CP28599")]; + char stringpool_str1758[sizeof("CSKOI8U")]; + char stringpool_str1759[sizeof("CSWINDOWS1256")]; + char stringpool_str1776[sizeof("GBK")]; + char stringpool_str1779[sizeof("ISOIR179")]; + char stringpool_str1791[sizeof("CSSHIFTJIS")]; + char stringpool_str1792[sizeof("ISO646JP")]; + char stringpool_str1795[sizeof("ANSIX3.41968")]; + char stringpool_str1796[sizeof("CSISO57GB1988")]; + char stringpool_str1798[sizeof("CCSID01149")]; + char stringpool_str1799[sizeof("KOREAN")]; + char stringpool_str1805[sizeof("CP1137")]; + char stringpool_str1810[sizeof("JISX02121990")]; + char stringpool_str1811[sizeof("CP0037")]; + char stringpool_str1815[sizeof("CSIBM037")]; + char stringpool_str1819[sizeof("CSUNICODE")]; + char stringpool_str1822[sizeof("CP277")]; + char stringpool_str1827[sizeof("CSIBM853")]; + char stringpool_str1829[sizeof("ANSIX3.41986")]; + char stringpool_str1832[sizeof("LATIN7")]; + char stringpool_str1835[sizeof("JAVA")]; + char stringpool_str1838[sizeof("TCVN57121")]; + char stringpool_str1843[sizeof("JISX02081990")]; + char stringpool_str1845[sizeof("CSIBM871")]; + char stringpool_str1851[sizeof("CSIBM870")]; + char stringpool_str1852[sizeof("XMACROMANIAN")]; + char stringpool_str1864[sizeof("EBCDICCPIS")]; + char stringpool_str1866[sizeof("EBCDICCPUS")]; + char stringpool_str1869[sizeof("IBM01147")]; + char stringpool_str1871[sizeof("TCVN5712")]; + char stringpool_str1874[sizeof("JISX02011976")]; + char stringpool_str1881[sizeof("EBCDICCPNL")]; + char stringpool_str1882[sizeof("EBCDICCPYU")]; + char stringpool_str1883[sizeof("UTF16BE")]; + char stringpool_str1888[sizeof("ISO88599")]; + char stringpool_str1889[sizeof("CP1097")]; + char stringpool_str1893[sizeof("ISO885910:1992")]; + char stringpool_str1902[sizeof("MACUKRAINE")]; + char stringpool_str1903[sizeof("CSISOLATINGREEK")]; + char stringpool_str1904[sizeof("IBMEUCKR")]; + char stringpool_str1908[sizeof("IBM1147")]; + char stringpool_str1910[sizeof("CSKOI8RU")]; + char stringpool_str1911[sizeof("IBM1047")]; + char stringpool_str1915[sizeof("IBM943")]; + char stringpool_str1919[sizeof("CSIBM863")]; + char stringpool_str1920[sizeof("IBM1163")]; + char stringpool_str1921[sizeof("CSWINDOWS1253")]; + char stringpool_str1925[sizeof("ISO88595:1988")]; + char stringpool_str1926[sizeof("ISO885915:1998")]; + char stringpool_str1930[sizeof("CSISOLATINHEBREW")]; + char stringpool_str1932[sizeof("MACCENTRALEUROPE")]; + char stringpool_str1934[sizeof("ISO88594:1988")]; + char stringpool_str1935[sizeof("ISO885914:1998")]; + char stringpool_str1936[sizeof("ARABIC")]; + char stringpool_str1954[sizeof("ISO885916:2001")]; + char stringpool_str1956[sizeof("IBM4971")]; + char stringpool_str1965[sizeof("IBM819")]; + char stringpool_str1969[sizeof("297")]; + char stringpool_str1975[sizeof("ISOIR57")]; + char stringpool_str1979[sizeof("CSIBM297")]; + char stringpool_str1983[sizeof("ISO88598:1988")]; + char stringpool_str1989[sizeof("SHIFTJISX0213")]; + char stringpool_str1992[sizeof("IBM838")]; + char stringpool_str2008[sizeof("EBCDICCYRILLIC")]; + char stringpool_str2020[sizeof("UCS4SWAPPED")]; + char stringpool_str2026[sizeof("XMACICELANDIC")]; + char stringpool_str2039[sizeof("UCS2SWAPPED")]; + char stringpool_str2040[sizeof("JISC62261983")]; + char stringpool_str2041[sizeof("CSUNICODE11UTF7")]; + char stringpool_str2048[sizeof("CP737")]; + char stringpool_str2051[sizeof("MACICELAND")]; + char stringpool_str2056[sizeof("CSKOI8R")]; + char stringpool_str2063[sizeof("IBM869")]; + char stringpool_str2066[sizeof("GB18030:2005")]; + char stringpool_str2069[sizeof("EUCJIS2004")]; + char stringpool_str2073[sizeof("JISC62201969RO")]; + char stringpool_str2079[sizeof("UTF32BE")]; + char stringpool_str2081[sizeof("CSIBM869")]; + char stringpool_str2082[sizeof("IBM1169")]; + char stringpool_str2085[sizeof("GB198880")]; + char stringpool_str2090[sizeof("BIGFIVE")]; + char stringpool_str2094[sizeof("GB18030:2022")]; + char stringpool_str2100[sizeof("JISX02081983")]; + char stringpool_str2101[sizeof("XMACTHAI")]; + char stringpool_str2110[sizeof("GREEK")]; + char stringpool_str2118[sizeof("28597")]; + char stringpool_str2127[sizeof("CHINESE")]; + char stringpool_str2130[sizeof("MSARAB")]; + char stringpool_str2137[sizeof("IBM273")]; + char stringpool_str2143[sizeof("CSPC8CODEPAGE437")]; + char stringpool_str2155[sizeof("CP28597")]; + char stringpool_str2171[sizeof("EBCDICCPGR")]; + char stringpool_str2179[sizeof("ISO88593:1988")]; + char stringpool_str2182[sizeof("CSIBM277")]; + char stringpool_str2183[sizeof("BIG5HKSCS:2001")]; + char stringpool_str2185[sizeof("IBM1157")]; + char stringpool_str2190[sizeof("IBM775")]; + char stringpool_str2192[sizeof("EBCDICCPES")]; + char stringpool_str2198[sizeof("BIG5HKSCS:2004")]; + char stringpool_str2204[sizeof("CCSID01147")]; + char stringpool_str2205[sizeof("CSWINDOWS1257")]; + char stringpool_str2213[sizeof("IBM857")]; + char stringpool_str2218[sizeof("EBCDICCPCH")]; + char stringpool_str2219[sizeof("IBM1257")]; + char stringpool_str2240[sizeof("XMACUKRAINIAN")]; + char stringpool_str2244[sizeof("SDECKANJI")]; + char stringpool_str2246[sizeof("IBM278")]; + char stringpool_str2247[sizeof("BIG5HKSCS:2008")]; + char stringpool_str2250[sizeof("WINDOWS1251")]; + char stringpool_str2253[sizeof("WINDOWS1250")]; + char stringpool_str2256[sizeof("WINDOWS1255")]; + char stringpool_str2261[sizeof("MACROMANIA")]; + char stringpool_str2265[sizeof("WINDOWS1254")]; + char stringpool_str2280[sizeof("CSPC862LATINHEBREW")]; + char stringpool_str2284[sizeof("WINDOWS1252")]; + char stringpool_str2294[sizeof("ISO88597")]; + char stringpool_str2295[sizeof("JOHAB")]; + char stringpool_str2314[sizeof("WINDOWS1258")]; + char stringpool_str2333[sizeof("EBCDICCPFI")]; + char stringpool_str2348[sizeof("WINDOWS1256")]; + char stringpool_str2365[sizeof("EUCTW")]; + char stringpool_str2388[sizeof("IBM1137")]; + char stringpool_str2395[sizeof("CSIBM857")]; + char stringpool_str2399[sizeof("ISO88591:1987")]; + char stringpool_str2406[sizeof("IBM037")]; + char stringpool_str2408[sizeof("CSPC775BALTIC")]; + char stringpool_str2418[sizeof("IBM437")]; + char stringpool_str2423[sizeof("XMACTURKISH")]; + char stringpool_str2433[sizeof("ISO88592:1987")]; + char stringpool_str2449[sizeof("CSISO87JISX0208")]; + char stringpool_str2459[sizeof("CCSID853")]; + char stringpool_str2483[sizeof("ISOIR87")]; + char stringpool_str2497[sizeof("ISO88596:1987")]; + char stringpool_str2501[sizeof("IBM367")]; + char stringpool_str2502[sizeof("KOKR.JOHAP92")]; + char stringpool_str2510[sizeof("WINDOWS1253")]; + char stringpool_str2514[sizeof("GREEK8")]; + char stringpool_str2517[sizeof("EUCJISX0213")]; + char stringpool_str2518[sizeof("IBM297")]; + char stringpool_str2520[sizeof("EBCDICCPSE")]; + char stringpool_str2524[sizeof("BIG5HKSCS:1999")]; + char stringpool_str2535[sizeof("MACHEBREW")]; + char stringpool_str2537[sizeof("ISO88599:1989")]; + char stringpool_str2541[sizeof("DECKANJI")]; + char stringpool_str2552[sizeof("RISCOSLATIN1")]; + char stringpool_str2562[sizeof("WINDOWS950")]; + char stringpool_str2588[sizeof("IBMEUCTW")]; + char stringpool_str2590[sizeof("EBCDICCPTR")]; + char stringpool_str2635[sizeof("EBCDICCPFR")]; + char stringpool_str2640[sizeof("WINBALTRIM")]; + char stringpool_str2647[sizeof("EBCDICCPNO")]; + char stringpool_str2652[sizeof("IBM1097")]; + char stringpool_str2657[sizeof("EBCDICES284+EURO")]; + char stringpool_str2681[sizeof("XMACCROATIAN")]; + char stringpool_str2693[sizeof("ISO88597:2003")]; + char stringpool_str2697[sizeof("EBCDICCPHE")]; + char stringpool_str2712[sizeof("EBCDICCPIT")]; + char stringpool_str2720[sizeof("DECKOREAN")]; + char stringpool_str2721[sizeof("IBM277")]; + char stringpool_str2726[sizeof("EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE")]; + char stringpool_str2732[sizeof("EBCDICCPROECE")]; + char stringpool_str2747[sizeof("TCVN57121:1993")]; + char stringpool_str2751[sizeof("EBCDICCPGB")]; + char stringpool_str2753[sizeof("EBCDICIT280+EURO")]; + char stringpool_str2775[sizeof("EBCDICGB285+EURO")]; + char stringpool_str2784[sizeof("ATARIST")]; + char stringpool_str2794[sizeof("WINDOWS1257")]; + char stringpool_str2829[sizeof("XMACARABIC")]; + char stringpool_str2831[sizeof("CSEUCPKDFMTJAPANESE")]; + char stringpool_str2839[sizeof("EBCDICIS871+EURO")]; + char stringpool_str2847[sizeof("WINDOWS874")]; + char stringpool_str2924[sizeof("EBCDICCPCA")]; + char stringpool_str2943[sizeof("ISO88597:1987")]; + char stringpool_str2947[sizeof("IBM737")]; + char stringpool_str2961[sizeof("EBCDICCPBE")]; + char stringpool_str3005[sizeof("EBCDICINTERNATIONAL500+EURO")]; + char stringpool_str3006[sizeof("WINDOWS936")]; + char stringpool_str3008[sizeof("XMACGREEK")]; + char stringpool_str3036[sizeof("EBCDICUS37+EURO")]; + char stringpool_str3137[sizeof("EBCDICSE278+EURO")]; + char stringpool_str3162[sizeof("EBCDICGREEK")]; + char stringpool_str3188[sizeof("EBCDICLATIN9EURO")]; + char stringpool_str3206[sizeof("EBCDICNO277+EURO")]; + char stringpool_str3226[sizeof("EBCDICFR297+EURO")]; + char stringpool_str3248[sizeof("EBCDICCPWT")]; + char stringpool_str3278[sizeof("EBCDICFI278+EURO")]; + char stringpool_str3315[sizeof("XMACHEBREW")]; + char stringpool_str3558[sizeof("CSHALFWIDTHKATAKANA")]; + char stringpool_str3632[sizeof("EBCDICCPDK")]; + char stringpool_str3885[sizeof("EBCDICDE273+EURO")]; + char stringpool_str4067[sizeof("EBCDICDK277+EURO")]; }; static const struct stringpool_t stringpool_contents = { - "CSASCII", - "CSVISCII", - "ASCII", - "CPIS", - "5601", - "1125", - "646", - "866", - "865", - "855", - "861", - "VISCII", - "CP285", + "MAC", + "US", + "SJIS", + "1201", + "1251", + "12001", + "1200", + "1250", + "12000", + "1255", "CN", + "425", + "10010", + "500", + "10000", + "L2", + "1254", + "10005", + "424", + "10004", + "10021", + "5601", + "U32", + "1025", "CSUCS4", - "CP01146", - "858", - "CP01145", - "CP01141", - "VISCII1.11", + "1252", + "10081", + "1361", + "50221", + "L4", + "50225", + "861", "860", - "850", - "ISO646CN", - "ECMA114", - "CP01144", - "ECMA118", - "CP01148", - "862", - "852", + "865", + "1258", + "CPIS", + "864", + "16804", + "L6", + "CP500", + "CP1051", + "10082", + "CP10010", + "CP1141", "HZ", - "MAC", - "CSKZ1048", + "CP10000", + "CP1140", + "CP10005", + "CP154", + "CYRILLIC", + "CSVISCII", + "862", + "CP1201", + "838", + "MSCYRL", + "CP1251", + "CP10004", + "CP12001", + "CP1200", + "MACCYRILLIC", + "CP1250", + "CP12000", + "CP425", + "1256", + "CP01141", "CP01140", - "ANSI1251", - "PCK", - "MSANSI", + "CP850", + "CP424", + "CP01145", + "CP855", + "10006", + "CP1154", + "PT154", + "1046", + "CP1144", + "CP01144", + "CP280", + "CP1161", + "CP10021", + "L1", + "CP285", + "1026", + "CP1124", + "L3", + "L10", + "CP1160", + "CP1254", + "1141", + "CP65001", + "1155", + "CP284", + "1140", + "CP65000", + "CP1112", + "CP880", + "1145", + "CP01142", + "CP852", "X0201", - "CCSID01146", - "MSEE", - "CCSID01145", - "CCSID01141", - "857", - "CP1250", + "CP50221", + "1154", + "CP1142", + "1144", + "1125", + "CP50225", + "CP861", + "CP282", + "CP1122", + "CP860", + "866", + "1124", + "CP1252", + "CP865", + "1112", + "CP1164", + "1142", + "CP864", + "CP01148", + "CP858", + "X0212", + "1161", + "UCS4", + "CP16804", + "1122", + "1160", + "1165", + "CP10006", + "CP862", + "CP1162", + "924", + "1164", + "646", + "1158", + "UCS2", + "1148", + "871", + "870", + "932", + "875", + "CP01146", + "CP856", + "CP1131", + "X0208", + "922", + "1162", + "20866", + "CP866U", + "CP1130", + "874", + "LATIN1", + "LATIN10", + "U16", + "CPGR", + "CSPC850MULTILINGUAL", + "CP-GR", + "1156", + "1146", + "CSIBM01141", + "CSIBM01140", + "CSIBM01145", "HP15CN", - "CSUNICODE11", + "CSIBM1125", + "278", + "CP950", + "CP1155", + "CP866", + "CP1145", + "CP1361", + "LATIN4", + "1131", + "1130", + "ASCII", + "CP1125", + "CSASCII", + "CP1025", + "USASCII", + "CP1255", + "1253", + "936", + "CP1132", + "MSANSI", + "CSIBM01142", + "423", + "L5", + "ISOIR101", + "CSIBM1161", + "1166", + "ISOIR110", + "CP924", + "ISOIR100", + "LATIN2", + "154", + "CSISO2022CN", + "CSIBM424", + "ISOIR14", + "ISO2022CN", + "1132", + "UHC", + "ISOIR144", + "CP922", + "CP1165", + "CP838", + "PTCP154", + "CSIBM01148", + "850", + "CSIBM280", + "855", + "51950", + "CSIBM1162", + "CSIBM285", + "12712", + "CP00924", "KSC5601", - "X0208", - "CSUNICODE", - "CSPC8CODEPAGE1146", - "CCSID01144", - "CSPCP852", - "CCSID01148", - "CHINESE", - "CSKSC56011987", - "CP01142", - "CSPC8CODEPAGE1144", - "XMACCE", + "CSIBM284", + "MS874", "863", - "853", - "CCSID01140", + "65001", + "21866", + "65000", + "ISOIR165", + "ANSI1251", + "852", + "CSKZ1048", + "UCS4LE", + "280", + "CSIBM1026", + "285", + "RUSCII", + "KOI8U", + "ISOIR148", + "CP00858", + "VISCII", + "UCS2LE", + "U32LE", + "284", + "U8", + "L8", + "880", + "CP423", + "858", + "CYRILLICASIAN", + "CYRIILLICASIAN", + "CP01143", + "CP853", + "VISCII1.11", + "282", + "10029", + "CP871", + "JP", "CP870", - "KZ1048", - "KOREAN", - "DECHANZI", - "X0212", - "869", - "ASMO708", - "DOS862", + "CP875", + "IBM01141", + "IBM500", + "ISOIR126", + "UTF8", + "IBM01140", + "1153", + "LATIN5", + "IBM01145", + "CP874", + "28605", + "1143", + "CSBIG5", + "CSIBM500", "MS936", - "ISO88596", - "CCSID01142", - "ISO88595", - "ISO885916", - "CSUNICODE11UTF7", - "ISO885915", - "ISO88591", - "CSPC8CODEPAGE437", - "ISO885911", - "ISO2022CN", - "CP01147", - "CSISO2022CN", - "BIG5", - "ISO88594", - "HPROMAN8", - "437", - "ISO88598", - "ISO885914", - "IBM1166", - "IBM1156", - "IBM1165", - "IBM1155", - "IBM1161", - "IBM866", - "IBM856", - "IBM865", - "IBM855", - "IBM1146", - "IBM861", - "IBM1145", - "ISO885910", + "856", + "CP12712", + "IBM01144", + "869", + "1123", "IBM1141", - "IBM1164", - "IBM1154", - "IBM1158", - "IBM1046", - "IBM864", - "IBM01146", - "IBM858", - "IBM01145", + "52936", + "CNBIG5", + "CP932", + "IBM1140", + "IBM1112", + "IBM1145", + "CP863", + "IBM850", + "ISOIR166", + "IBM01142", "IBM1144", - "CP00924", - "IBM1148", - "IBM01141", - "CP01143", - "CCSID01147", - "IBM1160", - "CSBIG5", - "BIGFIVE", + "CP51950", + "UTF16", + "KOI8RU", + "R8", + "CP278", "IBM1125", - "CNS11643", - "IBM860", - "IBM850", - "IBM425", - "IBM285", - "IBM1140", - "EBCDICCPIS", - "CNBIG5", - "IBM16804", - "IBM500", - "IBM01144", - "ISO88592", - "IBM01148", - "IBM1026", - "IBM880", "IBM1025", - "EBCDICCPCA", - "EBCDICCPFI", - "EBCDICCPES", - "IBM1124", - "CSIBM1161", - "CSIBM866", - "CSIBM865", - "CSIBM855", - "CCSID853", + "IBM280", + "ISOIR226", + "CSIBM00924", + "1163", "IBM424", + "IBM1124", + "IBM1142", + "U7", + "L7", + "EUCCN", + "950", + "273", + "775", + "IBM880", + "CP819", + "CP1156", + "54936", + "CP01149", + "IBM01148", + "ISOIR230", + "CP1146", + "CNGB", + "CP1046", + "CSPTCP154", + "IBM1122", + "IBM861", + "UNICODE11", + "SYSTEM1125", "IBM284", - "CSIBM861", - "IBM01140", - "IBM00858", - "EBCDICCPSE", - "C99", - "IBM875", - "IBM1162", - "IBM1112", - "IBM871", - "IBM280", - "CSIBM864", - "IBM862", + "IBM860", + "CP1026", + "MACTHAI", + "CP1256", + "51932", + "ISOIR138", + "CP10029", + "IBM1148", + "CP936", "IBM852", - "CCSID00924", - "CSIBM858", - "CSIBM01145", - "CCSID01143", - "IBM1142", - "CSIBM01141", - "CP01149", - "CSIBM1125", - "EBCDICCPNO", - "CSIBM860", - "IBM1131", - "CSIBM285", - "ANSIX3.41986", - "CSIBM500", - "IBM01142", - "CSIBM01148", - "CSIBM1026", - "CSIBM880", - "BIG5HKSCS", - "IBM870", - "ISO88597", - "IBM1252", - "ANSIX3.41968", - "IBM1122", - "KSC56011987", - "CSIBM424", - "CSIBM284", - "IBM282", - "CSIBM01140", - "EBCDICCPHE", - "IBM838", - "IBM278", - "EBCDICES284+EURO", - "IBM1130", - "CSIBM1162", - "IBM775", - "CSIBM871", - "CSIBM280", - "IBM905", - "IBM1157", - "CSWINDOWS1256", - "CSWINDOWS1255", - "CSWINDOWS1251", "TCVN", - "IBM857", - "CCSID01149", - "EBCDICIS871+EURO", - "PT154", - "IBM1147", - "CSWINDOWS1254", - "CSWINDOWS1258", - "CSPTCP154", - "EBCDICCPCH", - "PTCP154", - "CSWINDOWS1250", - "CSWINDOWS874", - "TDS565", - "IBM921", - "CSIBM01142", - "ISO88593", - "IBM1047", - "ISO885913", - "CSIBM870", - "IBM01147", - "IBM1132", - "CNGB", - "KSC56011989", - "IBM924", - "CSWINDOWS1252", - "CSIBM278", - "EBCDICFI278+EURO", - "EBCDICSE278+EURO", - "IBM12712", - "IBM1163", - "IBM1153", - "CSIBM905", - "IBM863", - "IBM853", + "1149", + "943", + "CP1153", + "BIG5", + "CP1143", + "IBM01146", + "1129", + "MACINTOSH", + "CSPCP852", + "IBM282", + "UTF32", + "MSEE", + "KOI8R", + "CP1123", + "IBM864", + "CP1166", + "CP869", + "CP1253", + "CSIBM01143", + "819", + "CP10081", + "ISOIR58", + "IBM1146", + "IBM1046", + "STRK10482002", + "U16LE", + "CSEUCKR", + "28591", + "CP943", + "CSHPROMAN8", + "28595", + "1133", + "IBM862", + "IBM1026", + "CP1163", + "28594", + "CP4971", + "CP28591", + "CSIBM423", + "MSKANJI", + "CP1158", + "CSIBM1163", + "CP28595", + "CP10082", + "CP1148", + "RK1048", "TIS620", - "IBM1143", - "CSIBM857", - "EBCDICNO277+EURO", - "IBM4971", - "EBCDICCPDK", - "CSGB2312", - "CSWINDOWS1257", - "CSMACINTOSH", - "IBM00924", + "ARMSCII8", "TIS6200", - "IBM01143", - "EBCDICDE273+EURO", - "CSIBM1047", - "ISO88599", - "CSIBM01147", - "IBM367", - "IBM1123", - "IBM423", - "IBM1137", + "CP21866", + "CP28594", + "28592", + "CP20866", + "CSGB2312", + "IBM1155", + "CP1258", + "437", + "1257", + "IBMEUCCN", + "CCSID01141", + "CP51932", + "UCS4BE", + "CCSID01140", + "949", + "IBM1154", + "CCSID01145", + "GEORGIANPS", + "10017", + "853", + "10007", + "CP28592", + "IBM1250", + "UCS2BE", + "1047", + "IBM1255", + "U32BE", + "CCSID01144", + "IBM425", + "ISO646US", + "28598", + "DOS862", + "IBM1254", + "CSIBM01149", + "ISOIR203", + "IBM855", + "ISOCELTIC", + "ISO646CN", + "ISO10646UCS4", + "ISO2022JP1", + "CSISO2022JP", + "ISO2022JPMS", + "CCSID01142", + "GB2312", + "LATIN6", + "L9", + "CSISO2022JP2", + "CP949", + "CP28598", + "ISO10646UCS2", + "IBM1252", + "IBM285", + "ISO2022JP", + "ISO88591", + "ISO885911", + "IBM924", + "MACROMAN", + "TIS620.25291", + "CNS11643", + "ISO885910", + "ISO88595", + "ISO885915", + "CP1133", + "CSIBM278", + "GB231280", + "IBM1158", + "28596", + "CSISO2022KR", + "ECMA114", + "ISO2022JP2004", + "ISO88594", + "ISO885914", + "ISOIR109", + "ISOIR159", + "CCSID01148", + "LATIN3", + "ISO2022JP2", + "ISOIR149", + "CP51949", + "CP273", + "CP775", + "CP10017", + "IBM1258", + "CP54936", "IBM922", - "CSWINDOWS1253", - "SYSTEM1125", - "IBM437", - "MACTHAI", - "EBCDICCPBE", - "IBM277", - "ISOIR6", - "CSIBM1163", - "IBM037", - "ISOIR166", - "ISOIR165", - "CSIBM863", - "CSIBM853", - "TCVN57121", - "IBM869", - "IBM819", - "IBM1149", - "BIG52003", - "XMACTHAI", + "CP28596", + "IBM865", + "NEXTSTEP", + "CP10007", + "10079", + "CSIBM905", + "ISO88592", "HZGB2312", - "TIS620.25291", - "R8", - "GBK", - "US", - "ISOIR14", - "ISOIR58", - "USASCII", - "EBCDICDK277+EURO", - "ISOIR101", - "CSIBM00924", - "ARMSCII8", - "CSIBM01143", - "ISO646.IRV:1991", - "IBM01149", - "IBM1097", - "ISOIR144", - "ISO646US", - "ISOIR148", - "ISO2022CNEXT", - "TCVN5712", - "ISOIR126", - "IBM1129", - "ISOIR110", - "CSIBM423", - "UCS4", - "IBM932", - "IBMCP1133", - "IBM273", - "L6", - "L5", - "IBM297", - "CSIBM277", - "IBM737", - "L1", + "CP52936", + "JIS0208", + "ISOIR6", + "MSHEBR", "CSISO58GB231280", - "ROMAN8", - "CSIBM037", - "EUCCN", - "ISOIR100", - "CSIBM869", - "LATIN6", - "LATIN5", - "CSISO57GB1988", - "SJIS", - "L4", - "L10", - "ISO10646UCS4", - "LATIN1", - "L8", - "IBM943", - "MACINTOSH", - "TIS620.25331", - "UHC", - "ISOIR226", - "JP", - "JAVA", - "STRK10482002", - "LATIN4", - "CSIBM01149", + "IBM1156", + "IBM1131", + "IBM01143", + "CCSID00858", + "28603", + "XMACCYRILLIC", + "IBM1130", + "51949", + "CCSID01146", + "CP01147", + "CP857", + "CP1149", + "CSIBM855", + "IBM1256", + "ECMA118", + "ISO2022CNEXT", + "ISO88598", + "CP1129", + "IBM1143", + "HPROMAN8", + "TDS565", + "CSISO159JISX02121990", "LATIN8", - "TIS620.25330", - "ISO646JP", - "ISO10646UCS2", - "UCS2", - "CSIBM273", - "IBMTHAI", - "CSIBM297", - "LATIN10", - "UNICODE11", - "RK1048", - "CSHPROMAN8", - "ISOIR138", + "1157", + "1147", + "IBM1132", + "IBM871", + "CSIBM880", + "IBM1123", + "PCK", "GB18030", - "L2", - "CSISO14JISC6220RO", - "GB2312", - "ISOIR57", - "MSKANJI", - "ISOIR157", - "LATIN2", - "EBCDICINTERNATIONAL500+EURO", - "GB231280", - "ISOIR87", - "MACROMANIA", - "MACROMAN", - "GB198880", + "ISO2022KR", + "UNICODEBIG", "CSIBMTHAI", - "XMACICELANDIC", - "DECKOREAN", - "WINDOWS1256", - "WINDOWS1255", - "TIS620.2533", - "WINDOWS1251", - "EBCDICIT280+EURO", - "ISOIR230", - "JIS0208", - "ARABIC", - "WINDOWS1254", - "WINDOWS1258", + "IBM870", + "38598", + "KSC56011989", + "CSISOLATIN1", "TACTIS", - "ISOIR127", - "JISX0201", - "XMACROMANIAN", - "WINDOWS1250", - "SDECKANJI", - "L7", - "CSISO87JISX0208", - "DECKANJI", + "CSISOLATIN10", + "CSISOLATINARABIC", + "CSISOLATIN5", + "CSISOLATINCYRILLIC", + "ATARI", + "CSIBM861", + "IBM1161", + "CSISO14JISC6220RO", + "ISO88596", + "ISO885916", + "CSISOLATIN4", + "CSIBM860", + "IBM1160", + "4971", + "CSIBM865", + "IBM1165", + "367", + "CP38598", + "CSISOLATIN2", + "UCS4INTERNAL", + "CSIBM864", + "IBM1164", + "JISX0201", + "CSIBM858", + "TIS620.25331", + "UTF16LE", + "TIS620.25330", + "UCS2INTERNAL", + "IBM905", + "KZ1048", + "MACARABIC", + "U16BE", + "IBM01149", + "277", + "IBM1162", + "XMACCE", + "UNICODE11UTF7", + "MSTURK", + "MACTURKISH", + "CSISOLATIN6", + "IBM932", + "CSUNICODE11", + "JISX0212", + "SHIFTJIS", + "IBM1149", + "CP037", + "EUCJP", + "CCSID00924", + "CSKSC56011987", + "MACGREEK", "MSGREEK", + "JISX0212.19900", + "CP437", + "IBM921CP28603", + "IBM1168", + "C99", + "BIG5HKSCS", + "IBM1129", + "ISO646.IRV:1991", + "KOI8T", + "BIG52003", + "CSMACINTOSH", + "28593", + "CP1157", + "SHIFTJIS2004", "JISX0208", - "WINDOWS1252", + "CP1147", "CNGBISOIR165", + "CP1047", + "CSIBM1047", + "IBM856", + "IBMCP1133", + "CSIBM01147", + "CSGB18030", + "ISOIR199", + "CP1257", + "CP28593", + "LATIN9", + "KSC56011987", + "MULELAO1", + "CSIBM866", + "IBM1166", + "CP367", + "IBM423", + "1137", + "ASMO708", + "CSIBM273", + "CSPC8CODEPAGE1144", + "IBM1153", + "CP297", + "DECHANZI", + "IBM853", + "CSEUCTW", + "IBM00924", + "UTF32LE", + "CCSID01143", + "DECHANYU", + "737", + "ISOIR157", + "CSISOLATIN3", + "HEBREW", + "GEORGIANACADEMY", + "MACCROATIAN", + "IBM866", + "CSWINDOWS1251", + "CSWINDOWS1250", + "CSWINDOWS1255", + "CSISO885915CP28605", + "ISOIR127", + "CSWINDOWS1254", + "EUCKR", + "IBMTHAI", + "UNICODELITTLE", + "CP10079", + "CSWINDOWS1252", + "TIS620.2533", + "CSPC8CODEPAGE1146", + "857", + "ISO2022JP3", + "IBM12712", + "IBM875", + "28599", + "IBM863", + "ELOT928", + "ROMAN8", + "CSWINDOWS1258", + "ISO88593", + "ISO885913", + "IBMEUCJP", + "IBM16804", + "IBM858", + "CSWINDOWS874", + "UTF7", + "IBM00858", + "CP28599", + "CSKOI8U", + "CSWINDOWS1256", + "GBK", + "ISOIR179", + "CSSHIFTJIS", + "ISO646JP", + "ANSIX3.41968", + "CSISO57GB1988", + "CCSID01149", + "KOREAN", + "CP1137", + "JISX02121990", + "CP0037", + "CSIBM037", + "CSUNICODE", + "CP277", + "CSIBM853", + "ANSIX3.41986", "LATIN7", - "CSEUCPKDFMTJAPANESE", - "MACICELAND", - "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE", - "CSISO2022KR", - "ISO2022JP", - "ISO2022JP1", - "NEXTSTEP", - "ISO885916:2001", - "EBCDICCYRILLIC", - "JISX0212.19900", - "WINDOWS874", - "UCS4BE", - "IBMEUCCN", + "JAVA", + "TCVN57121", + "JISX02081990", + "CSIBM871", + "CSIBM870", + "XMACROMANIAN", + "EBCDICCPIS", + "EBCDICCPUS", + "IBM01147", + "TCVN5712", + "JISX02011976", + "EBCDICCPNL", + "EBCDICCPYU", + "UTF16BE", + "ISO88599", + "CP1097", + "ISO885910:1992", + "MACUKRAINE", + "CSISOLATINGREEK", + "IBMEUCKR", + "IBM1147", + "CSKOI8RU", + "IBM1047", + "IBM943", + "CSIBM863", + "IBM1163", + "CSWINDOWS1253", "ISO88595:1988", "ISO885915:1998", - "CSISO2022JP", - "WINDOWS1257", - "MACARABIC", - "JISX0212", - "L3", + "CSISOLATINHEBREW", + "MACCENTRALEUROPE", "ISO88594:1988", "ISO885914:1998", + "ARABIC", + "ISO885916:2001", + "IBM4971", + "IBM819", + "297", + "ISOIR57", + "CSIBM297", "ISO88598:1988", - "CSISO159JISX02121990", - "ISOIR203", - "EBCDICCPUS", - "ISOIR159", - "EBCDICGB285+EURO", - "EBCDICCPROECE", - "UCS2BE", - "LATIN3", - "WINDOWS1253", - "XMACARABIC", - "ISOIR149", - "ISO2022JP2004", - "KOI8T", - "CSISO2022JP2", - "ISO2022JPMS", - "ISOIR109", - "ISO885910:1992", - "WINDOWS950", - "ISO88596:1987", - "ISO88591:1987", - "ISO2022JP2", - "ATARI", - "GREEK8", - "JISX02011976", - "LATIN9", - "JISC62201969RO", - "ISOIR179", - "ISO88593:1988", - "UTF16", - "ISO88592:1987", - "JISX02081990", - "WINDOWS936", - "UCS4SWAPPED", - "GREEK", - "UTF8", - "JISX02121990", - "BIG5HKSCS:2001", - "EBCDICCPGB", - "ISO88597:1987", - "ISOCELTIC", - "BIG5HKSCS:2004", - "BIG5HKSCS:2008", - "CSPC775BALTIC", - "UCS2SWAPPED", - "JISC62261983", - "ISOIR199", - "CSISOLATIN6", - "CSISOLATIN5", - "CSISOLATIN1", - "CSISOLATINARABIC", - "CSISOLATINCYRILLIC", - "MACCROATIAN", - "MSARAB", - "CSISOLATIN4", - "EBCDICCPIT", - "ISO2022JP3", - "EBCDICFR297+EURO", - "JISX02081983", - "MACGREEK", - "XMACCROATIAN", - "ISO88597:2003", - "CPGR", - "CSISOLATIN2", - "EBCDICUS37+EURO", - "JOHAB", - "SHIFTJIS", - "CSSHIFTJIS", - "XMACGREEK", - "CSKOI8R", - "CSISOLATINGREEK", - "GEORGIANPS", - "UTF7", - "GEORGIANACADEMY", - "ISO88599:1989", - "BIG5HKSCS:1999", - "CSISOLATIN3", - "UTF32", - "SHIFTJIS2004", - "KOI8R", - "EBCDICGREEK", - "UTF16BE", - "CYRILLIC", - "UCS4LE", - "EUCJP", - "CYRILLICASIAN", - "ELOT928", - "UCS2LE", - "HEBREW", - "KOI8U", "SHIFTJISX0213", - "TCVN57121:1993", - "DECHANYU", - "MULELAO1", - "EBCDICLATIN9EURO", - "MACUKRAINE", - "ISO2022KR", - "XMACUKRAINIAN", - "MSTURK", - "UNICODE11UTF7", + "IBM838", + "EBCDICCYRILLIC", + "UCS4SWAPPED", + "XMACICELANDIC", + "UCS2SWAPPED", + "JISC62261983", + "CSUNICODE11UTF7", + "CP737", + "MACICELAND", + "CSKOI8R", + "IBM869", + "GB18030:2005", "EUCJIS2004", - "CSISOLATINHEBREW", - "EBCDICCPWT", + "JISC62201969RO", "UTF32BE", - "GB18030:2005", - "EBCDICCPFR", - "MSHEBR", - "CSHALFWIDTHKATAKANA", - "CSPC862LATINHEBREW", + "CSIBM869", + "IBM1169", + "GB198880", + "BIGFIVE", "GB18030:2022", + "JISX02081983", + "XMACTHAI", + "GREEK", + "28597", + "CHINESE", + "MSARAB", + "IBM273", + "CSPC8CODEPAGE437", + "CP28597", + "EBCDICCPGR", + "ISO88593:1988", + "CSIBM277", + "BIG5HKSCS:2001", + "IBM1157", + "IBM775", + "EBCDICCPES", + "BIG5HKSCS:2004", + "CCSID01147", + "CSWINDOWS1257", + "IBM857", + "EBCDICCPCH", + "IBM1257", + "XMACUKRAINIAN", + "SDECKANJI", + "IBM278", + "BIG5HKSCS:2008", + "WINDOWS1251", + "WINDOWS1250", + "WINDOWS1255", + "MACROMANIA", + "WINDOWS1254", + "CSPC862LATINHEBREW", + "WINDOWS1252", + "ISO88597", + "JOHAB", + "WINDOWS1258", + "EBCDICCPFI", + "WINDOWS1256", + "EUCTW", + "IBM1137", + "CSIBM857", + "ISO88591:1987", + "IBM037", + "CSPC775BALTIC", + "IBM437", + "XMACTURKISH", + "ISO88592:1987", + "CSISO87JISX0208", + "CCSID853", + "ISOIR87", + "ISO88596:1987", + "IBM367", "KOKR.JOHAP92", - "EBCDICCPYU", - "UNICODEBIG", - "IBMEUCJP", + "WINDOWS1253", + "GREEK8", "EUCJISX0213", - "EBCDICCPNL", + "IBM297", + "EBCDICCPSE", + "BIG5HKSCS:1999", "MACHEBREW", + "ISO88599:1989", + "DECKANJI", "RISCOSLATIN1", - "CSEUCTW", - "XMACHEBREW", - "EUCTW", - "UTF16LE", - "EBCDICCPGR", - "MACCENTRALEUROPE", - "UNICODELITTLE", - "ATARIST", - "CSEUCKR", - "EUCKR", - "EBCDICCPTR", - "XMACTURKISH", - "UTF32LE", - "MACTURKISH", - "KOI8RU", + "WINDOWS950", "IBMEUCTW", - "MSCYRL", - "MACCYRILLIC", - "XMACCYRILLIC", - "CSPC850MULTILINGUAL", - "IBMEUCKR", - "UCS4INTERNAL", - "UCS2INTERNAL", - "WINBALTRIM" + "EBCDICCPTR", + "EBCDICCPFR", + "WINBALTRIM", + "EBCDICCPNO", + "IBM1097", + "EBCDICES284+EURO", + "XMACCROATIAN", + "ISO88597:2003", + "EBCDICCPHE", + "EBCDICCPIT", + "DECKOREAN", + "IBM277", + "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE", + "EBCDICCPROECE", + "TCVN57121:1993", + "EBCDICCPGB", + "EBCDICIT280+EURO", + "EBCDICGB285+EURO", + "ATARIST", + "WINDOWS1257", + "XMACARABIC", + "CSEUCPKDFMTJAPANESE", + "EBCDICIS871+EURO", + "WINDOWS874", + "EBCDICCPCA", + "ISO88597:1987", + "IBM737", + "EBCDICCPBE", + "EBCDICINTERNATIONAL500+EURO", + "WINDOWS936", + "XMACGREEK", + "EBCDICUS37+EURO", + "EBCDICSE278+EURO", + "EBCDICGREEK", + "EBCDICLATIN9EURO", + "EBCDICNO277+EURO", + "EBCDICFR297+EURO", + "EBCDICCPWT", + "EBCDICFI278+EURO", + "XMACHEBREW", + "CSHALFWIDTHKATAKANA", + "EBCDICCPDK", + "EBCDICDE273+EURO", + "EBCDICDK277+EURO" }; #define stringpool ((const char *) &stringpool_contents) static const struct alias aliases[] = { - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 21 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str7, ei_ascii}, -#line 238 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str8, ei_viscii}, + {-1}, {-1}, {-1}, {-1}, +#line 354 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str4, ei_mac_roman}, + {-1}, +#line 20 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str6, ei_ascii}, +#line 83 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str7, ei_sjis}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 37 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_ucs2be}, {-1}, {-1}, -#line 13 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str11, ei_ascii}, -#line 384 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str12, ei_cp861}, -#line 336 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str13, ei_euc_kr}, -#line 399 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str14, ei_cp1125}, +#line 295 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str25, ei_cp1251}, +#line 46 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, ei_ucs4be}, + {-1}, +#line 41 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_ucs2le}, + {-1}, {-1}, +#line 289 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str31, ei_cp1250}, +#line 50 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, ei_ucs4le}, + {-1}, {-1}, {-1}, {-1}, +#line 318 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str37, ei_cp1255}, +#line 474 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 645 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_ebcdic425}, + {-1}, {-1}, +#line 373 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_mac_romania}, +#line 651 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_ebcdic500}, + {-1}, +#line 357 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_mac_roman}, + {-1}, {-1}, +#line 177 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_iso8859_2}, +#line 312 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_cp1254}, + {-1}, +#line 393 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_mac_hebrew}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 642 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_ebcdic424}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 397 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_mac_arabic}, +#line 401 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_mac_thai}, +#line 146 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_euc_kr}, + {-1}, +#line 58 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_utf32}, + {-1}, {-1}, {-1}, {-1}, +#line 690 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str84, ei_ebcdic1025}, + {-1}, {-1}, {-1}, {-1}, +#line 44 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, ei_ucs4}, + {-1}, {-1}, {-1}, +#line 301 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_cp1252}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 389 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_mac_turkish}, + {-1}, +#line 155 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_johab}, + {-1}, {-1}, {-1}, {-1}, +#line 97 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_iso2022_jpms}, + {-1}, {-1}, {-1}, {-1}, +#line 193 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_iso8859_4}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 159 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso2022_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 557 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_cp861}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 553 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, ei_cp860}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 570 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_cp865}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 335 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_cp1258}, + {-1}, +#line 559 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_cp861}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 568 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_cp864}, + {-1}, {-1}, {-1}, {-1}, +#line 839 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_ebcdic16804}, +#line 245 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_10}, + {-1}, {-1}, {-1}, +#line 650 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, ei_ebcdic500}, +#line 406 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_hp_roman8}, + {-1}, +#line 369 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, ei_mac_croatian}, + {-1}, +#line 372 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, ei_mac_romania}, + {-1}, +#line 733 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str178, ei_ebcdic1141}, + {-1}, {-1}, +#line 120 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_hz}, + {-1}, {-1}, {-1}, +#line 356 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str185, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, +#line 725 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_ebcdic1140}, +#line 392 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str191, ei_mac_hebrew}, +#line 418 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_pt154}, + {-1}, {-1}, +#line 200 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str195, ei_iso8859_5}, + {-1}, +#line 443 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_viscii}, + {-1}, +#line 341 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_cp862}, +#line 36 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_ucs2be}, +#line 656 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ebcdic838}, +#line 292 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_cp1251}, +#line 294 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_cp1251}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 396 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_mac_arabic}, +#line 47 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_ucs4be}, + {-1}, +#line 40 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_ucs2le}, + {-1}, +#line 374 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_mac_cyrillic}, +#line 284 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, ei_cp1250}, +#line 49 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_ucs4le}, +#line 644 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_ebcdic425}, + {-1}, {-1}, {-1}, +#line 324 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_cp1256}, + {-1}, {-1}, {-1}, +#line 730 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_ebcdic1141}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 722 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_ebcdic1140}, +#line 339 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_cp850}, + {-1}, {-1}, +#line 641 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str235, ei_ebcdic424}, + {-1}, +#line 764 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_ebcdic1145}, +#line 540 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_cp855}, + {-1}, {-1}, +#line 385 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_mac_greek}, +#line 805 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, ei_ebcdic1154}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 412 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_pt154}, +#line 498 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_cp1046}, + {-1}, +#line 759 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_ebcdic1144}, + {-1}, {-1}, {-1}, +#line 756 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_ebcdic1144}, {-1}, {-1}, {-1}, {-1}, -#line 22 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str19, ei_ascii}, +#line 613 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_ebcdic280}, +#line 507 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_cp1161}, +#line 400 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_mac_thai}, + {-1}, {-1}, +#line 167 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_1}, +#line 624 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_ebcdic285}, {-1}, -#line 178 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str21, ei_cp866}, -#line 392 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_cp865}, -#line 370 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str23, ei_cp855}, +#line 694 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_ebcdic1026}, {-1}, -#line 383 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str25, ei_cp861}, +#line 500 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_cp1124}, +#line 185 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_iso8859_3}, +#line 271 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_iso8859_16}, +#line 820 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_ebcdic1160}, {-1}, {-1}, -#line 236 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_viscii}, +#line 311 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_cp1254}, + {-1}, {-1}, +#line 734 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ebcdic1141}, +#line 27 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_utf8}, + {-1}, +#line 809 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_ebcdic1155}, + {-1}, +#line 621 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_ebcdic284}, +#line 726 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ebcdic1140}, +#line 67 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_utf7}, + {-1}, {-1}, +#line 702 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_ebcdic1112}, +#line 675 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_ebcdic880}, +#line 768 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str291, ei_ebcdic1145}, + {-1}, +#line 738 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1142}, +#line 531 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str294, ei_cp852}, + {-1}, +#line 455 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_jisx0201}, + {-1}, {-1}, +#line 96 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_iso2022_jpms}, +#line 806 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_ebcdic1154}, + {-1}, {-1}, {-1}, +#line 742 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_ebcdic1142}, {-1}, {-1}, {-1}, {-1}, -#line 426 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str33, ei_ebcdic285}, +#line 760 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_ebcdic1144}, +#line 580 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp1125}, +#line 158 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_iso2022_kr}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 558 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_cp861}, + {-1}, {-1}, {-1}, +#line 617 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_ebcdic282}, +#line 705 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_ebcdic1122}, +#line 555 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp860}, {-1}, {-1}, -#line 269 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str36, ei_iso646_cn}, +#line 346 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_cp866}, +#line 501 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_cp1124}, +#line 300 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str329, ei_cp1252}, +#line 572 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str330, ei_cp865}, {-1}, -#line 35 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_ucs4}, -#line 521 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str39, ei_ebcdic1146}, -#line 376 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str40, ei_cp858}, -#line 515 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str41, ei_ebcdic1145}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 489 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str47, ei_ebcdic1141}, -#line 237 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_viscii}, -#line 380 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_cp860}, -#line 171 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str50, ei_cp850}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 267 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str58, ei_iso646_cn}, +#line 703 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_ebcdic1112}, + {-1}, +#line 823 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_ebcdic1164}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 743 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_ebcdic1142}, +#line 567 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_cp864}, + {-1}, {-1}, {-1}, {-1}, +#line 788 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_ebcdic1148}, +#line 548 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_cp858}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 468 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_jisx0212}, +#line 508 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_cp1161}, {-1}, -#line 86 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str69, ei_iso8859_6}, +#line 42 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_ucs4}, +#line 838 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_ebcdic16804}, +#line 706 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_ebcdic1122}, {-1}, -#line 509 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str71, ei_ebcdic1144}, +#line 821 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_ebcdic1160}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 827 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_ebcdic1165}, +#line 384 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_mac_greek}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 94 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str73, ei_iso8859_7}, +#line 344 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_cp862}, +#line 511 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_cp1162}, {-1}, -#line 533 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_ebcdic1148}, +#line 687 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_ebcdic924}, + {-1}, {-1}, +#line 824 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ebcdic1164}, + {-1}, {-1}, +#line 24 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_ascii}, + {-1}, {-1}, +#line 818 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ebcdic1158}, {-1}, {-1}, {-1}, -#line 174 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_cp862}, -#line 363 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str80, ei_cp852}, - {-1}, {-1}, {-1}, {-1}, -#line 316 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str85, ei_hz}, +#line 29 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_ucs2}, {-1}, {-1}, {-1}, {-1}, -#line 183 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str90, ei_mac_roman}, +#line 792 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_ebcdic1148}, +#line 667 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str408, ei_ebcdic871}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 662 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_ebcdic870}, + {-1}, {-1}, {-1}, +#line 89 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_cp932}, + {-1}, +#line 671 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_ebcdic875}, +#line 772 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic1146}, +#line 488 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_cp856}, +#line 350 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_cp1131}, +#line 461 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_jisx0208}, {-1}, {-1}, -#line 223 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_rk1048}, +#line 492 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str427, ei_cp922}, + {-1}, {-1}, +#line 512 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_cp1162}, +#line 276 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_koi8_r}, {-1}, -#line 483 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str95, ei_ebcdic1140}, +#line 584 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_cp1125}, + {-1}, +#line 711 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ebcdic1130}, + {-1}, {-1}, +#line 440 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_cp874}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 166 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 148 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str102, ei_cp1251}, -#line 291 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str103, ei_sjis}, -#line 152 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str104, ei_cp1252}, +#line 270 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_iso8859_16}, + {-1}, {-1}, {-1}, +#line 52 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_utf16}, +#line 575 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_cp869}, +#line 338 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp850}, +#line 578 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_cp869}, + {-1}, +#line 812 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_ebcdic1156}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 776 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_ebcdic1146}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 732 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 250 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str110, ei_jisx0201}, +#line 724 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_ebcdic1140}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 520 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str116, ei_ebcdic1146}, -#line 144 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str117, ei_cp1250}, -#line 514 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_ebcdic1145}, +#line 766 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 488 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str124, ei_ebcdic1141}, +#line 104 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_euc_cn}, + {-1}, {-1}, +#line 582 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_cp1125}, +#line 609 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_ebcdic278}, + {-1}, {-1}, +#line 135 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_cp950}, +#line 808 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_ebcdic1155}, + {-1}, {-1}, {-1}, +#line 348 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str514, ei_cp866}, + {-1}, {-1}, {-1}, {-1}, +#line 767 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_ebcdic1145}, {-1}, -#line 373 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str126, ei_cp857}, +#line 154 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_johab}, + {-1}, +#line 192 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_iso8859_4}, +#line 351 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str524, ei_cp1131}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 712 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_ebcdic1130}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 13 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_ascii}, +#line 585 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_cp1125}, + {-1}, +#line 21 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str540, ei_ascii}, +#line 689 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_ebcdic1025}, +#line 12 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_ascii}, + {-1}, +#line 317 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_cp1255}, +#line 306 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_cp1253}, +#line 110 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp936}, {-1}, {-1}, -#line 141 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str129, ei_cp1250}, -#line 305 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str130, ei_euc_cn}, +#line 714 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str549, ei_ebcdic1132}, + {-1}, +#line 299 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_cp1252}, +#line 741 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_ebcdic1142}, +#line 637 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_ebcdic423}, + {-1}, +#line 237 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_iso8859_9}, +#line 175 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_iso8859_2}, +#line 506 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_cp1161}, +#line 830 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_ebcdic1166}, +#line 191 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_iso8859_4}, + {-1}, +#line 686 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_ebcdic924}, +#line 164 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_iso8859_1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 176 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso8859_2}, +#line 419 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_pt154}, + {-1}, +#line 118 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str579, ei_iso2022_cn}, +#line 640 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_ebcdic424}, + {-1}, +#line 450 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_iso646_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 117 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_iso2022_cn}, + {-1}, {-1}, {-1}, +#line 715 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_ebcdic1132}, + {-1}, +#line 149 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_cp949}, + {-1}, {-1}, {-1}, +#line 199 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_iso8859_5}, +#line 491 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_cp922}, {-1}, {-1}, -#line 30 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str133, ei_ucs2be}, +#line 826 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str602, ei_ebcdic1165}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 655 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_ebcdic838}, + {-1}, +#line 413 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_pt154}, + {-1}, +#line 790 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_ebcdic1148}, + {-1}, {-1}, {-1}, {-1}, +#line 337 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_cp850}, {-1}, {-1}, -#line 276 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str136, ei_ksc5601}, +#line 612 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_ebcdic280}, + {-1}, {-1}, +#line 538 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str623, ei_cp855}, +#line 129 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_euc_tw}, +#line 510 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_cp1162}, +#line 626 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_ebcdic285}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 836 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_ebcdic12712}, +#line 683 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_ebcdic924}, + {-1}, {-1}, {-1}, {-1}, +#line 481 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 620 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_ebcdic284}, {-1}, -#line 256 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str138, ei_jisx0208}, +#line 438 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_cp874}, + {-1}, {-1}, {-1}, {-1}, +#line 562 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str651, ei_cp863}, + {-1}, +#line 28 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_utf8}, + {-1}, {-1}, {-1}, +#line 283 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_koi8_ru}, + {-1}, +#line 68 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_utf7}, + {-1}, {-1}, {-1}, +#line 479 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_isoir165}, + {-1}, {-1}, {-1}, +#line 293 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_cp1251}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 529 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_cp852}, +#line 423 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str680, ei_rk1048}, + {-1}, +#line 48 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_ucs4le}, + {-1}, {-1}, {-1}, {-1}, +#line 614 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_ebcdic280}, + {-1}, {-1}, {-1}, {-1}, +#line 692 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_ebcdic1026}, +#line 627 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_ebcdic285}, +#line 583 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str694, ei_cp1125}, +#line 277 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str695, ei_koi8_u}, +#line 235 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_iso8859_9}, +#line 550 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_cp858}, + {-1}, +#line 441 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_viscii}, + {-1}, +#line 38 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_ucs2le}, + {-1}, {-1}, {-1}, {-1}, +#line 62 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_utf32le}, + {-1}, {-1}, {-1}, {-1}, +#line 622 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_ebcdic284}, #line 26 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str139, ei_ucs2}, -#line 523 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str140, ei_ebcdic1146}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_utf8}, +#line 258 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_iso8859_14}, + {-1}, {-1}, {-1}, +#line 676 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_ebcdic880}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 508 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str148, ei_ebcdic1144}, +#line 636 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str725, ei_ebcdic423}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 546 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_cp858}, + {-1}, +#line 414 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str741, ei_pt154}, +#line 417 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_pt154}, + {-1}, {-1}, +#line 747 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_ebcdic1143}, +#line 536 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_cp853}, +#line 442 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_viscii}, + {-1}, +#line 616 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_ebcdic282}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 361 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_mac_centraleurope}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 666 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_ebcdic871}, + {-1}, {-1}, +#line 451 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_iso646_jp}, + {-1}, {-1}, +#line 658 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str770, ei_ebcdic870}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 670 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str776, ei_ebcdic875}, + {-1}, {-1}, {-1}, {-1}, +#line 728 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str781, ei_ebcdic1141}, +#line 646 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_ebcdic500}, +#line 216 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_iso8859_7}, + {-1}, +#line 25 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_utf8}, + {-1}, +#line 720 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_ebcdic1140}, + {-1}, {-1}, +#line 803 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_ebcdic1153}, +#line 236 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str791, ei_iso8859_9}, + {-1}, +#line 762 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str793, ei_ebcdic1145}, +#line 439 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_cp874}, + {-1}, +#line 266 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str796, ei_iso8859_15}, + {-1}, {-1}, +#line 752 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_ebcdic1143}, + {-1}, +#line 133 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str801, ei_ces_big5}, +#line 649 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_ebcdic500}, + {-1}, {-1}, +#line 107 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str805, ei_cp936}, + {-1}, +#line 489 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_cp856}, + {-1}, {-1}, +#line 835 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str810, ei_ebcdic12712}, +#line 754 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str811, ei_ebcdic1144}, + {-1}, +#line 574 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_cp869}, + {-1}, {-1}, {-1}, {-1}, +#line 709 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_ebcdic1123}, + {-1}, +#line 727 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_ebcdic1141}, {-1}, {-1}, -#line 364 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str151, ei_cp852}, -#line 532 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str152, ei_ebcdic1148}, -#line 303 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_euc_cn}, -#line 280 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str154, ei_ksc5601}, -#line 495 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_ebcdic1142}, -#line 511 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str156, ei_ebcdic1144}, +#line 123 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_hz}, +#line 132 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str824, ei_ces_big5}, +#line 88 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_cp932}, +#line 719 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str826, ei_ebcdic1140}, {-1}, {-1}, {-1}, -#line 186 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str160, ei_mac_centraleurope}, - {-1}, {-1}, -#line 387 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str163, ei_cp863}, -#line 366 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str164, ei_cp853}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 482 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_ebcdic1140}, -#line 447 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str173, ei_ebcdic870}, +#line 701 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_ebcdic1112}, + {-1}, +#line 761 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str832, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 222 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str179, ei_rk1048}, +#line 564 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str838, ei_cp863}, + {-1}, {-1}, {-1}, {-1}, +#line 336 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_cp850}, + {-1}, {-1}, {-1}, +#line 433 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str847, ei_tis620}, {-1}, -#line 281 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_ksc5601}, +#line 736 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_ebcdic1142}, +#line 753 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str850, ei_ebcdic1144}, {-1}, -#line 306 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str183, ei_euc_cn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 128 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_euc_tw}, {-1}, -#line 263 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str194, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 395 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str207, ei_cp869}, -#line 87 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str208, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 51 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str854, ei_utf16}, + {-1}, {-1}, {-1}, {-1}, +#line 279 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str859, ei_koi8_ru}, + {-1}, +#line 404 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str861, ei_hp_roman8}, +#line 608 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str862, ei_ebcdic278}, {-1}, {-1}, {-1}, -#line 176 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_cp862}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 308 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str228, ei_cp936}, +#line 579 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str866, ei_cp1125}, {-1}, {-1}, -#line 83 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_iso8859_6}, -#line 494 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_ebcdic1142}, -#line 78 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str233, ei_iso8859_5}, +#line 688 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str869, ei_ebcdic1025}, + {-1}, +#line 610 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str871, ei_ebcdic280}, + {-1}, {-1}, {-1}, +#line 269 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str875, ei_iso8859_16}, + {-1}, +#line 685 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str877, ei_ebcdic924}, + {-1}, {-1}, {-1}, {-1}, +#line 516 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_cp1163}, +#line 638 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_ebcdic424}, +#line 499 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_cp1124}, + {-1}, {-1}, {-1}, +#line 735 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str888, ei_ebcdic1142}, +#line 66 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_utf7}, +#line 251 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str890, ei_iso8859_13}, +#line 98 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_euc_cn}, {-1}, {-1}, -#line 132 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str236, ei_iso8859_16}, -#line 46 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_utf7}, -#line 128 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_iso8859_15}, -#line 53 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str239, ei_iso8859_1}, +#line 136 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp950}, {-1}, {-1}, {-1}, -#line 358 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str243, ei_cp437}, -#line 116 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str244, ei_iso8859_11}, -#line 313 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str245, ei_iso2022_cn}, +#line 597 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str898, ei_ebcdic273}, {-1}, #line 527 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str247, ei_ebcdic1147}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 314 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str257, ei_iso2022_cn}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_cp775}, +#line 672 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str901, ei_ebcdic880}, +#line 169 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str902, ei_iso8859_1}, {-1}, {-1}, -#line 322 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_ces_big5}, +#line 811 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str905, ei_ebcdic1156}, +#line 116 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_gb18030_2022}, +#line 796 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_ebcdic1149}, + {-1}, +#line 786 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_ebcdic1148}, + {-1}, +#line 848 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str911, ei_tds565}, {-1}, {-1}, -#line 72 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str263, ei_iso8859_4}, -#line 207 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str264, ei_hp_roman8}, -#line 357 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_cp437}, +#line 775 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_ebcdic1146}, {-1}, -#line 99 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str267, ei_iso8859_8}, -#line 122 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_iso8859_14}, -#line 551 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str269, ei_ebcdic1166}, -#line 545 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_ebcdic1156}, -#line 550 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_ebcdic1165}, -#line 544 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_ebcdic1155}, - {-1}, {-1}, {-1}, {-1}, -#line 350 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str277, ei_cp1161}, -#line 177 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str278, ei_cp866}, -#line 344 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_cp856}, -#line 391 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_cp865}, -#line 369 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str281, ei_cp855}, +#line 100 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str916, ei_euc_cn}, +#line 497 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_cp1046}, + {-1}, {-1}, +#line 415 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str920, ei_pt154}, + {-1}, +#line 704 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str922, ei_ebcdic1122}, +#line 556 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str923, ei_cp861}, {-1}, {-1}, {-1}, -#line 518 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ebcdic1146}, -#line 382 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_cp861}, -#line 512 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str287, ei_ebcdic1145}, +#line 34 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str927, ei_ucs2be}, +#line 581 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str928, ei_cp1125}, + {-1}, {-1}, {-1}, +#line 618 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str932, ei_ebcdic284}, + {-1}, {-1}, +#line 552 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_cp860}, +#line 693 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str936, ei_ebcdic1026}, +#line 398 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str937, ei_mac_thai}, + {-1}, +#line 323 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str939, ei_cp1256}, +#line 81 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str940, ei_euc_jp}, +#line 226 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str941, ei_iso8859_8}, + {-1}, {-1}, +#line 360 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_mac_centraleurope}, + {-1}, {-1}, {-1}, +#line 785 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str948, ei_ebcdic1148}, {-1}, {-1}, {-1}, {-1}, -#line 110 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str292, ei_iso8859_10}, -#line 486 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 549 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str301, ei_ebcdic1164}, -#line 543 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str302, ei_ebcdic1154}, +#line 109 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_cp936}, {-1}, {-1}, {-1}, -#line 547 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str306, ei_ebcdic1158}, +#line 528 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str957, ei_cp852}, {-1}, {-1}, -#line 347 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_cp1046}, -#line 389 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp864}, +#line 444 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str960, ei_tcvn}, +#line 800 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str961, ei_ebcdic1149}, +#line 495 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str962, ei_cp943}, + {-1}, {-1}, {-1}, {-1}, +#line 802 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str967, ei_ebcdic1153}, + {-1}, {-1}, {-1}, {-1}, +#line 130 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str972, ei_ces_big5}, {-1}, {-1}, {-1}, -#line 519 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str314, ei_ebcdic1146}, -#line 375 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str315, ei_cp858}, -#line 513 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str316, ei_ebcdic1145}, -#line 506 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str317, ei_ebcdic1144}, - {-1}, -#line 465 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str319, ei_ebcdic924}, +#line 751 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str976, ei_ebcdic1143}, +#line 770 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str977, ei_ebcdic1146}, + {-1}, {-1}, +#line 504 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str980, ei_cp1129}, +#line 353 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_mac_roman}, {-1}, #line 530 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str321, ei_ebcdic1148}, -#line 487 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_ebcdic1141}, -#line 502 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_ebcdic1143}, -#line 526 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_ebcdic1147}, -#line 548 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str325, ei_ebcdic1160}, -#line 325 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str326, ei_ces_big5}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str983, ei_cp852}, {-1}, -#line 323 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_ces_big5}, -#line 398 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str329, ei_cp1125}, - {-1}, {-1}, {-1}, -#line 321 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str333, ei_euc_tw}, -#line 379 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_cp860}, +#line 615 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_ebcdic282}, +#line 57 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str986, ei_utf32}, + {-1}, {-1}, {-1}, {-1}, +#line 288 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str991, ei_cp1250}, + {-1}, +#line 273 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_koi8_r}, + {-1}, +#line 708 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_ebcdic1123}, +#line 565 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_cp864}, +#line 829 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_ebcdic1166}, + {-1}, {-1}, +#line 577 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_cp869}, +#line 305 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1001, ei_cp1253}, + {-1}, {-1}, +#line 750 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1004, ei_ebcdic1143}, + {-1}, {-1}, {-1}, {-1}, #line 170 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str335, ei_cp850}, -#line 438 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str336, ei_ebcdic425}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_iso8859_1}, + {-1}, {-1}, {-1}, +#line 388 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_mac_turkish}, {-1}, -#line 425 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str338, ei_ebcdic285}, +#line 477 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1015, ei_gb2312}, +#line 769 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1016, ei_ebcdic1146}, {-1}, {-1}, -#line 480 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str341, ei_ebcdic1140}, -#line 452 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str342, ei_ebcdic871}, -#line 324 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str343, ei_ces_big5}, -#line 554 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str344, ei_ebcdic16804}, -#line 439 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str345, ei_ebcdic500}, -#line 507 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str346, ei_ebcdic1144}, -#line 60 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_iso8859_2}, +#line 496 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_cp1046}, +#line 421 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_rk1048}, + {-1}, {-1}, {-1}, +#line 56 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1024, ei_utf16le}, {-1}, {-1}, -#line 531 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str350, ei_ebcdic1148}, -#line 469 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str351, ei_ebcdic1026}, -#line 456 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str352, ei_ebcdic880}, -#line 468 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_ebcdic1025}, -#line 404 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_ebcdic037}, -#line 415 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str355, ei_ebcdic278}, +#line 143 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1027, ei_euc_kr}, {-1}, {-1}, -#line 423 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str358, ei_ebcdic284}, -#line 348 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str359, ei_cp1124}, -#line 351 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str360, ei_cp1161}, -#line 179 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_cp866}, +#line 172 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1030, ei_iso8859_1}, {-1}, -#line 393 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str363, ei_cp865}, -#line 371 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_cp855}, -#line 367 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_cp853}, -#line 435 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_ebcdic424}, +#line 494 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1032, ei_cp943}, + {-1}, {-1}, +#line 405 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_hp_roman8}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 203 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1042, ei_iso8859_5}, {-1}, -#line 422 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_ebcdic284}, -#line 385 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str369, ei_cp861}, -#line 481 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str370, ei_ebcdic1140}, +#line 427 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1044, ei_cp1133}, + {-1}, {-1}, {-1}, {-1}, +#line 340 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1049, ei_cp862}, + {-1}, {-1}, {-1}, +#line 691 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1053, ei_ebcdic1026}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 515 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1059, ei_cp1163}, +#line 196 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1060, ei_iso8859_4}, {-1}, {-1}, -#line 377 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str373, ei_cp858}, -#line 416 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_ebcdic278}, -#line 51 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_c99}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 454 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str384, ei_ebcdic875}, -#line 352 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str385, ei_cp1162}, +#line 832 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1063, ei_ebcdic4971}, {-1}, {-1}, {-1}, -#line 474 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_ebcdic1112}, -#line 451 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_ebcdic871}, +#line 171 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1067, ei_iso8859_1}, + {-1}, {-1}, +#line 635 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1070, ei_ebcdic423}, {-1}, -#line 418 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ebcdic280}, -#line 390 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str393, ei_cp864}, -#line 173 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str394, ei_cp862}, -#line 362 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_cp852}, -#line 464 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str396, ei_ebcdic924}, +#line 84 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_sjis}, + {-1}, {-1}, {-1}, +#line 817 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1076, ei_ebcdic1158}, +#line 514 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1077, ei_cp1163}, {-1}, -#line 378 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_cp858}, -#line 517 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str399, ei_ebcdic1145}, -#line 501 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str400, ei_ebcdic1143}, -#line 492 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str401, ei_ebcdic1142}, +#line 202 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1079, ei_iso8859_5}, + {-1}, +#line 368 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1081, ei_mac_croatian}, {-1}, {-1}, {-1}, -#line 491 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str405, ei_ebcdic1141}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 539 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str411, ei_ebcdic1149}, -#line 401 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str412, ei_cp1125}, -#line 412 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str413, ei_ebcdic277}, +#line 791 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1085, ei_ebcdic1148}, {-1}, {-1}, {-1}, -#line 381 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str417, ei_cp860}, +#line 420 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1089, ei_rk1048}, +#line 428 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_tis620}, {-1}, -#line 180 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str419, ei_cp1131}, +#line 408 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1092, ei_armscii_8}, {-1}, -#line 428 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic285}, - {-1}, {-1}, -#line 18 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_ascii}, - {-1}, {-1}, {-1}, -#line 442 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str428, ei_ebcdic500}, +#line 429 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_tis620}, {-1}, -#line 493 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_ebcdic1142}, +#line 282 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_koi8_ru}, +#line 195 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_iso8859_4}, +#line 180 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1098, ei_iso8859_2}, +#line 275 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1099, ei_koi8_r}, {-1}, {-1}, -#line 535 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_ebcdic1148}, -#line 470 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str434, ei_ebcdic1026}, -#line 458 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ebcdic880}, +#line 101 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1102, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 807 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1109, ei_ebcdic1155}, +#line 334 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1110, ei_cp1258}, + {-1}, +#line 518 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1112, ei_cp437}, +#line 330 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1113, ei_cp1257}, +#line 103 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1114, ei_euc_cn}, + {-1}, +#line 729 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1116, ei_ebcdic1141}, +#line 80 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1117, ei_euc_jp}, + {-1}, {-1}, +#line 45 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1120, ei_ucs4be}, + {-1}, +#line 721 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1122, ei_ebcdic1140}, {-1}, -#line 330 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str437, ei_big5hkscs2008}, -#line 446 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_ebcdic870}, -#line 90 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str439, ei_iso8859_7}, #line 151 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str440, ei_cp1252}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1124, ei_cp949}, + {-1}, {-1}, +#line 804 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1127, ei_ebcdic1154}, +#line 763 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1128, ei_ebcdic1145}, +#line 410 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1129, ei_georgian_ps}, +#line 381 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1130, ei_mac_ukraine}, +#line 533 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1131, ei_cp853}, {-1}, -#line 17 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str442, ei_ascii}, -#line 475 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str443, ei_ebcdic1122}, - {-1}, {-1}, {-1}, {-1}, -#line 277 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str448, ei_ksc5601}, -#line 437 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str449, ei_ebcdic424}, +#line 377 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1133, ei_mac_cyrillic}, {-1}, -#line 424 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str451, ei_ebcdic284}, -#line 421 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str452, ei_ebcdic282}, -#line 485 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str453, ei_ebcdic1140}, +#line 179 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1135, ei_iso8859_2}, {-1}, -#line 436 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str455, ei_ebcdic424}, -#line 443 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str456, ei_ebcdic838}, +#line 287 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1137, ei_cp1250}, {-1}, -#line 414 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str458, ei_ebcdic278}, -#line 516 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str459, ei_ebcdic1145}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 477 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str467, ei_ebcdic1130}, -#line 353 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str468, ei_cp1162}, +#line 32 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1139, ei_ucs2be}, {-1}, -#line 360 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str470, ei_cp775}, - {-1}, {-1}, -#line 453 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str473, ei_ebcdic871}, +#line 698 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1141, ei_ebcdic1047}, {-1}, -#line 420 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_ebcdic280}, -#line 459 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str476, ei_ebcdic905}, +#line 316 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1143, ei_cp1255}, +#line 60 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1144, ei_utf32be}, {-1}, -#line 546 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str478, ei_ebcdic1157}, -#line 163 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str479, ei_cp1256}, -#line 160 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str480, ei_cp1255}, - {-1}, {-1}, -#line 146 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str483, ei_cp1251}, -#line 239 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_tcvn}, - {-1}, {-1}, -#line 372 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str487, ei_cp857}, -#line 538 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str488, ei_ebcdic1149}, -#line 540 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str489, ei_ebcdic1149}, +#line 755 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1146, ei_ebcdic1144}, + {-1}, {-1}, {-1}, {-1}, +#line 643 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1151, ei_ebcdic425}, + {-1}, {-1}, {-1}, +#line 14 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1155, ei_ascii}, {-1}, {-1}, -#line 216 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str492, ei_pt154}, -#line 524 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str493, ei_ebcdic1147}, +#line 230 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1158, ei_iso8859_8}, {-1}, -#line 157 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str495, ei_cp1254}, +#line 343 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1160, ei_cp862}, +#line 309 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1161, ei_cp1254}, + {-1}, {-1}, {-1}, {-1}, +#line 798 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1166, ei_ebcdic1149}, {-1}, -#line 169 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str497, ei_cp1258}, - {-1}, {-1}, -#line 219 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str500, ei_pt154}, +#line 262 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1168, ei_iso8859_15}, {-1}, {-1}, {-1}, -#line 441 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str504, ei_ebcdic500}, +#line 537 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1172, ei_cp855}, {-1}, -#line 217 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_pt154}, -#line 142 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str507, ei_cp1250}, -#line 235 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str508, ei_cp874}, -#line 562 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_tds565}, - {-1}, {-1}, -#line 121 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str512, ei_iso8859_13}, -#line 498 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str513, ei_ebcdic1142}, +#line 259 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1174, ei_iso8859_14}, +#line 472 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1175, ei_iso646_cn}, {-1}, -#line 66 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str515, ei_iso8859_3}, +#line 43 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1177, ei_ucs4}, + {-1}, {-1}, {-1}, +#line 92 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1181, ei_iso2022_jp1}, +#line 91 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1182, ei_iso2022_jp}, +#line 95 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1183, ei_iso2022_jpms}, +#line 737 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1184, ei_ebcdic1142}, +#line 99 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1185, ei_euc_cn}, +#line 244 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1186, ei_iso8859_10}, + {-1}, {-1}, {-1}, +#line 264 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1190, ei_iso8859_15}, {-1}, -#line 471 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str517, ei_ebcdic1047}, - {-1}, {-1}, -#line 117 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str520, ei_iso8859_13}, -#line 450 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_ebcdic870}, -#line 525 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str522, ei_ebcdic1147}, - {-1}, {-1}, {-1}, {-1}, -#line 478 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str527, ei_ebcdic1132}, +#line 94 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1192, ei_iso2022_jp2}, {-1}, -#line 301 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str529, ei_euc_cn}, -#line 278 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_ksc5601}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 462 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str536, ei_ebcdic924}, #line 150 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_cp1252}, - {-1}, {-1}, {-1}, -#line 417 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_ebcdic278}, -#line 503 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_ebcdic1143}, - {-1}, {-1}, -#line 504 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_ebcdic1143}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1194, ei_cp949}, +#line 229 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1195, ei_iso8859_8}, +#line 30 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1196, ei_ucs2}, {-1}, {-1}, -#line 553 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str548, ei_ebcdic12712}, +#line 298 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1199, ei_cp1252}, +#line 623 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1200, ei_ebcdic285}, {-1}, {-1}, {-1}, {-1}, -#line 354 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_cp1163}, -#line 542 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str554, ei_ebcdic1153}, +#line 90 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1205, ei_iso2022_jp}, +#line 162 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1206, ei_iso8859_1}, +#line 247 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_iso8859_11}, + {-1}, +#line 680 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1209, ei_ebcdic924}, +#line 352 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1210, ei_mac_roman}, +#line 430 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1211, ei_tis620}, +#line 127 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1212, ei_euc_tw}, +#line 241 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1213, ei_iso8859_10}, {-1}, {-1}, {-1}, {-1}, -#line 461 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_ebcdic905}, +#line 197 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1218, ei_iso8859_5}, +#line 260 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1219, ei_iso8859_15}, + {-1}, +#line 426 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1221, ei_cp1133}, +#line 607 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1222, ei_ebcdic278}, +#line 476 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1223, ei_gb2312}, + {-1}, +#line 816 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1225, ei_ebcdic1158}, +#line 212 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1226, ei_iso8859_6}, {-1}, {-1}, -#line 386 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_cp863}, -#line 365 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str563, ei_cp853}, +#line 157 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1229, ei_iso2022_kr}, +#line 207 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1230, ei_iso8859_6}, {-1}, {-1}, -#line 226 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str566, ei_tis620}, +#line 845 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1233, ei_iso2022_jp3}, {-1}, {-1}, -#line 499 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str569, ei_ebcdic1143}, -#line 374 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str570, ei_cp857}, +#line 189 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1236, ei_iso8859_4}, +#line 254 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1237, ei_iso8859_14}, +#line 183 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1238, ei_iso8859_3}, {-1}, {-1}, -#line 497 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str573, ei_ebcdic1142}, - {-1}, -#line 552 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str575, ei_ebcdic4971}, - {-1}, {-1}, {-1}, {-1}, -#line 411 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_ebcdic277}, - {-1}, -#line 302 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_euc_cn}, -#line 166 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str583, ei_cp1257}, - {-1}, {-1}, {-1}, {-1}, +#line 469 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1241, ei_jisx0212}, + {-1}, {-1}, +#line 787 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1244, ei_ebcdic1148}, + {-1}, {-1}, {-1}, #line 184 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_mac_roman}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 463 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_ebcdic924}, -#line 227 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str595, ei_tis620}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_iso8859_3}, +#line 93 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1249, ei_iso2022_jp2}, +#line 484 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1250, ei_ksc5601}, +#line 147 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1251, ei_euc_kr}, {-1}, {-1}, -#line 500 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_ebcdic1143}, +#line 596 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1254, ei_ebcdic273}, + {-1}, +#line 526 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1256, ei_cp775}, + {-1}, +#line 380 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1258, ei_mac_ukraine}, +#line 333 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1259, ei_cp1258}, +#line 115 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1260, ei_gb18030_2022}, + {-1}, #line 490 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_ebcdic1141}, -#line 472 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str600, ei_ebcdic1047}, - {-1}, {-1}, -#line 104 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str603, ei_iso8859_9}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1262, ei_cp922}, +#line 211 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1263, ei_iso8859_6}, +#line 569 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1264, ei_cp865}, {-1}, -#line 529 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str605, ei_ebcdic1147}, - {-1}, {-1}, {-1}, {-1}, -#line 19 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_ascii}, -#line 476 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str611, ei_ebcdic1123}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 432 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str618, ei_ebcdic423}, -#line 479 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str619, ei_ebcdic1137}, -#line 345 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_cp922}, -#line 154 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str621, ei_cp1253}, +#line 407 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1266, ei_nextstep}, +#line 376 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1267, ei_mac_cyrillic}, +#line 365 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1268, ei_mac_iceland}, + {-1}, {-1}, {-1}, +#line 679 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1272, ei_ebcdic905}, {-1}, -#line 400 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str623, ei_cp1125}, +#line 173 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1274, ei_iso8859_2}, {-1}, {-1}, -#line 356 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_cp437}, -#line 205 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str627, ei_mac_thai}, -#line 440 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str628, ei_ebcdic500}, +#line 121 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1277, ei_hz}, {-1}, -#line 410 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str630, ei_ebcdic277}, - {-1}, {-1}, {-1}, +#line 122 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_hz}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 460 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1286, ei_jisx0208}, #line 16 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str634, ei_ascii}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1287, ei_ascii}, +#line 315 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1288, ei_cp1255}, + {-1}, {-1}, +#line 478 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1291, ei_gb2312}, {-1}, -#line 355 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str636, ei_cp1163}, +#line 810 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1293, ei_ebcdic1156}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 349 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1300, ei_cp1131}, +#line 745 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1301, ei_ebcdic1143}, +#line 549 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1302, ei_cp858}, {-1}, -#line 402 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_ebcdic037}, +#line 253 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1304, ei_iso8859_13}, +#line 375 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1305, ei_mac_cyrillic}, +#line 710 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1306, ei_ebcdic1130}, + {-1}, {-1}, +#line 148 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1309, ei_euc_kr}, + {-1}, {-1}, +#line 771 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1312, ei_ebcdic1146}, +#line 780 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1313, ei_ebcdic1147}, +#line 544 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_cp857}, + {-1}, {-1}, {-1}, +#line 799 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1318, ei_ebcdic1149}, +#line 539 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1319, ei_cp855}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 321 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1327, ei_cp1256}, +#line 217 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1328, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 119 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1332, ei_iso2022_cn_ext}, {-1}, -#line 231 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str640, ei_tis620}, +#line 224 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1334, ei_iso8859_8}, + {-1}, {-1}, +#line 503 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1337, ei_cp1129}, + {-1}, {-1}, +#line 744 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1340, ei_ebcdic1143}, +#line 402 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_hp_roman8}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 847 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1350, ei_tds565}, + {-1}, {-1}, +#line 470 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1353, ei_jisx0212}, + {-1}, {-1}, {-1}, +#line 257 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1357, ei_iso8859_14}, +#line 815 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1358, ei_ebcdic1157}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 784 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1367, ei_ebcdic1147}, +#line 713 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1368, ei_ebcdic1132}, +#line 663 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1369, ei_ebcdic871}, {-1}, -#line 274 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str642, ei_isoir165}, +#line 674 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1371, ei_ebcdic880}, {-1}, {-1}, -#line 388 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str645, ei_cp863}, -#line 368 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_cp853}, -#line 241 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str647, ei_tcvn}, +#line 707 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1374, ei_ebcdic1123}, + {-1}, +#line 86 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_sjis}, +#line 112 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1377, ei_gb18030_2022}, +#line 156 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1378, ei_iso2022_kr}, +#line 33 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1379, ei_ucs2be}, +#line 654 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1380, ei_ebcdic838}, +#line 657 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1381, ei_ebcdic870}, {-1}, {-1}, -#line 394 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str650, ei_cp869}, +#line 232 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1384, ei_iso8859_8}, {-1}, {-1}, {-1}, -#line 56 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str654, ei_iso8859_1}, +#line 483 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1388, ei_ksc5601}, +#line 168 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1389, ei_iso8859_1}, +#line 434 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1390, ei_tis620}, {-1}, {-1}, -#line 536 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_ebcdic1149}, +#line 272 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1393, ei_iso8859_16}, +#line 210 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1394, ei_iso8859_6}, +#line 238 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1395, ei_iso8859_9}, +#line 201 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1396, ei_iso8859_5}, + {-1}, +#line 850 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_atarist}, +#line 560 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1399, ei_cp861}, +#line 505 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1400, ei_cp1161}, +#line 452 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1401, ei_iso646_jp}, +#line 204 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1402, ei_iso8859_6}, +#line 267 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1403, ei_iso8859_16}, +#line 194 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1404, ei_iso8859_4}, +#line 554 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1405, ei_cp860}, +#line 819 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1406, ei_ebcdic1160}, +#line 833 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1407, ei_ebcdic4971}, {-1}, {-1}, {-1}, -#line 561 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str661, ei_big5_2003}, +#line 571 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1411, ei_cp865}, +#line 825 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1412, ei_ebcdic1165}, + {-1}, {-1}, +#line 22 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1415, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 231 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1421, ei_iso8859_8}, {-1}, -#line 206 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_mac_thai}, -#line 317 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str664, ei_hz}, -#line 228 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str665, ei_tis620}, -#line 209 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str666, ei_hp_roman8}, -#line 307 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_ces_gbk}, +#line 178 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1423, ei_iso8859_2}, {-1}, -#line 20 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str669, ei_ascii}, +#line 71 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1425, ei_ucs4internal}, + {-1}, {-1}, {-1}, +#line 566 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1429, ei_cp864}, +#line 822 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1430, ei_ebcdic1164}, +#line 453 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1431, ei_jisx0201}, + {-1}, {-1}, {-1}, +#line 551 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1435, ei_cp858}, {-1}, -#line 245 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str671, ei_iso646_jp}, -#line 272 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str672, ei_gb2312}, +#line 432 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1437, ei_tis620}, {-1}, -#line 12 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str674, ei_ascii}, -#line 496 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str675, ei_ebcdic1142}, -#line 62 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str676, ei_iso8859_2}, -#line 467 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str677, ei_ebcdic924}, -#line 212 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str678, ei_armscii_8}, - {-1}, {-1}, -#line 505 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str681, ei_ebcdic1143}, +#line 55 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1439, ei_utf16le}, +#line 431 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1440, ei_tis620}, {-1}, {-1}, {-1}, -#line 15 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str685, ei_ascii}, -#line 537 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str686, ei_ebcdic1149}, -#line 473 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_ebcdic1097}, -#line 80 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str688, ei_iso8859_5}, - {-1}, {-1}, -#line 14 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str691, ei_ascii}, -#line 106 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_iso8859_9}, -#line 315 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_iso2022_cn_ext}, - {-1}, {-1}, -#line 240 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_tcvn}, +#line 69 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1444, ei_ucs2internal}, {-1}, -#line 93 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str698, ei_iso8859_7}, -#line 349 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_cp1129}, -#line 74 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str700, ei_iso8859_4}, -#line 434 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_ebcdic423}, +#line 677 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1446, ei_ebcdic905}, +#line 422 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1447, ei_rk1048}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 394 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1460, ei_mac_arabic}, {-1}, -#line 33 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str703, ei_ucs4}, -#line 292 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str704, ei_cp932}, -#line 225 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str705, ei_cp1133}, -#line 408 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_ebcdic273}, +#line 54 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1462, ei_utf16be}, +#line 794 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1463, ei_ebcdic1149}, {-1}, {-1}, -#line 114 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str709, ei_iso8859_10}, +#line 603 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1466, ei_ebcdic277}, + {-1}, +#line 509 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1468, ei_cp1162}, {-1}, -#line 108 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_iso8859_9}, -#line 429 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_ebcdic297}, -#line 413 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_ebcdic277}, #line 359 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str714, ei_cp737}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1470, ei_mac_centraleurope}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 64 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1477, ei_utf7}, + {-1}, {-1}, {-1}, {-1}, +#line 310 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1482, ei_cp1254}, +#line 386 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1483, ei_mac_turkish}, + {-1}, {-1}, {-1}, +#line 246 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1487, ei_iso8859_10}, +#line 87 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1488, ei_cp932}, + {-1}, {-1}, {-1}, {-1}, +#line 35 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1493, ei_ucs2be}, {-1}, {-1}, -#line 58 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_iso8859_1}, +#line 465 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1496, ei_jisx0212}, + {-1}, {-1}, {-1}, {-1}, +#line 82 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1501, ei_sjis}, +#line 793 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1502, ei_ebcdic1149}, + {-1}, {-1}, {-1}, {-1}, +#line 592 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1507, ei_ebcdic037}, +#line 75 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1508, ei_euc_jp}, +#line 682 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1509, ei_ebcdic924}, {-1}, -#line 273 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str719, ei_gb2312}, -#line 208 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str720, ei_hp_roman8}, -#line 407 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str721, ei_ebcdic037}, -#line 299 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str722, ei_euc_cn}, +#line 485 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_ksc5601}, {-1}, -#line 55 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str724, ei_iso8859_1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 397 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str733, ei_cp869}, +#line 382 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1513, ei_mac_greek}, +#line 304 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1514, ei_cp1253}, +#line 466 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1515, ei_jisx0212}, + {-1}, {-1}, {-1}, +#line 520 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1519, ei_cp437}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 252 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1526, ei_iso8859_13}, + {-1}, +#line 281 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1528, ei_koi8_ru}, +#line 73 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1529, ei_c99}, + {-1}, {-1}, {-1}, {-1}, +#line 140 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1534, ei_big5hkscs2008}, + {-1}, +#line 502 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1536, ei_cp1129}, +#line 15 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1537, ei_ascii}, + {-1}, +#line 411 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1539, ei_koi8_t}, {-1}, {-1}, -#line 113 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str736, ei_iso8859_10}, +#line 846 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1542, ei_big5_2003}, +#line 355 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1543, ei_mac_roman}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 188 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1550, ei_iso8859_3}, +#line 814 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1551, ei_ebcdic1157}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 843 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1557, ei_shift_jisx0213}, {-1}, -#line 107 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str738, ei_iso8859_9}, -#line 270 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_iso646_cn}, -#line 288 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str740, ei_sjis}, -#line 76 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str741, ei_iso8859_4}, -#line 136 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_iso8859_16}, -#line 34 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str743, ei_ucs4}, -#line 57 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str744, ei_iso8859_1}, -#line 126 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_iso8859_14}, -#line 346 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_cp943}, +#line 457 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1559, ei_jisx0208}, +#line 783 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1560, ei_ebcdic1147}, {-1}, -#line 182 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str748, ei_mac_roman}, -#line 230 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_tis620}, +#line 480 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1562, ei_isoir165}, +#line 697 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1563, ei_ebcdic1047}, {-1}, -#line 337 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str751, ei_cp949}, -#line 134 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str752, ei_iso8859_16}, +#line 696 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1565, ei_ebcdic1047}, {-1}, -#line 246 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str754, ei_iso646_jp}, - {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_java}, +#line 487 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1567, ei_cp856}, {-1}, -#line 221 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str760, ei_rk1048}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 75 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str768, ei_iso8859_4}, -#line 541 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str769, ei_ebcdic1149}, +#line 425 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1569, ei_cp1133}, {-1}, {-1}, -#line 125 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str772, ei_iso8859_14}, -#line 229 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str773, ei_tis620}, +#line 782 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1572, ei_ebcdic1147}, {-1}, {-1}, -#line 244 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str776, ei_iso646_jp}, +#line 113 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1575, ei_gb18030_2022}, +#line 256 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1576, ei_iso8859_14}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 25 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_ucs2}, +#line 329 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1585, ei_cp1257}, {-1}, -#line 24 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_ucs2}, +#line 187 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1587, ei_iso8859_3}, + {-1}, {-1}, +#line 263 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1590, ei_iso8859_15}, +#line 482 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1591, ei_ksc5601}, {-1}, -#line 409 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str789, ei_ebcdic273}, - {-1}, {-1}, {-1}, {-1}, -#line 444 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_ebcdic838}, -#line 431 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str795, ei_ebcdic297}, +#line 424 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1593, ei_mulelao}, {-1}, -#line 135 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str797, ei_iso8859_16}, - {-1}, {-1}, {-1}, {-1}, -#line 29 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_ucs2be}, +#line 347 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1595, ei_cp866}, +#line 828 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1596, ei_ebcdic1166}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 23 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1602, ei_ascii}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 633 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1608, ei_ebcdic423}, {-1}, {-1}, {-1}, -#line 220 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str806, ei_rk1048}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 210 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_hp_roman8}, - {-1}, {-1}, {-1}, {-1}, -#line 101 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, -#line 311 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_gb18030_2022}, +#line 718 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1612, ei_ebcdic1137}, +#line 208 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1613, ei_iso8859_6}, +#line 595 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1614, ei_ebcdic273}, +#line 758 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_ebcdic1144}, {-1}, -#line 64 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_iso8859_2}, +#line 801 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1617, ei_ebcdic1153}, {-1}, -#line 247 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str827, ei_iso646_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 300 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str840, ei_euc_cn}, - {-1}, {-1}, {-1}, -#line 268 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str844, ei_iso646_cn}, +#line 631 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1619, ei_ebcdic297}, + {-1}, +#line 105 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1621, ei_euc_cn}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 532 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1629, ei_cp853}, + {-1}, +#line 125 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1631, ei_euc_tw}, +#line 681 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1632, ei_ebcdic924}, {-1}, {-1}, -#line 289 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str847, ei_sjis}, +#line 61 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1635, ei_utf32le}, +#line 746 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1636, ei_ebcdic1143}, +#line 161 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1637, ei_dec_hanyu}, + {-1}, {-1}, {-1}, +#line 523 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1641, ei_cp737}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 243 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1647, ei_iso8859_10}, {-1}, -#line 112 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_iso8859_10}, +#line 186 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1649, ei_iso8859_3}, {-1}, {-1}, -#line 63 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_iso8859_2}, +#line 227 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1652, ei_iso8859_8}, +#line 409 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1653, ei_georgian_academy}, {-1}, {-1}, {-1}, {-1}, -#line 534 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str857, ei_ebcdic1148}, -#line 271 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str858, ei_gb2312}, +#line 366 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1658, ei_mac_croatian}, +#line 345 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1659, ei_cp866}, + {-1}, +#line 291 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1661, ei_cp1251}, {-1}, {-1}, -#line 257 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str861, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 191 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str868, ei_mac_romania}, +#line 285 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1664, ei_cp1250}, {-1}, {-1}, -#line 181 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str871, ei_mac_roman}, +#line 314 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1667, ei_cp1255}, {-1}, {-1}, {-1}, {-1}, -#line 266 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str876, ei_iso646_cn}, -#line 445 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str877, ei_ebcdic838}, +#line 265 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1672, ei_iso8859_15}, + {-1}, {-1}, +#line 206 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1675, ei_iso8859_6}, +#line 308 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1676, ei_cp1254}, + {-1}, {-1}, {-1}, {-1}, +#line 142 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1681, ei_euc_kr}, {-1}, {-1}, {-1}, -#line 188 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str881, ei_mac_iceland}, -#line 335 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_euc_kr}, -#line 162 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_cp1256}, -#line 159 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_cp1255}, +#line 653 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1685, ei_ebcdic838}, +#line 39 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1686, ei_ucs2le}, + {-1}, {-1}, {-1}, +#line 364 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1690, ei_mac_iceland}, + {-1}, {-1}, {-1}, {-1}, +#line 297 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1695, ei_cp1252}, +#line 435 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1696, ei_tis620}, {-1}, -#line 233 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str886, ei_tis620}, -#line 145 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str887, ei_cp1251}, +#line 774 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1698, ei_ebcdic1146}, +#line 542 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1699, ei_cp857}, {-1}, -#line 510 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_ebcdic1144}, - {-1}, {-1}, -#line 563 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str892, ei_tds565}, -#line 255 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str893, ei_jisx0208}, -#line 88 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_iso8859_6}, - {-1}, {-1}, {-1}, {-1}, -#line 156 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str899, ei_cp1254}, +#line 844 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1701, ei_iso2022_jp3}, {-1}, -#line 168 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str901, ei_cp1258}, - {-1}, {-1}, -#line 232 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str904, ei_tis620}, +#line 834 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1703, ei_ebcdic12712}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 668 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1710, ei_ebcdic875}, {-1}, -#line 85 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_iso8859_6}, +#line 240 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1712, ei_iso8859_9}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 561 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1721, ei_cp863}, + {-1}, +#line 218 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1723, ei_iso8859_7}, +#line 403 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1724, ei_hp_roman8}, +#line 332 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1725, ei_cp1258}, +#line 181 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1726, ei_iso8859_3}, #line 248 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_jisx0201}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1727, ei_iso8859_13}, + {-1}, {-1}, {-1}, +#line 78 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1731, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 837 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1737, ei_ebcdic16804}, +#line 545 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1738, ei_cp858}, +#line 437 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1739, ei_cp874}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 63 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1745, ei_utf7}, +#line 547 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1746, ei_cp858}, {-1}, {-1}, -#line 192 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str910, ei_mac_romania}, -#line 143 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str911, ei_cp1250}, +#line 239 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1749, ei_iso8859_9}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 278 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1758, ei_koi8_u}, +#line 320 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1759, ei_cp1256}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 106 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1776, ei_ces_gbk}, {-1}, {-1}, -#line 286 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_euc_jp}, +#line 249 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1779, ei_iso8859_13}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 85 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1791, ei_sjis}, +#line 449 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1792, ei_iso646_jp}, + {-1}, {-1}, +#line 17 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1795, ei_ascii}, +#line 475 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1796, ei_iso646_cn}, + {-1}, +#line 795 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1798, ei_ebcdic1149}, +#line 486 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1799, ei_ksc5601}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 717 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1805, ei_ebcdic1137}, + {-1}, {-1}, {-1}, {-1}, +#line 467 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1810, ei_jisx0212}, +#line 593 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1811, ei_ebcdic037}, + {-1}, {-1}, {-1}, +#line 591 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1815, ei_ebcdic037}, + {-1}, {-1}, {-1}, +#line 31 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1819, ei_ucs2}, {-1}, {-1}, -#line 120 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_iso8859_13}, -#line 259 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str918, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 602 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1822, ei_ebcdic277}, + {-1}, {-1}, {-1}, {-1}, +#line 535 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1827, ei_cp853}, {-1}, -#line 342 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str929, ei_dec_kanji}, +#line 18 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1829, ei_ascii}, {-1}, {-1}, -#line 155 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str932, ei_cp1253}, +#line 250 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1832, ei_iso8859_13}, {-1}, {-1}, -#line 252 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_jisx0208}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 149 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str941, ei_cp1252}, +#line 74 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1835, ei_java}, + {-1}, {-1}, +#line 446 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1838, ei_tcvn}, + {-1}, {-1}, {-1}, {-1}, +#line 459 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1843, ei_jisx0208}, {-1}, -#line 275 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str943, ei_isoir165}, -#line 119 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_iso8859_13}, +#line 665 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1845, ei_ebcdic871}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 284 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str950, ei_euc_jp}, -#line 187 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str951, ei_mac_iceland}, - {-1}, -#line 283 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 341 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str960, ei_iso2022_kr}, +#line 661 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1851, ei_ebcdic870}, +#line 371 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1852, ei_mac_romania}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 293 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str963, ei_iso2022_jp}, -#line 295 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str964, ei_iso2022_jp1}, -#line 211 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str965, ei_nextstep}, -#line 133 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str966, ei_iso8859_16}, +#line 664 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1864, ei_ebcdic871}, {-1}, -#line 457 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str968, ei_ebcdic880}, +#line 587 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1866, ei_ebcdic037}, {-1}, {-1}, -#line 261 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str971, ei_jisx0212}, +#line 778 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1869, ei_ebcdic1147}, {-1}, -#line 234 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str973, ei_cp874}, +#line 445 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1871, ei_tcvn}, + {-1}, {-1}, +#line 454 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1874, ei_jisx0201}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 590 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1881, ei_ebcdic037}, +#line 660 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1882, ei_ebcdic870}, +#line 53 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1883, ei_utf16be}, + {-1}, {-1}, {-1}, {-1}, +#line 233 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1888, ei_iso8859_9}, +#line 700 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1889, ei_ebcdic1097}, + {-1}, {-1}, {-1}, +#line 242 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1893, ei_iso8859_10}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 378 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1902, ei_mac_ukraine}, +#line 221 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1903, ei_iso8859_7}, +#line 144 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1904, ei_euc_kr}, + {-1}, {-1}, {-1}, +#line 777 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1908, ei_ebcdic1147}, {-1}, -#line 36 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str975, ei_ucs4be}, +#line 280 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1910, ei_koi8_ru}, +#line 695 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1911, ei_ebcdic1047}, {-1}, {-1}, {-1}, -#line 304 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str979, ei_euc_cn}, -#line 79 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str980, ei_iso8859_5}, -#line 129 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_iso8859_15}, - {-1}, {-1}, -#line 294 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str984, ei_iso2022_jp}, - {-1}, {-1}, -#line 165 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str987, ei_cp1257}, - {-1}, {-1}, -#line 203 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str990, ei_mac_arabic}, -#line 260 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str991, ei_jisx0212}, +#line 493 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1915, ei_cp943}, + {-1}, {-1}, {-1}, +#line 563 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1919, ei_cp863}, +#line 513 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1920, ei_cp1163}, +#line 303 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1921, ei_cp1253}, + {-1}, {-1}, {-1}, +#line 198 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1925, ei_iso8859_5}, +#line 261 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1926, ei_iso8859_15}, + {-1}, {-1}, {-1}, +#line 228 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1930, ei_iso8859_8}, {-1}, -#line 70 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_iso8859_3}, +#line 358 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1932, ei_mac_centraleurope}, {-1}, -#line 73 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_iso8859_4}, -#line 123 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_iso8859_14}, -#line 100 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_iso8859_8}, - {-1}, {-1}, {-1}, {-1}, -#line 265 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1002, ei_jisx0212}, +#line 190 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1934, ei_iso8859_4}, +#line 255 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1935, ei_iso8859_14}, +#line 209 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1936, ei_iso8859_6}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 268 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1954, ei_iso8859_16}, + {-1}, +#line 831 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1956, ei_ebcdic4971}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 165 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1965, ei_iso8859_1}, {-1}, {-1}, {-1}, -#line 130 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1006, ei_iso8859_15}, +#line 632 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1969, ei_ebcdic297}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 473 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1975, ei_iso646_cn}, + {-1}, {-1}, {-1}, +#line 630 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1979, ei_ebcdic297}, + {-1}, {-1}, {-1}, +#line 225 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1983, ei_iso8859_8}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 842 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1989, ei_shift_jisx0213}, {-1}, {-1}, -#line 403 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_ebcdic037}, +#line 652 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1992, ei_ebcdic838}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 673 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2008, ei_ebcdic880}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, +#line 72 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2020, ei_ucs4swapped}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 363 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2026, ei_mac_iceland}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 264 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_jisx0212}, - {-1}, +#line 70 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2039, ei_ucs2swapped}, +#line 463 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2040, ei_jisx0208}, +#line 65 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2041, ei_utf7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 522 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1015, ei_ebcdic1146}, -#line 448 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1016, ei_ebcdic870}, -#line 27 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1017, ei_ucs2be}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2048, ei_cp737}, {-1}, {-1}, -#line 69 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, -#line 153 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1025, ei_cp1253}, -#line 204 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1026, ei_mac_arabic}, - {-1}, -#line 279 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1028, ei_ksc5601}, +#line 362 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2051, ei_mac_iceland}, {-1}, {-1}, {-1}, {-1}, -#line 560 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1033, ei_iso2022_jp3}, -#line 215 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1034, ei_koi8_t}, -#line 297 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_iso2022_jp2}, +#line 274 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2056, ei_koi8_r}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 573 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2063, ei_cp869}, {-1}, {-1}, -#line 298 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1038, ei_iso2022_jpms}, - {-1}, -#line 68 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1040, ei_iso8859_3}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, #line 111 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1048, ei_iso8859_10}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 326 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1062, ei_cp950}, + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2066, ei_gb18030_2005}, {-1}, {-1}, -#line 84 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1065, ei_iso8859_6}, +#line 841 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2069, ei_euc_jisx0213}, {-1}, {-1}, {-1}, -#line 54 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1069, ei_iso8859_1}, +#line 448 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2073, ei_iso646_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 59 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2079, ei_utf32be}, + {-1}, +#line 576 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2081, ei_cp869}, +#line 416 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2082, ei_pt154}, {-1}, {-1}, -#line 296 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_iso2022_jp2}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 471 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2085, ei_iso646_cn}, + {-1}, {-1}, {-1}, {-1}, +#line 131 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2090, ei_ces_big5}, {-1}, {-1}, {-1}, -#line 565 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1085, ei_atarist}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 96 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_iso8859_7}, -#line 249 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_jisx0201}, +#line 114 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2094, ei_gb18030_2022}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 458 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2100, ei_jisx0208}, +#line 399 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2101, ei_mac_thai}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 220 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2110, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 223 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2118, ei_iso8859_7}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 102 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2127, ei_euc_cn}, + {-1}, {-1}, +#line 322 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2130, ei_cp1256}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 594 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2137, ei_ebcdic273}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 519 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2143, ei_cp437}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 131 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1108, ei_iso8859_15}, {-1}, {-1}, -#line 243 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1111, ei_iso646_jp}, - {-1}, {-1}, {-1}, {-1}, -#line 118 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1116, ei_iso8859_13}, - {-1}, {-1}, {-1}, {-1}, -#line 67 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1121, ei_iso8859_3}, -#line 38 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1122, ei_utf16}, -#line 61 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1123, ei_iso8859_2}, +#line 222 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2155, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 254 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1139, ei_jisx0208}, +#line 634 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2171, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 309 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1147, ei_cp936}, +#line 182 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2179, ei_iso8859_3}, {-1}, {-1}, -#line 50 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1150, ei_ucs4swapped}, -#line 97 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1151, ei_iso8859_7}, - {-1}, -#line 23 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1153, ei_utf8}, +#line 601 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2182, ei_ebcdic277}, +#line 138 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2183, ei_big5hkscs2001}, {-1}, -#line 262 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1155, ei_jisx0212}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 328 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1167, ei_big5hkscs2001}, -#line 427 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1168, ei_ebcdic285}, -#line 91 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1169, ei_iso8859_7}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 127 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1178, ei_iso8859_14}, -#line 329 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1179, ei_big5hkscs2004}, +#line 813 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2185, ei_ebcdic1157}, + {-1}, {-1}, {-1}, {-1}, +#line 524 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2190, ei_cp775}, {-1}, -#line 331 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1181, ei_big5hkscs2008}, +#line 619 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2192, ei_ebcdic284}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 139 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2198, ei_big5hkscs2004}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 779 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2204, ei_ebcdic1147}, +#line 326 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2205, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 361 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1189, ei_cp775}, +#line 541 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2213, ei_cp857}, + {-1}, {-1}, {-1}, {-1}, +#line 648 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2218, ei_ebcdic500}, +#line 328 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2219, ei_cp1257}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 48 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1192, ei_ucs2swapped}, +#line 379 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2240, ei_mac_ukraine}, {-1}, {-1}, {-1}, -#line 258 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1196, ei_jisx0208}, +#line 79 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2244, ei_euc_jp}, {-1}, -#line 124 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1198, ei_iso8859_14}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 115 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1214, ei_iso8859_10}, -#line 109 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1215, ei_iso8859_9}, +#line 604 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2246, ei_ebcdic278}, +#line 141 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2247, ei_big5hkscs2008}, {-1}, {-1}, -#line 59 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1218, ei_iso8859_1}, -#line 89 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1219, ei_iso8859_6}, - {-1}, -#line 82 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1221, ei_iso8859_5}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 189 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1228, ei_mac_croatian}, -#line 164 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1229, ei_cp1256}, -#line 77 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1230, ei_iso8859_4}, +#line 290 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2250, ei_cp1251}, + {-1}, {-1}, +#line 286 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2253, ei_cp1250}, + {-1}, {-1}, +#line 313 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2256, ei_cp1255}, + {-1}, {-1}, {-1}, {-1}, +#line 370 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2261, ei_mac_romania}, {-1}, {-1}, {-1}, -#line 419 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1234, ei_ebcdic280}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 559 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1240, ei_iso2022_jp3}, +#line 307 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2265, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 528 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1252, ei_ebcdic1147}, -#line 253 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1253, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 342 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2280, ei_cp862}, {-1}, {-1}, {-1}, -#line 197 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1257, ei_mac_greek}, -#line 190 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1258, ei_mac_croatian}, - {-1}, {-1}, -#line 92 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1261, ei_iso8859_7}, +#line 296 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2284, ei_cp1252}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 213 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2294, ei_iso8859_7}, +#line 152 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2295, ei_johab}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 331 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2314, ei_cp1258}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 605 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2333, ei_ebcdic278}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 319 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2348, ei_cp1256}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 124 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2365, ei_euc_tw}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 716 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2388, ei_ebcdic1137}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 396 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1268, ei_cp869}, +#line 543 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2395, ei_cp857}, {-1}, {-1}, {-1}, -#line 65 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1272, ei_iso8859_2}, +#line 163 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2399, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 484 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_ebcdic1140}, - {-1}, {-1}, -#line 338 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1282, ei_johab}, - {-1}, -#line 287 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1284, ei_sjis}, +#line 586 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2406, ei_ebcdic037}, {-1}, -#line 290 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1286, ei_sjis}, +#line 525 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2408, ei_cp775}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 517 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2418, ei_cp437}, + {-1}, {-1}, {-1}, {-1}, +#line 387 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2423, ei_mac_turkish}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 174 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2433, ei_iso8859_2}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 198 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1293, ei_mac_greek}, +#line 464 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2449, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 534 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2459, ei_cp853}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 138 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1308, ei_koi8_r}, +#line 462 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2483, ei_jisx0208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 205 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2497, ei_iso8859_6}, + {-1}, {-1}, {-1}, +#line 19 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2501, ei_ascii}, +#line 153 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2502, ei_johab}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 302 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2510, ei_cp1253}, + {-1}, {-1}, {-1}, +#line 219 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2514, ei_iso8859_7}, + {-1}, {-1}, +#line 840 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2517, ei_euc_jisx0213}, +#line 628 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2518, ei_ebcdic297}, {-1}, -#line 98 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1310, ei_iso8859_7}, +#line 606 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2520, ei_ebcdic278}, + {-1}, {-1}, {-1}, +#line 137 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2524, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 214 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1321, ei_georgian_ps}, +#line 390 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2535, ei_mac_hebrew}, + {-1}, +#line 234 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2537, ei_iso8859_9}, {-1}, {-1}, {-1}, -#line 44 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1325, ei_utf7}, -#line 213 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1326, ei_georgian_academy}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 105 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1333, ei_iso8859_9}, +#line 160 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2541, ei_dec_kanji}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 327 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1349, ei_big5hkscs1999}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 71 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1356, ei_iso8859_3}, + {-1}, +#line 851 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2552, ei_riscos1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 134 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2562, ei_cp950}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 126 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2588, ei_euc_tw}, {-1}, -#line 41 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_utf32}, +#line 678 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2590, ei_ebcdic905}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 629 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2635, ei_ebcdic297}, {-1}, {-1}, {-1}, {-1}, -#line 558 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1390, ei_shift_jisx0213}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 137 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_koi8_r}, +#line 327 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2640, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 455 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1405, ei_ebcdic875}, +#line 600 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2647, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, -#line 39 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1410, ei_utf16be}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 699 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2652, ei_ebcdic1097}, {-1}, {-1}, {-1}, {-1}, -#line 81 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1424, ei_iso8859_5}, - {-1}, {-1}, {-1}, -#line 37 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1428, ei_ucs4le}, +#line 765 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2657, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 282 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1440, ei_euc_jp}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 367 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2681, ei_mac_croatian}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 218 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1452, ei_pt154}, +#line 215 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2693, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 95 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1456, ei_iso8859_7}, +#line 639 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2697, ei_ebcdic424}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, +#line 611 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2712, ei_ebcdic280}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 145 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2720, ei_euc_kr}, +#line 598 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2721, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, -#line 31 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1470, ei_ucs2le}, - {-1}, {-1}, {-1}, {-1}, -#line 102 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1475, ei_iso8859_8}, -#line 139 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1476, ei_koi8_u}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 76 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2726, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 557 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1500, ei_shift_jisx0213}, +#line 659 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2732, ei_ebcdic870}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 242 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_tcvn}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 343 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1518, ei_dec_hanyu}, - {-1}, -#line 224 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1520, ei_mulelao}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 466 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1526, ei_ebcdic924}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 447 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2747, ei_tcvn}, {-1}, {-1}, {-1}, -#line 195 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1539, ei_mac_ukraine}, +#line 625 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2751, ei_ebcdic285}, + {-1}, +#line 757 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2753, ei_ebcdic1144}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 340 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1559, ei_iso2022_kr}, - {-1}, {-1}, -#line 196 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1562, ei_mac_ukraine}, {-1}, {-1}, {-1}, -#line 158 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1566, ei_cp1254}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 45 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1573, ei_utf7}, +#line 773 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2775, ei_ebcdic1146}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 849 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2784, ei_atarist}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 325 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2794, ei_cp1257}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 395 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2829, ei_mac_arabic}, {-1}, -#line 556 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1575, ei_euc_jisx0213}, +#line 77 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2831, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 103 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1583, ei_iso8859_8}, +#line 797 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2839, ei_ebcdic1149}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 436 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2847, ei_cp874}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 588 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2924, ei_ebcdic037}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 214 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2943, ei_iso8859_7}, + {-1}, {-1}, {-1}, +#line 521 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2947, ei_cp737}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, +#line 647 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2961, ei_ebcdic500}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 405 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1598, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 42 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1606, ei_utf32be}, - {-1}, -#line 310 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1608, ei_gb18030_2005}, - {-1}, {-1}, -#line 430 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1611, ei_ebcdic297}, - {-1}, -#line 161 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1613, ei_cp1255}, +#line 789 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3005, ei_ebcdic1148}, +#line 108 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3006, ei_cp936}, {-1}, -#line 251 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_jisx0201}, +#line 383 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3008, ei_mac_greek}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 723 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3036, ei_ebcdic1140}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 175 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1617, ei_cp862}, +#line 749 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3137, ei_ebcdic1143}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 669 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3162, ei_ebcdic875}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 684 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3188, ei_ebcdic924}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 740 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3206, ei_ebcdic1142}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 781 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3226, ei_ebcdic1147}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, +#line 589 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3248, ei_ebcdic037}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 312 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1665, ei_gb18030_2022}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 339 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1675, ei_johab}, - {-1}, {-1}, -#line 449 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1678, ei_ebcdic870}, {-1}, {-1}, -#line 28 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1681, ei_ucs2be}, +#line 748 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3278, ei_ebcdic1143}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 285 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1697, ei_euc_jp}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 555 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1703, ei_euc_jisx0213}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 391 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3315, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 406 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1773, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 201 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1819, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 566 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1830, ei_riscos1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 319 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1848, ei_euc_tw}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 202 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1855, ei_mac_hebrew}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 318 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1862, ei_euc_tw}, -#line 40 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1863, ei_utf16le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 433 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1916, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 185 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1939, ei_mac_centraleurope}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 32 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1963, ei_ucs2le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 564 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1979, ei_atarist}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 333 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2022, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 332 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2036, ei_euc_kr}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 460 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2044, ei_ebcdic905}, - {-1}, {-1}, -#line 200 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2047, ei_mac_turkish}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 456 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3558, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 43 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2059, ei_utf32le}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 199 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2092, ei_mac_turkish}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, -#line 140 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2105, ei_koi8_ru}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 320 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2119, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, -#line 147 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2131, ei_cp1251}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 193 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2142, ei_mac_cyrillic}, +#line 599 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3632, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 194 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2178, ei_mac_cyrillic}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, -#line 172 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2228, ei_cp850}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -2744,9 +4169,6 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, -#line 334 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2293, ei_euc_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -2760,6 +4182,8 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 731 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3885, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -2772,19 +4196,17 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 49 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2526, ei_ucs4internal}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, -#line 47 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2568, ei_ucs2internal}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 167 "lib/generated/aliases.gperf" - {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2577, ei_cp1257} + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, +#line 739 "lib/generated/aliases.gperf" + {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str4067, ei_ebcdic1142} }; const struct alias * diff --git a/lib/generated/indexes.hpp.shippet b/lib/generated/indexes.hpp.shippet index 1c253091..48cb66e7 100644 --- a/lib/generated/indexes.hpp.shippet +++ b/lib/generated/indexes.hpp.shippet @@ -2,17 +2,17 @@ namespace cppp::base::encoding { enum class Encodings { - ARMSCII8 = 66, + ARMSCII8 = 94, ASCII = 0, ATARIST = 196, - BIG5 = 102, - BIG5HKSCS_1999 = 104, - BIG5HKSCS_2001 = 105, - BIG5HKSCS_2004 = 106, - BIG5HKSCS_2008 = 107, + BIG5 = 37, + BIG5HKSCS_1999 = 39, + BIG5HKSCS_2001 = 40, + BIG5HKSCS_2004 = 41, + BIG5HKSCS_2008 = 42, BIG5_2003 = 194, C99 = 19, - CNGBISOIR165 = 84, + CNGBISOIR165 = 112, CP1125 = 137, CP437 = 123, CP737 = 124, @@ -28,9 +28,9 @@ namespace cppp::base::encoding CP864 = 134, CP865 = 135, CP869 = 136, - CP936 = 95, - DEC_HANYU = 113, - DEC_KANJI = 112, + CP936 = 30, + DEC_HANYU = 48, + DEC_KANJI = 47, EBCDIC_037 = 138, EBCDIC_1025 = 158, EBCDIC_1026 = 159, @@ -85,97 +85,97 @@ namespace cppp::base::encoding EBCDIC_905 = 156, EBCDIC_924 = 157, EUC_JISX0213 = 191, - EUC_JP = 86, - EUC_KR = 108, - EUC_TW = 101, - GB18030_2005 = 96, - GB18030_2022 = 97, - GB1988_80 = 82, - GB2312 = 93, - GB2312_80 = 83, - GBK = 94, - GEORGIANACADEMY = 67, - GEORGIANPS = 68, - HPROMAN8 = 64, - HZ = 100, + EUC_JP = 21, + EUC_KR = 43, + EUC_TW = 36, + GB18030_2005 = 31, + GB18030_2022 = 32, + GB1988_80 = 110, + GB2312 = 28, + GB2312_80 = 111, + GBK = 29, + GEORGIANACADEMY = 95, + GEORGIANPS = 96, + HPROMAN8 = 92, + HZ = 35, IBM1046 = 117, IBM1124 = 118, IBM1129 = 119, - IBM1131 = 51, + IBM1131 = 79, IBM1161 = 120, IBM1162 = 121, IBM1163 = 122, - IBM850 = 48, + IBM850 = 76, IBM856 = 114, - IBM862 = 49, - IBM866 = 50, + IBM862 = 77, + IBM866 = 78, IBM922 = 115, - IBM932 = 88, + IBM932 = 23, IBM943 = 116, - IBMCP1133 = 73, - ISO2022_CN = 98, - ISO2022_CN_EXT = 99, - ISO2022_JP = 89, - ISO2022_JP1 = 90, - ISO2022_JP2 = 91, + IBMCP1133 = 101, + ISO2022_CN = 33, + ISO2022_CN_EXT = 34, + ISO2022_JP = 24, + ISO2022_JP1 = 25, + ISO2022_JP2 = 26, ISO2022_JP3 = 193, - ISO2022_JPMS = 92, - ISO2022_KR = 111, - ISO8859_1 = 21, - ISO8859_10 = 30, - ISO8859_11 = 31, - ISO8859_13 = 32, - ISO8859_14 = 33, - ISO8859_15 = 34, - ISO8859_16 = 35, - ISO8859_2 = 22, - ISO8859_3 = 23, - ISO8859_4 = 24, - ISO8859_5 = 25, - ISO8859_6 = 26, - ISO8859_7 = 27, - ISO8859_8 = 28, - ISO8859_9 = 29, + ISO2022_JPMS = 27, + ISO2022_KR = 46, + ISO8859_1 = 49, + ISO8859_10 = 58, + ISO8859_11 = 59, + ISO8859_13 = 60, + ISO8859_14 = 61, + ISO8859_15 = 62, + ISO8859_16 = 63, + ISO8859_2 = 50, + ISO8859_3 = 51, + ISO8859_4 = 52, + ISO8859_5 = 53, + ISO8859_6 = 54, + ISO8859_7 = 55, + ISO8859_8 = 56, + ISO8859_9 = 57, JAVA = 20, - JISX0201 = 79, - JISX0208 = 80, - JISX0212 = 81, - JOHAB = 110, - JP = 78, - KOI8T = 69, - KOI8_R = 36, - KOI8_RU = 38, - KOI8_U = 37, - KOREAN = 85, - MACINTOSH = 52, - MAC_ARABIC = 62, - MAC_CENTRALEUROPE = 53, - MAC_CROATIAN = 55, - MAC_CYRILLIC = 57, - MAC_GREEK = 59, - MAC_HEBREW = 61, - MAC_ICELAND = 54, - MAC_ROMANIA = 56, - MAC_THAI = 63, - MAC_TURKISH = 60, - MAC_UKRAINE = 58, - MSANSI = 41, - MSARAB = 45, - MSCYRL = 40, - MSEE = 39, - MSGREEK = 42, - MSHEBR = 44, - MSTURK = 43, - MULELAO1 = 72, - NEXTSTEP = 65, - PT154 = 70, + JISX0201 = 107, + JISX0208 = 108, + JISX0212 = 109, + JOHAB = 45, + JP = 106, + KOI8T = 97, + KOI8_R = 64, + KOI8_RU = 66, + KOI8_U = 65, + KOREAN = 113, + MACINTOSH = 80, + MAC_ARABIC = 90, + MAC_CENTRALEUROPE = 81, + MAC_CROATIAN = 83, + MAC_CYRILLIC = 85, + MAC_GREEK = 87, + MAC_HEBREW = 89, + MAC_ICELAND = 82, + MAC_ROMANIA = 84, + MAC_THAI = 91, + MAC_TURKISH = 88, + MAC_UKRAINE = 86, + MSANSI = 69, + MSARAB = 73, + MSCYRL = 68, + MSEE = 67, + MSGREEK = 70, + MSHEBR = 72, + MSTURK = 71, + MULELAO1 = 100, + NEXTSTEP = 93, + PT154 = 98, RISCOS_LATIN1 = 197, - RK1048 = 71, - SHIFT_JIS = 87, + RK1048 = 99, + SHIFT_JIS = 22, SHIFT_JISX0213 = 192, - TCVN = 77, + TCVN = 105, TDS565 = 195, - TIS620 = 74, + TIS620 = 102, UCS2 = 2, UCS2BE = 3, UCS2LE = 4, @@ -186,7 +186,7 @@ namespace cppp::base::encoding UCS4LE = 7, UCS4_INTERNAL = 17, UCS4_SWAPPED = 18, - UHC = 109, + UHC = 44, UTF16 = 8, UTF16BE = 9, UTF16LE = 10, @@ -195,13 +195,22 @@ namespace cppp::base::encoding UTF32LE = 13, UTF7 = 14, UTF8 = 1, - VISCII = 76, - WINBALTRIM = 46, - WINDOWS1258 = 47, - WINDOWS874 = 75, - WINDOWS950 = 103, + VISCII = 104, + WINBALTRIM = 74, + WINDOWS1258 = 75, + WINDOWS874 = 103, + WINDOWS950 = 38, ATARI = ATARIST, BIG5HKSCS = BIG5HKSCS_2008, + CP1250 = MSEE, + CP1251 = MSCYRL, + CP1252 = MSANSI, + CP1253 = MSGREEK, + CP1254 = MSTURK, + CP1255 = MSHEBR, + CP1256 = MSARAB, + CP1257 = WINBALTRIM, + CP1258 = WINDOWS1258, GB18030 = GB18030_2022, }; } // cppp::base::encoding diff --git a/lib/iconv.cpp b/lib/iconv.cpp index 254b8f00..6237ea2b 100644 --- a/lib/iconv.cpp +++ b/lib/iconv.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include @@ -80,7 +80,7 @@ namespace cppp::base::reiconv #define DEFCODEPAGE(codepage, xxx) {codepage, ei_##xxx}, #define DEFINDEX(alias, name) - static const std::map codepage_to_eindex = + static const std::unordered_map codepage_to_eindex = { #include "encodings.h.snippet" }; @@ -137,11 +137,11 @@ namespace cppp::base::reiconv char buf[MAX_WORD_LENGTH + 9 + 9 + 1]; size_t buf_len = name_canonicalize(name, buf); - if (buf_len >= 2 && buf[0] == 'C' && buf[1] == 'P') + /* if (buf_len >= 2 && buf[0] == 'C' && buf[1] == 'P') { int codepage = atoi(buf + 2); return lookup_by_codepage(codepage); - } + } */ // TODO: Remove this later. const struct alias* ap = HashPool::aliases_lookup(buf, buf_len); if (ap) diff --git a/tools/check-encodings.cpp b/tools/check-encodings.cpp new file mode 100644 index 00000000..67cb5b57 --- /dev/null +++ b/tools/check-encodings.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2023 The C++ Plus Project. + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +/* Check encoding names in `encodings.h.snippet` is not in lower case. + * `name_canonicalize()` will upper the encoding name. So lower-case cannot be recognized. + */ + +#include +#include +#include + +template void check_upper_case(const char *const (&names)[N], ...) +{ + for (std::size_t i = 0; i < N; i++) + { + const char *name = names[i]; + for (; *name; name++) + { + unsigned char c = *(unsigned char *)name; + if (std::islower(c)) + { + std::fprintf(stderr, "Encoding name `%s` is not in upper case.\n", names[i]); + std::exit(EXIT_FAILURE); + } + } + } +} + +int main(int argc, char *argv[]) +{ + if (argc != 1) + { + std::fprintf(stderr, "Usage: %s\n", argv[0]); + return EXIT_FAILURE; + } + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + { \ + static const char *const names[] = BRACIFY xxx_names; \ + check_upper_case(names); \ + } +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) +#define BRACIFY(...) \ + { \ + __VA_ARGS__ \ + } + +#include "encodings.h.snippet" + + return 0; +} From 0c0d72e0b9a13684da2a819abbee1e36a5ba549b Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 25 Oct 2024 20:44:36 +0800 Subject: [PATCH 38/77] Sync from libiconv: eed6782cbb4651876e3c8b27ea53273f230ee8e2. Message: ```text Fix undefined behaviour caused by shifting (unsigned char) << 24. Reported by Tim Sweet at . * lib/ucs4.h (ucs4_mbtowc): Cast 'unsigned char' values to ucs4_t before shifting them to the left. * lib/ucs4be.h (ucs4be_mbtowc): Likewise. * lib/ucs4le.h (ucs4le_mbtowc): Likewise. * lib/utf32.h (utf32_mbtowc): Likewise. * lib/utf32be.h (utf32be_mbtowc): Likewise. * lib/utf32le.h (utf32le_mbtowc): Likewise. ``` --- lib/ucs4.h | 12 +++++++++--- lib/ucs4be.h | 7 +++++-- lib/ucs4le.h | 7 +++++-- lib/utf32.h | 12 +++++++++--- lib/utf32be.h | 7 +++++-- lib/utf32le.h | 7 +++++-- 6 files changed, 38 insertions(+), 14 deletions(-) diff --git a/lib/ucs4.h b/lib/ucs4.h index ce242d47..9ae70e88 100644 --- a/lib/ucs4.h +++ b/lib/ucs4.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -31,8 +31,14 @@ ucs4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) int count = 0; for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX-4;) { ucs4_t wc = (state - ? s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24) - : (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]); + ? (ucs4_t) s[0] + + ((ucs4_t) s[1] << 8) + + ((ucs4_t) s[2] << 16) + + ((ucs4_t) s[3] << 24) + : ((ucs4_t) s[0] << 24) + + ((ucs4_t) s[1] << 16) + + ((ucs4_t) s[2] << 8) + + (ucs4_t) s[3]); if (wc == 0x0000feff) { } else if (wc == 0xfffe0000u) { state ^= 1; diff --git a/lib/ucs4be.h b/lib/ucs4be.h index d7fe813a..3fcb2921 100644 --- a/lib/ucs4be.h +++ b/lib/ucs4be.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2000, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -25,7 +25,10 @@ static int ucs4be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { if (n >= 4) { - *pwc = (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]; + *pwc = ((ucs4_t) s[0] << 24) + + ((ucs4_t) s[1] << 16) + + ((ucs4_t) s[2] << 8) + + (ucs4_t) s[3]; return 4; } return RET_TOOFEW(0); diff --git a/lib/ucs4le.h b/lib/ucs4le.h index 2a8a3928..b56cb592 100644 --- a/lib/ucs4le.h +++ b/lib/ucs4le.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2000, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -25,7 +25,10 @@ static int ucs4le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { if (n >= 4) { - *pwc = s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24); + *pwc = (ucs4_t) s[0] + + ((ucs4_t) s[1] << 8) + + ((ucs4_t) s[2] << 16) + + ((ucs4_t) s[3] << 24); return 4; } return RET_TOOFEW(0); diff --git a/lib/utf32.h b/lib/utf32.h index 7d29ad0d..12b1cf28 100644 --- a/lib/utf32.h +++ b/lib/utf32.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -37,8 +37,14 @@ utf32_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) int count = 0; for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX-4;) { ucs4_t wc = (state - ? s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24) - : (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]); + ? (ucs4_t) s[0] + + ((ucs4_t) s[1] << 8) + + ((ucs4_t) s[2] << 16) + + ((ucs4_t) s[3] << 24) + : ((ucs4_t) s[0] << 24) + + ((ucs4_t) s[1] << 16) + + ((ucs4_t) s[2] << 8) + + (ucs4_t) s[3]); if (wc == 0x0000feff) { } else if (wc == 0xfffe0000u) { state ^= 1; diff --git a/lib/utf32be.h b/lib/utf32be.h index d8aeb631..db3517dc 100644 --- a/lib/utf32be.h +++ b/lib/utf32be.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2001, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -27,7 +27,10 @@ static int utf32be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { if (n >= 4) { - ucs4_t wc = (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]; + ucs4_t wc = ((ucs4_t) s[0] << 24) + + ((ucs4_t) s[1] << 16) + + ((ucs4_t) s[2] << 8) + + (ucs4_t) s[3]; if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) { *pwc = wc; return 4; diff --git a/lib/utf32le.h b/lib/utf32le.h index ca2335cd..7ed564be 100644 --- a/lib/utf32le.h +++ b/lib/utf32le.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2001, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -27,7 +27,10 @@ static int utf32le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { if (n >= 4) { - ucs4_t wc = s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24); + ucs4_t wc = (ucs4_t) s[0] + + ((ucs4_t) s[1] << 8) + + ((ucs4_t) s[2] << 16) + + ((ucs4_t) s[3] << 24); if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) { *pwc = wc; return 4; From f17bf0346e788c5bb8bc4f7b8c83e74d1d7d19cc Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 25 Oct 2024 20:45:05 +0800 Subject: [PATCH 39/77] Sync from libiconv: f017cafc5e65de591d76c9cbd4e2298c42b042a3. Message: ```text Spelling fixes. From Mike Taves in . * NOTES: Fix grammar. * lib/iconv_open1.h: Fix a typo in comments. * lib/iso2022_jp2.h: Likewise. * lib/iso2022_jpms.h: Fix English spelling in comments. ``` --- NEWS.md | 1 - cpack.cmake | 2 +- lib/iso2022_jp2.h | 4 ++-- lib/iso2022_jpms.h | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/NEWS.md b/NEWS.md index 55a042eb..39a6764e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -13,7 +13,6 @@ New in 2.1.0: * Move `lib/gen*.c` to `tools/gen*.cpp`. * Optimize `Makefile.devel`. * Fix bugs, warnings, typos. - * Change the 'autodetect' feature of 'iconv_string' to a non extra feature. New in 2.0.0: diff --git a/cpack.cmake b/cpack.cmake index a47bb470..9ee54a15 100644 --- a/cpack.cmake +++ b/cpack.cmake @@ -1,4 +1,4 @@ -# Copyright (C) 2023 The C++ Plus Project. +# Copyright (C) 2024 The C++ Plus Project. # This file is part of the cppp-reiconv library. # # The cppp-reiconv library is free software; you can redistribute it diff --git a/lib/iso2022_jp2.h b/lib/iso2022_jp2.h index 287db1b7..fb275e43 100644 --- a/lib/iso2022_jp2.h +++ b/lib/iso2022_jp2.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * Copyright (C) 1999-2001, 2008, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -310,7 +310,7 @@ iso2022_jp2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) unsigned char buf[2]; int ret; /* This defines the conversion preferences depending on the current - langauge tag. */ + language tag. */ enum conversion { none = 0, european, japanese, chinese, korean, other }; static const unsigned int conversion_lists[STATE_TAG_LANGUAGE] = { /* STATE_TAG_NONE */ diff --git a/lib/iso2022_jpms.h b/lib/iso2022_jpms.h index c814c11b..15252211 100644 --- a/lib/iso2022_jpms.h +++ b/lib/iso2022_jpms.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001, 2008, 2011-2012, 2016, 2018 Free Software Foundation, Inc. + * Copyright (C) 1999-2001, 2008, 2011-2012, 2016, 2018, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -58,7 +58,7 @@ * Conclusion: * - CP50222 should not be used, because the multibyte sequence that it * produces cannot be parsed by either of the three encodings. - * - CP50221 is preferrable to CP50220, because it can faithfully represent + * - CP50221 is preferable to CP50220, because it can faithfully represent * the halfwidth Katakana characters. * We therefore implement CP50221. As an extension, in the mbtowc conversion * direction, we support also ESC ( J 0x0E, just in case. From 8dacf05a5162cbc693345c2aa11475660c7025c0 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 25 Oct 2024 21:05:59 +0800 Subject: [PATCH 40/77] Fix test data generation's bug. --- tests/tests.cmake | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/tests/tests.cmake b/tests/tests.cmake index 96cc8532..7b2f6321 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -28,42 +28,60 @@ set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY macro(test state encoding) add_test( NAME "check-${state}-${encoding}" WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data" "${encoding}" + COMMAND "$" "${TEST_DATA_DIR}" "${encoding}" ) endmacro(test) # Init test - +set(TEST_DATA_DIR "${output_testsdir}/data") + +# Copy data directory. +if (NOT EXISTS "${TEST_DATA_DIR}") + file(MAKE_DIRECTORY "${TEST_DATA_DIR}") + file(GLOB_RECURSE TEST_DATA_FILES "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/*") + + foreach(TEST_FILE ${TEST_DATA_FILES}) + if(NOT IS_DIRECTORY "${TEST_FILE}") + get_filename_component(TEST_FILE_NAME "${TEST_FILE}" NAME) + file(COPY_FILE "${TEST_FILE}" "${TEST_DATA_DIR}/${TEST_FILE_NAME}") + endif() + endforeach() + unset(TEST_DATA_FILES) +endif() + +# Generate UTF-8 test data. add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "utf-8" > "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/UTF-8.TXT" + COMMAND "$" "utf-8" > "${TEST_DATA_DIR}/UTF-8.TXT" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating UTF-8 test data ... " ) -file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT") +# Generate GB18030:2005 test data. add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" + COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2005-BMP.TXT" "${TEST_DATA_DIR}/GB18030-2005.TXT" + COMMAND "$" gb18030z >> "${TEST_DATA_DIR}/GB18030-2005.TXT" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating GB18030:2005 test data ... " ) add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" - COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT" - COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2005.TXT.tmp" + COMMAND "$" "${TEST_DATA_DIR}/GB18030-2005.TXT" "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" + COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" "${TEST_DATA_DIR}/GB18030-2005.TXT" + COMMAND "${CMAKE_COMMAND}" -E remove "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Sorting GB18030:2005 test data ... " ) -file(COPY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022-BMP.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT") +# Generate GB18030:2022 test data. add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "gb18030z" >> "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" + COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2022-BMP.TXT" "${TEST_DATA_DIR}/GB18030-2022.TXT" + COMMAND "$" gb18030z >> "${TEST_DATA_DIR}/GB18030-2022.TXT" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating GB18030:2022 test data ... " ) add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" - COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT" - COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/GB18030-2022.TXT.tmp" + COMMAND "$" "${TEST_DATA_DIR}/GB18030-2022.TXT" "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" + COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" "${TEST_DATA_DIR}/GB18030-2022.TXT" + COMMAND "${CMAKE_COMMAND}" -E remove "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Sorting GB18030:2022 test data ... " ) From 2af363b6f3a3294e5e97e7ded146f41c13590b91 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 25 Oct 2024 21:14:25 +0800 Subject: [PATCH 41/77] **Simply and roughly** fixed #5. --- tests/utils.hpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/utils.hpp b/tests/utils.hpp index c8d118dd..be9216eb 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -58,12 +58,9 @@ void assert_compare_file(const std::string& path1, const std::string& path2) char file1_c; char file2_c; - size_t read_seek = 0; while(1) { - ++read_seek; - if(file1.get(file1_c).eof()) { file1_c = EOF; } if(file1_c == '\r') { continue; } @@ -73,11 +70,11 @@ void assert_compare_file(const std::string& path1, const std::string& path2) if(file1_c != file2_c) { errno = 0; - error("assert_compare_file", "Files are not equal at " + std::to_string(read_seek) + " byte."); + error("assert_compare_file", "The files are different."); } if(file1_c == EOF && file2_c == EOF) { break; } } - success("assert_compare_file", "Files are equal."); + success("assert_compare_file", "The file content is the same."); } @@ -98,7 +95,7 @@ std::vector read_all(const std::string& input_file_path) error(input_file_path, "Unable to open input file."); } - size_t size = get_file_size(input_file_path.c_str()); + size_t size = std::filesystem::file_size(input_file_path); std::vector buffer(size); input_file.read(buffer.data(), size); From bd33485a48ae2b08284ed6d47e300f4826859f90 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 31 Oct 2024 23:16:38 +0800 Subject: [PATCH 42/77] Refactored test suites. --- .gitignore | 1 + lib/generated/indexes.hpp.shippet | 350 ++++++++++++------------- tests/_iconv.hpp | 2 +- tests/check-stateful.cpp | 56 ++-- tests/check-stateless.cpp | 141 +++++----- tests/data-generator.cpp | 71 +++--- tests/output.hpp | 145 +++++++++++ tests/reiconv-test.hpp | 46 ++-- tests/sort.cpp | 17 +- tests/sort.hpp | 29 ++- tests/table-from.hpp | 382 +++++++++++++-------------- tests/table-to.hpp | 182 +++++++------ tests/throw_error.hpp | 61 ----- tests/uniq-u.hpp | 411 +++++++++++++++--------------- tests/utils.hpp | 305 +++++++++++++--------- tools/check-encodings.cpp | 2 +- tools/genaliases.cpp | 91 +++---- tools/genindexes.cpp | 27 +- 18 files changed, 1235 insertions(+), 1084 deletions(-) create mode 100644 tests/output.hpp delete mode 100644 tests/throw_error.hpp diff --git a/.gitignore b/.gitignore index ea483a37..9291fabc 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,4 @@ tests/data/GB18030-2005.TXT tests/data/GB18030-2022.TXT tests/tmp-*.TXT *.tmp +*.dump diff --git a/lib/generated/indexes.hpp.shippet b/lib/generated/indexes.hpp.shippet index 48cb66e7..45294c48 100644 --- a/lib/generated/indexes.hpp.shippet +++ b/lib/generated/indexes.hpp.shippet @@ -2,215 +2,215 @@ namespace cppp::base::encoding { enum class Encodings { - ARMSCII8 = 94, - ASCII = 0, - ATARIST = 196, - BIG5 = 37, - BIG5HKSCS_1999 = 39, - BIG5HKSCS_2001 = 40, - BIG5HKSCS_2004 = 41, - BIG5HKSCS_2008 = 42, - BIG5_2003 = 194, - C99 = 19, - CNGBISOIR165 = 112, + ISO2022_JP3 = 193, + SHIFT_JISX0213 = 192, + EUC_JISX0213 = 191, + EBCDIC_12712 = 189, + EBCDIC_4971 = 188, + EBCDIC_1166 = 187, + EBCDIC_1160 = 184, + EBCDIC_1158 = 183, + EBCDIC_1155 = 180, + EBCDIC_1153 = 178, + EBCDIC_1147 = 175, + EBCDIC_1145 = 173, + EBCDIC_1144 = 172, + EBCDIC_1143 = 171, + EBCDIC_1142 = 170, + EBCDIC_1137 = 167, + EBCDIC_1132 = 166, + EBCDIC_1123 = 164, + EBCDIC_1122 = 163, + EBCDIC_1112 = 162, + EBCDIC_1097 = 161, + EBCDIC_1025 = 158, + EBCDIC_905 = 156, + EBCDIC_500 = 150, + EBCDIC_425 = 149, + EBCDIC_424 = 148, + EBCDIC_285 = 145, + EBCDIC_284 = 144, + EBCDIC_282 = 143, + EBCDIC_278 = 141, + EBCDIC_277 = 140, CP1125 = 137, - CP437 = 123, - CP737 = 124, - CP775 = 125, - CP852 = 126, - CP853 = 127, - CP855 = 128, - CP857 = 129, - CP858 = 130, - CP860 = 131, - CP861 = 132, - CP863 = 133, - CP864 = 134, - CP865 = 135, CP869 = 136, - CP936 = 30, - DEC_HANYU = 48, - DEC_KANJI = 47, - EBCDIC_037 = 138, - EBCDIC_1025 = 158, - EBCDIC_1026 = 159, + CP861 = 132, EBCDIC_1047 = 160, - EBCDIC_1097 = 161, - EBCDIC_1112 = 162, - EBCDIC_1122 = 163, - EBCDIC_1123 = 164, - EBCDIC_1130 = 165, - EBCDIC_1132 = 166, - EBCDIC_1137 = 167, + CP857 = 129, + EBCDIC_423 = 147, + CP853 = 127, + ISO8859_8 = 56, + EBCDIC_1154 = 179, + GB1988_80 = 110, EBCDIC_1140 = 168, - EBCDIC_1141 = 169, - EBCDIC_1142 = 170, - EBCDIC_1143 = 171, - EBCDIC_1144 = 172, - EBCDIC_1145 = 173, - EBCDIC_1146 = 174, - EBCDIC_1147 = 175, + ISO8859_6 = 54, + ISO8859_3 = 51, + IBM922 = 115, + ISO8859_1 = 49, + ISO8859_10 = 58, + DEC_HANYU = 48, + DEC_KANJI = 47, + ISO8859_4 = 52, + SHIFT_JIS = 22, + IBM1131 = 79, + EBCDIC_880 = 155, + BIG5HKSCS_2001 = 40, + MSEE = 67, + ISO8859_7 = 55, + TDS565 = 195, EBCDIC_1148 = 176, - EBCDIC_1149 = 177, - EBCDIC_1153 = 178, - EBCDIC_1154 = 179, - EBCDIC_1155 = 180, - EBCDIC_1156 = 181, - EBCDIC_1157 = 182, - EBCDIC_1158 = 183, - EBCDIC_1160 = 184, - EBCDIC_1164 = 185, - EBCDIC_1165 = 186, - EBCDIC_1166 = 187, - EBCDIC_12712 = 189, - EBCDIC_16804 = 190, - EBCDIC_273 = 139, - EBCDIC_277 = 140, - EBCDIC_278 = 141, - EBCDIC_280 = 142, - EBCDIC_282 = 143, - EBCDIC_284 = 144, - EBCDIC_285 = 145, + IBM1161 = 120, + EBCDIC_037 = 138, + CP775 = 125, + BIG5HKSCS_1999 = 39, + EUC_TW = 36, EBCDIC_297 = 146, - EBCDIC_423 = 147, - EBCDIC_424 = 148, - EBCDIC_425 = 149, - EBCDIC_4971 = 188, - EBCDIC_500 = 150, - EBCDIC_838 = 151, - EBCDIC_870 = 152, - EBCDIC_871 = 153, - EBCDIC_875 = 154, - EBCDIC_880 = 155, - EBCDIC_905 = 156, + UHC = 44, + EBCDIC_1156 = 181, + GB18030_2022 = 32, + UTF32 = 11, + ATARIST = 196, + CP864 = 134, + GB2312_80 = 111, + UTF16LE = 10, + EBCDIC_1149 = 177, + UTF16 = 8, + UCS4LE = 7, EBCDIC_924 = 157, - EUC_JISX0213 = 191, - EUC_JP = 21, EUC_KR = 43, - EUC_TW = 36, + EBCDIC_1026 = 159, GB18030_2005 = 31, - GB18030_2022 = 32, - GB1988_80 = 110, - GB2312 = 28, - GB2312_80 = 111, - GBK = 29, - GEORGIANACADEMY = 95, - GEORGIANPS = 96, - HPROMAN8 = 92, + UCS4_INTERNAL = 17, + KOI8T = 97, + EBCDIC_280 = 142, + UCS2LE = 4, + WINDOWS1258 = 75, + EBCDIC_1157 = 182, + UTF8 = 1, + CP865 = 135, + UCS4 = 5, + CP858 = 130, HZ = 35, - IBM1046 = 117, - IBM1124 = 118, - IBM1129 = 119, - IBM1131 = 79, - IBM1161 = 120, - IBM1162 = 121, + CP863 = 133, + ISO2022_KR = 46, + C99 = 19, IBM1163 = 122, - IBM850 = 76, - IBM856 = 114, + ISO2022_CN = 33, + UTF32LE = 13, + ASCII = 0, IBM862 = 77, - IBM866 = 78, - IBM922 = 115, - IBM932 = 23, + UTF7 = 14, + WINDOWS950 = 38, + UCS2 = 2, + ISO8859_14 = 61, IBM943 = 116, - IBMCP1133 = 101, - ISO2022_CN = 33, - ISO2022_CN_EXT = 34, - ISO2022_JP = 24, + CP737 = 124, ISO2022_JP1 = 25, + UCS2_SWAPPED = 16, + KOI8_R = 64, + UCS4_SWAPPED = 18, + RISCOS_LATIN1 = 197, + JAVA = 20, + BIG5 = 37, + UTF16BE = 9, + EBCDIC_871 = 153, + UTF32BE = 12, + GEORGIANACADEMY = 95, + IBM932 = 23, + CP860 = 131, + MAC_ICELAND = 82, + ISO2022_JP = 24, + BIG5HKSCS_2004 = 41, + GB2312 = 28, + GBK = 29, + ISO8859_5 = 53, + BIG5HKSCS_2008 = 42, + CP852 = 126, + UCS4BE = 6, + IBM866 = 78, + EBCDIC_875 = 154, + MAC_CROATIAN = 83, + MAC_UKRAINE = 86, + EUC_JP = 21, ISO2022_JP2 = 26, - ISO2022_JP3 = 193, - ISO2022_JPMS = 27, - ISO2022_KR = 46, - ISO8859_1 = 49, - ISO8859_10 = 58, ISO8859_11 = 59, + KOI8_U = 65, + EBCDIC_1141 = 169, + EBCDIC_838 = 151, + MSGREEK = 70, + UCS2BE = 3, ISO8859_13 = 60, - ISO8859_14 = 61, + BIG5_2003 = 194, + JISX0208 = 108, + EBCDIC_1146 = 174, ISO8859_15 = 62, ISO8859_16 = 63, - ISO8859_2 = 50, - ISO8859_3 = 51, - ISO8859_4 = 52, - ISO8859_5 = 53, - ISO8859_6 = 54, - ISO8859_7 = 55, - ISO8859_8 = 56, - ISO8859_9 = 57, - JAVA = 20, - JISX0201 = 107, - JISX0208 = 108, - JISX0212 = 109, - JOHAB = 45, - JP = 106, - KOI8T = 97, - KOI8_R = 64, + IBM1046 = 117, KOI8_RU = 66, - KOI8_U = 65, - KOREAN = 113, + CNGBISOIR165 = 112, + MSCYRL = 68, + MSTURK = 71, + EBCDIC_1165 = 186, + MSHEBR = 72, + CP855 = 128, + MSARAB = 73, + VISCII = 104, + WINBALTRIM = 74, + EBCDIC_273 = 139, MACINTOSH = 80, - MAC_ARABIC = 90, MAC_CENTRALEUROPE = 81, - MAC_CROATIAN = 83, MAC_CYRILLIC = 85, MAC_GREEK = 87, + MAC_ARABIC = 90, + MAC_TURKISH = 88, + EBCDIC_1164 = 185, MAC_HEBREW = 89, - MAC_ICELAND = 82, - MAC_ROMANIA = 84, + EBCDIC_16804 = 190, MAC_THAI = 91, - MAC_TURKISH = 88, - MAC_UKRAINE = 86, - MSANSI = 69, - MSARAB = 73, - MSCYRL = 68, - MSEE = 67, - MSGREEK = 70, - MSHEBR = 72, - MSTURK = 71, - MULELAO1 = 100, + HPROMAN8 = 92, + UCS2_INTERNAL = 15, NEXTSTEP = 93, + ARMSCII8 = 94, + ISO8859_2 = 50, + GEORGIANPS = 96, PT154 = 98, - RISCOS_LATIN1 = 197, + MAC_ROMANIA = 84, + IBM850 = 76, RK1048 = 99, - SHIFT_JIS = 22, - SHIFT_JISX0213 = 192, - TCVN = 105, - TDS565 = 195, + ISO8859_9 = 57, + MULELAO1 = 100, + ISO2022_CN_EXT = 34, + IBMCP1133 = 101, + EBCDIC_1130 = 165, TIS620 = 102, - UCS2 = 2, - UCS2BE = 3, - UCS2LE = 4, - UCS2_INTERNAL = 15, - UCS2_SWAPPED = 16, - UCS4 = 5, - UCS4BE = 6, - UCS4LE = 7, - UCS4_INTERNAL = 17, - UCS4_SWAPPED = 18, - UHC = 44, - UTF16 = 8, - UTF16BE = 9, - UTF16LE = 10, - UTF32 = 11, - UTF32BE = 12, - UTF32LE = 13, - UTF7 = 14, - UTF8 = 1, - VISCII = 104, - WINBALTRIM = 74, - WINDOWS1258 = 75, + MSANSI = 69, WINDOWS874 = 103, - WINDOWS950 = 38, + EBCDIC_870 = 152, + JISX0201 = 107, + TCVN = 105, + JP = 106, + JOHAB = 45, + ISO2022_JPMS = 27, + JISX0212 = 109, + KOREAN = 113, + IBM856 = 114, + IBM1124 = 118, + CP936 = 30, + IBM1129 = 119, + IBM1162 = 121, + CP437 = 123, + CP1256 = MSARAB, + CP1258 = WINDOWS1258, + CP1255 = MSHEBR, + CP1254 = MSTURK, ATARI = ATARIST, - BIG5HKSCS = BIG5HKSCS_2008, - CP1250 = MSEE, - CP1251 = MSCYRL, - CP1252 = MSANSI, CP1253 = MSGREEK, - CP1254 = MSTURK, - CP1255 = MSHEBR, - CP1256 = MSARAB, + CP1252 = MSANSI, CP1257 = WINBALTRIM, - CP1258 = WINDOWS1258, + CP1251 = MSCYRL, + CP1250 = MSEE, + BIG5HKSCS = BIG5HKSCS_2008, GB18030 = GB18030_2022, }; } // cppp::base::encoding diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index f518a78e..ba72753f 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -39,4 +39,4 @@ namespace cppp::base::reiconv extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict); extern _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); extern _CPPP_API void iconv_close(iconv_t cd); -} // namespace cppp::base::reiconv \ No newline at end of file +} // namespace cppp::base::reiconv diff --git a/tests/check-stateful.cpp b/tests/check-stateful.cpp index 956248fb..09c6e2cb 100644 --- a/tests/check-stateful.cpp +++ b/tests/check-stateful.cpp @@ -1,5 +1,10 @@ +/** + * @file check-stateful.hpp + * @brief Simple check of a stateful encoding. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ /* - * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,45 +22,48 @@ * If not, see . */ -/* - Simple check of a stateful encoding. -*/ - -#include +#include #include +#include -#include "utils.hpp" #include "reiconv-test.hpp" +#include "utils.hpp" -std::string srcdir, charset; +std::filesystem::path datadir; +std::string charset; -// Usage: check-stateful SRCDIR CHARSET -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - if(argc < 3) + if (argc != 3) { - std::cerr << "Usage: check-stateful SRCDIR CHARSET\n"; - return 1; + print_stderr("Usage: check-stateful DATADIR CHARSET\n"); + return EXIT_FAILURE; } - srcdir = argv[1]; + datadir = argv[1]; charset = argv[2]; std::string charsetf = replace(charset, ":", "-"); - if(file_exists(srcdir + "/" + charsetf + "-snippet.alt")) + std::filesystem::path snippet_alt_file { datadir / (charsetf + "-snippet.alt") }; + std::filesystem::path utf8_snippet_file { datadir / (charsetf + "-snippet.UTF-8") }; + + Buffer res, snippet_data; + if (std::filesystem::exists(snippet_alt_file)) { - test::iconv::main(charset, "UTF-8", srcdir + "/" + charsetf + "-snippet.alt", "tmp-snippet"); - assert_compare_file(srcdir + "/" + charsetf + "-snippet.UTF-8", "tmp-snippet"); + res = reiconv_test(charset, "UTF-8", snippet_alt_file); + snippet_data = read_all(utf8_snippet_file); + compare_data(snippet_data, res); } - test::iconv::main(charset, "UTF-8", srcdir + "/" + charsetf + "-snippet", "tmp-snippet"); - assert_compare_file(srcdir + "/" + charsetf + "-snippet.UTF-8", "tmp-snippet"); + res = reiconv_test(charset, "UTF-8", datadir / (charsetf + "-snippet")); + snippet_data = read_all(utf8_snippet_file); + compare_data(snippet_data, res); - test::iconv::main("UTF-8", charset, srcdir + "/" + charsetf + "-snippet.UTF-8", "tmp-snippet"); - assert_compare_file(srcdir + "/" + charsetf + "-snippet", "tmp-snippet"); - - remove_file("tmp-snippet"); + res = reiconv_test("UTF-8", charset, utf8_snippet_file); + snippet_data = read_all(datadir / (charsetf + "-snippet")); + compare_data(snippet_data, res); success("check-stateful", charset + " OK."); - return 0; + + return EXIT_SUCCESS; } diff --git a/tests/check-stateless.cpp b/tests/check-stateless.cpp index 7bcee6a2..c32f7deb 100644 --- a/tests/check-stateless.cpp +++ b/tests/check-stateless.cpp @@ -1,5 +1,10 @@ +/** + * @file check-stateless.hpp + * @brief Completely check of a stateless encoding. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ /* - * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,97 +22,117 @@ * If not, see . */ -/* - Complete check of a stateless encoding. -*/ - -#include +#include #include +#include #include -#include "utils.hpp" +#include "output.hpp" +#include "sort.hpp" #include "table-from.hpp" #include "table-to.hpp" -#include "sort.hpp" #include "uniq-u.hpp" +#include "utils.hpp" -std::string srcdir, charset; - -void check2_pre_process(const std::string& input_file_path, const std::string& output_file_path) +void check2_pre_process(const std::filesystem::path &input_file_path, const std::filesystem::path &output_file_path) { - std::ifstream input_file(input_file_path); - std::ofstream output_file(output_file_path, std::ios::trunc); - - if (input_file.is_open() && output_file.is_open()) + std::ifstream input_file {input_file_path}; + if (!input_file.good()) { - std::string line; - std::regex pattern("\t.* 0x"); - - while (std::getline(input_file, line)) - { - if (!std::regex_search(line, pattern)) - { - output_file << line << '\n'; - } - } - - input_file.close(); - output_file.close(); + error(input_file_path, "Unable to open input file."); } - else + std::ofstream output_file {output_file_path, std::ios::trunc}; + if (!output_file.good()) { - error(input_file_path + " " + output_file_path, "Unable to open file."); + error(output_file_path, "Unable to open output file."); } + + std::string line; + std::regex pattern {"\t.* 0x"}; + + while (std::getline(input_file, line)) + { + if (!std::regex_search(line, pattern)) + { + write_stream(output_file, line + "\n"); + } + } + + input_file.close(); + output_file.close(); } -// Usage: check-stateful SRCDIR CHARSET -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - if(argc < 3) + std::ios::sync_with_stdio(false); + if (argc != 3 && argc != 4) + { + print_stderr("Usage: check-stateless DATADIR CHARSET [--debug]\n"); + return EXIT_FAILURE; + } + bool debug; + if (argc == 4) { - std::cerr << "Usage: check-stateless SRCDIR CHARSET\n"; - return 1; + debug = true; + print_stderr("Debug mode enabled.\n"); } - srcdir = argv[1]; - charset = argv[2]; + std::filesystem::path srcdir = argv[1]; + std::string charset = argv[2]; // Charset, modified for use in filenames. std::string charsetf = replace(charset, ":", "-"); // Iconv in one direction. - test::table_from("tmp-" + charsetf + ".TXT", charset); + std::filesystem::path table_from_file = "tmp-" + charsetf + ".TXT"; + table_from(table_from_file, charset); // Iconv in the other direction. - test::table_to("tmp-" + charsetf + ".INVERSE.UNSORTED.TXT", charset); - sort_file("tmp-" + charsetf + ".INVERSE.UNSORTED.TXT", "tmp-" + charsetf + ".INVERSE.TXT"); + std::filesystem::path table_to_file_unsorted = "tmp-" + charsetf + ".INVERSE.UNSORTED.TXT"; + std::filesystem::path table_to_file = "tmp-" + charsetf + ".INVERSE.TXT"; + table_to(table_to_file_unsorted, charset); + sort_file(table_to_file_unsorted, table_to_file); - // Check 1: charmap and iconv forward should be identical. - assert_compare_file(srcdir + "/" + charsetf + ".TXT", "tmp-" + charsetf + ".TXT"); + // Check 1: Charmap and iconv forward should be identical. + std::filesystem::path standard_file = srcdir / (charsetf + ".TXT"); + compare_files(standard_file, table_from_file); // Check 2: the difference between the charmap and iconv backward. - check2_pre_process(srcdir + "/" + charsetf + ".TXT", "tmp-noprecomposed-" + charsetf + ".TXT"); + std::filesystem::path noprecomposed_tmp_file = "tmp-noprecomposed-" + charsetf + ".TXT"; + check2_pre_process(standard_file, noprecomposed_tmp_file); - if(file_exists(srcdir + "/" + charsetf + ".IRREVERSIBLE.TXT")) + std::filesystem::path irreversible_file = srcdir / (charsetf + ".IRREVERSIBLE.TXT"); + std::filesystem::path orig_inverse_unsorted_file = "tmp-orig-" + charsetf + ".INVERSE.UNSORTED.TXT"; + std::filesystem::path orig_inverse_ununiqued_file = "tmp-orig-" + charsetf + ".INVERSE.UNUNIQUED.TXT"; + std::filesystem::path orig_inverse_file = "tmp-orig-" + charsetf + ".INVERSE.TXT"; + if (std::filesystem::exists(irreversible_file)) { - std::vector files = { "tmp-noprecomposed-" + charsetf + ".TXT", srcdir + "/" + charsetf + ".IRREVERSIBLE.TXT" }; - merge_files(files, "tmp-orig-" + charsetf + ".INVERSE.UNSORTED.TXT"); - sort_file("tmp-orig-" + charsetf + ".INVERSE.UNSORTED.TXT", "tmp-orig-" + charsetf + ".INVERSE.UNUNIQUED.TXT"); - uniq_u("tmp-orig-" + charsetf + ".INVERSE.UNUNIQUED.TXT", "tmp-orig-" + charsetf + ".INVERSE.TXT"); + std::vector files = {noprecomposed_tmp_file, irreversible_file}; + merge_files(files, orig_inverse_unsorted_file); + sort_file(orig_inverse_unsorted_file, orig_inverse_ununiqued_file); + uniq_u(orig_inverse_ununiqued_file, orig_inverse_file); } else { - copy_file("tmp-noprecomposed-" + charsetf + ".TXT", "tmp-orig-" + charsetf + ".INVERSE.TXT"); + if (std::filesystem::exists(orig_inverse_file)) + { + std::filesystem::remove(orig_inverse_file); + } + std::filesystem::copy_file(noprecomposed_tmp_file, orig_inverse_file); } - assert_compare_file("tmp-orig-" + charsetf + ".INVERSE.TXT", "tmp-" + charsetf + ".INVERSE.TXT"); + compare_files(orig_inverse_file, table_to_file); - remove_file("tmp-" + charsetf + ".TXT"); - remove_file("tmp-" + charsetf + ".INVERSE.UNSORTED.TXT"); - remove_file("tmp-" + charsetf + ".INVERSE.TXT"); - remove_file("tmp-orig-" + charsetf + ".INVERSE.UNSORTED.TXT"); - remove_file("tmp-orig-" + charsetf + ".INVERSE.UNUNIQUED.TXT"); - remove_file("tmp-orig-" + charsetf + ".INVERSE.TXT"); - remove_file("tmp-noprecomposed-" + charsetf + ".TXT"); + if (!debug) + { + std::filesystem::remove(table_from_file); + std::filesystem::remove(table_to_file_unsorted); + std::filesystem::remove(table_to_file); + std::filesystem::remove(orig_inverse_unsorted_file); + std::filesystem::remove(orig_inverse_ununiqued_file); + std::filesystem::remove(orig_inverse_file); + std::filesystem::remove(noprecomposed_tmp_file); + } success("check-stateless", charset + " OK."); - return 0; + + return EXIT_SUCCESS; } diff --git a/tests/data-generator.cpp b/tests/data-generator.cpp index ca840838..86b9597c 100644 --- a/tests/data-generator.cpp +++ b/tests/data-generator.cpp @@ -1,30 +1,35 @@ -/* Copyright (C) 2005, 2012 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. +/** + * @file reiconv-test.hpp + * @brief Creates the beyond-BMP part of the GB18030.TXT reference table. + * @brief Or creates the UTF-8.TXT reference table. + * @author ChenPi11 + * @copyright Copyright (C) 2005, 2012 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/** + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . */ - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -/* Creates the beyond-BMP part of the GB18030.TXT reference table. */ -/* Or creates the UTF-8.TXT reference table. */ - -/* Usage: ./data_generator [utf-8 | gb18030:2005 gb18030:2022] datadir stdout */ - -#include #include +#include #include - +/** + * @brief Generates the GB18030 reference table. + */ void gengb18030z() { int uc = 0x10000; @@ -47,11 +52,14 @@ void gengb18030z() } } } - done: +done: std::fflush(stdout); } +/** + * @brief Generates the UTF-8 reference table. + */ void genutf8() { int i1, i2, i3; @@ -67,12 +75,12 @@ void genutf8() { for (i2 = 0; i2 < 64; i2++) { - std::printf("0x%02X%02X\t0x%04X\n", 0xc0+i1, 0x80+i2, (i1 << 6) + i2); + std::printf("0x%02X%02X\t0x%04X\n", 0xc0 + i1, 0x80 + i2, (i1 << 6) + i2); } } /* Range 0x0800..0xffff, except 0xd800..0xdfff */ for (i1 = 0; i1 < 16; i1++) - for (i2 = (i1==0 ? 32 : 0); i2 < 64; i2++) + for (i2 = (i1 == 0 ? 32 : 0); i2 < 64; i2++) { for (i3 = 0; i3 < 64; i3++) { @@ -85,11 +93,12 @@ void genutf8() } } -int main (int argc, char *argv[]) +int main(int argc, char *argv[]) { - if (argc < 2) + if (argc != 2) { - goto usage; + std::fprintf(stderr, "Usage: %s [utf-8 | gb18030z]\n", argv[0]); + return EXIT_FAILURE; } if (std::string(argv[1]) == "utf-8") @@ -100,8 +109,4 @@ int main (int argc, char *argv[]) gengb18030z(); return EXIT_SUCCESS; - - usage: - fprintf(stderr, "Usage: %s [utf-8 | gb18030z]\n", argv[0]); - return EXIT_FAILURE; } diff --git a/tests/output.hpp b/tests/output.hpp new file mode 100644 index 00000000..f7792b48 --- /dev/null +++ b/tests/output.hpp @@ -0,0 +1,145 @@ +/** + * @file output.hpp + * @brief Output utils. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +#pragma once + +#include +#include +#include +#include + +enum +{ + NOCONTROL = 0b000000000, + COLOR_RED = 0b000000001, + COLOR_GREEN = 0b000000010, + COLOR_YELLOW = 0b000000100, + COLOR_BLUE = 0b000001000, + COLOR_MAGENTA = 0b000010000, + COLOR_CYAN = 0b000100000, + COLOR_WHITE = 0b001000000, + CONTROL_BOLD = 0b010000000, + CONTROL_UNDERLINE = 0b100000000, +}; + +inline std::string colorize(const std::string &str, int control, bool reset = true) +{ + if (control & NOCONTROL) + { + return str; + } + + std::string color_code; + if (control & COLOR_RED) + { + color_code = "\033[31m"; + } + else if (control & COLOR_GREEN) + { + color_code = "\033[32m"; + } + else if (control & COLOR_YELLOW) + { + color_code = "\033[33m"; + } + else if (control & COLOR_BLUE) + { + color_code = "\033[34m"; + } + else if (control & COLOR_MAGENTA) + { + color_code = "\033[35m"; + } + else if (control & COLOR_CYAN) + { + color_code = "\033[36m"; + } + else if (control & COLOR_WHITE) + { + color_code = "\033[37m"; + } + + std::string control_code; + if (control & CONTROL_BOLD) + { + control_code = "\033[1m"; + } + if (control & CONTROL_UNDERLINE) + { + control_code = "\033[4m"; + } + + return color_code + control_code + str + (reset ? "\033[0m" : ""); +} + +template inline std::string print_string(const std::string &format, Args... args) +{ + std::initializer_list args_ = {args...}; + std::string str = format; + for (const auto &arg : args_) + { + size_t pos = 0; + if ((pos = str.find_first_of("{}", pos)) != std::string::npos) + { + str.replace(pos, 2, arg); + } + } + return str; +} + +template inline void print_stdout(const std::string &format, Args... args) +{ + std::string str = print_string(format, args...); + std::puts(str.c_str()); +} + +template inline void print_stderr(const std::string &format, Args... args) +{ + std::string str = print_string(format, args...); + std::fputs(str.c_str(), stderr); +} + +inline void error(const std::string& operation, const std::string &msg, + const std::source_location location = std::source_location::current()) +{ + print_stderr(colorize("", COLOR_RED, false)); + if (errno) + { + std::perror(operation.c_str()); + } + else + { + print_stderr("{}: ", operation); + } + std::string file_info = std::string(location.file_name()) + ":" + std::to_string(location.line()); + print_stderr(msg, "\n\tAt ", colorize(file_info, CONTROL_UNDERLINE), "\n"); + + exit(EXIT_FAILURE); +} + +inline void success(const std::string &operation, const std::string &msg) +{ + print_stdout(colorize(operation + ": " + msg + "\n", COLOR_GREEN)); +} diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 65c5a988..ca592990 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -1,5 +1,10 @@ +/** + * @file reiconv-test.hpp + * @brief Conversion test. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ /* - * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -19,39 +24,18 @@ #pragma once -#include - #include "utils.hpp" -#include -#include -#include -#include -#include -#include - -#include "throw_error.hpp" +#include -using namespace cppp::base::reiconv; +#include +#include +#include -namespace test -{ -namespace iconv +inline Buffer reiconv_test(const std::string &from, const std::string &to, const std::filesystem::path &input_file_path) { -void main(const std::string &from, const std::string &to, const std::string &input_file_path, - const std::string &output_file_path) -{ - FILE *src = fopen(input_file_path.c_str(), "rb"); - size_t srclen = get_file_size(input_file_path.c_str()); - char *s = (char *)malloc(srclen); - fread(s, 1, srclen, src); - fclose(src); - auto res = cppp::base::reiconv::convert(Encoding(from), Encoding(to), {(std::byte *)s, srclen}, true); - - FILE *out = fopen(output_file_path.c_str(), "wb"); - fwrite(res.buffer, 1, res.length, out); - fclose(out); - free(s); + using namespace cppp::base::reiconv; + auto s = read_all(input_file_path); + auto res = convert(Encoding(from), Encoding(to), {(std::byte *)s.first.get(), s.second}, true); + return {std::shared_ptr {res.buffer}, res.length}; } -} // namespace iconv -} // namespace test diff --git a/tests/sort.cpp b/tests/sort.cpp index 029f7edf..9198580c 100644 --- a/tests/sort.cpp +++ b/tests/sort.cpp @@ -1,5 +1,10 @@ +/** + * @file sort.cpp + * @brief Sort file lines. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,21 +22,19 @@ * If not, see . */ -/* Sort file lines. */ - #include #include "sort.hpp" -#include "throw_error.hpp" +#include "output.hpp" int main(int argc, char *argv[]) { - if (argc < 3) + if (argc != 3) { - error("sort", "Usage: ./sort input_file output_file"); + print_stderr("Usage: ./sort INPUT-FILE OUTPUT-FILE\n"); + return EXIT_FAILURE; } sort_file(argv[1], argv[2]); - return EXIT_SUCCESS; } diff --git a/tests/sort.hpp b/tests/sort.hpp index 94d2d921..21ee0af5 100644 --- a/tests/sort.hpp +++ b/tests/sort.hpp @@ -1,5 +1,10 @@ +/** + * @file sort.hpp + * @brief Sort file lines. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ /* - * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,34 +22,30 @@ * If not, see . */ -/* - Sort file lines. -*/ - #pragma once #include #include -#include #include #include -#include "throw_error.hpp" +#include "output.hpp" +#include "utils.hpp" inline void sort_file(const std::string &file_name, const std::string &output_file_name) { std::vector lines; - std::ifstream input_file(file_name); - if (!input_file.is_open()) + std::ifstream input_file {file_name}; + if (!input_file.good()) { - error("sort", "Failed to open file: " + file_name); + error("sort", "Failed to open the input file."); } - std::ofstream output_file(output_file_name, std::ios::trunc); - if (!output_file.is_open()) + std::ofstream output_file {output_file_name, std::ios::trunc}; + if (!output_file.good()) { - error("sort", "Failed to open file: " + output_file_name); + error("sort", "Failed to open the output file."); } std::string line; @@ -58,6 +59,6 @@ inline void sort_file(const std::string &file_name, const std::string &output_fi for (const std::string &line : lines) { - output_file << line << std::endl; + write_stream(output_file, line + "\n"); } } diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 08f053f7..9c4dbea3 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -1,243 +1,219 @@ -/* Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -/* Create a table from CHARSET to Unicode. */ +/** + * @file table-from.hpp + * @brief Create a table from CHARSET to Unicode. + * @author ChenPi11 + * @copyright Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ #pragma once #include "_iconv.hpp" -#include +#include #include #include -#include - -#include "throw_error.hpp" +#include +#include +#include +#include +#include -using namespace cppp::base::reiconv; +#include "output.hpp" -namespace test +/** + * @brief Hex dump of a buffer. + * @param buf The buffer. + * @param buflen The length of the buffer. + * @return The hex dump of the buffer. + */ +inline std::string hexbuf(unsigned char *buf, unsigned int buflen) { - namespace _table_from + std::ostringstream ss; + ss << "0x"; + for (unsigned int i = 0; i < buflen; i++) { - /* If nonzero, ignore conversions outside Unicode plane 0. */ - static bool bmp_only; + ss << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << (int)buf[i]; + } - FILE* save_file; + return ss.str(); +} - static const char* hexbuf (unsigned char buf[], unsigned int buflen) +/** + * @brief Try to convert a buffer. + * @param cd The cppp-reiconv handle. + * @param buf The buffer. + * @param buflen The length of the buffer. + * @param out The output buffer. + * @return The number of Unicode values in the output buffer. + */ +static int try_convert(cppp::base::reiconv::iconv_t cd, unsigned char *buf, unsigned int buflen, unsigned int *out) +{ + using namespace cppp::base::reiconv; + const char *inbuf = (const char *)buf; + std::size_t inbytesleft = buflen; + char *outbuf = (char *)out; + std::size_t outbytesleft = 3 * sizeof(unsigned int); + std::size_t result; + iconv(cd, nullptr, nullptr, nullptr, nullptr); + result = iconv(cd, (char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (result != (std::size_t)(-1)) + { + result = iconv(cd, nullptr, nullptr, &outbuf, &outbytesleft); + } + if (result == (std::size_t)(-1)) + { + if (errno == EILSEQ) { - static char msg[50]; - switch (buflen) - { - case 1: sprintf(msg,"0x%02X",buf[0]); break; - case 2: sprintf(msg,"0x%02X%02X",buf[0],buf[1]); break; - case 3: sprintf(msg,"0x%02X%02X%02X",buf[0],buf[1],buf[2]); break; - case 4: sprintf(msg,"0x%02X%02X%02X%02X",buf[0],buf[1],buf[2],buf[3]); break; - default: error("hexbuf", "Buflen out of range."); - } - return msg; + return -1; } - - static int try_do (iconv_t cd, unsigned char buf[], unsigned int buflen, unsigned int* out) + else if (errno == EINVAL) { - const char* inbuf = (const char*) buf; - size_t inbytesleft = buflen; - char* outbuf = (char*) out; - size_t outbytesleft = 3 * sizeof(unsigned int); - size_t result; - iconv(cd, nullptr, nullptr, nullptr, nullptr); - result = iconv(cd, (char**)&inbuf, &inbytesleft, &outbuf, &outbytesleft); - if (result != (size_t)(-1)) - { - result = iconv(cd, nullptr, nullptr, &outbuf, &outbytesleft); - } - if (result == (size_t)(-1)) - { - if (errno == EILSEQ) - { - return -1; - } - else if (errno == EINVAL) - { - return 0; - } - else - { - fprintf(stderr, "%s: Iconv error.", hexbuf(buf, buflen)); - error("table-from", "Iconv error."); - } - } - else if (result > 0) /* ignore conversions with transliteration */ - { - return -1; - } - else - { - if (inbytesleft != 0) - { - fprintf(stderr, "%s: inbytes = %ld, outbytes = %ld\n", hexbuf(buf, buflen), (long)(buflen - inbytesleft), (long)(3 * sizeof(unsigned int) - outbytesleft)); - error("table-from", "Iconv error."); - } - return (3 * sizeof(unsigned int) - outbytesleft) / sizeof(unsigned int); - } return 0; } - - /* Returns the out[] buffer as a Unicode value, formatted as 0x%04X. */ - static const char* ucs4_decode (const unsigned int* out, unsigned int outlen) + else { - static char hexbuf[21]; - char* p = hexbuf; - while (outlen > 0) - { - if (p > hexbuf) - *p++ = ' '; - sprintf (p, "0x%04X", out[0]); - out += 1; outlen -= 1; - if (bmp_only && strlen(p) > 6) - return nullptr; - p += strlen(p); - } - return hexbuf; + std::cerr << hexbuf(buf, buflen) << ": Iconv error." << "\n"; + error("table-from", "Iconv error."); } - } - - void table_from (const std::string& save_file_path, const std::string& charset) + else if (result > 0) /* Ignore conversions with transliteration. */ { - using namespace _table_from; - - save_file = fopen(save_file_path.c_str(), "w"); - if (save_file == nullptr) + return -1; + } + else + { + if (inbytesleft != 0) { - error("table-from", "Can't open save file."); + std::cerr << hexbuf(buf, buflen) << ": inbytes = " << (long)(buflen - inbytesleft); + std::cerr << ", outbytes = " << (long)(3 * sizeof(unsigned int) - outbytesleft) << "\n"; + error("table-from", "Iconv error."); } + return (3 * sizeof(unsigned int) - outbytesleft) / sizeof(unsigned int); + } + return 0; +} - iconv_t cd; - int search_depth; - - cd = iconv_open("UCS-4-INTERNAL", charset.c_str(), true); - if (cd == (iconv_t)(-1)) +/** + * @brief Returns the out[] buffer as a Unicode value, formatted as 0x%04X. + * @param out The out buffer. + * @param outlen The length of the out buffer. + * @return The Unicode value. + */ +static const char *ucs4_decode(const unsigned int *out, unsigned int outlen, bool bmp_only) +{ + static char hexbuf[21]; + char *p = hexbuf; + while (outlen > 0) + { + if (p > hexbuf) { - error("iconv_open"," Iconv open error."); + *p++ = ' '; } + std::sprintf(p, "0x%04X", out[0]); + out += 1; + outlen -= 1; + if (bmp_only && std::strlen(p) > 6) + { + return nullptr; + } + p += std::strlen(p); + } + return hexbuf; +} - /* When testing UTF-8, stop at 0x10000, otherwise the output file gets too - big. */ - bmp_only = (charset == "UTF-8"); - search_depth = (bmp_only ? 3 : 4); - +/** + * @brief Generate the table. + * @param cd The cppp-reiconv handle. + * @param i The index buffer. + * @param index The index for generation. 0-3. + * @param out The out buffer. + * @param buf The index buffer. + * @param bmp_only When true, ignore conversions outside Unicode plane 0. + * @param save_file The save file stream. + */ +inline void run_table_from_test(cppp::base::reiconv::iconv_t cd, unsigned int (&i)[4], std::size_t index, + unsigned int (&out)[3], unsigned char (&buf)[4], bool bmp_only, + std::ofstream &save_file) +{ + int result; + for (i[index] = 0; i[index] < 0x100; i[index]++) + { + buf[index] = i[index]; + result = try_convert(cd, buf, index + 1, out); + if (result > 0) { - unsigned int out[3]; - unsigned char buf[4]; - unsigned int i0, i1, i2, i3; - int result; - for (i0 = 0; i0 < 0x100; i0++) + const char *unicode = ucs4_decode(out, result, bmp_only); + if (unicode != nullptr) { - buf[0] = i0; - result = try_do(cd, buf, 1, out); - if (result < 0) - { - - } - else if (result > 0) + save_file << "0x"; + for (std::size_t j = 0; j < index + 1; j++) { - const char* unicode = ucs4_decode(out, result); - if (unicode != nullptr) - { - fprintf(save_file, "0x%02X\t%s\n", i0, unicode); - } - } - else - { - for (i1 = 0; i1 < 0x100; i1++) - { - buf[1] = i1; - result = try_do(cd, buf, 2, out); - if (result < 0) - { - - } - else if (result > 0) - { - const char* unicode = ucs4_decode(out,result); - if (unicode != nullptr) - { - fprintf(save_file, "0x%02X%02X\t%s\n", i0, i1, unicode); - } - } - else - { - for (i2 = 0; i2 < 0x100; i2++) - { - buf[2] = i2; - result = try_do(cd, buf, 3, out); - if (result < 0) - { - - } - else if (result > 0) - { - const char* unicode = ucs4_decode(out, result); - if (unicode != nullptr) - { - fprintf(save_file, "0x%02X%02X%02X\t%s\n", i0, i1, i2, unicode); - } - } - else if (search_depth > 3) - { - for (i3 = 0; i3 < 0x100; i3++) - { - buf[3] = i3; - result = try_do(cd, buf, 4, out); - if (result < 0) - { - - } - else if (result > 0) - { - const char* unicode = ucs4_decode(out, result); - if (unicode != nullptr) - { - fprintf(save_file, "0x%02X%02X%02X%02X\t%s\n", i0, i1, i2, i3, unicode); - } - } - else - { - fprintf(stderr, "%s: incomplete byte sequence\n", hexbuf(buf, 4)); - error("table-from", "Incomplete byte sequence."); - } - } - } - } - } - } + save_file << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << (int)i[j]; } + save_file << "\t" << unicode << "\n"; } } - - iconv_close(cd); - - if (fclose(save_file) < 0) + else if (result == 0) { - error("table-from", "IO Error."); + if (index >= 3) + { + std::cerr << hexbuf(buf, 4) << ": Incomplete byte sequence" << "\n"; + error("table-from", "Incomplete byte sequence."); + } + run_table_from_test(cd, i, index + 1, out, buf, bmp_only, save_file); } } +} + +/** + * @brief Create a table from CHARSET to Unicode. + * @param save_file_path The path of the save file. + * @param charset The CHARSET. + */ +inline void table_from(const std::filesystem::path &save_file_path, const std::string &charset) +{ + using namespace cppp::base::reiconv; + + /* If nonzero, ignore conversions outside Unicode plane 0. */ + bool bmp_only = (charset == "UTF-8"); + int search_depth = (bmp_only ? 3 : 4); + + std::ofstream save_file{save_file_path, std::ios::out | std::ios::trunc}; + if (!save_file.good()) + { + error(save_file_path, "Cannot open save file."); + } + + iconv_t cd = iconv_open("UCS-4-INTERNAL", charset.c_str(), true); + if (cd == (iconv_t)(-1)) + { + error("iconv_open", " Iconv open error."); + } + unsigned int out[3]; + unsigned char buf[4]; + unsigned int i[4]; + int result; + run_table_from_test(cd, i, 0, out, buf, bmp_only, save_file); + iconv_close(cd); + save_file.close(); } diff --git a/tests/table-to.hpp b/tests/table-to.hpp index d812d344..10f9b562 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -1,122 +1,116 @@ -/* Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -/* Create a table from Unicode to CHARSET. */ +/** + * @file table-to.hpp + * @brief Create a table from Unicode to CHARSET. + * @author ChenPi11 + * @copyright Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ #pragma once #include "_iconv.hpp" -#include +#include #include #include -#include - -#include "throw_error.hpp" +#include +#include -using namespace cppp::base::reiconv; +#include "output.hpp" -namespace test +inline void table_to(const std::filesystem::path &save_file_path, const std::string &charset) { - namespace _table_to + using namespace cppp::base::reiconv; + + // When testing UTF-8, stop at 0x10000, otherwise the output file gets too big. + int bmp_only = (charset == "UTF-8"); + + std::ofstream save_file{save_file_path, std::ios::out | std::ios::trunc}; + if (!save_file.good()) { - FILE* save_file; + error(save_file_path, "Cannot open save file."); } - void table_to(const std::string& save_file_path, const std::string& charset) + iconv_t cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL", true); + if (cd == (iconv_t)(-1)) { - using namespace _table_to; + error("iconv_open", "Iconv open error."); + } - save_file = fopen(save_file_path.c_str(), "w"); - if (save_file == nullptr) + unsigned int i; + unsigned char buf[10]; + for (i = 0; i < (bmp_only ? 0x10000 : 0x110000); i++) + { + unsigned int in = i; + const char *inbuf = (const char *)∈ + size_t inbytesleft = sizeof(unsigned int); + char *outbuf = (char *)buf; + size_t outbytesleft = sizeof(buf); + size_t result; + size_t result2 = 0; + iconv(cd, nullptr, nullptr, nullptr, nullptr); + result = iconv(cd, (char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (result != (size_t)(-1)) { - error("table-to", "Cannot open save file."); + result2 = iconv(cd, nullptr, nullptr, &outbuf, &outbytesleft); } - - iconv_t cd; - int bmp_only; - - cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL", true); - if (cd == (iconv_t)(-1)) + if (result == (size_t)(-1) || result2 == (size_t)(-1)) { - error("iconv_open", "Iconv open error."); + if (errno != EILSEQ) + { + std::cerr << "0x"; + std::cerr << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << i; + std::cerr << ": Iconv error." << "\n"; + error("table-to", "Iconv error."); + } } - - /* When testing UTF-8, stop at 0x10000, otherwise the output file gets too - big. */ - bmp_only = (charset == "UTF-8"); - + else if (result == 0) /* Ignore conversions with transliteration. */ { - unsigned int i; - unsigned char buf[10]; - for (i = 0; i < (bmp_only ? 0x10000 : 0x110000); i++) + if (inbytesleft == 0 && outbytesleft < sizeof(buf)) { - unsigned int in = i; - const char* inbuf = (const char*) ∈ - size_t inbytesleft = sizeof(unsigned int); - char* outbuf = (char*)buf; - size_t outbytesleft = sizeof(buf); - size_t result; - size_t result2 = 0; - iconv(cd, nullptr, nullptr, nullptr, nullptr); - result = iconv(cd, (char**)&inbuf, &inbytesleft, &outbuf, &outbytesleft); - if (result != (size_t)(-1)) - { - result2 = iconv(cd, nullptr, nullptr, &outbuf, &outbytesleft); - } - if (result == (size_t)(-1) || result2 == (size_t)(-1)) - { - if (errno != EILSEQ) - { - fprintf(stderr, "0x%02X: iconv error.\n", i); - error("iconv", "Iconv error."); - } - } - else if (result == 0) /* ignore conversions with transliteration */ + unsigned int jmax = sizeof(buf) - outbytesleft; + unsigned int j; + save_file << "0x"; + for (j = 0; j < jmax; j++) { - if (inbytesleft == 0 && outbytesleft < sizeof(buf)) - { - unsigned int jmax = sizeof(buf) - outbytesleft; - unsigned int j; - fprintf(save_file, "0x"); - for (j = 0; j < jmax; j++) - { - fprintf(save_file, "%02X",buf[j]); - } - fprintf(save_file, "\t0x%04X\n", i); - } - else if (inbytesleft == 0 && i >= 0xe0000 && i < 0xe0080) - { - /* Language tags may silently be dropped. */ - } - else - { - fprintf(stderr, "0x%02X: inbytes = %ld, outbytes = %ld\n", i, (long)(sizeof(unsigned int) - inbytesleft), (long)(sizeof(buf) - outbytesleft)); - error("iconv", "Iconv error."); - } + save_file << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << (int)buf[j]; } + save_file << "\t0x"; + save_file << std::hex << std::uppercase << std::setw(4) << std::setfill('0') << i << "\n"; + } + else if (inbytesleft == 0 && i >= 0xe0000 && i < 0xe0080) + { + /* Language tags may silently be dropped. */ + } + else + { + std::cerr << "0x"; + std::cerr << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << i; + std::cerr << ": inbytes = " << (long)(sizeof(unsigned int) - inbytesleft); + std::cerr << ", outbytes = " << (long)(sizeof(buf) - outbytesleft) << "\n"; + error("iconv", "Iconv error."); } } + } - iconv_close(cd); + iconv_close(cd); - if (fclose(save_file) < 0) - { - error("fclose", "IO error."); - } - } + save_file.close(); } diff --git a/tests/throw_error.hpp b/tests/throw_error.hpp deleted file mode 100644 index 90f8a22a..00000000 --- a/tests/throw_error.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2023 The C++ Plus Project. - * This file is part of the cppp-reiconv Library. - * - * The cppp-reiconv Library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv Library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv Library; see the file LICENSE. - * If not, see . - */ - -/* - Throw error for test. -*/ - -#pragma once - -#include - -void error_(const std::string& op, const std::string& msg, const std::string& file, size_t line) -{ - int saved_errno = errno; - std::cerr << "\033[31m"; - if(saved_errno) - { - perror(op.c_str()); - } - else - { - std::cerr << op << ": "; - } - std::cerr << msg << std::endl; - std::cerr << file << ":" << line << std::endl; - std::cerr << "\033[0m"; - if(saved_errno) - { - exit(saved_errno); - } - else - { - exit(1); - } -} - -#define error(op, msg) error_(op, msg, __FILE__, __LINE__) - -void success(const std::string& op, const std::string& msg) -{ - std::cerr << "\033[32m"; - std::cerr << op << ": "; - std::cerr << msg << std::endl; - std::cerr << "\033[0m"; -} diff --git a/tests/uniq-u.hpp b/tests/uniq-u.hpp index bd7431ca..18ee264d 100644 --- a/tests/uniq-u.hpp +++ b/tests/uniq-u.hpp @@ -1,269 +1,270 @@ -/* uniq -- remove duplicate lines from a sorted file - Copyright (C) 86, 91, 1995-1998, 1999, 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 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, see . */ +/** + * @file uniq-u.hpp + * @brief Remove duplicate lines from a sorted file. + * @author Richard Stallman, David MacKenzie, Bruno Haible, ChenPi11 + * @copyright Copyright (C) 86, 91, 1995-1998, 1999, 2012 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 ChenPi11 + * @license GPL-3.0-or-later + */ +/* + * 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 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, see . + */ /* Written by Richard Stallman and David MacKenzie. */ /* 2000-03-22 Trimmed down to the case of "uniq -u" by Bruno Haible. */ /* 2023-08-22 Change it to a C++ header for reiconv-test by ChenPi11. */ /* 2023-10-08 Use '#pragma once' for header. */ +/* 2024-10-26 Refactored with C++20 features by ChenPi11. */ #pragma once -#include #include #include +#include -namespace _uniq_u +#include "output.hpp" + +/** + * @brief Allocate N bytes of memory dynamically, with error checking. + * @param n The number of bytes to allocate. + * @return The pointer to the allocated memory. + */ +inline void *xmalloc(size_t n) { - static void xalloc_fail (void) + void *p = std::malloc(n); + ; + if (p == nullptr) { error("xmalloc", "uniq-u: virtual memory exhausted."); } + return p; +} - /* Allocate N bytes of memory dynamically, with error checking. */ - - void* xmalloc(size_t n) - { - void *p; - - p = malloc(n); - if (p == 0) - { - xalloc_fail(); - } - return p; - } - - /* Change the size of an allocated block of memory P to N bytes, - with error checking. - If P is nullptr, run xmalloc. */ - - void* xrealloc(void* p, size_t n) +/** + * @brief Change the size of an allocated block of memory P to N bytes, with error checking. + * @note If P is nullptr, run xmalloc. + * @param p The pointer to the allocated memory. + * @param n The number of bytes to allocate. + * @return The pointer to the allocated memory. + */ +inline void *xrealloc(void *p, size_t n) +{ + p = std::realloc(p, n); + if (p == 0) { - p = realloc(p, n); - if (p == 0) - { - xalloc_fail(); - } - return p; + error("xrealloc", "uniq-u: virtual memory exhausted."); } + return p; +} - /* A 'struct linebuffer' holds a line of text. */ - - struct linebuffer - { - size_t size; /* Allocated. */ - size_t length; /* Used. */ - char *buffer; - }; +/** + * @brief A 'struct linebuffer' holds a line of text. + */ +struct linebuffer +{ + std::size_t size; // Allocated. + std::size_t length; // Used. + char *buffer; +}; + +/** + * @brief Initialize linebuffer LINEBUFFER for use. + * @param linebuffer The linebuffer to initialize. + */ +inline void initbuffer(struct linebuffer *linebuffer) +{ + linebuffer->length = 0; + linebuffer->size = 200; + linebuffer->buffer = (char *)xmalloc(linebuffer->size); +} - /* Initialize linebuffer LINEBUFFER for use. */ +/** + * @brief Read an arbitrarily long line of text from STREAM into LINEBUFFER. + * @note Keep the newline; append a newline if it's the last line of a file + * that ends in a non-newline character. Do not null terminate. + * @param linebuffer The linebuffer to read into. + * @param stream The stream to read from. + * @return LINEBUFFER, except at end of file return 0. + */ +static struct linebuffer *readline(struct linebuffer *linebuffer, FILE *stream) +{ + int c; + char *buffer = linebuffer->buffer; + char *p = linebuffer->buffer; + char *end = buffer + linebuffer->size - 1; /* Sentinel. */ - static void initbuffer(struct linebuffer* linebuffer) + if (std::feof(stream) || std::ferror(stream)) { - linebuffer->length = 0; - linebuffer->size = 200; - linebuffer->buffer = (char *)xmalloc(linebuffer->size); + return 0; } - /* Read an arbitrarily long line of text from STREAM into LINEBUFFER. - Keep the newline; append a newline if it's the last line of a file - that ends in a non-newline character. Do not null terminate. - Return LINEBUFFER, except at end of file return 0. */ - - static struct linebuffer* readline (struct linebuffer* linebuffer, FILE* stream) + do { - int c; - char* buffer = linebuffer->buffer; - char* p = linebuffer->buffer; - char* end = buffer + linebuffer->size - 1; /* Sentinel. */ - - if (feof (stream) || ferror (stream)) + c = std::getc(stream); + if (c == EOF) { - return 0; - } - - do - { - c = getc(stream); - if (c == EOF) + if (p == buffer) { - if (p == buffer) - { - return 0; - } - if (p[-1] == '\n') - { - break; - } - c = '\n'; + return 0; } - if (p == end) + if (p[-1] == '\n') { - linebuffer -> size *= 2; - buffer = (char *)xrealloc(buffer, linebuffer -> size); - p = p - linebuffer -> buffer + buffer; - linebuffer -> buffer = buffer; - end = buffer + linebuffer -> size - 1; + break; } - *p++ = c; + c = '\n'; } - while (c != '\n'); + if (p == end) + { + linebuffer->size *= 2; + buffer = (char *)xrealloc(buffer, linebuffer->size); + p = p - linebuffer->buffer + buffer; + linebuffer->buffer = buffer; + end = buffer + linebuffer->size - 1; + } + *p++ = c; + } while (c != '\n'); - linebuffer -> length = p - buffer; - return linebuffer; - } + linebuffer->length = p - buffer; + return linebuffer; +} - /* Free linebuffer LINEBUFFER's data. */ - static void freebuffer (struct linebuffer *linebuffer) - { - free (linebuffer -> buffer); - } +/** + * @brief Free linebuffer LINEBUFFER's data. + * @param linebuffer The linebuffer to free. + */ +inline void freebuffer(struct linebuffer *linebuffer) +{ + std::free(linebuffer->buffer); +} - /* Undefine, to avoid warning about redefinition on some systems. */ - #undef min - template - constexpr inline const T& min(const T& a, const T& b) +/** + * @brief Return zero if two strings OLD and NEW match, nonzero if not. + * @note OLD and NEW point not to the beginnings of the lines but rather + * @note to the beginnings of the fields to compare. + * @param old The old string. + * @param new_one The new string. + * @param oldlen The length of the old string. + * @param newlen The length of the new string. + * @return Zero if two strings OLD and NEW match, nonzero if not. + */ +inline int different(const char *old, const char *new_one, size_t oldlen, size_t newlen) +{ + int order = std::memcmp(old, new_one, (oldlen < newlen) ? oldlen : newlen); + return (order == 0) ? (oldlen - newlen) : order; +} + +/** + * @brief Output the line in linebuffer LINE to stream STREAM. + * @param line The linebuffer to output. + * @param stream The stream to output to. + * @param linecount The number of times that the line occurred. + */ +inline void writeline(const struct linebuffer *line, FILE *stream, int linecount) +{ + if (linecount == 0) { - return (a < b) ? a : b; + std::fwrite(line->buffer, 1, line->length, stream); } +} - /* Return zero if two strings OLD and NEW match, nonzero if not. - OLD and NEW point not to the beginnings of the lines - but rather to the beginnings of the fields to compare. - OLDLEN and NEWLEN are their lengths. */ +/** + * @brief Process input file INFILE with output to OUTFILE. + * @param infile The input file. + * @param outfile The output file. + */ +static void uniq_u(const std::filesystem::path& infile, std::filesystem::path& outfile) +{ + struct linebuffer *exch; + char *prevfield, *thisfield; + size_t prevlen, thislen; + int match_count = 0; - static int different(const char *old, const char *new_one, size_t oldlen, size_t newlen) + FILE *istream = std::fopen(infile.c_str(), "r"); + if (istream == nullptr) { - int order; - - order = memcmp(old, new_one, min(oldlen, newlen)); + std::cerr << "uniq-u: Error while opening " << infile << std::endl; + error("fopen", "File open error."); + } - if (order == 0) - { - return oldlen - newlen; - } - return order; + FILE *ostream = std::fopen(outfile.c_str(), "w"); + if (ostream == nullptr) + { + std::cerr << "uniq-u: Error while opening " << outfile << std::endl; + error("fopen", "File open error."); } - /* Output the line in linebuffer LINE to stream STREAM - provided that the switches say it should be output. - If requested, print the number of times it occurred, as well; - LINECOUNT + 1 is the number of times that the line occurred. */ + struct linebuffer lb1; + struct linebuffer lb2; + struct linebuffer *thisline = &lb1; + struct linebuffer *prevline = &lb2; - static void writeline(const struct linebuffer* line, FILE* stream, int linecount) + initbuffer(thisline); + initbuffer(prevline); + + if (readline(prevline, istream) == 0) { - if (linecount == 0) - { - fwrite (line -> buffer, 1, line -> length, stream); - } + goto closefiles; } + prevfield = prevline->buffer; + prevlen = prevline->length; - /* Process input file INFILE with output to OUTFILE. - If either is "-", use the standard I/O stream for it instead. */ - static void check_file(const char* infile, const char* outfile) + while (!std::feof(istream)) { - FILE *istream; - FILE *ostream; - struct linebuffer lb1, lb2; - struct linebuffer *thisline, *prevline, *exch; - char *prevfield, *thisfield; - size_t prevlen, thislen; - int match_count = 0; - - istream = fopen(infile, "r"); - if (istream == nullptr) + int match; + if (readline(thisline, istream) == 0) { - fprintf(stderr, "uniq-u: error opening %s\n", infile); - error("fopen", "File open error."); + break; } + thisfield = thisline->buffer; + thislen = thisline->length; + match = !different(thisfield, prevfield, thislen, prevlen); - ostream = fopen (outfile, "w"); - if (ostream == nullptr) - { - fprintf(stderr, "uniq-u: error opening %s\n", outfile); - error("fopen", "File open error."); - } - - thisline = &lb1; - prevline = &lb2; - - initbuffer(thisline); - initbuffer(prevline); - - if (readline(prevline, istream) == 0) + if (match) { - goto closefiles; + ++match_count; } - prevfield = prevline -> buffer; - prevlen = prevline -> length; - while (!feof(istream)) + if (!match) { - int match; - if (readline(thisline, istream) == 0) - { - break; - } - thisfield = thisline -> buffer; - thislen = thisline -> length; - match = !different(thisfield, prevfield, thislen, prevlen); - - if (match) - { - ++match_count; - } - + writeline(prevline, ostream, match_count); + exch = prevline; + prevline = thisline; + thisline = exch; + prevfield = thisfield; + prevlen = thislen; if (!match) { - writeline(prevline, ostream, match_count); - exch = prevline; - prevline = thisline; - thisline = exch; - prevfield = thisfield; - prevlen = thislen; - if (!match) - { - match_count = 0; - } + match_count = 0; } } + } - writeline(prevline, ostream, match_count); - - closefiles: - if (ferror(istream) || fclose(istream) == EOF) - { - fprintf (stderr, "uniq-u: error reading %s\n", infile); - error("fclose", "IO Error."); - } + writeline(prevline, ostream, match_count); - if (ferror(ostream) || fclose(ostream) == EOF) - { - fprintf(stderr, "uniq-u: error writing %s\n", outfile); - error("fclose", "IO Error."); - } +closefiles: + if (std::ferror(istream) || std::fclose(istream) == EOF) + { + std::cerr << "uniq-u: Error while reading " << infile << std::endl; + error("fclose", "I/O Error."); + } - freebuffer(&lb1); - freebuffer(&lb2); + if (ferror(ostream) || fclose(ostream) == EOF) + { + std::cerr << "uniq-u: Error while writing " << outfile << std::endl; + error("fclose", "I/O Error."); } -} -void uniq_u(const std::string& in_file, const std::string& out_file) -{ - using namespace _uniq_u; - - check_file(in_file.c_str(), out_file.c_str()); + freebuffer(&lb1); + freebuffer(&lb2); } diff --git a/tests/utils.hpp b/tests/utils.hpp index be9216eb..8e3304df 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -1,5 +1,11 @@ +/** + * @file utils.hpp + * @brief Utils for tests. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ /* - * Copyright (C) 2023 The C++ Plus Project. + * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,178 +23,188 @@ * If not, see . */ -/* - Utils for tests. -*/ - #pragma once +#include +#include +#include #include #include -#include #include +#include #include #include -#include #include -#if defined(_WIN32) || defined(_WIN64) - #include -#else - #include -#endif - -#include "throw_error.hpp" +#include "output.hpp" -// Compare 2 files difference but ignore CR. -void assert_compare_file(const std::string& path1, const std::string& path2) +using _Buffer = std::pair, std::size_t>; +class Buffer : public std::pair, std::size_t> { - std::ifstream file1(path1, std::ios::binary); - if (!file1.is_open()) - { - error(path1, path1 + " " + strerror(errno)); - } - std::ifstream file2(path2, std::ios::binary); - if (!file2.is_open()) - { - error(path2, path2 + " " + strerror(errno)); - } - - std::cerr << "Comparing " << path1 << " and " << path2 << " ..." << std::endl; +public: + std::string id; + Buffer() : std::pair, std::size_t>(), id("") {} + Buffer(std::shared_ptr first, std::size_t second, std::string id = "") + : std::pair, std::size_t>(first, second), id(id) {} + Buffer(const Buffer& buffer) : std::pair, std::size_t>(buffer), id(buffer.id) {} +}; - char file1_c; - char file2_c; - while(1) +/** + * @brief Dump a buffer to a file. + */ +inline void dump_data(const Buffer &buffer, const std::filesystem::path &output_file_path) +{ + std::ofstream output_file{output_file_path, std::ios::binary | std::ios::trunc}; + if (!output_file.good()) { - if(file1.get(file1_c).eof()) { file1_c = EOF; } - if(file1_c == '\r') { continue; } - - if(file2.get(file2_c).eof()) { file2_c = EOF; } - if(file2_c == '\r') { file1.unget(); continue; } - - if(file1_c != file2_c) - { - errno = 0; - error("assert_compare_file", "The files are different."); - } - if(file1_c == EOF && file2_c == EOF) { break; } + error(output_file_path, "Unable to open output file."); } - success("assert_compare_file", "The file content is the same."); - + + output_file.write((char *)buffer.first.get(), buffer.second); + output_file.close(); } -// Get file size. -size_t get_file_size(const std::string& file_path) +/** + * @brief Compare two buffers. + * @param buffer1 The first buffer. + * @param buffer2 The second buffer. + */ +inline void compare_data(const Buffer &buffer1, const Buffer &buffer2) { - return std::filesystem::file_size(file_path); + if (buffer1.second != buffer2.second || std::memcmp(buffer1.first.get(), buffer2.first.get(), buffer1.second) != 0) + { + dump_data(buffer1, "buffer1.dump"); + dump_data(buffer2, "buffer2.dump"); + print_stderr("{} {}\n", colorize(buffer1.id, COLOR_RED | CONTROL_UNDERLINE), colorize(buffer2.id, COLOR_RED | CONTROL_UNDERLINE)); + error("compare_data", "The data is different."); + } + success("compare_data", "The data is the same."); } - -/* This code is not optimal, only for test. */ -// Read all data in a file. -std::vector read_all(const std::string& input_file_path) +/** + * @brief Read all content from a file. + * @param input_file_path The file path. + * @return The content of the file and its size. + */ +inline Buffer read_all(const std::filesystem::path &input_file_path) { - std::ifstream input_file(input_file_path); - if (!input_file.is_open()) + std::ifstream input_file{input_file_path, std::ios::binary}; + if (!input_file.good()) { error(input_file_path, "Unable to open input file."); } - size_t size = std::filesystem::file_size(input_file_path); - std::vector buffer(size); - input_file.read(buffer.data(), size); - + std::size_t size = std::filesystem::file_size(input_file_path); + auto buffer = std::make_shared(size); + input_file.read((char *)buffer.get(), size); input_file.close(); - return buffer; + return {std::move(buffer), size, input_file_path.string()}; } -// Check if a file exists. -bool file_exists(const std::string& file_path) +/** + * @brief Compare two files. + * @param file1 The first file. + * @param file2 The second file. + */ +inline void compare_files(const std::filesystem::path &file1, const std::filesystem::path &file2) { - return std::filesystem::exists(file_path); + auto buffer1 = read_all(file1); + auto buffer2 = read_all(file2); + compare_data(buffer1, buffer2); } -// Remove file. -bool remove_file(const std::string& file_path) +/** + * @brief Write all content to a file. + * @param output_file_path The file path. + * @param buffer The content to write. + * @param append Append to the file. + */ +inline void write_all(const std::filesystem::path &output_file_path, const std::string &buffer, bool append = false) { - return std::filesystem::remove(file_path); -} + std::ofstream output_file{output_file_path, + std::ios::binary | std::ios::ate | (append ? std::ios::app : std::ios::trunc)}; + if (!output_file.good()) + { + error(output_file_path, "Unable to open output file."); + } + output_file << buffer; + output_file.close(); +} -// Merge files. -void merge_files(const std::vector& files, const std::string& output_file_path) +/** + * @brief Write all content to a file. + * @param output_file_path The file path. + * @param buffer The content to write. + * @param size The size of the content. + * @param append Append to the file. + */ +inline void write_all(const std::filesystem::path &output_file_path, const std::shared_ptr &buffer, + std::size_t size, bool append = false) { - std::ofstream output_file(output_file_path, std::ios::trunc); - - if (!output_file.is_open()) + std::ofstream output_file{output_file_path, + std::ios::binary | std::ios::ate | (append ? std::ios::app : std::ios::trunc)}; + if (!output_file.good()) { error(output_file_path, "Unable to open output file."); } - - for (const std::string& file : files) - { - std::ifstream input_file(file); - - if (!input_file.is_open()) - { - error(file, "Unable to open input file."); - } - output_file << input_file.rdbuf() << std::endl; - input_file.close(); - } - + + output_file << buffer; output_file.close(); } -// Copy file. -void copy_file(const std::string& from, const std::string& to) +/** + * @brief Write a string to a stream. + * @param output The stream. + * @param buffer The string. + */ +inline void write_stream(std::ostream& output, const std::string_view buffer) { - std::ifstream input_file(from, std::ios::binary); - std::ofstream output_file(to, std::ios::binary | std::ios::trunc); - - if (input_file.is_open() && output_file.is_open()) + output.write(buffer.data(), buffer.size()); + if (!output.good()) { - output_file << input_file.rdbuf(); - input_file.close(); - output_file.close(); - } - else - { - error(from + " " + to, "Unable to open file."); + error("write_stream", "Unable to write to stream."); } } -// Copy file to a stream. -void cat(const std::string& input_file_path, FILE* dstfile) +/** + * @brief Merge files into one. + * @param files The files to merge. + * @param output_file_path The output file path. + */ +inline void merge_files(const std::vector &files, const std::filesystem::path &output_file_path) { - FILE* srcfile; - char buffer[1024]; - size_t len = 0; - srcfile = fopen(input_file_path.c_str(), "r"); - if (srcfile == nullptr) - { - error(input_file_path, "Error opening source file"); - } - while ((len = fread(buffer, 1, sizeof(buffer), srcfile)) > 0) + std::ofstream output_file{output_file_path, std::ios::binary | std::ios::trunc}; + if (!output_file.good()) { - fwrite(buffer, 1, len, dstfile); + error(output_file_path, "Unable to open output file."); } - fclose(srcfile); -} -// Move file. -void mv(const std::string& from, const std::string& to) -{ - if (rename(from.c_str(), to.c_str()) != 0) + for (const auto &file : files) { - error(from + " " + to, "Unable to move file."); + std::ifstream input_file{file, std::ios::binary}; + if (!input_file.good()) + { + error(file, "Unable to open input file."); + } + + output_file << input_file.rdbuf() << std::endl; + input_file.close(); } + + output_file.close(); } -// Replace A to B in string src. -std::string replace(const std::string& src, const std::string& from, const std::string& to) +/** + * @brief Replace A to B in string src. + * @param src The source string. + * @param from The string to replace. + * @param to The string to replace with. + * @return The replaced string. + */ +inline std::string replace(const std::string &src, const std::string &from, const std::string &to) { std::string result = src; size_t pos = 0; @@ -200,4 +216,55 @@ std::string replace(const std::string& src, const std::string& from, const std:: } return result; -} \ No newline at end of file +} + +constexpr std::uint32_t _fromhex(char hex) noexcept +{ + return (hex >= '0' && hex <= '9') ? hex - '0' : hex - 'A' + 10; +} + +constexpr std::uint32_t _fromhex(char hex1, char hex2) +{ + return _fromhex(hex1) << 4 | _fromhex(hex2); +} + +/** + * @brief Check if the system is big endian. + * @return True if the system is big endian, false otherwise. + */ +inline bool is_big_endian() noexcept +{ + return *reinterpret_cast("\0\x01") == 1; +} + +/** + * @brief Convert a hex string to a number. + * @param hex The hex string. + * @return The number. + */ +inline std::uint64_t fromhex(std::string hex) +{ + if (hex.size() % 2 != 0) + { + hex.insert(hex.begin(), '0'); + } + std::size_t x = 0; + for (std::size_t i = 0; i < hex.size(); i += 2) + { + hex[i] = std::toupper(hex[i]); + hex[i + 1] = std::toupper(hex[i + 1]); + if (!std::isxdigit(hex[i]) || !std::isxdigit(hex[i + 1])) + { + throw std::invalid_argument("Invalid hex: " + hex); + } + if (is_big_endian()) + { + x |= _fromhex(hex[i], hex[i + 1]) << (4 * i); + } + else + { + x |= _fromhex(hex[i], hex[i + 1]) << (4 * (hex.size() - i - 2)); + } + } + return x; +} diff --git a/tools/check-encodings.cpp b/tools/check-encodings.cpp index 67cb5b57..2b975dbe 100644 --- a/tools/check-encodings.cpp +++ b/tools/check-encodings.cpp @@ -64,5 +64,5 @@ int main(int argc, char *argv[]) #include "encodings.h.snippet" - return 0; + return EXIT_SUCCESS; } diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index d39204d0..db3f88e7 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The C++ Plus Project. + * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -19,27 +19,30 @@ /* Creates the aliases.gperf table. */ -// There is an old saying in China: If a code can work, do not change it. +#include +#include +#include +#include +#include -#include - -static void emit_alias(FILE* out, const char* alias, const char* c_name) +static void emit_alias(std::ostream &out, const char *alias, const char *c_name) { - /* Output alias in upper case. */ const char *s = alias; for (; *s; s++) { - unsigned char c = *(unsigned char*)s; + unsigned char c = *(unsigned char *)s; if (c >= 0x80) - exit(1); - if (c >= 'a' && c <= 'z') - c -= 'a' - 'A'; - putc(c, out); + { + std::fprintf(stderr, "Error: non-ASCII character in alias '%s'\n", alias); + exit(EXIT_FAILURE); + } + c = std::toupper(c); + out.put(c); } - fprintf(out, ", ei_%s\n", c_name); + out << ", ei_" << c_name << std::endl; } -static void emit_encoding(FILE* out, const char* const* names, size_t n, const char* c_name) +static void emit_encoding(std::ofstream &out, const char *const *names, size_t n, const char *c_name) { for (; n > 0; names++, n--) { @@ -47,55 +50,55 @@ static void emit_encoding(FILE* out, const char* const* names, size_t n, const c } } -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { - char* aliases_file_name; - FILE* aliases_file; + std::string aliases_file_name; if (argc != 2) { - fprintf(stderr, "Usage: %s aliases.gperf\n", argv[0]); - return 1; + std::fprintf(stderr, "Usage: %s aliases-file\n", argv[0]); + return EXIT_FAILURE; } aliases_file_name = argv[1]; - aliases_file = fopen(aliases_file_name, "wb"); - if (aliases_file == nullptr) + std::ofstream aliases_file{aliases_file_name, std::ios::out | std::ios::trunc}; + + if (!aliases_file.good()) { - fprintf(stderr, "Could not open '%s' for writing\n", aliases_file_name); - return 1; + std::perror(aliases_file_name.c_str()); + return EXIT_FAILURE; } - fprintf(aliases_file, "struct alias { int name; unsigned int encoding_index; };\n"); - fprintf(aliases_file, "%%struct-type\n"); - fprintf(aliases_file, "%%language=C++\n"); - fprintf(aliases_file, "%%define hash-function-name aliases_hash\n"); - fprintf(aliases_file, "%%define lookup-function-name aliases_lookup\n"); - fprintf(aliases_file, "%%7bit\n"); - fprintf(aliases_file, "%%readonly-tables\n"); - fprintf(aliases_file, "%%global-table\n"); - fprintf(aliases_file, "%%define word-array-name aliases\n"); - fprintf(aliases_file, "%%pic\n"); - fprintf(aliases_file, "%%%%\n"); + aliases_file << "struct alias { int name; unsigned int encoding_index; };\n"; + aliases_file << "%struct-type\n"; + aliases_file << "%language=C++\n"; + aliases_file << "%define hash-function-name aliases_hash\n"; + aliases_file << "%define lookup-function-name aliases_lookup\n"; + aliases_file << "%7bit\n"; + aliases_file << "%readonly-tables\n"; + aliases_file << "%global-table\n"; + aliases_file << "%define word-array-name aliases\n"; + aliases_file << "%pic\n"; + aliases_file << "%%" << std::endl; -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - { \ - static const char *const names[] = BRACIFY xxx_names; \ - emit_encoding(aliases_file, names, sizeof(names) / sizeof(names[0]), #xxx); \ +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + { \ + static const char *const names[] = BRACIFY xxx_names; \ + emit_encoding(aliases_file, names, sizeof(names) / sizeof(names[0]), #xxx); \ } #define DEFCODEPAGE(codepage, xxx) #define DEFINDEX(alias, index) -#define BRACIFY(...) \ - { \ - __VA_ARGS__ \ - } +#define BRACIFY(...) {__VA_ARGS__} #include "encodings.h.snippet" - if (ferror(aliases_file) || fclose(aliases_file)) + aliases_file.close(); + if (!aliases_file.good()) { - return 1; + std::perror(aliases_file_name.c_str()); + return EXIT_FAILURE; } - return 0; + + return EXIT_SUCCESS; } diff --git a/tools/genindexes.cpp b/tools/genindexes.cpp index b7c032d1..934d6675 100644 --- a/tools/genindexes.cpp +++ b/tools/genindexes.cpp @@ -21,28 +21,28 @@ #include #include -#include +#include #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, #define DEFCODEPAGE(codepage, xxx) #define DEFINDEX(alias, index) - enum - { - #include "encodings.h.snippet" - }; +enum +{ +#include "encodings.h.snippet" +}; #undef DEFINDEX #undef DEFCODEPAGE #undef DEFENCODING -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) { #xxx_index, ei_##xxx }, +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + {#xxx_index, ei_##xxx}, #define DEFCODEPAGE(codepage, xxx) #define DEFINDEX(alias, index) -std::map enum_data = -{ - #include "encodings.h.snippet" +std::unordered_map enum_data = { +#include "encodings.h.snippet" }; #undef DEFINDEX @@ -53,9 +53,8 @@ std::map enum_data = #define DEFCODEPAGE(codepage, xxx) #define DEFINDEX(alias, index) {#alias, #index}, -std::map aliases = -{ - #include "encodings.h.snippet" +std::unordered_map aliases = { +#include "encodings.h.snippet" }; #undef DEFINDEX @@ -68,11 +67,11 @@ int main() std::cout << "{\n"; std::cout << " enum class Encodings\n"; std::cout << " {\n"; - for (auto& it : enum_data) + for (auto &it : enum_data) { std::cout << " " << it.first << " = " << it.second << ",\n"; } - for (auto& it : aliases) + for (auto &it : aliases) { std::cout << " " << it.first << " = " << it.second << ",\n"; } From cc718fee5daa9f9566c9952b7cb50de6029b9dc2 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 2 Nov 2024 19:21:35 +0800 Subject: [PATCH 43/77] Optimize tests suites. --- tests/table-from.hpp | 27 +++++++++--------- tests/table-to.hpp | 19 ++++++------- tests/uniq-u.hpp | 9 +++--- tests/utils.hpp | 66 +++++++++++++++++++++++++++++++++++--------- 4 files changed, 78 insertions(+), 43 deletions(-) diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 9c4dbea3..00f0c4be 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -32,11 +32,9 @@ #include #include #include -#include -#include -#include #include "output.hpp" +#include "utils.hpp" /** * @brief Hex dump of a buffer. @@ -46,14 +44,13 @@ */ inline std::string hexbuf(unsigned char *buf, unsigned int buflen) { - std::ostringstream ss; - ss << "0x"; + std::string res{"0x"}; for (unsigned int i = 0; i < buflen; i++) { - ss << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << (int)buf[i]; + res += tohex(buf[i], 2); } - return ss.str(); + return res; } /** @@ -90,7 +87,7 @@ static int try_convert(cppp::base::reiconv::iconv_t cd, unsigned char *buf, unsi } else { - std::cerr << hexbuf(buf, buflen) << ": Iconv error." << "\n"; + print_stderr("hexbuf(): {}\n", hexbuf(buf, buflen)); error("table-from", "Iconv error."); } } @@ -102,8 +99,8 @@ static int try_convert(cppp::base::reiconv::iconv_t cd, unsigned char *buf, unsi { if (inbytesleft != 0) { - std::cerr << hexbuf(buf, buflen) << ": inbytes = " << (long)(buflen - inbytesleft); - std::cerr << ", outbytes = " << (long)(3 * sizeof(unsigned int) - outbytesleft) << "\n"; + print_stderr("{}: inbytes = {}, outbytes = {}\n", hexbuf(buf, buflen), std::to_string(buflen - inbytesleft), + std::to_string(3 * sizeof(unsigned int) - outbytesleft)); error("table-from", "Iconv error."); } return (3 * sizeof(unsigned int) - outbytesleft) / sizeof(unsigned int); @@ -163,19 +160,21 @@ inline void run_table_from_test(cppp::base::reiconv::iconv_t cd, unsigned int (& const char *unicode = ucs4_decode(out, result, bmp_only); if (unicode != nullptr) { - save_file << "0x"; + save_file.write("0x", 2); for (std::size_t j = 0; j < index + 1; j++) { - save_file << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << (int)i[j]; + write_stream(save_file, tohex(i[j], 2)); } - save_file << "\t" << unicode << "\n"; + write_stream(save_file, print_string("\t{}\n", unicode)); } } else if (result == 0) { if (index >= 3) { - std::cerr << hexbuf(buf, 4) << ": Incomplete byte sequence" << "\n"; + print_stderr("{}: Incomplete byte sequence" + "\n", + hexbuf(buf, 4)); error("table-from", "Incomplete byte sequence."); } run_table_from_test(cd, i, index + 1, out, buf, bmp_only, save_file); diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 10f9b562..9a9d0077 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -34,6 +34,7 @@ #include #include "output.hpp" +#include "utils.hpp" inline void table_to(const std::filesystem::path &save_file_path, const std::string &charset) { @@ -75,9 +76,7 @@ inline void table_to(const std::filesystem::path &save_file_path, const std::str { if (errno != EILSEQ) { - std::cerr << "0x"; - std::cerr << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << i; - std::cerr << ": Iconv error." << "\n"; + print_stderr("0x{}: Iconv error.\n", tohex(in, 4)); error("table-to", "Iconv error."); } } @@ -87,13 +86,12 @@ inline void table_to(const std::filesystem::path &save_file_path, const std::str { unsigned int jmax = sizeof(buf) - outbytesleft; unsigned int j; - save_file << "0x"; + save_file.write("0x", 2); for (j = 0; j < jmax; j++) { - save_file << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << (int)buf[j]; + write_stream(save_file, tohex(buf[j], 2)); } - save_file << "\t0x"; - save_file << std::hex << std::uppercase << std::setw(4) << std::setfill('0') << i << "\n"; + write_stream(save_file, print_string("\t0x{}\n", tohex(in, 4))); } else if (inbytesleft == 0 && i >= 0xe0000 && i < 0xe0080) { @@ -101,10 +99,9 @@ inline void table_to(const std::filesystem::path &save_file_path, const std::str } else { - std::cerr << "0x"; - std::cerr << std::hex << std::uppercase << std::setw(2) << std::setfill('0') << i; - std::cerr << ": inbytes = " << (long)(sizeof(unsigned int) - inbytesleft); - std::cerr << ", outbytes = " << (long)(sizeof(buf) - outbytesleft) << "\n"; + print_stderr("0x{}: inbytes = {}, outbytes = {}\n", tohex(in, 2), + std::to_string(sizeof(unsigned int) - inbytesleft), + std::to_string(sizeof(buf) - outbytesleft)); error("iconv", "Iconv error."); } } diff --git a/tests/uniq-u.hpp b/tests/uniq-u.hpp index 18ee264d..d0fa0f4e 100644 --- a/tests/uniq-u.hpp +++ b/tests/uniq-u.hpp @@ -43,7 +43,6 @@ inline void *xmalloc(size_t n) { void *p = std::malloc(n); - ; if (p == nullptr) { error("xmalloc", "uniq-u: virtual memory exhausted."); @@ -193,14 +192,14 @@ static void uniq_u(const std::filesystem::path& infile, std::filesystem::path& o FILE *istream = std::fopen(infile.c_str(), "r"); if (istream == nullptr) { - std::cerr << "uniq-u: Error while opening " << infile << std::endl; + print_stderr("uniq-u: Error while opening {}\n", infile); error("fopen", "File open error."); } FILE *ostream = std::fopen(outfile.c_str(), "w"); if (ostream == nullptr) { - std::cerr << "uniq-u: Error while opening " << outfile << std::endl; + print_stderr("uniq-u: Error while opening {}\n", outfile); error("fopen", "File open error."); } @@ -255,13 +254,13 @@ static void uniq_u(const std::filesystem::path& infile, std::filesystem::path& o closefiles: if (std::ferror(istream) || std::fclose(istream) == EOF) { - std::cerr << "uniq-u: Error while reading " << infile << std::endl; + print_stderr("uniq-u: Error while reading {}\n", infile); error("fclose", "I/O Error."); } if (ferror(ostream) || fclose(ostream) == EOF) { - std::cerr << "uniq-u: Error while writing " << outfile << std::endl; + print_stderr("uniq-u: Error while writing {}\n", outfile); error("fclose", "I/O Error."); } diff --git a/tests/utils.hpp b/tests/utils.hpp index 8e3304df..6f1f355e 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -38,18 +38,22 @@ #include "output.hpp" -using _Buffer = std::pair, std::size_t>; class Buffer : public std::pair, std::size_t> { -public: + public: std::string id; - Buffer() : std::pair, std::size_t>(), id("") {} + Buffer() : std::pair, std::size_t>(), id("") + { + } Buffer(std::shared_ptr first, std::size_t second, std::string id = "") - : std::pair, std::size_t>(first, second), id(id) {} - Buffer(const Buffer& buffer) : std::pair, std::size_t>(buffer), id(buffer.id) {} + : std::pair, std::size_t>(first, second), id(id) + { + } + Buffer(const Buffer &buffer) : std::pair, std::size_t>(buffer), id(buffer.id) + { + } }; - /** * @brief Dump a buffer to a file. */ @@ -76,7 +80,8 @@ inline void compare_data(const Buffer &buffer1, const Buffer &buffer2) { dump_data(buffer1, "buffer1.dump"); dump_data(buffer2, "buffer2.dump"); - print_stderr("{} {}\n", colorize(buffer1.id, COLOR_RED | CONTROL_UNDERLINE), colorize(buffer2.id, COLOR_RED | CONTROL_UNDERLINE)); + print_stderr("{} {}\n", colorize(buffer1.id, COLOR_RED | CONTROL_UNDERLINE), + colorize(buffer2.id, COLOR_RED | CONTROL_UNDERLINE)); error("compare_data", "The data is different."); } success("compare_data", "The data is the same."); @@ -130,7 +135,7 @@ inline void write_all(const std::filesystem::path &output_file_path, const std:: error(output_file_path, "Unable to open output file."); } - output_file << buffer; + output_file.write(buffer.data(), buffer.size()); output_file.close(); } @@ -141,8 +146,7 @@ inline void write_all(const std::filesystem::path &output_file_path, const std:: * @param size The size of the content. * @param append Append to the file. */ -inline void write_all(const std::filesystem::path &output_file_path, const std::shared_ptr &buffer, - std::size_t size, bool append = false) +inline void write_all(const std::filesystem::path &output_file_path, const Buffer &buffer, bool append = false) { std::ofstream output_file{output_file_path, std::ios::binary | std::ios::ate | (append ? std::ios::app : std::ios::trunc)}; @@ -151,7 +155,7 @@ inline void write_all(const std::filesystem::path &output_file_path, const std:: error(output_file_path, "Unable to open output file."); } - output_file << buffer; + output_file.write((char *)buffer.first.get(), buffer.second); output_file.close(); } @@ -160,7 +164,7 @@ inline void write_all(const std::filesystem::path &output_file_path, const std:: * @param output The stream. * @param buffer The string. */ -inline void write_stream(std::ostream& output, const std::string_view buffer) +inline void write_stream(std::ostream &output, const std::string_view buffer) { output.write(buffer.data(), buffer.size()); if (!output.good()) @@ -190,7 +194,7 @@ inline void merge_files(const std::vector &files, const s error(file, "Unable to open input file."); } - output_file << input_file.rdbuf() << std::endl; + output_file << input_file.rdbuf() << std::endl; // Flush after each write. input_file.close(); } @@ -268,3 +272,39 @@ inline std::uint64_t fromhex(std::string hex) } return x; } + +constexpr std::uint32_t log16(std::uint32_t value) +{ + std::uint32_t result = 0; + while (value) + { + value >>= 4; + result++; + } + return result; +} + +/** + * @brief Convert a number to a hex string. + * @param value The number. + * @param length The length of the hex string. + */ +inline std::string tohex(std::uint32_t value, std::size_t length) +{ + std::uint32_t orig_value = value; + std::size_t orig_length = length; + std::string hex(length, '0'); + + while (value) + { + if (length <= 0) + { + return tohex(orig_value, orig_length + 1); + error("tohex", print_string("Value too large: {} + {}", hex, std::to_string(value))); + } + hex[--length] = "0123456789ABCDEF"[value % 16]; + value /= 16; + } + + return hex; +} From d8759f4f8b88d90b249678ddecb482a00e92b0ed Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 3 Nov 2024 22:45:05 +0800 Subject: [PATCH 44/77] Refector the lib and provide C and C++ API. --- CMakeLists.txt | 28 +- Makefile.devel | 10 +- benchmark/benchmark.cpp | 30 +- benchmark/test_string.hpp | 2 + include/cppp/encodings/reiconv.h.in | 37 +++ include/cppp/encodings/reiconv.hpp.in | 44 +-- include/cppp/reiconv.h.in | 167 +++++++++++ include/cppp/reiconv.hpp.in | 94 ++----- lib/big5.h | 2 +- lib/cns11643_inv.h | 2 +- lib/cp932ext.h | 2 +- lib/cp950ext.h | 2 +- lib/encodings.h.snippet | 385 +++++++++++++------------- lib/gb12345ext.h | 2 +- lib/gb2312.h | 2 +- lib/gbkext_inv.h | 2 +- lib/generated/aliases.h | 55 ++-- lib/generated/indexes.h.shippet | 214 ++++++++++++++ lib/generated/indexes.hpp.shippet | 5 +- lib/hkscs1999.h | 2 +- lib/hkscs2001.h | 2 +- lib/hkscs2004.h | 2 +- lib/hkscs2008.h | 2 +- lib/iconv.c | 293 ++++++++++++++++++++ lib/iconv.cpp | 374 ------------------------- lib/isoir165ext.h | 2 +- lib/jisx0208.h | 2 +- lib/jisx0212.h | 2 +- lib/ksc5601.h | 2 +- lib/loop_unicode.h | 6 +- lib/reiconv.cpp | 70 +++++ tests/_iconv.hpp | 4 +- tests/check-encoding.cpp | 58 ++++ tests/tests.cmake | 8 + tools/genindexes.cpp | 58 +++- 35 files changed, 1237 insertions(+), 735 deletions(-) create mode 100644 include/cppp/encodings/reiconv.h.in create mode 100644 include/cppp/reiconv.h.in create mode 100644 lib/generated/indexes.h.shippet create mode 100644 lib/iconv.c delete mode 100644 lib/iconv.cpp create mode 100644 lib/reiconv.cpp create mode 100644 tests/check-encoding.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ac15fd5f..75882c41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,10 +19,9 @@ cmake_minimum_required(VERSION 3.12) project(cppp-reiconv VERSION 3.0.0 DESCRIPTION "A character set conversion library based on GNU LIBICONV." - HOMEPAGE_URL "https://github.com/cppp-project/cppp-reiconv" - LANGUAGES CXX) + HOMEPAGE_URL "https://github.com/cppp-project/cppp-reiconv") -option(BUILD_TEST "Test suites for '${PROJECT_NAME}' enabled." ON) +option(BUILD_TESTING "Test suites for '${PROJECT_NAME}' enabled." ON) # ---------------------------------------------------------------------------------- # Import build auxiliaries. @@ -61,18 +60,36 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") endif() # Header for install. +# cppp/reiconv.hpp set(CPPP_API "${CPPP_IMPORT_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp.inst") +# cppp/reiconv.h +set(CPPP_API "${CPPP_IMPORT_API}") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.h.in" "${output_includedir}/cppp/reiconv.h.inst") + # Header for build. +# cppp/reiconv.hpp set(CPPP_API "${CPPP_EXPORT_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${output_includedir}/cppp/reiconv.hpp") +# cppp/reiconv.h +set(CPPP_API "${CPPP_EXPORT_API}") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.h.in" "${output_includedir}/cppp/reiconv.h") + +# cppp-reiconv.rc configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/cppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") + +# cppp/encodings/reiconv.hpp file(READ "${CMAKE_CURRENT_SOURCE_DIR}/lib/generated/indexes.hpp.shippet" _INDEXES_CODE) string(STRIP "${_INDEXES_CODE}" INDEXES_CODE) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/encodings/reiconv.hpp.in" "${output_includedir}/cppp/encodings/reiconv.hpp") +# cppp/encodings/reiconv.h +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/lib/generated/indexes.h.shippet" _INDEXES_CODE) +string(STRIP "${_INDEXES_CODE}" INDEXES_CODE) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/encodings/reiconv.h.in" "${output_includedir}/cppp/encodings/reiconv.h") + # Add includes. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") include_directories("${output_includedir}") @@ -82,10 +99,11 @@ add_compile_definitions(VERSION_MINOR=${PROJECT_VERSION_MINOR}) add_compile_definitions(VERSION_PATCH=${PROJECT_VERSION_PATCH}) # Add library. -cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" TRUE TRUE "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") +set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.c" "${CMAKE_CURRENT_SOURCE_DIR}/lib/reiconv.cpp") +cppp_build_library(${PROJECT_NAME} SOURCES TRUE TRUE "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") # Include test suite. -if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests" AND BUILD_TEST) +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests" AND BUILD_TESTING) include("${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.cmake") endif() diff --git a/Makefile.devel b/Makefile.devel index 30afa2e9..5c9ed756 100644 --- a/Makefile.devel +++ b/Makefile.devel @@ -17,7 +17,8 @@ CXXFLAGS := $(CXXFLAGS) -Ilib all : lib/generated \ lib/generated/check-encodings \ lib/generated/aliases.h \ - lib/generated/indexes.hpp.shippet + lib/generated/indexes.hpp.shippet \ + lib/generated/indexes.h.shippet lib/generated : $(MKDIR) -p lib/generated @@ -33,13 +34,16 @@ lib/generated/aliases.gperf : lib/generated/genaliases ./lib/generated/genaliases $@ lib/generated/aliases.h : lib/generated/aliases.gperf - $(GPERF) -L C++ -Z HashPool -m 10 $< > $@ + $(GPERF) -L ANSI-C -m 10 $< > $@ lib/generated/genindexes : tools/genindexes.cpp $(CXX) $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ lib/generated/indexes.hpp.shippet : lib/generated/genindexes - ./lib/generated/genindexes > $@ + ./lib/generated/genindexes C++ > $@ + +lib/generated/indexes.h.shippet : lib/generated/genindexes + ./lib/generated/genindexes C > $@ test : all $(RM) -r -f build tests/data/GB18030-2005.TXT tests/data/GB18030-2022.TXT tests/data/UTF-8.TXT diff --git a/benchmark/benchmark.cpp b/benchmark/benchmark.cpp index 78508309..ce3a3288 100644 --- a/benchmark/benchmark.cpp +++ b/benchmark/benchmark.cpp @@ -1,9 +1,9 @@ #include "benchmark.hpp" -#include "cppp/encodings/reiconv.hpp" #include "test_string.hpp" #include #include +#include #include #include @@ -12,12 +12,10 @@ static void reiconv_handle_open_by_name(benchmark::State& state) { - using namespace cppp::base; - auto inbuf = reiconv::InputBuffer(simple_test_string_utf8); for (auto _: state) { - auto s = reiconv::convert("UTF-8", "GB18030", inbuf); - free(s.buffer); + volatile reiconv::Encoding index = {"UTF-8"}; + volatile reiconv::Encoding index2 = {"CP936"}; } } @@ -25,12 +23,10 @@ BENCHMARK(reiconv_handle_open_by_name); static void reiconv_handle_open_by_codepage(benchmark::State& state) { - using namespace cppp::base; - auto inbuf = reiconv::InputBuffer(simple_test_string_utf8); for (auto _: state) { - auto s = reiconv::convert(65001, 54936, inbuf); - free(s.buffer); + volatile reiconv::Encoding index = {65001}; + volatile reiconv::Encoding index2 = {936}; } } @@ -38,12 +34,10 @@ BENCHMARK(reiconv_handle_open_by_codepage); static void reiconv_handle_open_by_index(benchmark::State& state) { - using namespace cppp::base; - auto inbuf = reiconv::InputBuffer(simple_test_string_utf8); for (auto _: state) { - auto s = reiconv::convert(encoding::Encodings::UTF8, encoding::Encodings::GB18030, inbuf); - free(s.buffer); + volatile reiconv::Encoding index = {reiconv::Encodings::UTF8}; + volatile reiconv::Encoding index2 = {reiconv::Encodings::CP936}; } } @@ -169,12 +163,14 @@ constexpr std::size_t big_test_string_utf8_len = sizeof(big_test_string_utf8) - static void reiconv_convert(benchmark::State& state) { - using namespace cppp::base; - auto inbuf = reiconv::InputBuffer((const std::byte*)big_test_string_utf8, big_test_string_utf8_len); + using namespace reiconv; for (auto _: state) { - auto s = reiconv::convert(encoding::Encodings::UTF8, encoding::Encodings::GB18030, inbuf); - free(s.buffer); + reiconv_t cd = reiconv_open_from_index(ENCODING_UTF8, ENCODING_GB18030, false); + char* output = nullptr; + size_t length = 0; + reiconv_convert(cd, big_test_string_utf8, big_test_string_utf8_len, &output, &length); + free(output); } } diff --git a/benchmark/test_string.hpp b/benchmark/test_string.hpp index d53eff0d..79876b9f 100644 --- a/benchmark/test_string.hpp +++ b/benchmark/test_string.hpp @@ -3,3 +3,5 @@ constexpr const char* simple_test_string_utf8 = "S"; #define _big_test_string_utf8 "The quick brown fox jumps over the lazy dog.0123456789你好,世界!" constexpr const char big_test_string_utf8[] = _big_test_string_utf8; + +constexpr const char big_test_string_gb18030[] = "The quick brown fox jumps over the lazy dog.0123456789\xc4\xe3\xba\xc3\xa3\xac\xca\xc0\xbd\xe7\xa3\xa1"; diff --git a/include/cppp/encodings/reiconv.h.in b/include/cppp/encodings/reiconv.h.in new file mode 100644 index 00000000..e1e1b5a9 --- /dev/null +++ b/include/cppp/encodings/reiconv.h.in @@ -0,0 +1,37 @@ +/** + * @file cppp/encodings/reiconv.h + * @author ChenPi11 + * @brief cppp-reiconv encodings list. + * @version 3.0.0 + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +/* When installed, this file is called "cppp/reiconv.h". */ + +#ifndef _CPPP_ENCODINGS_REICONV_H_ +#define _CPPP_ENCODINGS_REICONV_H_ +#pragma once + +#if _MSC_VER >= 1600 +#pragma execution_character_set("utf-8") +#endif + +@INDEXES_CODE@ +#endif // _CPPP_ENCODINGS_REICONV_H_ diff --git a/include/cppp/encodings/reiconv.hpp.in b/include/cppp/encodings/reiconv.hpp.in index cdf2c830..1867e355 100644 --- a/include/cppp/encodings/reiconv.hpp.in +++ b/include/cppp/encodings/reiconv.hpp.in @@ -1,35 +1,37 @@ /** - * @file cppp/reiconv.hpp + * @file cppp/encodings/reiconv.hpp * @author ChenPi11 - * @brief C+++ cppp-reiconv package. + * @brief cppp-reiconv encodings list. * @version 3.0.0 - * @date 2024-7-27 - * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . */ -/* Copyright (C) 1999-2023 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ /* When installed, this file is called "cppp/reiconv.hpp". */ +#ifndef _CPPP_ENCODINGS_REICONV_HPP_ +#define _CPPP_ENCODINGS_REICONV_HPP_ #pragma once #if _MSC_VER >= 1600 -/* Use UTF-8 to decode this file. */ #pragma execution_character_set("utf-8") #endif @INDEXES_CODE@ +#endif // _CPPP_ENCODINGS_REICONV_HPP_ diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in new file mode 100644 index 00000000..99733771 --- /dev/null +++ b/include/cppp/reiconv.h.in @@ -0,0 +1,167 @@ +/** + * @file cppp/reiconv.h + * @author ChenPi11 + * @brief reiconv C API. + * @version 3.0.0 + * @date 2024-11-3 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +/* When installed, this file is called "cppp/reiconv.h". */ + +#pragma once + +#ifndef _CPPP_REICONV_H_ +#define _CPPP_REICONV_H_ + +#include + +#include +#include + +#define _CPPP_API + +#ifndef _CPPP_API +#define _CPPP_API @CPPP_API @ +#endif + +#if _MSC_VER >= 1600 +#pragma execution_character_set("utf-8") +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Version information. + */ +struct VersionInfo +{ + /** + * @brief Major version. + */ + int major; + + /** + * @brief Minor version. + */ + int minor; + + /** + * @brief Patch version. + */ + int patch; +}; + +/** + * @brief Version infomation. + */ +extern _CPPP_API struct VersionInfo reiconv_version; + +/** + * @brief Canonicalize an encoding name. + * @note We will ignore '-' and '_', and uppercase all characters. + * @param name The encoding name. + * @param outbuf The output buffer. Must allocated with enough space. + * @return The length of the canonicalized name. + */ +extern _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf); + +/** + * @brief Lookup an encoding by it's name. + * @note The return value is an encoding index that can be used with `reiconv_open_from_codepage`. + * @note We will ignore '-' and '_', and uppercase all characters. + * @param encoding The encoding name. + * @return The encoding index. If the it is not found, -1 is returned. + */ +extern _CPPP_API int reiconv_lookup_from_name(const char *encoding); + +/** + * @brief Lookup an encoding by it's codepage. + * @note The return value is an encoding index that can be used with `reiconv_open_from_codepage`. + * @param codepage The codepage. + * @return The encoding index. If the it is not found, -1 is returned. + */ +extern _CPPP_API int reiconv_lookup_from_codepage(int codepage); + +/** + * @brief Conversion descriptor. + */ +typedef void *reiconv_t; + +/** + * @brief Open a conversion descriptor from encoding index. + * @note The return value is a conversion descriptor. + * @param fromcode The input buffer encoding's index. + * @param tocode The output buffer encoding's index. + * @param discard_ilseq If true, we will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @return The conversion descriptor. Indexes MUST BE VALID or the behavior is undefined. + * @note If the conversion descriptor cannot be created, returns (reiconv_t)(-1) and errno is set to ENOMEM. + */ +extern _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq); + +/** + * @brief Close a conversion descriptor. + * @param cd The conversion descriptor. + */ +extern _CPPP_API void reiconv_handle_close(reiconv_t cd); + +/** + * @brief Do conversion. For iconv compatibility. + * @note At most `*inbytesleft` bytes starting at `*inbuf`. + * @note writing at most `*outbytesleft` bytes starting at `*outbuf`. + * @note Decrements `*inbytesleft` and increments `*inbuf` by the same amount. + * @note Decrements `*outbytesleft` and increments `*outbuf` by the same amount. + */ +_CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + +/** + * @brief Get the size of the result. -1 on error with errno set. + * @note This function does not treat zero characters specially. + * @param start The input buffer. + * @param inlength The input buffer length. + * @return The size of the result. + */ +_CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength); + +/** + * @brief Converts an string from one encoding to another. + * @note Converts a string given in encoding `fromcode` to a new string in encoding `tocode`. + * `fromcode` and `tocode` are same as for iconv_open(3), but we don't support '//IGNORE' and + * '//TRANSLIT'. `malloc`/`realloc` is used to allocate the result. + * @note This function does not treat zero characters specially. + * @param fromcode The input buffer encoding's index. + * @param tocode The output buffer encoding's index. + * @param input Input buffer. + * @param inputlen Input buffer length. + * @param poutput Output buffer pointer. + * @param poutputlen Output buffer length pointer. + * @param strict If false. We will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @return 0 on success, -1 on error with errno set. + */ +extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *start, size_t inlength, char **resultp, size_t *lengthp); + +#ifdef __cplusplus +} +#endif + +#endif /* _CPPP_REICONV_H_ */ diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index b029e0c3..0c232e5e 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -1,39 +1,43 @@ /** * @file cppp/reiconv.hpp * @author ChenPi11 - * @brief C+++ cppp-reiconv package. + * @brief reiconv C++ API. * @version 3.0.0 - * @date 2024-7-27 * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2023-2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . */ -/* Copyright (C) 1999-2023 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ /* When installed, this file is called "cppp/reiconv.hpp". */ #pragma once +#ifndef _CPPP_REICONV_HPP_ +#define _CPPP_REICONV_HPP_ #include #include #include #include +#include -#define _CPPP_API +#define _CPPP_API // TODO: Remove this. #ifndef _CPPP_API #define _CPPP_API @CPPP_API@ @@ -43,51 +47,12 @@ #pragma execution_character_set("utf-8") #endif -namespace cppp::base::reiconv +namespace reiconv { - using cppp::base::encoding::Encodings; - - template - struct BasicBuffer - { - /** - * @brief Buffer pointer. - */ - ByteType *buffer; - - /** - * @brief Buffer size. - */ - std::size_t length; - - /** - * @brief Construct a buffer. - */ - BasicBuffer(ByteType *buffer, std::size_t length) : buffer(buffer), length(length) {} - - /** - * @brief Construct a buffer from a string. - */ - BasicBuffer(const std::string &str) : buffer(reinterpret_cast(str.data())), length(str.size()) {} - - /** - * @brief Construct a buffer from a string. - */ - BasicBuffer(const char* str) : buffer(reinterpret_cast(str)), length(std::strlen(str)) {} - }; - - /** - * @brief Buffer for input. - */ - using InputBuffer = BasicBuffer; + using reiconv::encoding::Encodings; /** - * @brief Buffer for output. - */ - using OutputBuffer = BasicBuffer; - - /** - * @brief Encoding class. + * @brief Encoding. */ class Encoding { @@ -98,7 +63,6 @@ namespace cppp::base::reiconv int _index; public: - /** * @brief Find the encoding by name. IANA names are recommended. * @throw std::invalid_argument if the encoding is not found. @@ -176,6 +140,8 @@ namespace cppp::base::reiconv * @return Return the output buffer. * @throw std::system_error if an error occurs. */ - extern _CPPP_API OutputBuffer convert(Encoding from, Encoding to, InputBuffer input, bool strict = true); + extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, bool strict = true); + +} // namespace reiconv -} // namespace cppp::base::reiconv +#endif // _CPPP_REICONV_HPP_ diff --git a/lib/big5.h b/lib/big5.h index 28552e3a..b08ede09 100644 --- a/lib/big5.h +++ b/lib/big5.h @@ -4119,7 +4119,7 @@ static int big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0100) summary = &big5_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0200 && wc < 0x0460) diff --git a/lib/cns11643_inv.h b/lib/cns11643_inv.h index c5cb1d42..fa60e536 100644 --- a/lib/cns11643_inv.h +++ b/lib/cns11643_inv.h @@ -15368,7 +15368,7 @@ static int cns11643_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0100) summary = &cns11643_inv_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0200 && wc < 0x03d0) diff --git a/lib/cp932ext.h b/lib/cp932ext.h index 4a30b426..a23419a8 100644 --- a/lib/cp932ext.h +++ b/lib/cp932ext.h @@ -656,7 +656,7 @@ static int cp932ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x2100 && wc < 0x22c0) summary = &cp932ext_uni2indx_page21[(wc>>4)-0x210]; else if (wc >= 0x2400 && wc < 0x2480) diff --git a/lib/cp950ext.h b/lib/cp950ext.h index 11cb8ca7..5cc59e23 100644 --- a/lib/cp950ext.h +++ b/lib/cp950ext.h @@ -120,7 +120,7 @@ static int cp950ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x2500 && wc < 0x25a0) summary = &cp950ext_uni2indx_page25[(wc>>4)-0x250]; else if (wc >= 0x5800 && wc < 0x58c0) diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index 0afe3497..1c5df655 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -51,7 +51,7 @@ DEFENCODING(("USASCII", /* IANA */ "CP367", /* IANA */ "646", /* Solaris */ ), - ascii, ASCII, {ascii_mbtowc, nullptr}, {ascii_wctomb, nullptr}) + ascii, ASCII, {ascii_mbtowc, NULL}, {ascii_wctomb, NULL}) DEFCODEPAGE(367, ascii) // General multi-byte encodings @@ -61,14 +61,14 @@ DEFENCODING(("UTF8", /* IANA, RFC 2279 */ "CP65001", /* IANA */ "65001", /* IANA */ ), - utf8, UTF8, {utf8_mbtowc, nullptr}, {utf8_wctomb, nullptr}) + utf8, UTF8, {utf8_mbtowc, NULL}, {utf8_wctomb, NULL}) DEFCODEPAGE(65001, utf8) DEFENCODING(("UCS2", /* glibc */ "ISO10646UCS2", /* IANA */ "CSUNICODE", /* IANA */ ), - ucs2, UCS2, {ucs2_mbtowc, nullptr}, {ucs2_wctomb, nullptr}) + ucs2, UCS2, {ucs2_mbtowc, NULL}, {ucs2_wctomb, NULL}) DEFENCODING(("UCS2BE", /* glibc */ "UNICODEBIG", /* glibc */ @@ -77,7 +77,7 @@ DEFENCODING(("UCS2BE", /* glibc */ "CP1201", /* Windows */ "1201" /* Windows */ ), - ucs2be, UCS2BE, {ucs2be_mbtowc, nullptr}, {ucs2be_wctomb, nullptr}) + ucs2be, UCS2BE, {ucs2be_mbtowc, NULL}, {ucs2be_wctomb, NULL}) DEFCODEPAGE(1201, ucs2be) DEFENCODING(("UCS2LE", /* glibc */ @@ -85,58 +85,58 @@ DEFENCODING(("UCS2LE", /* glibc */ "CP1200", /* Windows */ "1200", /* Windows */ ), - ucs2le, UCS2LE, {ucs2le_mbtowc, nullptr}, {ucs2le_wctomb, nullptr}) + ucs2le, UCS2LE, {ucs2le_mbtowc, NULL}, {ucs2le_wctomb, NULL}) DEFCODEPAGE(1200, ucs2le) DEFENCODING(("UCS4", /* glibc */ "ISO10646UCS4", /* IANA */ "CSUCS4", /* IANA */ ), - ucs4, UCS4, {ucs4_mbtowc, nullptr}, {ucs4_wctomb, nullptr}) + ucs4, UCS4, {ucs4_mbtowc, NULL}, {ucs4_wctomb, NULL}) DEFENCODING(("UCS4BE", /* glibc */ "12001", /* Windows */ "CP12001", /* Windows */ ), - ucs4be, UCS4BE, {ucs4be_mbtowc, nullptr}, {ucs4be_wctomb, nullptr}) + ucs4be, UCS4BE, {ucs4be_mbtowc, NULL}, {ucs4be_wctomb, NULL}) DEFCODEPAGE(12001, ucs4be) DEFENCODING(("UCS4LE", /* glibc */ "CP12000", /* Windows */ "12000", /* Windows */ ), - ucs4le, UCS4LE, {ucs4le_mbtowc, nullptr}, {ucs4le_wctomb, nullptr}) + ucs4le, UCS4LE, {ucs4le_mbtowc, NULL}, {ucs4le_wctomb, NULL}) DEFCODEPAGE(12000, ucs4le) DEFENCODING(("UTF16", /* IANA, RFC 2781 */ "U16", /* cppp-reiconv */ ), - utf16, UTF16, {utf16_mbtowc, nullptr}, {utf16_wctomb, nullptr}) + utf16, UTF16, {utf16_mbtowc, NULL}, {utf16_wctomb, NULL}) DEFENCODING(("UTF16BE", /* IANA, RFC 2781 */ "U16BE", /* cppp-reiconv */ ), - utf16be, UTF16BE, {utf16be_mbtowc, nullptr}, {utf16be_wctomb, nullptr}) + utf16be, UTF16BE, {utf16be_mbtowc, NULL}, {utf16be_wctomb, NULL}) DEFENCODING(("UTF16LE", /* IANA, RFC 2781 */ "U16LE", /* cppp-reiconv */ ), - utf16le, UTF16LE, {utf16le_mbtowc, nullptr}, {utf16le_wctomb, nullptr}) + utf16le, UTF16LE, {utf16le_mbtowc, NULL}, {utf16le_wctomb, NULL}) DEFENCODING(("UTF32", /* IANA, Unicode 3.1 */ "U32", /* cppp-reiconv */ ), - utf32, UTF32, {utf32_mbtowc, nullptr}, {utf32_wctomb, nullptr}) + utf32, UTF32, {utf32_mbtowc, NULL}, {utf32_wctomb, NULL}) DEFENCODING(("UTF32BE", /* IANA, Unicode 3.1 */ "U32BE", /* cppp-reiconv */ ), - utf32be, UTF32BE, {utf32be_mbtowc, nullptr}, {utf32be_wctomb, nullptr}) + utf32be, UTF32BE, {utf32be_mbtowc, NULL}, {utf32be_wctomb, NULL}) DEFENCODING(("UTF32LE", /* IANA, Unicode 3.1 */ "U32LE", /* cppp-reiconv */ ), - utf32le, UTF32LE, {utf32le_mbtowc, nullptr}, {utf32le_wctomb, nullptr}) + utf32le, UTF32LE, {utf32le_mbtowc, NULL}, {utf32le_wctomb, NULL}) DEFENCODING(("UTF7", /* IANA, RFC 2152 */ "UNICODE11UTF7", /* IANA, RFC 1642 */ "CSUNICODE11UTF7", /* IANA */ @@ -144,7 +144,7 @@ DEFENCODING(("UTF7", /* IANA, RFC 2152 */ "CP65000", /* Windows */ "65000", /* Windows */ ), - utf7, UTF7, {utf7_mbtowc, nullptr}, {utf7_wctomb, utf7_reset}) + utf7, UTF7, {utf7_mbtowc, NULL}, {utf7_wctomb, utf7_reset}) DEFCODEPAGE(65000, utf7) // UCS-2/4-INTERNAL/SWAPPED are not standard encodings, but are used by @@ -152,23 +152,23 @@ DEFCODEPAGE(65000, utf7) DEFENCODING(("UCS2INTERNAL", /* libiconv */ ), - ucs2internal, UCS2_INTERNAL, {ucs2internal_mbtowc, nullptr}, {ucs2internal_wctomb, nullptr}) + ucs2internal, UCS2_INTERNAL, {ucs2internal_mbtowc, NULL}, {ucs2internal_wctomb, NULL}) DEFENCODING(("UCS2SWAPPED", /* libiconv */ ), - ucs2swapped, UCS2_SWAPPED, {ucs2swapped_mbtowc, nullptr}, {ucs2swapped_wctomb, nullptr}) + ucs2swapped, UCS2_SWAPPED, {ucs2swapped_mbtowc, NULL}, {ucs2swapped_wctomb, NULL}) DEFENCODING(("UCS4INTERNAL", /* libiconv */ ), - ucs4internal, UCS4_INTERNAL, {ucs4internal_mbtowc, nullptr}, {ucs4internal_wctomb, nullptr}) + ucs4internal, UCS4_INTERNAL, {ucs4internal_mbtowc, NULL}, {ucs4internal_wctomb, NULL}) DEFENCODING(("UCS4SWAPPED", /* libiconv */ ), - ucs4swapped, UCS4_SWAPPED, {ucs4swapped_mbtowc, nullptr}, {ucs4swapped_wctomb, nullptr}) + ucs4swapped, UCS4_SWAPPED, {ucs4swapped_mbtowc, NULL}, {ucs4swapped_wctomb, NULL}) -DEFENCODING(("C99", ), c99, C99, {c99_mbtowc, nullptr}, {c99_wctomb, nullptr}) +DEFENCODING(("C99", ), c99, C99, {c99_mbtowc, NULL}, {c99_wctomb, NULL}) -DEFENCODING(("JAVA", ), java, JAVA, {java_mbtowc, nullptr}, {java_wctomb, nullptr}) +DEFENCODING(("JAVA", ), java, JAVA, {java_mbtowc, NULL}, {java_wctomb, NULL}) // CJK encodings DEFENCODING(("EUCJP", /* IANA, glibc, HP-UX, IRIX, OSF/1, Solaris */ @@ -179,7 +179,7 @@ DEFENCODING(("EUCJP", /* IANA, glibc, HP-UX, I "CP51932", /* Windows */ "51932", /* Windows */ ), - euc_jp, EUC_JP, {euc_jp_mbtowc, nullptr}, {euc_jp_wctomb, nullptr}) + euc_jp, EUC_JP, {euc_jp_mbtowc, NULL}, {euc_jp_wctomb, NULL}) DEFCODEPAGE(51932, euc_jp) DEFENCODING(("SHIFTJIS", /* IANA, glibc */ @@ -188,34 +188,34 @@ DEFENCODING(("SHIFTJIS", /* IANA, glibc */ "CSSHIFTJIS", /* IANA */ "PCK", /* Solaris */ ), - sjis, SHIFT_JIS, {sjis_mbtowc, nullptr}, {sjis_wctomb, nullptr}) + sjis, SHIFT_JIS, {sjis_mbtowc, NULL}, {sjis_wctomb, NULL}) DEFENCODING(("IBM932", /* AIX */ "CP932", /* Windows */ "932", /* Windows */ ), - cp932, IBM932, {cp932_mbtowc, nullptr}, {cp932_wctomb, nullptr}) + cp932, IBM932, {cp932_mbtowc, NULL}, {cp932_wctomb, NULL}) DEFCODEPAGE(932, cp932) DEFENCODING(("ISO2022JP", /* IANA, RFC 1468, JDK 1.1 */ "CSISO2022JP", /* IANA */ ), - iso2022_jp, ISO2022_JP, {iso2022_jp_mbtowc, nullptr}, {iso2022_jp_wctomb, iso2022_jp_reset}) + iso2022_jp, ISO2022_JP, {iso2022_jp_mbtowc, NULL}, {iso2022_jp_wctomb, iso2022_jp_reset}) DEFENCODING(("ISO2022JP1", /* RFC 2237 */ ), - iso2022_jp1, ISO2022_JP1, {iso2022_jp1_mbtowc, nullptr}, {iso2022_jp1_wctomb, iso2022_jp1_reset}) + iso2022_jp1, ISO2022_JP1, {iso2022_jp1_mbtowc, NULL}, {iso2022_jp1_wctomb, iso2022_jp1_reset}) DEFENCODING(("ISO2022JP2", /* IANA, RFC 1554 */ "CSISO2022JP2", /* IANA */ ), - iso2022_jp2, ISO2022_JP2, {iso2022_jp2_mbtowc, nullptr}, {iso2022_jp2_wctomb, iso2022_jp2_reset}) + iso2022_jp2, ISO2022_JP2, {iso2022_jp2_mbtowc, NULL}, {iso2022_jp2_wctomb, iso2022_jp2_reset}) DEFENCODING(("ISO2022JPMS", /* (Unknown) */ "CP50221", /* Windows */ "50221", /* Windows */ ), - iso2022_jpms, ISO2022_JPMS, {iso2022_jpms_mbtowc, nullptr}, {iso2022_jpms_wctomb, iso2022_jpms_reset}) + iso2022_jpms, ISO2022_JPMS, {iso2022_jpms_mbtowc, NULL}, {iso2022_jpms_wctomb, iso2022_jpms_reset}) DEFCODEPAGE(50221, iso2022_jpms) DEFENCODING(("EUCCN", /* glibc, IRIX */ @@ -227,12 +227,12 @@ DEFENCODING(("EUCCN", /* glibc, IRIX */ "HP15CN", /* HP-UX */ "DECHANZI", /* OSF/1 */ ), - euc_cn, GB2312, {euc_cn_mbtowc, nullptr}, {euc_cn_wctomb, nullptr}) + euc_cn, GB2312, {euc_cn_mbtowc, NULL}, {euc_cn_wctomb, NULL}) DEFCODEPAGE(51936, euc_cn) DEFENCODING(("GBK", /* IANA, JDK 1.1 */ ), - ces_gbk, GBK, {ces_gbk_mbtowc, nullptr}, {ces_gbk_wctomb, nullptr}) + ces_gbk, GBK, {ces_gbk_mbtowc, NULL}, {ces_gbk_wctomb, NULL}) DEFENCODING(("MS936", /* IANA */ "WINDOWS936", /* IANA */ @@ -241,12 +241,12 @@ DEFENCODING(("MS936", /* IANA */ ), cp936, CP936, // Chinese developer use CP936 more often than MS936 - {cp936_mbtowc, nullptr}, {cp936_wctomb, nullptr}) + {cp936_mbtowc, NULL}, {cp936_wctomb, NULL}) DEFCODEPAGE(936, cp936) DEFENCODING(("GB18030:2005", /* libiconv */ ), - gb18030_2005, GB18030_2005, {gb18030_2005_mbtowc, nullptr}, {gb18030_2005_wctomb, nullptr}) + gb18030_2005, GB18030_2005, {gb18030_2005_mbtowc, NULL}, {gb18030_2005_wctomb, NULL}) DEFENCODING(("GB18030", /* IANA, glibc */ "CSGB18030", /* IANA */ @@ -254,18 +254,18 @@ DEFENCODING(("GB18030", /* IANA, glibc */ "CP54936", /* Windows */ "54936", /* Windows */ ), - gb18030_2022, GB18030_2022, {gb18030_2022_mbtowc, nullptr}, {gb18030_2022_wctomb, nullptr}) + gb18030_2022, GB18030_2022, {gb18030_2022_mbtowc, NULL}, {gb18030_2022_wctomb, NULL}) DEFINDEX(GB18030, GB18030_2022) DEFCODEPAGE(54936, gb18030_2022) DEFENCODING(("ISO2022CN", /* IANA, RFC 1922, JDK 1.1 */ "CSISO2022CN", /* IANA */ ), - iso2022_cn, ISO2022_CN, {iso2022_cn_mbtowc, nullptr}, {iso2022_cn_wctomb, iso2022_cn_reset}) + iso2022_cn, ISO2022_CN, {iso2022_cn_mbtowc, NULL}, {iso2022_cn_wctomb, iso2022_cn_reset}) DEFENCODING(("ISO2022CNEXT", /* IANA, RFC 1922 */ ), - iso2022_cn_ext, ISO2022_CN_EXT, {iso2022_cn_ext_mbtowc, nullptr}, + iso2022_cn_ext, ISO2022_CN_EXT, {iso2022_cn_ext_mbtowc, NULL}, {iso2022_cn_ext_wctomb, iso2022_cn_ext_reset}) DEFENCODING(("HZ", /* RFC 1843 */ @@ -273,7 +273,7 @@ DEFENCODING(("HZ", /* RFC 1843 */ "CP52936", /* Windows */ "52936", /* Windows */ ), - hz, HZ, {hz_mbtowc, nullptr}, {hz_wctomb, hz_reset}) + hz, HZ, {hz_mbtowc, NULL}, {hz_wctomb, hz_reset}) DEFCODEPAGE(52936, hz) DEFENCODING(("EUCTW", /* glibc, HPUX, IRIX, OSF/1 */ @@ -282,7 +282,7 @@ DEFENCODING(("EUCTW", /* glibc, HPUX, IRIX, OSF/1 */ "CP51950", /* Windows */ "51950", /* Windows */ ), - euc_tw, EUC_TW, {euc_tw_mbtowc, nullptr}, {euc_tw_wctomb, nullptr}) + euc_tw, EUC_TW, {euc_tw_mbtowc, NULL}, {euc_tw_wctomb, NULL}) DEFCODEPAGE(51950, euc_tw) DEFENCODING(("BIG5", /* IANA, JDK 1.1, glibc */ @@ -290,13 +290,13 @@ DEFENCODING(("BIG5", /* IANA, JDK 1.1, glibc */ "CNBIG5", /* RFC 1922 */ "CSBIG5", /* IANA */ ), - ces_big5, BIG5, {ces_big5_mbtowc, nullptr}, {ces_big5_wctomb, nullptr}) + ces_big5, BIG5, {ces_big5_mbtowc, NULL}, {ces_big5_wctomb, NULL}) DEFENCODING(("WINDOWS950", /* JDK 1.1 */ "CP950", /* Windows */ "950", /* Windows */ ), - cp950, WINDOWS950, {cp950_mbtowc, nullptr}, {cp950_wctomb, nullptr}) + cp950, WINDOWS950, {cp950_mbtowc, NULL}, {cp950_wctomb, NULL}) DEFCODEPAGE(950, cp950) DEFENCODING(("BIG5HKSCS:1999", /* libiconv */ @@ -325,14 +325,14 @@ DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ "CP51949", /* Windows */ "51949", /* Windows */ ), - euc_kr, EUC_KR, {euc_kr_mbtowc, nullptr}, {euc_kr_wctomb, nullptr}) + euc_kr, EUC_KR, {euc_kr_mbtowc, NULL}, {euc_kr_wctomb, NULL}) DEFCODEPAGE(51949, euc_kr) DEFENCODING(("UHC", /* glibc */ "CP949", /* Windows */ "949", /* Windows */ ), - cp949, UHC, {cp949_mbtowc, nullptr}, {cp949_wctomb, nullptr}) + cp949, UHC, {cp949_mbtowc, NULL}, {cp949_wctomb, NULL}) DEFCODEPAGE(949, cp949) DEFENCODING(("JOHAB", /* glibc */ @@ -340,7 +340,7 @@ DEFENCODING(("JOHAB", /* glibc */ "CP1361", /* Windows */ "1361", /* Windows */ ), - johab, JOHAB, {johab_mbtowc, nullptr}, {johab_wctomb, nullptr}) + johab, JOHAB, {johab_mbtowc, NULL}, {johab_wctomb, NULL}) DEFCODEPAGE(1361, johab) DEFENCODING(("ISO2022KR", /* IANA, RFC 1557, JDK 1.1 */ @@ -348,16 +348,16 @@ DEFENCODING(("ISO2022KR", /* IANA, RFC 1557, JDK 1.1 */ "CP50225", /* Windows */ "50225", /* Windows */ ), - iso2022_kr, ISO2022_KR, {iso2022_kr_mbtowc, nullptr}, {iso2022_kr_wctomb, iso2022_kr_reset}) + iso2022_kr, ISO2022_KR, {iso2022_kr_mbtowc, NULL}, {iso2022_kr_wctomb, iso2022_kr_reset}) DEFCODEPAGE(50225, iso2022_kr) DEFENCODING(("DECKANJI", /* OSF/1 */ ), - dec_kanji, DEC_KANJI, {dec_kanji_mbtowc, nullptr}, {dec_kanji_wctomb, nullptr}) + dec_kanji, DEC_KANJI, {dec_kanji_mbtowc, NULL}, {dec_kanji_wctomb, NULL}) DEFENCODING(("DECHANYU", /* OSF/1 */ ), - dec_hanyu, DEC_HANYU, {dec_hanyu_mbtowc, nullptr}, {dec_hanyu_wctomb, nullptr}) + dec_hanyu, DEC_HANYU, {dec_hanyu_mbtowc, NULL}, {dec_hanyu_wctomb, NULL}) // Standard 8-bit encodings DEFENCODING(("ISO88591", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ @@ -372,7 +372,7 @@ DEFENCODING(("ISO88591", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1 "CP28591", /* Windows */ "28591", /* Windows */ ), - iso8859_1, ISO8859_1, {iso8859_1_mbtowc, nullptr}, {iso8859_1_wctomb, nullptr}) + iso8859_1, ISO8859_1, {iso8859_1_mbtowc, NULL}, {iso8859_1_wctomb, NULL}) DEFCODEPAGE(819, iso8859_1) DEFCODEPAGE(28591, iso8859_1) @@ -385,7 +385,7 @@ DEFENCODING(("ISO88592", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1 "CP28592", /* Windows */ "28592", /* Windows */ ), - iso8859_2, ISO8859_2, {iso8859_2_mbtowc, nullptr}, {iso8859_2_wctomb, nullptr}) + iso8859_2, ISO8859_2, {iso8859_2_mbtowc, NULL}, {iso8859_2_wctomb, NULL}) DEFCODEPAGE(28592, iso8859_2) DEFENCODING(("ISO88593", /* IANA, X11R6.4, glibc, FreeBSD, Solaris */ @@ -397,7 +397,7 @@ DEFENCODING(("ISO88593", /* IANA, X11R6.4, glibc, FreeBSD, Solaris */ "CP28593", /* Windows */ "28593", /* Windows */ ), - iso8859_3, ISO8859_3, {iso8859_3_mbtowc, nullptr}, {iso8859_3_wctomb, nullptr}) + iso8859_3, ISO8859_3, {iso8859_3_mbtowc, NULL}, {iso8859_3_wctomb, NULL}) DEFCODEPAGE(28593, iso8859_3) DEFENCODING(("ISO88594", /* IANA, X11R6.4, glibc, FreeBSD, OSF/1, Solaris */ @@ -409,7 +409,7 @@ DEFENCODING(("ISO88594", /* IANA, X11R6.4, glibc, FreeBSD, OSF/1, Solaris * "CP28594", /* Windows */ "28594", /* Windows */ ), - iso8859_4, ISO8859_4, {iso8859_4_mbtowc, nullptr}, {iso8859_4_wctomb, nullptr}) + iso8859_4, ISO8859_4, {iso8859_4_mbtowc, NULL}, {iso8859_4_wctomb, NULL}) DEFCODEPAGE(28594, iso8859_4) DEFENCODING(("ISO88595", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ @@ -420,7 +420,7 @@ DEFENCODING(("ISO88595", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, "CP28595", /* Windows */ "28595", /* Windows */ ), - iso8859_5, ISO8859_5, {iso8859_5_mbtowc, nullptr}, {iso8859_5_wctomb, nullptr}) + iso8859_5, ISO8859_5, {iso8859_5_mbtowc, NULL}, {iso8859_5_wctomb, NULL}) DEFCODEPAGE(28595, iso8859_5) DEFENCODING(("ISO88596", /* IANA, X11R6.4, glibc, FreeBSD, AIX, Solaris */ @@ -433,7 +433,7 @@ DEFENCODING(("ISO88596", /* IANA, X11R6.4, glibc, FreeBSD, AIX, Solaris "CP28596", /* Windows */ "28596", /* Windows */ ), - iso8859_6, ISO8859_6, {iso8859_6_mbtowc, nullptr}, {iso8859_6_wctomb, nullptr}) + iso8859_6, ISO8859_6, {iso8859_6_mbtowc, NULL}, {iso8859_6_wctomb, NULL}) DEFCODEPAGE(28596, iso8859_6) DEFENCODING(("ISO88597", /* IANA, RFC 1947, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */ @@ -448,7 +448,7 @@ DEFENCODING(("ISO88597", /* IANA, RFC 1947, X11R6.4, glibc, FreeBSD, AIX, "CP28597", /* Windows */ "28597", /* Windows */ ), - iso8859_7, ISO8859_7, {iso8859_7_mbtowc, nullptr}, {iso8859_7_wctomb, nullptr}) + iso8859_7, ISO8859_7, {iso8859_7_mbtowc, NULL}, {iso8859_7_wctomb, NULL}) DEFCODEPAGE(28597, iso8859_7) DEFENCODING(("ISO88598", /* IANA, X11R6.4, glibc, FreeBSD, AIX, OSF/1, Solaris */ @@ -461,7 +461,7 @@ DEFENCODING(("ISO88598", /* IANA, X11R6.4, glibc, FreeBSD, AIX, OSF/1, S "CP38598", /* Windows */ "38598", /* Windows */ ), - iso8859_8, ISO8859_8, {iso8859_8_mbtowc, nullptr}, {iso8859_8_wctomb, nullptr}) + iso8859_8, ISO8859_8, {iso8859_8_mbtowc, NULL}, {iso8859_8_wctomb, NULL}) DEFCODEPAGE(28598, iso8859_8) DEFCODEPAGE(38598, iso8859_8) @@ -474,7 +474,7 @@ DEFENCODING(("ISO88599", /* IANA, X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1 "CP28599", /* Windows */ "28599", /* Windows */ ), - iso8859_9, ISO8859_9, {iso8859_9_mbtowc, nullptr}, {iso8859_9_wctomb, nullptr}) + iso8859_9, ISO8859_9, {iso8859_9_mbtowc, NULL}, {iso8859_9_wctomb, NULL}) DEFCODEPAGE(28599, iso8859_9) DEFENCODING(("ISO885910", /* IANA, X11R6.4, glibc, FreeBSD */ @@ -484,11 +484,11 @@ DEFENCODING(("ISO885910", /* IANA, X11R6.4, glibc, FreeBSD */ "L6", /* IANA */ "CSISOLATIN6", /* IANA */ ), - iso8859_10, ISO8859_10, {iso8859_10_mbtowc, nullptr}, {iso8859_10_wctomb, nullptr}) + iso8859_10, ISO8859_10, {iso8859_10_mbtowc, NULL}, {iso8859_10_wctomb, NULL}) DEFENCODING(("ISO885911", /* glibc, X11R6.7, glibc */ ), - iso8859_11, ISO8859_11, {iso8859_11_mbtowc, nullptr}, {iso8859_11_wctomb, nullptr}) + iso8859_11, ISO8859_11, {iso8859_11_mbtowc, NULL}, {iso8859_11_wctomb, NULL}) DEFENCODING(("ISO885913", /* IANA, glibc, FreeBSD */ "ISOIR179", /* glibc */ @@ -498,7 +498,7 @@ DEFENCODING(("ISO885913", /* IANA, glibc, FreeBSD */ "CP28603", /* Windows */ "28603", /* Windows */ ), - iso8859_13, ISO8859_13, {iso8859_13_mbtowc, nullptr}, {iso8859_13_wctomb, nullptr}) + iso8859_13, ISO8859_13, {iso8859_13_mbtowc, NULL}, {iso8859_13_wctomb, NULL}) DEFCODEPAGE(28603, iso8859_13) DEFENCODING(("ISO885914", /* IANA, glibc, FreeBSD */ @@ -508,7 +508,7 @@ DEFENCODING(("ISO885914", /* IANA, glibc, FreeBSD */ "L8", /* IANA, glibc */ "ISOCELTIC", /* IANA */ ), - iso8859_14, ISO8859_14, {iso8859_14_mbtowc, nullptr}, {iso8859_14_wctomb, nullptr}) + iso8859_14, ISO8859_14, {iso8859_14_mbtowc, NULL}, {iso8859_14_wctomb, NULL}) DEFENCODING(("ISO885915", /* IANA, glibc, FreeBSD, AIX, OSF/1, Solaris */ "ISO885915:1998", /* glibc */ @@ -519,7 +519,7 @@ DEFENCODING(("ISO885915", /* IANA, glibc, FreeBSD, AIX, OSF/1, Solaris */ "CP28605", /* Windows */ "28605", /* Windows */ ), - iso8859_15, ISO8859_15, {iso8859_15_mbtowc, nullptr}, {iso8859_15_wctomb, nullptr}) + iso8859_15, ISO8859_15, {iso8859_15_mbtowc, NULL}, {iso8859_15_wctomb, NULL}) DEFCODEPAGE(28605, iso8859_15) DEFENCODING(("ISO885916", /* IANA, glibc, FreeBSD */ @@ -529,20 +529,20 @@ DEFENCODING(("ISO885916", /* IANA, glibc, FreeBSD */ "L10", /* IANA */ "CSISOLATIN10", /* IANA */ ), - iso8859_16, ISO8859_16, {iso8859_16_mbtowc, nullptr}, {iso8859_16_wctomb, nullptr}) + iso8859_16, ISO8859_16, {iso8859_16_mbtowc, NULL}, {iso8859_16_wctomb, NULL}) DEFENCODING(("KOI8R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ "CSKOI8R", /* IANA */ "CP20866", /* Windows */ "20866", /* Windows */ ), - koi8_r, KOI8_R, {koi8_r_mbtowc, nullptr}, {koi8_r_wctomb, nullptr}) + koi8_r, KOI8_R, {koi8_r_mbtowc, NULL}, {koi8_r_wctomb, NULL}) DEFCODEPAGE(20866, koi8_r) DEFENCODING(("KOI8U", /* IANA, RFC 2319 */ "CSKOI8U", /* IANA */ ), - koi8_u, KOI8_U, {koi8_u_mbtowc, nullptr}, {koi8_u_wctomb, nullptr}) + koi8_u, KOI8_U, {koi8_u_mbtowc, NULL}, {koi8_u_wctomb, NULL}) DEFENCODING(("KOI8RU", /* AIX */ "CSKOI8RU", /* cppp-reiconv */ @@ -550,7 +550,7 @@ DEFENCODING(("KOI8RU", /* AIX */ "CP21866", /* Windows */ "21866", /* Windows */ ), - koi8_ru, KOI8_RU, {koi8_ru_mbtowc, nullptr}, {koi8_ru_wctomb, nullptr}) + koi8_ru, KOI8_RU, {koi8_ru_mbtowc, NULL}, {koi8_ru_wctomb, NULL}) DEFCODEPAGE(21866, koi8_ru) // Windows 8-bit encodings @@ -561,7 +561,7 @@ DEFENCODING(("CP1250", /* JDK 1.1 */ "MSEE", /* Solaris */ "1250", /* Windows */ ), - cp1250, MSEE, {cp1250_mbtowc, nullptr}, {cp1250_wctomb, nullptr}) + cp1250, MSEE, {cp1250_mbtowc, NULL}, {cp1250_wctomb, NULL}) DEFINDEX(CP1250, MSEE) DEFCODEPAGE(1250, cp1250) @@ -572,7 +572,7 @@ DEFENCODING(("WINDOWS1251", /* IANA */ "CP1251", /* Windows */ "1251", /* Windows */ ), - cp1251, MSCYRL, {cp1251_mbtowc, nullptr}, {cp1251_wctomb, nullptr}) + cp1251, MSCYRL, {cp1251_mbtowc, NULL}, {cp1251_wctomb, NULL}) DEFINDEX(CP1251, MSCYRL) DEFCODEPAGE(1251, cp1251) @@ -583,7 +583,7 @@ DEFENCODING(("WINDOWS1252", /* IANA */ "CP1252", /* Windows */ "1252", /* Windows */ ), - cp1252, MSANSI, {cp1252_mbtowc, nullptr}, {cp1252_wctomb, nullptr}) + cp1252, MSANSI, {cp1252_mbtowc, NULL}, {cp1252_wctomb, NULL}) DEFINDEX(CP1252, MSANSI) DEFCODEPAGE(1252, cp1252) @@ -593,7 +593,7 @@ DEFENCODING(("WINDOWS1253", /* IANA */ "CP1253", /* Windows */ "1253", /* Windows */ ), - cp1253, MSGREEK, {cp1253_mbtowc, nullptr}, {cp1253_wctomb, nullptr}) + cp1253, MSGREEK, {cp1253_mbtowc, NULL}, {cp1253_wctomb, NULL}) DEFINDEX(CP1253, MSGREEK) DEFCODEPAGE(1253, cp1253) @@ -604,7 +604,7 @@ DEFENCODING(("WINDOWS1254", /* IANA */ "CP1254", /* Windows */ "1254", /* Windows */ ), - cp1254, MSTURK, {cp1254_mbtowc, nullptr}, {cp1254_wctomb, nullptr}) + cp1254, MSTURK, {cp1254_mbtowc, NULL}, {cp1254_wctomb, NULL}) DEFINDEX(CP1254, MSTURK) DEFCODEPAGE(1254, cp1254) @@ -615,7 +615,7 @@ DEFENCODING(("WINDOWS1255", /* IANA */ "CP1255", /* Windows */ "1255", /* Windows */ ), - cp1255, MSHEBR, {cp1255_mbtowc, cp1255_flushwc}, {cp1255_wctomb, nullptr}) + cp1255, MSHEBR, {cp1255_mbtowc, cp1255_flushwc}, {cp1255_wctomb, NULL}) DEFINDEX(CP1255, MSHEBR) DEFCODEPAGE(1255, cp1255) @@ -626,7 +626,7 @@ DEFENCODING(("WINDOWS1256", /* IANA */ "CP1256", /* Windows */ "1256", /* Windows */ ), - cp1256, MSARAB, {cp1256_mbtowc, nullptr}, {cp1256_wctomb, nullptr}) + cp1256, MSARAB, {cp1256_mbtowc, NULL}, {cp1256_wctomb, NULL}) DEFINDEX(CP1256, MSARAB) DEFCODEPAGE(1256, cp1256) @@ -637,7 +637,7 @@ DEFENCODING(("WINDOWS1257", /* IANA */ "CP1257", /* Windows */ "1257", /* Windows */ ), - cp1257, WINBALTRIM, {cp1257_mbtowc, nullptr}, {cp1257_wctomb, nullptr}) + cp1257, WINBALTRIM, {cp1257_mbtowc, NULL}, {cp1257_wctomb, NULL}) DEFINDEX(CP1257, WINBALTRIM) DEFCODEPAGE(1257, cp1257) @@ -647,7 +647,7 @@ DEFENCODING(("WINDOWS1258", /* IANA */ "CP1258", /* Windows */ "1258", /* Windows */ ), - cp1258, WINDOWS1258, {cp1258_mbtowc, cp1258_flushwc}, {cp1258_wctomb, nullptr}) + cp1258, WINDOWS1258, {cp1258_mbtowc, cp1258_flushwc}, {cp1258_wctomb, NULL}) DEFINDEX(CP1258, WINDOWS1258) DEFCODEPAGE(1258, cp1258) @@ -657,7 +657,7 @@ DEFENCODING(("IBM850", /* IANA */ "CSPC850MULTILINGUAL", /* IANA */ "CP850", /* Windows */ ), - cp850, IBM850, {cp850_mbtowc, nullptr}, {cp850_wctomb, nullptr}) + cp850, IBM850, {cp850_mbtowc, NULL}, {cp850_wctomb, NULL}) DEFCODEPAGE(850, cp850) DEFENCODING(("IBM862", /* IANA */ @@ -666,7 +666,7 @@ DEFENCODING(("IBM862", /* IANA */ "DOS862", /* .NET */ "CP862", /* Windows */ ), - cp862, IBM862, {cp862_mbtowc, nullptr}, {cp862_wctomb, nullptr}) + cp862, IBM862, {cp862_mbtowc, NULL}, {cp862_wctomb, NULL}) DEFCODEPAGE(862, cp862) DEFENCODING(("IBM866", /* IANA */ @@ -674,14 +674,14 @@ DEFENCODING(("IBM866", /* IANA */ "CSIBM866", /* IANA */ "CP866", /* Windows */ ), - cp866, IBM866, {cp866_mbtowc, nullptr}, {cp866_wctomb, nullptr}) + cp866, IBM866, {cp866_mbtowc, NULL}, {cp866_wctomb, NULL}) DEFCODEPAGE(866, cp866) DEFENCODING(("IBM1131", /* AIX */ "CP1131", /* cppp-reiconv */ "1131", /* cppp-reiconv */ ), - cp1131, IBM1131, {cp1131_mbtowc, nullptr}, {cp1131_wctomb, nullptr}) + cp1131, IBM1131, {cp1131_mbtowc, NULL}, {cp1131_wctomb, NULL}) DEFCODEPAGE(1131, cp1131) // Macintosh 8-bit encodings @@ -693,16 +693,17 @@ DEFENCODING(("MACROMAN", /* JDK 1.1 */ "CP10000", /* Windows */ "10000", /* Windows */ ), - mac_roman, MACINTOSH, {mac_roman_mbtowc, nullptr}, {mac_roman_wctomb, nullptr}) + mac_roman, MACINTOSH, {mac_roman_mbtowc, NULL}, {mac_roman_wctomb, NULL}) DEFCODEPAGE(10000, mac_roman) +DEFINDEX(MAC_ROMAN, MACINTOSH) DEFENCODING(("MACCENTRALEUROPE", /* JDK 1.1 */ "XMACCE", /* Windows */ "CP10029", /* Windows */ "10029", /* Windows */ ), - mac_centraleurope, MAC_CENTRALEUROPE, {mac_centraleurope_mbtowc, nullptr}, - {mac_centraleurope_wctomb, nullptr}) + mac_centraleurope, MAC_CENTRALEUROPE, {mac_centraleurope_mbtowc, NULL}, + {mac_centraleurope_wctomb, NULL}) DEFCODEPAGE(10029, mac_centraleurope) DEFENCODING(("MACICELAND", /* JDK 1.1 */ @@ -710,7 +711,7 @@ DEFENCODING(("MACICELAND", /* JDK 1.1 */ "CP10079", /* Windows */ "10079", /* Windows */ ), - mac_iceland, MAC_ICELAND, {mac_iceland_mbtowc, nullptr}, {mac_iceland_wctomb, nullptr}) + mac_iceland, MAC_ICELAND, {mac_iceland_mbtowc, NULL}, {mac_iceland_wctomb, NULL}) DEFCODEPAGE(10079, mac_iceland) DEFENCODING(("MACCROATIAN", /* JDK 1.1 */ @@ -718,7 +719,7 @@ DEFENCODING(("MACCROATIAN", /* JDK 1.1 */ "CP10082", /* Windows */ "10082", /* Windows */ ), - mac_croatian, MAC_CROATIAN, {mac_croatian_mbtowc, nullptr}, {mac_croatian_wctomb, nullptr}) + mac_croatian, MAC_CROATIAN, {mac_croatian_mbtowc, NULL}, {mac_croatian_wctomb, NULL}) DEFCODEPAGE(10082, mac_croatian) DEFENCODING(("MACROMANIA", /* JDK 1.1 */ @@ -726,7 +727,7 @@ DEFENCODING(("MACROMANIA", /* JDK 1.1 */ "CP10010", /* Windows */ "10010", /* Windows */ ), - mac_romania, MAC_ROMANIA, {mac_romania_mbtowc, nullptr}, {mac_romania_wctomb, nullptr}) + mac_romania, MAC_ROMANIA, {mac_romania_mbtowc, NULL}, {mac_romania_wctomb, NULL}) DEFCODEPAGE(10010, mac_romania) DEFENCODING(("MACCYRILLIC", /* JDK 1.1 */ @@ -734,7 +735,7 @@ DEFENCODING(("MACCYRILLIC", /* JDK 1.1 */ "CP10007", /* Windows */ "10007", /* Windows */ ), - mac_cyrillic, MAC_CYRILLIC, {mac_cyrillic_mbtowc, nullptr}, {mac_cyrillic_wctomb, nullptr}) + mac_cyrillic, MAC_CYRILLIC, {mac_cyrillic_mbtowc, NULL}, {mac_cyrillic_wctomb, NULL}) DEFCODEPAGE(10007, mac_cyrillic) DEFENCODING(("MACUKRAINE", /* JDK 1.1 */ @@ -742,7 +743,7 @@ DEFENCODING(("MACUKRAINE", /* JDK 1.1 */ "CP10017", /* Windows */ "10017", /* Windows */ ), - mac_ukraine, MAC_UKRAINE, {mac_ukraine_mbtowc, nullptr}, {mac_ukraine_wctomb, nullptr}) + mac_ukraine, MAC_UKRAINE, {mac_ukraine_mbtowc, NULL}, {mac_ukraine_wctomb, NULL}) DEFCODEPAGE(10017, mac_ukraine) DEFENCODING(("MACGREEK", /* JDK 1.1 */ @@ -750,7 +751,7 @@ DEFENCODING(("MACGREEK", /* JDK 1.1 */ "CP10006", /* Windows */ "10006", /* Windows */ ), - mac_greek, MAC_GREEK, {mac_greek_mbtowc, nullptr}, {mac_greek_wctomb, nullptr}) + mac_greek, MAC_GREEK, {mac_greek_mbtowc, NULL}, {mac_greek_wctomb, NULL}) DEFCODEPAGE(10006, mac_greek) DEFENCODING(("MACTURKISH", /* JDK 1.1 */ @@ -758,7 +759,7 @@ DEFENCODING(("MACTURKISH", /* JDK 1.1 */ "CP10081", /* Windows */ "10081", /* Windows */ ), - mac_turkish, MAC_TURKISH, {mac_turkish_mbtowc, nullptr}, {mac_turkish_wctomb, nullptr}) + mac_turkish, MAC_TURKISH, {mac_turkish_mbtowc, NULL}, {mac_turkish_wctomb, NULL}) DEFCODEPAGE(10081, mac_turkish) DEFENCODING(("MACHEBREW", /* JDK 1.1 */ @@ -766,7 +767,7 @@ DEFENCODING(("MACHEBREW", /* JDK 1.1 */ "CP10005", /* Windows */ "10005", /* Windows */ ), - mac_hebrew, MAC_HEBREW, {mac_hebrew_mbtowc, nullptr}, {mac_hebrew_wctomb, nullptr}) + mac_hebrew, MAC_HEBREW, {mac_hebrew_mbtowc, NULL}, {mac_hebrew_wctomb, NULL}) DEFCODEPAGE(10005, mac_hebrew) DEFENCODING(("MACARABIC", /* JDK 1.1 */ @@ -774,7 +775,7 @@ DEFENCODING(("MACARABIC", /* JDK 1.1 */ "CP10004", /* Windows */ "10004", /* Windows */ ), - mac_arabic, MAC_ARABIC, {mac_arabic_mbtowc, nullptr}, {mac_arabic_wctomb, nullptr}) + mac_arabic, MAC_ARABIC, {mac_arabic_mbtowc, NULL}, {mac_arabic_wctomb, NULL}) DEFCODEPAGE(10004, mac_arabic) DEFENCODING(("MACTHAI", /* JDK 1.1 */ @@ -782,7 +783,7 @@ DEFENCODING(("MACTHAI", /* JDK 1.1 */ "CP10021", /* Windows */ "10021", /* Windows */ ), - mac_thai, MAC_THAI, {mac_thai_mbtowc, nullptr}, {mac_thai_wctomb, nullptr}) + mac_thai, MAC_THAI, {mac_thai_mbtowc, NULL}, {mac_thai_wctomb, NULL}) DEFCODEPAGE(10021, mac_thai) // Other platform specific 8-bit encodings @@ -792,28 +793,28 @@ DEFENCODING(("HPROMAN8", /* IANA, X11R6.4 */ "CSHPROMAN8", /* IANA */ "CP1051", /* Windows */ ), - hp_roman8, HPROMAN8, {hp_roman8_mbtowc, nullptr}, {hp_roman8_wctomb, nullptr}) + hp_roman8, HPROMAN8, {hp_roman8_mbtowc, NULL}, {hp_roman8_wctomb, NULL}) DEFENCODING(("NEXTSTEP", /* (Unknown) */ ), - nextstep, NEXTSTEP, {nextstep_mbtowc, nullptr}, {nextstep_wctomb, nullptr}) + nextstep, NEXTSTEP, {nextstep_mbtowc, NULL}, {nextstep_wctomb, NULL}) // Regional 8-bit encodings used for a single language DEFENCODING(("ARMSCII8", /* Armenia Standard */ ), - armscii_8, ARMSCII8, {armscii_8_mbtowc, nullptr}, {armscii_8_wctomb, nullptr}) + armscii_8, ARMSCII8, {armscii_8_mbtowc, NULL}, {armscii_8_wctomb, NULL}) DEFENCODING(("GEORGIANACADEMY", /* Georgia Academy */ ), - georgian_academy, GEORGIANACADEMY, {georgian_academy_mbtowc, nullptr}, {georgian_academy_wctomb, nullptr}) + georgian_academy, GEORGIANACADEMY, {georgian_academy_mbtowc, NULL}, {georgian_academy_wctomb, NULL}) DEFENCODING(("GEORGIANPS", /* Georgia PS */ ), - georgian_ps, GEORGIANPS, {georgian_ps_mbtowc, nullptr}, {georgian_ps_wctomb, nullptr}) + georgian_ps, GEORGIANPS, {georgian_ps_mbtowc, NULL}, {georgian_ps_wctomb, NULL}) DEFENCODING(("KOI8T", /* (Unknown) */ ), - koi8_t, KOI8T, {koi8_t_mbtowc, nullptr}, {koi8_t_wctomb, nullptr}) + koi8_t, KOI8T, {koi8_t_mbtowc, NULL}, {koi8_t_wctomb, NULL}) DEFENCODING(("PT154", /* IANA, glibc */ "PTCP154", /* IANA */ @@ -824,7 +825,7 @@ DEFENCODING(("PT154", /* IANA, glibc */ "CP154", /* cppp-reiconv */ "154", /* cppp-reiconv */ ), - pt154, PT154, {pt154_mbtowc, nullptr}, {pt154_wctomb, nullptr}) + pt154, PT154, {pt154_mbtowc, NULL}, {pt154_wctomb, NULL}) DEFCODEPAGE(154, pt154) DEFENCODING(("RK1048", /* IANA, glibc */ @@ -832,17 +833,17 @@ DEFENCODING(("RK1048", /* IANA, glibc */ "KZ1048", /* IANA */ "CSKZ1048", /* IANA */ ), - rk1048, RK1048, {rk1048_mbtowc, nullptr}, {rk1048_wctomb, nullptr}) + rk1048, RK1048, {rk1048_mbtowc, NULL}, {rk1048_wctomb, NULL}) DEFENCODING(("MULELAO1", /* (Unknown) */ ), - mulelao, MULELAO1, {mulelao_mbtowc, nullptr}, {mulelao_wctomb, nullptr}) + mulelao, MULELAO1, {mulelao_mbtowc, NULL}, {mulelao_wctomb, NULL}) DEFENCODING(("IBMCP1133", /* (Unknown) */ "CP1133", /* cppp-reiconv */ "1133", /* cppp-reiconv */ ), - cp1133, IBMCP1133, {cp1133_mbtowc, nullptr}, {cp1133_wctomb, nullptr}) + cp1133, IBMCP1133, {cp1133_mbtowc, NULL}, {cp1133_wctomb, NULL}) DEFCODEPAGE(1133, cp1133) DEFENCODING(("TIS620", /* IANA, glibc, HP-UX */ @@ -853,7 +854,7 @@ DEFENCODING(("TIS620", /* IANA, glibc, HP-UX */ "TACTIS", /* OSF/1 */ "TIS620.2533", /* Solaris */ ), - tis620, TIS620, {tis620_mbtowc, nullptr}, {tis620_wctomb, nullptr}) + tis620, TIS620, {tis620_mbtowc, NULL}, {tis620_wctomb, NULL}) DEFENCODING(("WINDOWS874", /* IANA */ "CSWINDOWS874", /* IANA */ @@ -861,21 +862,21 @@ DEFENCODING(("WINDOWS874", /* IANA */ "CP874", /* Windows */ "874", /* Windows */ ), - cp874, WINDOWS874, {cp874_mbtowc, nullptr}, {cp874_wctomb, nullptr}) + cp874, WINDOWS874, {cp874_mbtowc, NULL}, {cp874_wctomb, NULL}) DEFCODEPAGE(874, cp874) DEFENCODING(("VISCII", /* IANA, RFC 1456 */ "VISCII1.11", /* IANA */ "CSVISCII", /* IANA */ ), - viscii, VISCII, {viscii_mbtowc, nullptr}, {viscii_wctomb, nullptr}) + viscii, VISCII, {viscii_mbtowc, NULL}, {viscii_wctomb, NULL}) DEFENCODING(("TCVN", /* (Unknown) */ "TCVN5712", /* (Unknown) */ "TCVN57121", /* (Unknown) */ "TCVN57121:1993", /* (Unknown) */ ), - tcvn, TCVN, {tcvn_mbtowc, tcvn_flushwc}, {tcvn_wctomb, nullptr}) + tcvn, TCVN, {tcvn_mbtowc, tcvn_flushwc}, {tcvn_wctomb, NULL}) // CJK character sets (not documented) DEFENCODING(("JISC62201969RO", /* IANA */ @@ -884,13 +885,13 @@ DEFENCODING(("JISC62201969RO", /* IANA */ "JP", /* IANA */ "CSISO14JISC6220RO", /* IANA */ ), - iso646_jp, JP, {iso646_jp_mbtowc, nullptr}, {iso646_jp_wctomb, nullptr}) + iso646_jp, JP, {iso646_jp_mbtowc, NULL}, {iso646_jp_wctomb, NULL}) DEFENCODING(("JISX0201", /* IANA */ "JISX02011976", "X0201", /* IANA */ "CSHALFWIDTHKATAKANA", /* IANA */ ), - jisx0201, JISX0201, {jisx0201_mbtowc, nullptr}, {jisx0201_wctomb, nullptr}) + jisx0201, JISX0201, {jisx0201_mbtowc, NULL}, {jisx0201_wctomb, NULL}) DEFENCODING(("JISX0208", "JISX02081983", /* IANA */ "JISX02081990", "JIS0208", "X0208", /* IANA */ @@ -898,14 +899,14 @@ DEFENCODING(("JISX0208", "JISX02081983", /* IANA */ "JISC62261983", /* IANA */ "CSISO87JISX0208", /* IANA */ ), - jisx0208, JISX0208, {jisx0208_mbtowc, nullptr}, {jisx0208_wctomb, nullptr}) + jisx0208, JISX0208, {jisx0208_mbtowc, NULL}, {jisx0208_wctomb, NULL}) DEFENCODING(("JISX0212", "JISX0212.19900", "JISX02121990", /* IANA */ "X0212", /* IANA */ "ISOIR159", /* IANA */ "CSISO159JISX02121990", /* IANA */ ), - jisx0212, JISX0212, {jisx0212_mbtowc, nullptr}, {jisx0212_wctomb, nullptr}) + jisx0212, JISX0212, {jisx0212_mbtowc, NULL}, {jisx0212_wctomb, NULL}) DEFENCODING(("GB198880", /* IANA */ "ISO646CN", /* IANA */ @@ -913,17 +914,17 @@ DEFENCODING(("GB198880", /* IANA */ "CN", /* IANA */ "CSISO57GB1988", /* IANA */ ), - iso646_cn, GB1988_80, {iso646_cn_mbtowc, nullptr}, {iso646_cn_wctomb, nullptr}) + iso646_cn, GB1988_80, {iso646_cn_mbtowc, NULL}, {iso646_cn_wctomb, NULL}) DEFENCODING(("GB231280", /* IANA */ "ISOIR58", /* IANA */ "CSISO58GB231280", /* IANA */ ), - gb2312, GB2312_80, {gb2312_mbtowc, nullptr}, {gb2312_wctomb, nullptr}) + gb2312, GB2312_80, {gb2312_mbtowc, NULL}, {gb2312_wctomb, NULL}) DEFENCODING(("ISOIR165", "CNGBISOIR165", /* RFC 1922 */ ), - isoir165, CNGBISOIR165, {isoir165_mbtowc, nullptr}, {isoir165_wctomb, nullptr}) + isoir165, CNGBISOIR165, {isoir165_mbtowc, NULL}, {isoir165_wctomb, NULL}) DEFENCODING(("KSC5601", /* IANA */ "KSC56011987", /* IANA */ @@ -932,49 +933,49 @@ DEFENCODING(("KSC5601", /* IANA */ "CSKSC56011987", /* IANA */ "KOREAN", /* IANA */ ), - ksc5601, KOREAN, {ksc5601_mbtowc, nullptr}, {ksc5601_wctomb, nullptr}) + ksc5601, KOREAN, {ksc5601_mbtowc, NULL}, {ksc5601_wctomb, NULL}) // AIX locales DEFENCODING(("IBM856", /* AIX */ "CP856", /* AIX */ "856", /* AIX */ ), - cp856, IBM856, {cp856_mbtowc, nullptr}, {cp856_wctomb, nullptr}) + cp856, IBM856, {cp856_mbtowc, NULL}, {cp856_wctomb, NULL}) DEFCODEPAGE(856, cp856) DEFENCODING(("IBM922", /* AIX */ "CP922", /* AIX */ "922", /* AIX */ ), - cp922, IBM922, {cp922_mbtowc, nullptr}, {cp922_wctomb, nullptr}) + cp922, IBM922, {cp922_mbtowc, NULL}, {cp922_wctomb, NULL}) DEFCODEPAGE(922, cp922) DEFENCODING(("IBM943", /* AIX */ "CP943", /* AIX */ "943", /* AIX */ ), - cp943, IBM943, {cp943_mbtowc, nullptr}, {cp943_wctomb, nullptr}) + cp943, IBM943, {cp943_mbtowc, NULL}, {cp943_wctomb, NULL}) DEFCODEPAGE(943, cp943) DEFENCODING(("IBM1046", /* AIX */ "CP1046", /* AIX */ "1046", /* AIX */ ), - cp1046, IBM1046, {cp1046_mbtowc, nullptr}, {cp1046_wctomb, nullptr}) + cp1046, IBM1046, {cp1046_mbtowc, NULL}, {cp1046_wctomb, NULL}) DEFCODEPAGE(1046, cp1046) DEFENCODING(("IBM1124", /* AIX */ "CP1124", /* AIX */ "1124", /* AIX */ ), - cp1124, IBM1124, {cp1124_mbtowc, nullptr}, {cp1124_wctomb, nullptr}) + cp1124, IBM1124, {cp1124_mbtowc, NULL}, {cp1124_wctomb, NULL}) DEFCODEPAGE(1124, cp1124) DEFENCODING(("IBM1129", /* AIX */ "CP1129", /* AIX */ "1129", /* AIX */ ), - cp1129, IBM1129, {cp1129_mbtowc, nullptr}, {cp1129_wctomb, nullptr}) + cp1129, IBM1129, {cp1129_mbtowc, NULL}, {cp1129_wctomb, NULL}) DEFCODEPAGE(1129, cp1129) DEFENCODING(("IBM1161", /* glibc */ @@ -982,7 +983,7 @@ DEFENCODING(("IBM1161", /* glibc */ "CP1161", /* AIX */ "1161", /* AIX */ ), - cp1161, IBM1161, {cp1161_mbtowc, nullptr}, {cp1161_wctomb, nullptr}) + cp1161, IBM1161, {cp1161_mbtowc, NULL}, {cp1161_wctomb, NULL}) DEFCODEPAGE(1161, cp1161) DEFENCODING(("IBM1162", /* glibc */ @@ -990,7 +991,7 @@ DEFENCODING(("IBM1162", /* glibc */ "CP1162", /* AIX */ "1162", /* AIX */ ), - cp1162, IBM1162, {cp1162_mbtowc, nullptr}, {cp1162_wctomb, nullptr}) + cp1162, IBM1162, {cp1162_mbtowc, NULL}, {cp1162_wctomb, NULL}) DEFCODEPAGE(1162, cp1162) DEFENCODING(("IBM1163", /* glibc */ @@ -998,7 +999,7 @@ DEFENCODING(("IBM1163", /* glibc */ "CP1163", /* AIX */ "1163", /* AIX */ ), - cp1163, IBM1163, {cp1163_mbtowc, nullptr}, {cp1163_wctomb, nullptr}) + cp1163, IBM1163, {cp1163_mbtowc, NULL}, {cp1163_wctomb, NULL}) DEFCODEPAGE(1163, cp1163) // MS-DOS locales @@ -1007,14 +1008,14 @@ DEFENCODING(("IBM437", /* IANA */ "CSPC8CODEPAGE437", /* IANA */ "CP437", /* IANA */ ), - cp437, CP437, {cp437_mbtowc, nullptr}, {cp437_wctomb, nullptr}) + cp437, CP437, {cp437_mbtowc, NULL}, {cp437_wctomb, NULL}) DEFCODEPAGE(437, cp437) DEFENCODING(("IBM737", /* Windows */ "CP737", /* Windows */ "737", /* Windows */ ), - cp737, CP737, {cp737_mbtowc, nullptr}, {cp737_wctomb, nullptr}) + cp737, CP737, {cp737_mbtowc, NULL}, {cp737_wctomb, NULL}) DEFCODEPAGE(737, cp737) DEFENCODING(("IBM775", /* IANA */ @@ -1022,7 +1023,7 @@ DEFENCODING(("IBM775", /* IANA */ "CP775", /* Windows */ "775", /* Windows */ ), - cp775, CP775, {cp775_mbtowc, nullptr}, {cp775_wctomb, nullptr}) + cp775, CP775, {cp775_mbtowc, NULL}, {cp775_wctomb, NULL}) DEFCODEPAGE(775, cp775) DEFENCODING(("IBM852", /* IANA */ @@ -1030,7 +1031,7 @@ DEFENCODING(("IBM852", /* IANA */ "CSPCP852", /* IANA */ "CP852", /* Windows */ ), - cp852, CP852, {cp852_mbtowc, nullptr}, {cp852_wctomb, nullptr}) + cp852, CP852, {cp852_mbtowc, NULL}, {cp852_wctomb, NULL}) DEFCODEPAGE(852, cp852) DEFENCODING(("IBM853", /* (Unknown) */ @@ -1039,7 +1040,7 @@ DEFENCODING(("IBM853", /* (Unknown) */ "CSIBM853", /* (Unknown) */ "CP853" /* cppp-reiconv */ ), - cp853, CP853, {cp853_mbtowc, nullptr}, {cp853_wctomb, nullptr}) + cp853, CP853, {cp853_mbtowc, NULL}, {cp853_wctomb, NULL}) DEFCODEPAGE(853, cp853) DEFENCODING(("IBM855", /* IANA */ @@ -1047,7 +1048,7 @@ DEFENCODING(("IBM855", /* IANA */ "CSIBM855", /* IANA */ "CP855" /* Windows */ ), - cp855, CP855, {cp855_mbtowc, nullptr}, {cp855_wctomb, nullptr}) + cp855, CP855, {cp855_mbtowc, NULL}, {cp855_wctomb, NULL}) DEFCODEPAGE(855, cp855) DEFENCODING(("IBM857", /* IANA */ @@ -1055,7 +1056,7 @@ DEFENCODING(("IBM857", /* IANA */ "CSIBM857", /* IANA */ "CP857", /* Windows */ ), - cp857, CP857, {cp857_mbtowc, nullptr}, {cp857_wctomb, nullptr}) + cp857, CP857, {cp857_mbtowc, NULL}, {cp857_wctomb, NULL}) DEFCODEPAGE(857, cp857) DEFENCODING(("IBM858", /* Solaris */ @@ -1066,7 +1067,7 @@ DEFENCODING(("IBM858", /* Solaris */ "CP00858", /* Solaris */ "CSIBM858" /* Solaris */ ), - cp858, CP858, {cp858_mbtowc, nullptr}, {cp858_wctomb, nullptr}) + cp858, CP858, {cp858_mbtowc, NULL}, {cp858_wctomb, NULL}) DEFCODEPAGE(858, cp858) DEFENCODING(("IBM860", /* IANA */ @@ -1074,7 +1075,7 @@ DEFENCODING(("IBM860", /* IANA */ "CSIBM860", /* IANA */ "CP860", /* AIX */ ), - cp860, CP860, {cp860_mbtowc, nullptr}, {cp860_wctomb, nullptr}) + cp860, CP860, {cp860_mbtowc, NULL}, {cp860_wctomb, NULL}) DEFCODEPAGE(860, cp860) DEFENCODING(("IBM861", /* IANA */ @@ -1083,7 +1084,7 @@ DEFENCODING(("IBM861", /* IANA */ "CPIS", /* IANA */ "CSIBM861", /* IANA */ ), - cp861, CP861, {cp861_mbtowc, nullptr}, {cp861_wctomb, nullptr}) + cp861, CP861, {cp861_mbtowc, NULL}, {cp861_wctomb, NULL}) DEFCODEPAGE(861, cp861) DEFENCODING(("IBM863", /* IANA */ @@ -1091,7 +1092,7 @@ DEFENCODING(("IBM863", /* IANA */ "CSIBM863", /* IANA */ "CP863", /* AIX */ ), - cp863, CP863, {cp863_mbtowc, nullptr}, {cp863_wctomb, nullptr}) + cp863, CP863, {cp863_mbtowc, NULL}, {cp863_wctomb, NULL}) DEFCODEPAGE(863, cp863) DEFENCODING(("IBM864", /* IANA */ @@ -1099,7 +1100,7 @@ DEFENCODING(("IBM864", /* IANA */ "CP864", /* AIX */ "864", /* IANA */ ), - cp864, CP864, {cp864_mbtowc, nullptr}, {cp864_wctomb, nullptr}) + cp864, CP864, {cp864_mbtowc, NULL}, {cp864_wctomb, NULL}) DEFCODEPAGE(864, cp864) DEFENCODING(("IBM865", /* IANA */ @@ -1107,7 +1108,7 @@ DEFENCODING(("IBM865", /* IANA */ "CSIBM865", /* IANA */ "CP865", /* AIX */ ), - cp865, CP865, {cp865_mbtowc, nullptr}, {cp865_wctomb, nullptr}) + cp865, CP865, {cp865_mbtowc, NULL}, {cp865_wctomb, NULL}) DEFCODEPAGE(865, cp865) DEFENCODING(("IBM869", /* IANA */ @@ -1117,7 +1118,7 @@ DEFENCODING(("IBM869", /* IANA */ "CP869", /* AIX */ "CP-GR", /* AIX */ ), - cp869, CP869, {cp869_mbtowc, nullptr}, {cp869_wctomb, nullptr}) + cp869, CP869, {cp869_mbtowc, NULL}, {cp869_wctomb, NULL}) DEFCODEPAGE(869, cp869) DEFENCODING(("IBM1125", /* AIX */ @@ -1128,7 +1129,7 @@ DEFENCODING(("IBM1125", /* AIX */ "CP866U", /* AIX */ "CP1125", /* AIX */ ), - cp1125, CP1125, {cp1125_mbtowc, nullptr}, {cp1125_wctomb, nullptr}) + cp1125, CP1125, {cp1125_mbtowc, NULL}, {cp1125_wctomb, NULL}) DEFCODEPAGE(1125, cp1125) // z/OS locales @@ -1141,7 +1142,7 @@ DEFENCODING(("IBM037", /* IANA */ "CP037", /* IANA */ "CP0037", /* IANA */ ), - ebcdic037, EBCDIC_037, {ebcdic037_mbtowc, nullptr}, {ebcdic037_wctomb, nullptr}) + ebcdic037, EBCDIC_037, {ebcdic037_mbtowc, NULL}, {ebcdic037_wctomb, NULL}) DEFCODEPAGE(37, ebcdic037) DEFENCODING(("IBM273", /* IANA */ @@ -1149,7 +1150,7 @@ DEFENCODING(("IBM273", /* IANA */ "CP273", /* AIX */ "273", /* AIX */ ), - ebcdic273, EBCDIC_273, {ebcdic273_mbtowc, nullptr}, {ebcdic273_wctomb, nullptr}) + ebcdic273, EBCDIC_273, {ebcdic273_mbtowc, NULL}, {ebcdic273_wctomb, NULL}) DEFCODEPAGE(273, ebcdic273) DEFENCODING(("IBM277", /* IANA */ @@ -1159,7 +1160,7 @@ DEFENCODING(("IBM277", /* IANA */ "CP277", /* AIX */ "277", /* AIX */ ), - ebcdic277, EBCDIC_277, {ebcdic277_mbtowc, nullptr}, {ebcdic277_wctomb, nullptr}) + ebcdic277, EBCDIC_277, {ebcdic277_mbtowc, NULL}, {ebcdic277_wctomb, NULL}) DEFCODEPAGE(277, ebcdic277) DEFENCODING(("IBM278", /* IANA */ @@ -1169,7 +1170,7 @@ DEFENCODING(("IBM278", /* IANA */ "CP278", /* AIX */ "278", /* AIX */ ), - ebcdic278, EBCDIC_278, {ebcdic278_mbtowc, nullptr}, {ebcdic278_wctomb, nullptr}) + ebcdic278, EBCDIC_278, {ebcdic278_mbtowc, NULL}, {ebcdic278_wctomb, NULL}) DEFCODEPAGE(278, ebcdic278) DEFENCODING(("IBM280", /* IANA */ @@ -1178,14 +1179,14 @@ DEFENCODING(("IBM280", /* IANA */ "CP280", /* AIX */ "280", /* AIX */ ), - ebcdic280, EBCDIC_280, {ebcdic280_mbtowc, nullptr}, {ebcdic280_wctomb, nullptr}) + ebcdic280, EBCDIC_280, {ebcdic280_mbtowc, NULL}, {ebcdic280_wctomb, NULL}) DEFCODEPAGE(280, ebcdic280) DEFENCODING(("IBM282", /* (Unknown) */ "282", /* cppp-reiconv */ "CP282", /* cppp-reiconv */ ), - ebcdic282, EBCDIC_282, {ebcdic282_mbtowc, nullptr}, {ebcdic282_wctomb, nullptr}) + ebcdic282, EBCDIC_282, {ebcdic282_mbtowc, NULL}, {ebcdic282_wctomb, NULL}) DEFCODEPAGE(282, ebcdic282) DEFENCODING(("IBM284", /* IANA */ @@ -1194,7 +1195,7 @@ DEFENCODING(("IBM284", /* IANA */ "CP284", /* AIX */ "284", /* AIX */ ), - ebcdic284, EBCDIC_284, {ebcdic284_mbtowc, nullptr}, {ebcdic284_wctomb, nullptr}) + ebcdic284, EBCDIC_284, {ebcdic284_mbtowc, NULL}, {ebcdic284_wctomb, NULL}) DEFCODEPAGE(284, ebcdic284) DEFENCODING(("IBM285", /* IANA */ @@ -1203,7 +1204,7 @@ DEFENCODING(("IBM285", /* IANA */ "CSIBM285", /* IANA */ "285", /* AIX */ ), - ebcdic285, EBCDIC_285, {ebcdic285_mbtowc, nullptr}, {ebcdic285_wctomb, nullptr}) + ebcdic285, EBCDIC_285, {ebcdic285_mbtowc, NULL}, {ebcdic285_wctomb, NULL}) DEFCODEPAGE(285, ebcdic285) DEFENCODING(("IBM297", /* IANA */ @@ -1212,7 +1213,7 @@ DEFENCODING(("IBM297", /* IANA */ "CP297", /* AIX */ "297", /* AIX */ ), - ebcdic297, EBCDIC_297, {ebcdic297_mbtowc, nullptr}, {ebcdic297_wctomb, nullptr}) + ebcdic297, EBCDIC_297, {ebcdic297_mbtowc, NULL}, {ebcdic297_wctomb, NULL}) DEFCODEPAGE(297, ebcdic297) DEFENCODING(("IBM423", /* IANA */ @@ -1221,7 +1222,7 @@ DEFENCODING(("IBM423", /* IANA */ "CP423", /* AIX */ "423", /* AIX */ ), - ebcdic423, EBCDIC_423, {ebcdic423_mbtowc, nullptr}, {ebcdic423_wctomb, nullptr}) + ebcdic423, EBCDIC_423, {ebcdic423_mbtowc, NULL}, {ebcdic423_wctomb, NULL}) DEFCODEPAGE(423, ebcdic423) DEFENCODING(("IBM424", /* IANA */ @@ -1230,14 +1231,14 @@ DEFENCODING(("IBM424", /* IANA */ "CP424", /* AIX */ "424", /* AIX */ ), - ebcdic424, EBCDIC_424, {ebcdic424_mbtowc, nullptr}, {ebcdic424_wctomb, nullptr}) + ebcdic424, EBCDIC_424, {ebcdic424_mbtowc, NULL}, {ebcdic424_wctomb, NULL}) DEFCODEPAGE(424, ebcdic424) DEFENCODING(("IBM425", /* (Unknown) */ "CP425", /* cppp-reiconv */ "425", /* cppp-reiconv */ ), - ebcdic425, EBCDIC_425, {ebcdic425_mbtowc, nullptr}, {ebcdic425_wctomb, nullptr}) + ebcdic425, EBCDIC_425, {ebcdic425_mbtowc, NULL}, {ebcdic425_wctomb, NULL}) DEFCODEPAGE(425, ebcdic425) DEFENCODING(("IBM500", /* IANA */ @@ -1247,7 +1248,7 @@ DEFENCODING(("IBM500", /* IANA */ "CP500", /* AIX */ "500", /* AIX */ ), - ebcdic500, EBCDIC_500, {ebcdic500_mbtowc, nullptr}, {ebcdic500_wctomb, nullptr}) + ebcdic500, EBCDIC_500, {ebcdic500_mbtowc, NULL}, {ebcdic500_wctomb, NULL}) DEFCODEPAGE(500, ebcdic500) @@ -1257,7 +1258,7 @@ DEFENCODING(("IBM838", /* AIX */ "CP838", /* AIX */ "838", /* AIX */ ), - ebcdic838, EBCDIC_838, {ebcdic838_mbtowc, nullptr}, {ebcdic838_wctomb, nullptr}) + ebcdic838, EBCDIC_838, {ebcdic838_mbtowc, NULL}, {ebcdic838_wctomb, NULL}) DEFCODEPAGE(838, ebcdic838) DEFENCODING(("IBM870", /* IANA */ @@ -1267,7 +1268,7 @@ DEFENCODING(("IBM870", /* IANA */ "CSIBM870", /* IANA */ "870", /* AIX */ ), - ebcdic870, EBCDIC_870, {ebcdic870_mbtowc, nullptr}, {ebcdic870_wctomb, nullptr}) + ebcdic870, EBCDIC_870, {ebcdic870_mbtowc, NULL}, {ebcdic870_wctomb, NULL}) DEFCODEPAGE(870, ebcdic870) DEFENCODING(("IBM871", /* IANA */ @@ -1276,7 +1277,7 @@ DEFENCODING(("IBM871", /* IANA */ "CP871", /* AIX */ "871", /* AIX */ ), - ebcdic871, EBCDIC_871, {ebcdic871_mbtowc, nullptr}, {ebcdic871_wctomb, nullptr}) + ebcdic871, EBCDIC_871, {ebcdic871_mbtowc, NULL}, {ebcdic871_wctomb, NULL}) DEFCODEPAGE(871, ebcdic871) DEFENCODING(("IBM875", /* glibc */ @@ -1284,7 +1285,7 @@ DEFENCODING(("IBM875", /* glibc */ "CP875", /* AIX */ "875", /* AIX */ ), - ebcdic875, EBCDIC_875, {ebcdic875_mbtowc, nullptr}, {ebcdic875_wctomb, nullptr}) + ebcdic875, EBCDIC_875, {ebcdic875_mbtowc, NULL}, {ebcdic875_wctomb, NULL}) DEFCODEPAGE(875, ebcdic875) DEFENCODING(("IBM880", /* IANA */ @@ -1293,14 +1294,14 @@ DEFENCODING(("IBM880", /* IANA */ "CP880", /* cppp-reiconv */ "880", /*cppp-reiconv*/ ), - ebcdic880, EBCDIC_880, {ebcdic880_mbtowc, nullptr}, {ebcdic880_wctomb, nullptr}) + ebcdic880, EBCDIC_880, {ebcdic880_mbtowc, NULL}, {ebcdic880_wctomb, NULL}) DEFCODEPAGE(880, ebcdic880) DEFENCODING(("IBM905", /* IANA */ "EBCDICCPTR", /* IANA */ "CSIBM905", /* IANA */ ), - ebcdic905, EBCDIC_905, {ebcdic905_mbtowc, nullptr}, {ebcdic905_wctomb, nullptr}) + ebcdic905, EBCDIC_905, {ebcdic905_mbtowc, NULL}, {ebcdic905_wctomb, NULL}) DEFCODEPAGE(905, ebcdic905) DEFENCODING(("IBM924", /* SUSE Linux Enterprise Server */ @@ -1312,14 +1313,14 @@ DEFENCODING(("IBM924", /* SUSE Linux Enterprise Server */ "CP924", /* SUSE Linux Enterprise Server */ "924", /* SUSE Linux Enterprise Server */ ), - ebcdic924, EBCDIC_924, {ebcdic924_mbtowc, nullptr}, {ebcdic924_wctomb, nullptr}) + ebcdic924, EBCDIC_924, {ebcdic924_mbtowc, NULL}, {ebcdic924_wctomb, NULL}) DEFCODEPAGE(924, ebcdic924) DEFENCODING(("IBM1025", /* glibc */ "CP1025", /* AIX */ "1025", /* AIX */ ), - ebcdic1025, EBCDIC_1025, {ebcdic1025_mbtowc, nullptr}, {ebcdic1025_wctomb, nullptr}) + ebcdic1025, EBCDIC_1025, {ebcdic1025_mbtowc, NULL}, {ebcdic1025_wctomb, NULL}) DEFCODEPAGE(1025, ebcdic1025) DEFENCODING(("IBM1026", /* IANA */ @@ -1327,7 +1328,7 @@ DEFENCODING(("IBM1026", /* IANA */ "CP1026", /* AIX */ "1026", /* AIX */ ), - ebcdic1026, EBCDIC_1026, {ebcdic1026_mbtowc, nullptr}, {ebcdic1026_wctomb, nullptr}) + ebcdic1026, EBCDIC_1026, {ebcdic1026_mbtowc, NULL}, {ebcdic1026_wctomb, NULL}) DEFCODEPAGE(1026, ebcdic1026) DEFENCODING(("IBM1047", /* IANA */ @@ -1335,55 +1336,55 @@ DEFENCODING(("IBM1047", /* IANA */ "CP1047", /* AIX */ "1047", /* AIX */ ), - ebcdic1047, EBCDIC_1047, {ebcdic1047_mbtowc, nullptr}, {ebcdic1047_wctomb, nullptr}) + ebcdic1047, EBCDIC_1047, {ebcdic1047_mbtowc, NULL}, {ebcdic1047_wctomb, NULL}) DEFCODEPAGE(1047, ebcdic1047) DEFENCODING(("IBM1097", /* glibc */ "CP1097", /* AIX */ ), - ebcdic1097, EBCDIC_1097, {ebcdic1097_mbtowc, nullptr}, {ebcdic1097_wctomb, nullptr}) + ebcdic1097, EBCDIC_1097, {ebcdic1097_mbtowc, NULL}, {ebcdic1097_wctomb, NULL}) DEFCODEPAGE(1097, ebcdic1097) DEFENCODING(("IBM1112", /* glibc */ "CP1112", /* AIX */ "1112", /* AIX */ ), - ebcdic1112, EBCDIC_1112, {ebcdic1112_mbtowc, nullptr}, {ebcdic1112_wctomb, nullptr}) + ebcdic1112, EBCDIC_1112, {ebcdic1112_mbtowc, NULL}, {ebcdic1112_wctomb, NULL}) DEFCODEPAGE(1112, ebcdic1112) DEFENCODING(("IBM1122", /* glibc */ "CP1122", /* AIX */ "1122", /* AIX */ ), - ebcdic1122, EBCDIC_1122, {ebcdic1122_mbtowc, nullptr}, {ebcdic1122_wctomb, nullptr}) + ebcdic1122, EBCDIC_1122, {ebcdic1122_mbtowc, NULL}, {ebcdic1122_wctomb, NULL}) DEFCODEPAGE(1122, ebcdic1122) DEFENCODING(("IBM1123", /* glibc */ "CP1123", /* AIX */ "1123", /* AIX */ ), - ebcdic1123, EBCDIC_1123, {ebcdic1123_mbtowc, nullptr}, {ebcdic1123_wctomb, nullptr}) + ebcdic1123, EBCDIC_1123, {ebcdic1123_mbtowc, NULL}, {ebcdic1123_wctomb, NULL}) DEFCODEPAGE(1123, ebcdic1123) DEFENCODING(("IBM1130", /* glibc */ "CP1130", /* cppp-reiconv */ "1130", /* cppp-reiconv */ ), - ebcdic1130, EBCDIC_1130, {ebcdic1130_mbtowc, nullptr}, {ebcdic1130_wctomb, nullptr}) + ebcdic1130, EBCDIC_1130, {ebcdic1130_mbtowc, NULL}, {ebcdic1130_wctomb, NULL}) DEFCODEPAGE(1130, ebcdic1130) DEFENCODING(("IBM1132", /* glibc */ "CP1132", /* cppp-reiconv */ "1132", /* cppp-reiconv */ ), - ebcdic1132, EBCDIC_1132, {ebcdic1132_mbtowc, nullptr}, {ebcdic1132_wctomb, nullptr}) + ebcdic1132, EBCDIC_1132, {ebcdic1132_mbtowc, NULL}, {ebcdic1132_wctomb, NULL}) DEFCODEPAGE(1132, ebcdic1132) DEFENCODING(("IBM1137", /* glibc */ "CP1137", /* cppp-reiconv */ "1137", /* cppp-reiconv */ ), - ebcdic1137, EBCDIC_1137, {ebcdic1137_mbtowc, nullptr}, {ebcdic1137_wctomb, nullptr}) + ebcdic1137, EBCDIC_1137, {ebcdic1137_mbtowc, NULL}, {ebcdic1137_wctomb, NULL}) DEFCODEPAGE(1137, ebcdic1137) DEFENCODING(("IBM1140", /* IANA */ @@ -1395,7 +1396,7 @@ DEFENCODING(("IBM1140", /* IANA */ "CP1140", /* AIX */ "1140", /* AIX */ ), - ebcdic1140, EBCDIC_1140, {ebcdic1140_mbtowc, nullptr}, {ebcdic1140_wctomb, nullptr}) + ebcdic1140, EBCDIC_1140, {ebcdic1140_mbtowc, NULL}, {ebcdic1140_wctomb, NULL}) DEFCODEPAGE(1140, ebcdic1140) DEFENCODING(("IBM1141", /* IANA */ @@ -1407,7 +1408,7 @@ DEFENCODING(("IBM1141", /* IANA */ "CP1141", /* AIX */ "1141", /* AIX */ ), - ebcdic1141, EBCDIC_1141, {ebcdic1141_mbtowc, nullptr}, {ebcdic1141_wctomb, nullptr}) + ebcdic1141, EBCDIC_1141, {ebcdic1141_mbtowc, NULL}, {ebcdic1141_wctomb, NULL}) DEFCODEPAGE(1141, ebcdic1141) DEFENCODING(("IBM1142", /* AIX */ @@ -1420,7 +1421,7 @@ DEFENCODING(("IBM1142", /* AIX */ "CP1142", /* AIX */ "1142", /* AIX */ ), - ebcdic1142, EBCDIC_1142, {ebcdic1142_mbtowc, nullptr}, {ebcdic1142_wctomb, nullptr}) + ebcdic1142, EBCDIC_1142, {ebcdic1142_mbtowc, NULL}, {ebcdic1142_wctomb, NULL}) DEFCODEPAGE(1142, ebcdic1142) DEFENCODING(("IBM1143", /* AIX */ @@ -1433,7 +1434,7 @@ DEFENCODING(("IBM1143", /* AIX */ "CP1143", /* AIX */ "1143", /* AIX */ ), - ebcdic1143, EBCDIC_1143, {ebcdic1143_mbtowc, nullptr}, {ebcdic1143_wctomb, nullptr}) + ebcdic1143, EBCDIC_1143, {ebcdic1143_mbtowc, NULL}, {ebcdic1143_wctomb, NULL}) DEFCODEPAGE(1143, ebcdic1143) DEFENCODING(("IBM1144", /* AIX */ @@ -1445,7 +1446,7 @@ DEFENCODING(("IBM1144", /* AIX */ "CP1144", /* AIX */ "1144", /* AIX */ ), - ebcdic1144, EBCDIC_1144, {ebcdic1144_mbtowc, nullptr}, {ebcdic1144_wctomb, nullptr}) + ebcdic1144, EBCDIC_1144, {ebcdic1144_mbtowc, NULL}, {ebcdic1144_wctomb, NULL}) DEFCODEPAGE(1144, ebcdic1144) DEFENCODING(("IBM1145", /* AIX */ @@ -1457,7 +1458,7 @@ DEFENCODING(("IBM1145", /* AIX */ "CP1145", /* AIX */ "1145", /* AIX */ ), - ebcdic1145, EBCDIC_1145, {ebcdic1145_mbtowc, nullptr}, {ebcdic1145_wctomb, nullptr}) + ebcdic1145, EBCDIC_1145, {ebcdic1145_mbtowc, NULL}, {ebcdic1145_wctomb, NULL}) DEFCODEPAGE(1145, ebcdic1145) DEFENCODING(("IBM1146", /* AIX */ @@ -1469,7 +1470,7 @@ DEFENCODING(("IBM1146", /* AIX */ "CP1146", /* AIX */ "1146", /* AIX */ ), - ebcdic1146, EBCDIC_1146, {ebcdic1146_mbtowc, nullptr}, {ebcdic1146_wctomb, nullptr}) + ebcdic1146, EBCDIC_1146, {ebcdic1146_mbtowc, NULL}, {ebcdic1146_wctomb, NULL}) DEFCODEPAGE(1146, ebcdic1146) DEFENCODING(("IBM1147", /* AIX */ @@ -1481,7 +1482,7 @@ DEFENCODING(("IBM1147", /* AIX */ "CP1147", /* AIX */ "1147", /* AIX */ ), - ebcdic1147, EBCDIC_1147, {ebcdic1147_mbtowc, nullptr}, {ebcdic1147_wctomb, nullptr}) + ebcdic1147, EBCDIC_1147, {ebcdic1147_mbtowc, NULL}, {ebcdic1147_wctomb, NULL}) DEFCODEPAGE(1147, ebcdic1147) DEFENCODING(("IBM1148", /* AIX */ @@ -1493,7 +1494,7 @@ DEFENCODING(("IBM1148", /* AIX */ "CP1148", /* AIX */ "1148", /* AIX */ ), - ebcdic1148, EBCDIC_1148, {ebcdic1148_mbtowc, nullptr}, {ebcdic1148_wctomb, nullptr}) + ebcdic1148, EBCDIC_1148, {ebcdic1148_mbtowc, NULL}, {ebcdic1148_wctomb, NULL}) DEFCODEPAGE(1148, ebcdic1148) DEFENCODING(("IBM1149", /* AIX */ @@ -1505,98 +1506,98 @@ DEFENCODING(("IBM1149", /* AIX */ "CP1149", /* AIX */ "1149", /* AIX */ ), - ebcdic1149, EBCDIC_1149, {ebcdic1149_mbtowc, nullptr}, {ebcdic1149_wctomb, nullptr}) + ebcdic1149, EBCDIC_1149, {ebcdic1149_mbtowc, NULL}, {ebcdic1149_wctomb, NULL}) DEFCODEPAGE(1149, ebcdic1149) DEFENCODING(("IBM1153", /* glibc */ "CP1153", /* cppp-reiconv */ "1153", /* cppp-reiconv */ ), - ebcdic1153, EBCDIC_1153, {ebcdic1153_mbtowc, nullptr}, {ebcdic1153_wctomb, nullptr}) + ebcdic1153, EBCDIC_1153, {ebcdic1153_mbtowc, NULL}, {ebcdic1153_wctomb, NULL}) DEFCODEPAGE(1153, ebcdic1153) DEFENCODING(("IBM1154", /* glibc */ "CP1154", /* cppp-reiconv */ "1154", /* cppp-reiconv */ ), - ebcdic1154, EBCDIC_1154, {ebcdic1154_mbtowc, nullptr}, {ebcdic1154_wctomb, nullptr}) + ebcdic1154, EBCDIC_1154, {ebcdic1154_mbtowc, NULL}, {ebcdic1154_wctomb, NULL}) DEFCODEPAGE(1154, ebcdic1154) DEFENCODING(("IBM1155", /* glibc */ "CP1155", /* cppp-reiconv */ "1155", /* cppp-reiconv */ ), - ebcdic1155, EBCDIC_1155, {ebcdic1155_mbtowc, nullptr}, {ebcdic1155_wctomb, nullptr}) + ebcdic1155, EBCDIC_1155, {ebcdic1155_mbtowc, NULL}, {ebcdic1155_wctomb, NULL}) DEFCODEPAGE(1155, ebcdic1155) DEFENCODING(("IBM1156", /* glibc */ "CP1156", /* cppp-reiconv */ "1156", /* cppp-reiconv */ ), - ebcdic1156, EBCDIC_1156, {ebcdic1156_mbtowc, nullptr}, {ebcdic1156_wctomb, nullptr}) + ebcdic1156, EBCDIC_1156, {ebcdic1156_mbtowc, NULL}, {ebcdic1156_wctomb, NULL}) DEFCODEPAGE(1156, ebcdic1156) DEFENCODING(("IBM1157", /* glibc */ "CP1157", /* cppp-reiconv */ "1157", /* cppp-reiconv */ ), - ebcdic1157, EBCDIC_1157, {ebcdic1157_mbtowc, nullptr}, {ebcdic1157_wctomb, nullptr}) + ebcdic1157, EBCDIC_1157, {ebcdic1157_mbtowc, NULL}, {ebcdic1157_wctomb, NULL}) DEFCODEPAGE(1157, ebcdic1157) DEFENCODING(("IBM1158", /* glibc */ "CP1158", /* cppp-reiconv */ "1158", /* cppp-reiconv */ ), - ebcdic1158, EBCDIC_1158, {ebcdic1158_mbtowc, nullptr}, {ebcdic1158_wctomb, nullptr}) + ebcdic1158, EBCDIC_1158, {ebcdic1158_mbtowc, NULL}, {ebcdic1158_wctomb, NULL}) DEFCODEPAGE(1158, ebcdic1158) DEFENCODING(("IBM1160", /* glibc */ "CP1160", /* cppp-reiconv */ "1160", /* cppp-reiconv */ ), - ebcdic1160, EBCDIC_1160, {ebcdic1160_mbtowc, nullptr}, {ebcdic1160_wctomb, nullptr}) + ebcdic1160, EBCDIC_1160, {ebcdic1160_mbtowc, NULL}, {ebcdic1160_wctomb, NULL}) DEFCODEPAGE(1160, ebcdic1160) DEFENCODING(("IBM1164", /* glibc */ "CP1164", /* cppp-reiconv */ "1164", /* cppp-reiconv */ ), - ebcdic1164, EBCDIC_1164, {ebcdic1164_mbtowc, nullptr}, {ebcdic1164_wctomb, nullptr}) + ebcdic1164, EBCDIC_1164, {ebcdic1164_mbtowc, NULL}, {ebcdic1164_wctomb, NULL}) DEFCODEPAGE(1164, ebcdic1164) DEFENCODING(("IBM1165", /* libiconv */ "CP1165", /* cppp-reiconv */ "1165", /* cppp-reiconv */ ), - ebcdic1165, EBCDIC_1165, {ebcdic1165_mbtowc, nullptr}, {ebcdic1165_wctomb, nullptr}) + ebcdic1165, EBCDIC_1165, {ebcdic1165_mbtowc, NULL}, {ebcdic1165_wctomb, NULL}) DEFCODEPAGE(1165, ebcdic1165) DEFENCODING(("IBM1166", /* glibc */ "CP1166", /* cppp-reiconv */ "1166", /* cppp-reiconv */ ), - ebcdic1166, EBCDIC_1166, {ebcdic1166_mbtowc, nullptr}, {ebcdic1166_wctomb, nullptr}) + ebcdic1166, EBCDIC_1166, {ebcdic1166_mbtowc, NULL}, {ebcdic1166_wctomb, NULL}) DEFCODEPAGE(1166, ebcdic1166) DEFENCODING(("IBM4971", /* glibc */ "CP4971", /* cppp-reiconv */ "4971", /* cppp-reiconv */ ), - ebcdic4971, EBCDIC_4971, {ebcdic4971_mbtowc, nullptr}, {ebcdic4971_wctomb, nullptr}) + ebcdic4971, EBCDIC_4971, {ebcdic4971_mbtowc, NULL}, {ebcdic4971_wctomb, NULL}) DEFCODEPAGE(4971, ebcdic4971) DEFENCODING(("IBM12712", /* glibc */ "CP12712", /* cppp-reiconv */ "12712", /* cppp-reiconv */ ), - ebcdic12712, EBCDIC_12712, {ebcdic12712_mbtowc, nullptr}, {ebcdic12712_wctomb, nullptr}) + ebcdic12712, EBCDIC_12712, {ebcdic12712_mbtowc, NULL}, {ebcdic12712_wctomb, NULL}) DEFCODEPAGE(12712, ebcdic12712) DEFENCODING(("IBM16804", /* glibc */ "CP16804", /* cppp-reiconv */ "16804", /* cppp-reiconv */ ), - ebcdic16804, EBCDIC_16804, {ebcdic16804_mbtowc, nullptr}, {ebcdic16804_wctomb, nullptr}) + ebcdic16804, EBCDIC_16804, {ebcdic16804_mbtowc, NULL}, {ebcdic16804_wctomb, NULL}) DEFCODEPAGE(16804, ebcdic16804) // Extra encodigns @@ -1620,19 +1621,19 @@ DEFENCODING(("ISO2022JP3", /* x0213.org */ DEFENCODING(("BIG52003", /* (Unknown) */ ), - big5_2003, BIG5_2003, {big5_2003_mbtowc, nullptr}, {big5_2003_wctomb, nullptr}) + big5_2003, BIG5_2003, {big5_2003_mbtowc, NULL}, {big5_2003_wctomb, NULL}) DEFENCODING(("TDS565", /* (Unknown) */ "ISOIR230", /* (Unknown) */ ), - tds565, TDS565, {tds565_mbtowc, nullptr}, {tds565_wctomb, nullptr}) + tds565, TDS565, {tds565_mbtowc, NULL}, {tds565_wctomb, NULL}) DEFENCODING(("ATARIST", /* (Unknown) */ "ATARI", /* (Unknown) */ ), - atarist, ATARIST, {atarist_mbtowc, nullptr}, {atarist_wctomb, nullptr}) + atarist, ATARIST, {atarist_mbtowc, NULL}, {atarist_wctomb, NULL}) DEFINDEX(ATARI, ATARIST) DEFENCODING(("RISCOSLATIN1", /* (Unknown) */ ), - riscos1, RISCOS_LATIN1, {riscos1_mbtowc, nullptr}, {riscos1_wctomb, nullptr}) + riscos1, RISCOS_LATIN1, {riscos1_mbtowc, NULL}, {riscos1_wctomb, NULL}) diff --git a/lib/gb12345ext.h b/lib/gb12345ext.h index 9e3775ce..c3dafcc5 100644 --- a/lib/gb12345ext.h +++ b/lib/gb12345ext.h @@ -1761,7 +1761,7 @@ static int gb12345ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0100 && wc < 0x0270) summary = &gb12345ext_uni2indx_page01[(wc>>4)-0x010]; else if (wc >= 0x1e00 && wc < 0x1e40) diff --git a/lib/gb2312.h b/lib/gb2312.h index b7649a91..3e5078b6 100644 --- a/lib/gb2312.h +++ b/lib/gb2312.h @@ -2534,7 +2534,7 @@ static int gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0460) summary = &gb2312_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2000 && wc < 0x2650) diff --git a/lib/gbkext_inv.h b/lib/gbkext_inv.h index 908fe04a..072ce506 100644 --- a/lib/gbkext_inv.h +++ b/lib/gbkext_inv.h @@ -2302,7 +2302,7 @@ static int gbkext_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0200 && wc < 0x02e0) summary = &gbkext_inv_uni2indx_page02[(wc>>4)-0x020]; else if (wc >= 0x2000 && wc < 0x22c0) diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index 94da48b4..7d1a350d 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -1,5 +1,5 @@ -/* C++ code produced by gperf version 3.1 */ -/* Command-line: gperf -L C++ -Z HashPool -m 10 lib/generated/aliases.gperf */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf -L ANSI-C -m 10 lib/generated/aliases.gperf */ /* Computed positions: -k'1-10,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -39,16 +39,15 @@ struct alias { int name; unsigned int encoding_index; }; #define MAX_HASH_VALUE 4067 /* maximum key range = 4064, duplicates = 0 */ -class HashPool -{ -private: - static inline unsigned int aliases_hash (const char *str, size_t len); -public: - static const struct alias *aliases_lookup (const char *str, size_t len); -}; - -inline unsigned int -HashPool::aliases_hash (const char *str, size_t len) +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +aliases_hash (register const char *str, register size_t len) { static const unsigned short asso_values[] = { @@ -67,42 +66,42 @@ HashPool::aliases_hash (const char *str, size_t len) 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068 }; - unsigned int hval = len; + register unsigned int hval = len; switch (hval) { default: - hval += asso_values[static_cast(str[9])]; + hval += asso_values[(unsigned char)str[9]]; /*FALLTHROUGH*/ case 9: - hval += asso_values[static_cast(str[8])]; + hval += asso_values[(unsigned char)str[8]]; /*FALLTHROUGH*/ case 8: - hval += asso_values[static_cast(str[7])]; + hval += asso_values[(unsigned char)str[7]]; /*FALLTHROUGH*/ case 7: - hval += asso_values[static_cast(str[6])]; + hval += asso_values[(unsigned char)str[6]]; /*FALLTHROUGH*/ case 6: - hval += asso_values[static_cast(str[5]+4)]; + hval += asso_values[(unsigned char)str[5]+4]; /*FALLTHROUGH*/ case 5: - hval += asso_values[static_cast(str[4])]; + hval += asso_values[(unsigned char)str[4]]; /*FALLTHROUGH*/ case 4: - hval += asso_values[static_cast(str[3])]; + hval += asso_values[(unsigned char)str[3]]; /*FALLTHROUGH*/ case 3: - hval += asso_values[static_cast(str[2])]; + hval += asso_values[(unsigned char)str[2]]; /*FALLTHROUGH*/ case 2: - hval += asso_values[static_cast(str[1]+2)]; + hval += asso_values[(unsigned char)str[1]+2]; /*FALLTHROUGH*/ case 1: - hval += asso_values[static_cast(str[0])]; + hval += asso_values[(unsigned char)str[0]]; break; } - return hval + asso_values[static_cast(str[len - 1])]; + return hval + asso_values[(unsigned char)str[len - 1]]; } struct stringpool_t @@ -4210,18 +4209,18 @@ static const struct alias aliases[] = }; const struct alias * -HashPool::aliases_lookup (const char *str, size_t len) +aliases_lookup (register const char *str, register size_t len) { if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { - unsigned int key = aliases_hash (str, len); + register unsigned int key = aliases_hash (str, len); if (key <= MAX_HASH_VALUE) { - int o = aliases[key].name; + register int o = aliases[key].name; if (o >= 0) { - const char *s = o + stringpool; + register const char *s = o + stringpool; if (*str == *s && !strcmp (str + 1, s + 1)) return &aliases[key]; diff --git a/lib/generated/indexes.h.shippet b/lib/generated/indexes.h.shippet new file mode 100644 index 00000000..cec0a149 --- /dev/null +++ b/lib/generated/indexes.h.shippet @@ -0,0 +1,214 @@ +enum +{ + ENCODING_ISO2022_JP3 = 193, + ENCODING_SHIFT_JISX0213 = 192, + ENCODING_EUC_JISX0213 = 191, + ENCODING_EBCDIC_12712 = 189, + ENCODING_EBCDIC_4971 = 188, + ENCODING_EBCDIC_1166 = 187, + ENCODING_EBCDIC_1160 = 184, + ENCODING_EBCDIC_1158 = 183, + ENCODING_EBCDIC_1155 = 180, + ENCODING_EBCDIC_1153 = 178, + ENCODING_EBCDIC_1147 = 175, + ENCODING_EBCDIC_1145 = 173, + ENCODING_EBCDIC_1144 = 172, + ENCODING_EBCDIC_1143 = 171, + ENCODING_EBCDIC_1142 = 170, + ENCODING_EBCDIC_1137 = 167, + ENCODING_EBCDIC_1132 = 166, + ENCODING_EBCDIC_1123 = 164, + ENCODING_EBCDIC_1122 = 163, + ENCODING_EBCDIC_1112 = 162, + ENCODING_EBCDIC_1097 = 161, + ENCODING_EBCDIC_1025 = 158, + ENCODING_EBCDIC_905 = 156, + ENCODING_EBCDIC_500 = 150, + ENCODING_EBCDIC_425 = 149, + ENCODING_EBCDIC_424 = 148, + ENCODING_EBCDIC_285 = 145, + ENCODING_EBCDIC_284 = 144, + ENCODING_EBCDIC_282 = 143, + ENCODING_EBCDIC_278 = 141, + ENCODING_EBCDIC_277 = 140, + ENCODING_CP1125 = 137, + ENCODING_CP869 = 136, + ENCODING_CP861 = 132, + ENCODING_EBCDIC_1047 = 160, + ENCODING_CP857 = 129, + ENCODING_EBCDIC_423 = 147, + ENCODING_CP853 = 127, + ENCODING_ISO8859_8 = 56, + ENCODING_EBCDIC_1154 = 179, + ENCODING_GB1988_80 = 110, + ENCODING_EBCDIC_1140 = 168, + ENCODING_ISO8859_6 = 54, + ENCODING_ISO8859_3 = 51, + ENCODING_IBM922 = 115, + ENCODING_ISO8859_1 = 49, + ENCODING_ISO8859_10 = 58, + ENCODING_DEC_HANYU = 48, + ENCODING_DEC_KANJI = 47, + ENCODING_ISO8859_4 = 52, + ENCODING_SHIFT_JIS = 22, + ENCODING_IBM1131 = 79, + ENCODING_EBCDIC_880 = 155, + ENCODING_BIG5HKSCS_2001 = 40, + ENCODING_MSEE = 67, + ENCODING_ISO8859_7 = 55, + ENCODING_TDS565 = 195, + ENCODING_EBCDIC_1148 = 176, + ENCODING_IBM1161 = 120, + ENCODING_EBCDIC_037 = 138, + ENCODING_CP775 = 125, + ENCODING_BIG5HKSCS_1999 = 39, + ENCODING_EUC_TW = 36, + ENCODING_EBCDIC_297 = 146, + ENCODING_UHC = 44, + ENCODING_EBCDIC_1156 = 181, + ENCODING_GB18030_2022 = 32, + ENCODING_UTF32 = 11, + ENCODING_ATARIST = 196, + ENCODING_CP864 = 134, + ENCODING_GB2312_80 = 111, + ENCODING_UTF16LE = 10, + ENCODING_EBCDIC_1149 = 177, + ENCODING_UTF16 = 8, + ENCODING_UCS4LE = 7, + ENCODING_EBCDIC_924 = 157, + ENCODING_EUC_KR = 43, + ENCODING_EBCDIC_1026 = 159, + ENCODING_GB18030_2005 = 31, + ENCODING_UCS4_INTERNAL = 17, + ENCODING_KOI8T = 97, + ENCODING_EBCDIC_280 = 142, + ENCODING_UCS2LE = 4, + ENCODING_WINDOWS1258 = 75, + ENCODING_EBCDIC_1157 = 182, + ENCODING_UTF8 = 1, + ENCODING_CP865 = 135, + ENCODING_UCS4 = 5, + ENCODING_CP858 = 130, + ENCODING_HZ = 35, + ENCODING_CP863 = 133, + ENCODING_ISO2022_KR = 46, + ENCODING_C99 = 19, + ENCODING_IBM1163 = 122, + ENCODING_ISO2022_CN = 33, + ENCODING_UTF32LE = 13, + ENCODING_ASCII = 0, + ENCODING_IBM862 = 77, + ENCODING_UTF7 = 14, + ENCODING_WINDOWS950 = 38, + ENCODING_UCS2 = 2, + ENCODING_ISO8859_14 = 61, + ENCODING_IBM943 = 116, + ENCODING_CP737 = 124, + ENCODING_ISO2022_JP1 = 25, + ENCODING_UCS2_SWAPPED = 16, + ENCODING_KOI8_R = 64, + ENCODING_UCS4_SWAPPED = 18, + ENCODING_RISCOS_LATIN1 = 197, + ENCODING_JAVA = 20, + ENCODING_BIG5 = 37, + ENCODING_UTF16BE = 9, + ENCODING_EBCDIC_871 = 153, + ENCODING_UTF32BE = 12, + ENCODING_GEORGIANACADEMY = 95, + ENCODING_IBM932 = 23, + ENCODING_CP860 = 131, + ENCODING_MAC_ICELAND = 82, + ENCODING_ISO2022_JP = 24, + ENCODING_BIG5HKSCS_2004 = 41, + ENCODING_GB2312 = 28, + ENCODING_GBK = 29, + ENCODING_ISO8859_5 = 53, + ENCODING_BIG5HKSCS_2008 = 42, + ENCODING_CP852 = 126, + ENCODING_UCS4BE = 6, + ENCODING_IBM866 = 78, + ENCODING_EBCDIC_875 = 154, + ENCODING_MAC_CROATIAN = 83, + ENCODING_MAC_UKRAINE = 86, + ENCODING_EUC_JP = 21, + ENCODING_ISO2022_JP2 = 26, + ENCODING_ISO8859_11 = 59, + ENCODING_KOI8_U = 65, + ENCODING_EBCDIC_1141 = 169, + ENCODING_EBCDIC_838 = 151, + ENCODING_MSGREEK = 70, + ENCODING_UCS2BE = 3, + ENCODING_ISO8859_13 = 60, + ENCODING_BIG5_2003 = 194, + ENCODING_JISX0208 = 108, + ENCODING_EBCDIC_1146 = 174, + ENCODING_ISO8859_15 = 62, + ENCODING_ISO8859_16 = 63, + ENCODING_IBM1046 = 117, + ENCODING_KOI8_RU = 66, + ENCODING_CNGBISOIR165 = 112, + ENCODING_MSCYRL = 68, + ENCODING_MSTURK = 71, + ENCODING_EBCDIC_1165 = 186, + ENCODING_MSHEBR = 72, + ENCODING_CP855 = 128, + ENCODING_MSARAB = 73, + ENCODING_VISCII = 104, + ENCODING_WINBALTRIM = 74, + ENCODING_EBCDIC_273 = 139, + ENCODING_MACINTOSH = 80, + ENCODING_MAC_CENTRALEUROPE = 81, + ENCODING_MAC_CYRILLIC = 85, + ENCODING_MAC_GREEK = 87, + ENCODING_MAC_ARABIC = 90, + ENCODING_MAC_TURKISH = 88, + ENCODING_EBCDIC_1164 = 185, + ENCODING_MAC_HEBREW = 89, + ENCODING_EBCDIC_16804 = 190, + ENCODING_MAC_THAI = 91, + ENCODING_HPROMAN8 = 92, + ENCODING_UCS2_INTERNAL = 15, + ENCODING_NEXTSTEP = 93, + ENCODING_ARMSCII8 = 94, + ENCODING_ISO8859_2 = 50, + ENCODING_GEORGIANPS = 96, + ENCODING_PT154 = 98, + ENCODING_MAC_ROMANIA = 84, + ENCODING_IBM850 = 76, + ENCODING_RK1048 = 99, + ENCODING_ISO8859_9 = 57, + ENCODING_MULELAO1 = 100, + ENCODING_ISO2022_CN_EXT = 34, + ENCODING_IBMCP1133 = 101, + ENCODING_EBCDIC_1130 = 165, + ENCODING_TIS620 = 102, + ENCODING_MSANSI = 69, + ENCODING_WINDOWS874 = 103, + ENCODING_EBCDIC_870 = 152, + ENCODING_JISX0201 = 107, + ENCODING_TCVN = 105, + ENCODING_JP = 106, + ENCODING_JOHAB = 45, + ENCODING_ISO2022_JPMS = 27, + ENCODING_JISX0212 = 109, + ENCODING_KOREAN = 113, + ENCODING_IBM856 = 114, + ENCODING_IBM1124 = 118, + ENCODING_CP936 = 30, + ENCODING_IBM1129 = 119, + ENCODING_IBM1162 = 121, + ENCODING_CP437 = 123, + ENCODING_CP1256 = ENCODING_MSARAB, + ENCODING_MAC_ROMAN = ENCODING_MACINTOSH, + ENCODING_CP1258 = ENCODING_WINDOWS1258, + ENCODING_CP1255 = ENCODING_MSHEBR, + ENCODING_CP1254 = ENCODING_MSTURK, + ENCODING_ATARI = ENCODING_ATARIST, + ENCODING_CP1253 = ENCODING_MSGREEK, + ENCODING_CP1252 = ENCODING_MSANSI, + ENCODING_CP1257 = ENCODING_WINBALTRIM, + ENCODING_CP1251 = ENCODING_MSCYRL, + ENCODING_CP1250 = ENCODING_MSEE, + ENCODING_BIG5HKSCS = ENCODING_BIG5HKSCS_2008, + ENCODING_GB18030 = ENCODING_GB18030_2022, +}; diff --git a/lib/generated/indexes.hpp.shippet b/lib/generated/indexes.hpp.shippet index 45294c48..410bf868 100644 --- a/lib/generated/indexes.hpp.shippet +++ b/lib/generated/indexes.hpp.shippet @@ -1,4 +1,4 @@ -namespace cppp::base::encoding +namespace reiconv::encoding { enum class Encodings { @@ -201,6 +201,7 @@ namespace cppp::base::encoding IBM1162 = 121, CP437 = 123, CP1256 = MSARAB, + MAC_ROMAN = MACINTOSH, CP1258 = WINDOWS1258, CP1255 = MSHEBR, CP1254 = MSTURK, @@ -213,4 +214,4 @@ namespace cppp::base::encoding BIG5HKSCS = BIG5HKSCS_2008, GB18030 = GB18030_2022, }; -} // cppp::base::encoding +} // reiconv::encoding diff --git a/lib/hkscs1999.h b/lib/hkscs1999.h index 438032ca..74f70eb0 100644 --- a/lib/hkscs1999.h +++ b/lib/hkscs1999.h @@ -2952,7 +2952,7 @@ static int hkscs1999_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x02d0) summary = &hkscs1999_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0400 && wc < 0x0460) diff --git a/lib/hkscs2001.h b/lib/hkscs2001.h index eccffb15..ba2a8373 100644 --- a/lib/hkscs2001.h +++ b/lib/hkscs2001.h @@ -553,7 +553,7 @@ static int hkscs2001_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc < 0x9f00) { if (wc < 0x6900) { if (wc >= 0x3500 && wc < 0x3560) diff --git a/lib/hkscs2004.h b/lib/hkscs2004.h index 9016d4ef..a2a87ad1 100644 --- a/lib/hkscs2004.h +++ b/lib/hkscs2004.h @@ -545,7 +545,7 @@ static int hkscs2004_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc < 0x21a00) { if (wc < 0x6e00) { if (wc >= 0x3400 && wc < 0x3450) diff --git a/lib/hkscs2008.h b/lib/hkscs2008.h index 5a6d3bc2..b25229f1 100644 --- a/lib/hkscs2008.h +++ b/lib/hkscs2008.h @@ -366,7 +366,7 @@ static int hkscs2008_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x3400 && wc < 0x34f0) summary = &hkscs2008_uni2indx_page34[(wc>>4)-0x340]; else if (wc >= 0x3800 && wc < 0x3880) diff --git a/lib/iconv.c b/lib/iconv.c new file mode 100644 index 00000000..324614b0 --- /dev/null +++ b/lib/iconv.c @@ -0,0 +1,293 @@ +/* + * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#include + +#include +#include +#include +#include + +const size_t TEMP_BUFFER_SIZE = 4096; + +// Data type for general conversion loop. +struct loop_funcs +{ + size_t (*loop_convert)(reiconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + size_t (*loop_reset)(reiconv_t icd, char **outbuf, size_t *outbytesleft); +}; + +// Converters +#include "converters.h" + +// Table of all supported encodings. +struct encoding +{ + struct mbtowc_funcs ifuncs; // conversion multibyte -> unicode + struct wctomb_funcs ofuncs; // conversion unicode -> multibyte +}; + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) + +enum +{ + #include "encodings.h.snippet" + ei_end +}; + +#undef DEFINDEX +#undef DEFCODEPAGE +#undef DEFENCODING + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ +{xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, name) + +static struct encoding const all_encodings[] = +{ + #include "encodings.h.snippet" +}; + +#undef DEFINDEX +#undef DEFENCODING +#undef DEFCODEPAGE + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) +#define DEFCODEPAGE(codepage, xxx) [codepage]=ei_##xxx + 1, +#define DEFINDEX(alias, name) + +static const int codepage_to_eindex[] = +{ + #include "encodings.h.snippet" +}; + +#undef DEFINDEX +#undef DEFENCODING +#undef DEFCODEPAGE + +// Conversion loops. +#include "loops.h" + +/* + * Alias lookup function. + * Defines + * struct alias { int name; unsigned int encoding_index; }; + * const struct alias * HashPool::aliases_lookup (const char *str, unsigned int len); + * #define MAX_WORD_LENGTH ... + */ +#include "generated/aliases.h" + +_CPPP_API struct VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; + +_CPPP_API size_t reiconv_name_canonicalize(const char* name, char* outbuf) +{ + char* bp = outbuf; + const char* cp = name; + for (; *cp; cp++, bp++) + { + char c = (char)*cp; + if (c >= 'a' && c <= 'z') // Uppercase. + { + c -= 'a' - 'A'; + } + if (c == '-' || c == '_') // Ignore '-' and '_'. + { + bp--; + } + else + { + *bp = c; + } + } + *bp = '\0'; + return bp - outbuf; +} + +_CPPP_API int reiconv_lookup_from_name(const char* encoding) +{ + char buf[MAX_WORD_LENGTH + 2]; + size_t buf_len = reiconv_name_canonicalize(encoding, buf); + + const struct alias* ap = aliases_lookup(buf, buf_len); + return ap ? ap->encoding_index : -1; +} + +_CPPP_API int reiconv_lookup_from_codepage(int codepage) +{ + return codepage_to_eindex[codepage] - 1; +} + +_CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq) +{ + struct conv_struct* cd; + cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); + if (cd == NULL) + { + errno = ENOMEM; + return (reiconv_t)(-1); + } + + // Initialize the input and output functions. + cd->iindex = fromcode; + cd->ifuncs = all_encodings[fromcode].ifuncs; + cd->oindex = tocode; + cd->ofuncs = all_encodings[tocode].ofuncs; + + // Initialize the loop functions. + cd->lfuncs.loop_convert = unicode_loop_convert; + cd->lfuncs.loop_reset = unicode_loop_reset; + + // Initialize the states. + cd->istate = 0; + cd->ostate = 0; + + // Initialize the operation flags. + cd->discard_ilseq = discard_ilseq; + + return cd; +} + +_CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +{ + if (inbuf == NULL || *inbuf == NULL) + { + return ((conv_t)cd)->lfuncs.loop_reset(cd, outbuf, outbytesleft); + } + return ((conv_t)cd)->lfuncs.loop_convert(cd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); +} + +/* +_CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict) +{ + unsigned int to_index = lookup_by_name(tocode); + unsigned int from_index = lookup_by_name(fromcode); + + if (to_index == -1 || from_index == -1) + { + errno = EINVAL; + return (iconv_t)(-1); + } + + struct conv_struct* cd = iconv_open_from_index(to_index, from_index, (int)!strict); + + return (iconv_t)cd; +}*/ + +_CPPP_API void reiconv_handle_close(reiconv_t icd) +{ + free(icd); +} + +_CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength) +{ + // Determine the length we need. + size_t count = 0; + char tmpbuf[TEMP_BUFFER_SIZE]; + char* inptr = (char*)start; + size_t insize = inlength; + while (insize > 0) + { + char *outptr = tmpbuf; + size_t outsize = TEMP_BUFFER_SIZE; + size_t res = reiconv_iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1) && errno != E2BIG) + { + if (errno == EINVAL) + { + errno = EILSEQ; + } + return -1; + } + count += outptr - tmpbuf; + } + char *outptr = tmpbuf; + size_t outsize = TEMP_BUFFER_SIZE; + size_t res = reiconv_iconv(cd, NULL, NULL, &outptr, &outsize); + if (res == (size_t)(-1)) + { + // Return to the initial state. + reiconv_iconv(cd, NULL, NULL, NULL, NULL); + return -1; + } + reiconv_iconv(cd, NULL, NULL, NULL, NULL); + return count + outptr - tmpbuf; +} + +_CPPP_API int reiconv_convert(reiconv_t cd, const char *start, size_t inlength, char **resultp, + size_t *lengthp) +{ + size_t length = reiconv_result_size(cd, start, inlength); + char* result; + + if (length == 0) + { + return 0; + } + + if (lengthp != NULL) + { + *lengthp = length; + } + if (resultp == NULL) + { + // If resultp is NULL, we can't save results. + return -1; + } + result = (*resultp == NULL ? (char*)malloc(length) : (char*)realloc(*resultp, length)); + *resultp = result; + if (result == NULL) + { + errno = ENOMEM; + return -1; + } + + // Do the conversion for real. + char *inptr = (char*)start; + size_t insize = inlength; + char* outptr = result; + size_t outsize = length; + while (insize > 0) + { + size_t res = reiconv_iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1)) + { + if (errno == EINVAL) + { + break; + } + else + { + return -1; + } + } + } + size_t res = reiconv_iconv(cd, NULL, NULL, &outptr, &outsize); + if (res == (size_t)(-1)) + { + return -1; + } + if (outsize != 0) + { + abort(); + } + return 0; +} diff --git a/lib/iconv.cpp b/lib/iconv.cpp deleted file mode 100644 index 6237ea2b..00000000 --- a/lib/iconv.cpp +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. - * This file is part of the cppp-reiconv library. - * - * The cppp-reiconv library is free software; you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either version 3 - * of the License, or (at your option) any later version. - * - * The cppp-reiconv library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the cppp-reiconv library; see the file LICENSE. - * If not, see . - */ - -#include - -#include -#include -#include -#include -#include -#include - -namespace cppp::base::reiconv -{ - // Iconv handle. - typedef void* iconv_t; - - // Data type for general conversion loop. - struct loop_funcs - { - size_t (*loop_convert)(iconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - size_t (*loop_reset)(iconv_t icd, char **outbuf, size_t *outbytesleft); - }; - - // Converters - #include "converters.h" - - // Table of all supported encodings. - struct encoding - { - struct mbtowc_funcs ifuncs; // conversion multibyte -> unicode - struct wctomb_funcs ofuncs; // conversion unicode -> multibyte - }; - -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, -#define DEFCODEPAGE(codepage, xxx) -#define DEFINDEX(alias, index) - - enum - { - #include "encodings.h.snippet" - ei_end - }; - -#undef DEFINDEX -#undef DEFCODEPAGE -#undef DEFENCODING - -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, -#define DEFCODEPAGE(codepage, xxx) -#define DEFINDEX(alias, name) - - static struct encoding const all_encodings[] = - { - #include "encodings.h.snippet" - }; - -#undef DEFINDEX -#undef DEFENCODING -#undef DEFCODEPAGE - -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) -#define DEFCODEPAGE(codepage, xxx) {codepage, ei_##xxx}, -#define DEFINDEX(alias, name) - - static const std::unordered_map codepage_to_eindex = - { - #include "encodings.h.snippet" - }; - -#undef DEFINDEX -#undef DEFENCODING -#undef DEFCODEPAGE - - // Conversion loops. - #include "loops.h" - - /** - * Alias lookup function. - * Defines - * struct alias { int name; unsigned int encoding_index; }; - * const struct alias * HashPool::aliases_lookup (const char *str, unsigned int len); - * #define MAX_WORD_LENGTH ... - */ - #include "generated/aliases.h" - -#pragma region Utility functions. - static inline int lookup_by_codepage(int codepage) - { - auto it = codepage_to_eindex.find(codepage); - return it != codepage_to_eindex.end() ? it->second : -1; - } - - static inline size_t name_canonicalize(const char* name, char* buf) - { - char* bp = buf; - const char* cp = name; - for (; *cp; cp++, bp++) - { - unsigned char c = (unsigned char)*cp; - if (c >= 'a' && c <= 'z') // Uppercase. - { - c -= 'a' - 'A'; - } - if (c == '-' || c == '_') // Ignore '-' and '_'. - { - bp--; - } - else - { - *bp = c; - } - } - *bp = '\0'; - return bp - buf; - } - - static inline int lookup_by_name(const char* name) - { - char buf[MAX_WORD_LENGTH + 9 + 9 + 1]; - size_t buf_len = name_canonicalize(name, buf); - - /* if (buf_len >= 2 && buf[0] == 'C' && buf[1] == 'P') - { - int codepage = atoi(buf + 2); - return lookup_by_codepage(codepage); - } */ // TODO: Remove this later. - - const struct alias* ap = HashPool::aliases_lookup(buf, buf_len); - if (ap) - { - return ap->encoding_index; - } - return -1; - } - - static inline struct conv_struct* iconv_open_from_index(int to_index, int from_index, int discard_ilseq) - { - struct conv_struct* cd; - cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); - if (cd == nullptr) - { - errno = ENOMEM; - return (struct conv_struct*)(-1); - } - cd->iindex = from_index; - cd->ifuncs = all_encodings[from_index].ifuncs; - cd->oindex = to_index; - cd->ofuncs = all_encodings[to_index].ofuncs; - /* Initialize the loop functions. */ - cd->lfuncs.loop_convert = unicode_loop_convert; - cd->lfuncs.loop_reset = unicode_loop_reset; - /* Initialize the states. */ - cd->istate = 0; - cd->ostate = 0; - /* Initialize the operation flags. */ - cd->discard_ilseq = discard_ilseq; - - return cd; - } - -#pragma endregion - -#pragma region Hidden APIs. - - _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict) - { - unsigned int to_index = lookup_by_name(tocode); - unsigned int from_index = lookup_by_name(fromcode); - - if (to_index == -1 || from_index == -1) - { - errno = EINVAL; - return (iconv_t)(-1); - } - - struct conv_struct* cd = iconv_open_from_index(to_index, from_index, (int)!strict); - - return (iconv_t)cd; - } - - _CPPP_API iconv_t iconv_open(int tocode, int fromcode, bool strict) - { - unsigned int to_index = lookup_by_codepage(tocode); - unsigned int from_index = lookup_by_codepage(fromcode); - - if (to_index == -1 || from_index == -1) - { - errno = EINVAL; - return (iconv_t)(-1); - } - - struct conv_struct* cd = iconv_open_from_index(to_index, from_index, (int)!strict); - - return (iconv_t)cd; - } - - _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) - { - conv_t cd = (conv_t)icd; - if (inbuf == nullptr || *inbuf == nullptr) - { - return cd->lfuncs.loop_reset(icd, outbuf, outbytesleft); - } - return cd->lfuncs.loop_convert(icd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); - } - - _CPPP_API void iconv_close(iconv_t icd) - { - free(icd); - } - -#pragma endregion - - _CPPP_API VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; - -#pragma region Encoding class implementation. - - _CPPP_API Encoding::Encoding(const char* const name) - { - int index = lookup_by_name(name); - if (index == -1) - { - throw std::invalid_argument("Invalid encoding name."); - } - this->_index = index; - } - - _CPPP_API Encoding::Encoding(const int codepage) - { - int index = lookup_by_codepage(codepage); - if (index == -1) - { - throw std::invalid_argument("Invalid codepage."); - } - this->_index = index; - } - -#pragma endregion - - constexpr const std::size_t TEMP_BUFFER_SIZE = 4096; - - _CPPP_API int convert(iconv_t cd, const char *start, size_t inlength, char **resultp, - size_t *lengthp) - { - size_t length; - char* result; - - // Determine the length we need. - size_t count = 0; - char tmpbuf[TEMP_BUFFER_SIZE]; - char* inptr = (char*)start; - size_t insize = inlength; - while (insize > 0) - { - char *outptr = tmpbuf; - size_t outsize = TEMP_BUFFER_SIZE; - size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (size_t)(-1) && errno != E2BIG) - { - return (errno == EINVAL ? EILSEQ : errno); - } - count += outptr - tmpbuf; - } - { - char *outptr = tmpbuf; - size_t outsize = TEMP_BUFFER_SIZE; - size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (size_t)(-1)) - { - return errno; - } - count += outptr - tmpbuf; - } - length = count; - - if (lengthp != nullptr) - { - *lengthp = length; - } - if (resultp == nullptr) - { - // If resultp is nullptrptr, we can't save results. - return 0; - } - result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp, length)); - *resultp = result; - if (length == 0) - { - return 0; - } - if (result == nullptr) - { - return errno = ENOMEM; - } - // Return to the initial state. - iconv(cd, nullptr, nullptr, nullptr, nullptr); - - /* Do the conversion for real. */ - { - char* inptr = (char*)start; - size_t insize = inlength; - char* outptr = result; - size_t outsize = length; - while (insize > 0) - { - size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (size_t)(-1)) - { - if (errno == EINVAL) - { - break; - } - else - { - return errno; - } - } - } - { - size_t res = iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (size_t)(-1)) - { - return errno; - } - } - if (outsize != 0) - { - abort(); - } - } - return 0; - } - - _CPPP_API OutputBuffer convert(Encoding from, Encoding to, InputBuffer input, bool strict) - { - iconv_t cd = iconv_open_from_index(to, from, strict); - if (cd == (iconv_t)(-1)) - { - throw std::system_error(errno, std::system_category(), "iconv_open"); - } - - char* result = nullptr; - std::size_t length = 0; - int err = convert(cd, (const char*)input.buffer, input.length, &result, &length); - iconv_close(cd); - - if (err != 0) - { - free(result); - throw std::system_error(err, std::system_category(), "iconv"); - } - - return {(std::byte*)result, length}; - } - -} // namespace cppp::base::reiconv diff --git a/lib/isoir165ext.h b/lib/isoir165ext.h index 08a47e31..ef2a978a 100644 --- a/lib/isoir165ext.h +++ b/lib/isoir165ext.h @@ -755,7 +755,7 @@ static int isoir165ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0200) summary = &isoir165ext_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0300 && wc < 0x03c0) diff --git a/lib/jisx0208.h b/lib/jisx0208.h index 4d2d12d0..6d4ec97d 100644 --- a/lib/jisx0208.h +++ b/lib/jisx0208.h @@ -2376,7 +2376,7 @@ static int jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0100) summary = &jisx0208_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0300 && wc < 0x0460) diff --git a/lib/jisx0212.h b/lib/jisx0212.h index 67b7db18..2754e0ff 100644 --- a/lib/jisx0212.h +++ b/lib/jisx0212.h @@ -2156,7 +2156,7 @@ static int jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0460) summary = &jisx0212_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2100 && wc < 0x2130) diff --git a/lib/ksc5601.h b/lib/ksc5601.h index 961ffafb..706fb3f4 100644 --- a/lib/ksc5601.h +++ b/lib/ksc5601.h @@ -2983,7 +2983,7 @@ static int ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { if (n >= 2) { - const Summary16 *summary = nullptr; + const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0460) summary = &ksc5601_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2000 && wc < 0x2670) diff --git a/lib/loop_unicode.h b/lib/loop_unicode.h index 4c7d0565..04f33f1f 100644 --- a/lib/loop_unicode.h +++ b/lib/loop_unicode.h @@ -19,7 +19,7 @@ /* This file defines the conversion loop via Unicode as a pivot encoding. */ -static size_t unicode_loop_convert (iconv_t icd, +static size_t unicode_loop_convert (reiconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) { @@ -114,11 +114,11 @@ static size_t unicode_loop_convert (iconv_t icd, return result; } -static size_t unicode_loop_reset (iconv_t icd, +static size_t unicode_loop_reset (reiconv_t icd, char* * outbuf, size_t *outbytesleft) { conv_t cd = (conv_t) icd; - if (outbuf == nullptr || *outbuf == nullptr) { + if (outbuf == NULL || *outbuf == NULL) { /* Reset the states. */ memset(&cd->istate,'\0',sizeof(state_t)); memset(&cd->ostate,'\0',sizeof(state_t)); diff --git a/lib/reiconv.cpp b/lib/reiconv.cpp new file mode 100644 index 00000000..f57f1a54 --- /dev/null +++ b/lib/reiconv.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#include + +#include +#include +#include +#include +#include + +#include + +_CPPP_API reiconv::Encoding::Encoding(const char* const name) +{ + _index = ::reiconv_lookup_from_name(name); + if (_index == -1) + { + throw std::invalid_argument("Invalid encoding name."); + } +} + +_CPPP_API reiconv::Encoding::Encoding(const int codepage) +{ + _index = ::reiconv_lookup_from_codepage(codepage); + if (_index == -1) + { + throw std::invalid_argument("Invalid codepage."); + } +} + +_CPPP_API reiconv::VersionInfo reiconv::version { VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH }; + +_CPPP_API std::string reiconv::convert(reiconv::Encoding from, reiconv::Encoding to, const std::string_view input, bool strict) +{ + ::reiconv_t cd = ::reiconv_open_from_index(from, to, !strict); + if (cd == (::reiconv_t)(-1)) + { + throw std::system_error(errno, std::system_category(), "reiconv_open_from_index"); + } + std::size_t outlen = ::reiconv_result_size(cd, input.data(), input.size()); + + std::string res (outlen, '\0'); + char* result = const_cast(res.data()); + std::size_t length = 0; + if (::reiconv_convert(cd, input.data(), input.size(), &result, &length) != 0) + { + ::reiconv_handle_close(cd); + throw std::system_error(errno, std::system_category(), "reiconv_convert"); + } + + ::reiconv_handle_close(cd); + return std::move(res); +} diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp index ba72753f..14e75a01 100644 --- a/tests/_iconv.hpp +++ b/tests/_iconv.hpp @@ -32,11 +32,11 @@ #pragma execution_character_set("utf-8") #endif -namespace cppp::base::reiconv +extern "C" { typedef void* iconv_t; extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict); extern _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); extern _CPPP_API void iconv_close(iconv_t cd); -} // namespace cppp::base::reiconv +}; diff --git a/tests/check-encoding.cpp b/tests/check-encoding.cpp new file mode 100644 index 00000000..c8792129 --- /dev/null +++ b/tests/check-encoding.cpp @@ -0,0 +1,58 @@ +/** + * @file check-encoding.hpp + * @brief Simple check of a Encoding class. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +#include + +#include +#include + +#include "output.hpp" + +#define COMPARE(name, codepage, index) Encoding(name) == Encoding(codepage) && Encoding(name) == Encoding(index) +#define ASSERT(name, codepage, index) \ + if (!(COMPARE(name, codepage, index))) \ + { \ + error("check-encoding", print_string("name={}, codepage={}, index={} are not equal.", name, \ + std::to_string(codepage), std::to_string((int)index))); \ + } + +int main() +{ + using namespace reiconv; + + ASSERT("ASCII", 367, Encodings::ASCII); + ASSERT("UTF-8", 65001, Encodings::UTF8); + ASSERT("CP936", 936, Encodings::CP936); + ASSERT("ISO-8859-1", 28591, Encodings::ISO8859_1); + ASSERT("MSEE", 1250, Encodings::MSEE); + ASSERT("IBM-850", 850, Encodings::IBM850); + ASSERT("MacRoman", 10000, Encodings::MACINTOSH); + ASSERT("MacRoman", 10000, Encodings::MAC_ROMAN); + ASSERT("PT154", 154, Encodings::PT154); + ASSERT("IBM-856", 856, Encodings::IBM856); + ASSERT("csPC8codepage437", 437, Encodings::CP437); + ASSERT("CP0037", 37, Encodings::EBCDIC_037); + + return EXIT_SUCCESS; +} diff --git a/tests/tests.cmake b/tests/tests.cmake index 7b2f6321..7a240b95 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -11,14 +11,17 @@ include_directories("${output_includedir}") # Test executables add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") +add_executable(check-encoding "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-encoding.cpp") add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") +target_link_libraries(check-encoding libcppp-reiconv.static) target_link_libraries(check-stateful libcppp-reiconv.static) target_link_libraries(check-stateless libcppp-reiconv.static) set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-encoding PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) @@ -86,6 +89,11 @@ add_custom_command(TARGET data-generator POST_BUILD COMMENT "Sorting GB18030:2022 test data ... " ) +add_test(NAME check-encoding + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$" + ) + # General multi-byte encodings. test("stateless" "UTF-8") test("stateful" "UTF-16") diff --git a/tools/genindexes.cpp b/tools/genindexes.cpp index 934d6675..f8f9b787 100644 --- a/tools/genindexes.cpp +++ b/tools/genindexes.cpp @@ -61,22 +61,62 @@ std::unordered_map aliases = { #undef DEFCODEPAGE #undef DEFENCODING -int main() +void cpp_gen() { - std::cout << "namespace cppp::base::encoding\n"; - std::cout << "{\n"; - std::cout << " enum class Encodings\n"; - std::cout << " {\n"; + std::printf("namespace reiconv::encoding\n"); + std::printf("{\n"); + std::printf(" enum class Encodings\n"); + std::printf(" {\n"); for (auto &it : enum_data) { - std::cout << " " << it.first << " = " << it.second << ",\n"; + std::printf(" %s = %d,\n", it.first.c_str(), it.second); } for (auto &it : aliases) { - std::cout << " " << it.first << " = " << it.second << ",\n"; + std::printf(" %s = %s,\n", it.first.c_str(), it.second.c_str()); + } + std::printf(" };\n"); + std::printf("} // reiconv::encoding\n"); + std::fflush(stdout); +} + +void c_gen() +{ + std::printf("enum\n"); + std::printf("{\n"); + for (auto &it : enum_data) + { + std::printf(" ENCODING_%s = %d,\n", it.first.c_str(), it.second); + } + for (auto &it : aliases) + { + std::printf(" ENCODING_%s = ENCODING_%s,\n", it.first.c_str(), it.second.c_str()); + } + std::printf("};\n"); + std::fflush(stdout); +} + +int main(int argc, char* argv[]) +{ + if (argc != 2) + { + std::fprintf(stderr, "Usage: %s [C | C++]\n", argv[0]); + return EXIT_FAILURE; + } + + if (std::string(argv[1]) == "C") + { + c_gen(); + } + else if (std::string(argv[1]) == "C++") + { + cpp_gen(); + } + else + { + std::fprintf(stderr, "Usage: %s [C | C++]\n", argv[0]); + return EXIT_FAILURE; } - std::cout << " };\n"; - std::cout << "} // cppp::base::encoding\n"; return EXIT_SUCCESS; } From 8c22553c12d5f8b1c93caf797255f119693cd6ec Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 7 Nov 2024 22:04:03 +0800 Subject: [PATCH 45/77] Add iconv compatibility layer. --- CMakeLists.txt | 24 ++++ benchmark/benchmark.cpp | 14 +-- benchmark/glib_iconv.cpp | 85 ++++++-------- benchmark/libiconv_iconv.cpp | 75 ++++++------ benchmark/test_string.hpp | 35 +++++- include/cppp/reiconv.h.in | 81 +++++++++---- include/cppp/reiconv.hpp.in | 1 - include/iconv.h.in | 82 ++++++++++++++ lib/iconv.c | 158 ++++++++++++++------------ lib/reiconv.cpp | 3 +- tests/_iconv.hpp | 42 ------- tests/buffer.hpp | 213 +++++++++++++++++++++++++++++++++++ tests/check-stateful.cpp | 20 ++-- tests/output.hpp | 3 +- tests/reiconv-test.hpp | 16 ++- tests/sort.hpp | 1 + tests/table-from.hpp | 19 ++-- tests/table-to.hpp | 6 +- tests/utils.hpp | 109 ++---------------- 19 files changed, 601 insertions(+), 386 deletions(-) create mode 100644 include/iconv.h.in delete mode 100644 tests/_iconv.hpp create mode 100644 tests/buffer.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 75882c41..f018e401 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ project(cppp-reiconv HOMEPAGE_URL "https://github.com/cppp-project/cppp-reiconv") option(BUILD_TESTING "Test suites for '${PROJECT_NAME}' enabled." ON) +option(ICONV_COMPAT "Enable compatibility with iconv." OFF) # ---------------------------------------------------------------------------------- # Import build auxiliaries. @@ -68,6 +69,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${outp set(CPPP_API "${CPPP_IMPORT_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.h.in" "${output_includedir}/cppp/reiconv.h.inst") + # Header for build. # cppp/reiconv.hpp set(CPPP_API "${CPPP_EXPORT_API}") @@ -90,6 +92,9 @@ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/lib/generated/indexes.h.shippet" _INDEXES string(STRIP "${_INDEXES_CODE}" INDEXES_CODE) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/encodings/reiconv.h.in" "${output_includedir}/cppp/encodings/reiconv.h") +# iconv.h +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/iconv.h.in" "${output_includedir}/iconv.h") + # Add includes. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") include_directories("${output_includedir}") @@ -123,4 +128,23 @@ install(FILES "${output_includedir}/cppp/encodings/reiconv.hpp" RENAME "cppp/reiconv.hpp" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) +# PERMISSIONS 0644 +install(FILES "${output_includedir}/cppp/reiconv.h.inst" + DESTINATION "${install_includedir}" + RENAME "cppp/reiconv.h" + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) + +# PERMISSIONS 0644 +install(FILES "${output_includedir}/cppp/encodings/reiconv.h" + DESTINATION "${install_includedir}/encodings" + RENAME "cppp/reiconv.h" + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) + +# PERMISSIONS 0644 +if(ICONV_COMPAT) + install(FILES "${output_includedir}/iconv.h" + DESTINATION "${install_includedir}" + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) +endif() + include("${CMAKE_CURRENT_SOURCE_DIR}/cpack.cmake") diff --git a/benchmark/benchmark.cpp b/benchmark/benchmark.cpp index ce3a3288..619c6cdf 100644 --- a/benchmark/benchmark.cpp +++ b/benchmark/benchmark.cpp @@ -47,12 +47,6 @@ static void glibc_iconv_dynamic_length(benchmark::State& state) { char* output = nullptr; std::size_t length = 0; - if(glibc_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length) != 0) - { - free(output); - throw std::runtime_error("glibc_iconv_string failed"); - } - free(output); for (auto _: state) { @@ -69,12 +63,6 @@ static void libiconv_iconv_dynamic_length(benchmark::State& state) { char* output = nullptr; std::size_t length = 0; - if(libiconv_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length) != 0) - { - free(output); - throw std::runtime_error("libiconv_iconv_string failed"); - } - free(output); for (auto _: state) { @@ -166,7 +154,7 @@ static void reiconv_convert(benchmark::State& state) using namespace reiconv; for (auto _: state) { - reiconv_t cd = reiconv_open_from_index(ENCODING_UTF8, ENCODING_GB18030, false); + reiconv_t cd = reiconv_open_from_index(reiconv_lookup_from_name("UTF-8"), reiconv_lookup_from_name("GB18030"), false); char* output = nullptr; size_t length = 0; reiconv_convert(cd, big_test_string_utf8, big_test_string_utf8_len, &output, &length); diff --git a/benchmark/glib_iconv.cpp b/benchmark/glib_iconv.cpp index 7f2f7f86..9bf545b1 100644 --- a/benchmark/glib_iconv.cpp +++ b/benchmark/glib_iconv.cpp @@ -2,53 +2,35 @@ #include "/usr/include/iconv.h" -#include #include +#include #ifdef iconv #warning iconv is defined. Please make sure you are including glibc iconv instead of libiconv. #warning Trying to link with glibc iconv. This may cause linker errors. - -#undef iconv_t -#undef iconv_open -#undef iconv -#undef iconv_close - -extern "C" -{ - typedef void* iconv_t; - extern int iconv_close(iconv_t __cd); - extern iconv_t iconv_open(const char* __tocode, const char* __fromcode); - extern size_t iconv(iconv_t __cd, - char** __inbuf, - size_t* __inbytesleft, - char** __outbuf, - size_t* __outbytesleft); -} #endif -constexpr std::size_t tmpbufsize = 4096; +constexpr const std::size_t tmpbufsize = 4096; -// iconv_string without autodetection. Link with glibc iconv. +// iconv_string without autodetection. With glibc iconv. // See https://git.savannah.gnu.org/cgit/libiconv.git/tree/extras/iconv_string.c -int glibc_iconv_string(const char* tocode, const char* fromcode, - const char* start, const char* end, - char** resultp, std::size_t* lengthp) +int glibc_iconv_string(const char *tocode, const char *fromcode, const char *start, const char *end, char **resultp, + std::size_t *lengthp) { - iconv_t cd = ::iconv_open(tocode,fromcode); + iconv_t cd = ::iconv_open(tocode, fromcode); std::size_t length; - char* result; + char *result; /* Determine the length we need. */ { std::size_t count = 0; char tmpbuf[tmpbufsize]; - const char* inptr = start; - std::size_t insize = end-start; + const char *inptr = start; + std::size_t insize = end - start; while (insize > 0) { - char* outptr = tmpbuf; + char *outptr = tmpbuf; std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); if (res == (std::size_t)(-1) && errno != E2BIG) { int saved_errno = (errno == EINVAL ? EILSEQ : errno); @@ -56,12 +38,12 @@ int glibc_iconv_string(const char* tocode, const char* fromcode, errno = saved_errno; return -1; } - count += outptr-tmpbuf; + count += outptr - tmpbuf; } { - char* outptr = tmpbuf; + char *outptr = tmpbuf; std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); if (res == (std::size_t)(-1)) { int saved_errno = errno; @@ -69,7 +51,7 @@ int glibc_iconv_string(const char* tocode, const char* fromcode, errno = saved_errno; return -1; } - count += outptr-tmpbuf; + count += outptr - tmpbuf; } length = count; } @@ -82,7 +64,7 @@ int glibc_iconv_string(const char* tocode, const char* fromcode, ::iconv_close(cd); return 0; } - result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp,length)); + result = (*resultp == nullptr ? (char *)malloc(length) : (char *)realloc(*resultp, length)); *resultp = result; if (length == 0) { @@ -95,16 +77,16 @@ int glibc_iconv_string(const char* tocode, const char* fromcode, errno = ENOMEM; return -1; } - ::iconv(cd,nullptr,nullptr,nullptr,nullptr); /* return to the initial state */ + ::iconv(cd, nullptr, nullptr, nullptr, nullptr); /* return to the initial state */ /* Do the conversion for real. */ { - const char* inptr = start; - std::size_t insize = end-start; - char* outptr = result; + const char *inptr = start; + std::size_t insize = end - start; + char *outptr = result; std::size_t outsize = length; while (insize > 0) { - std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); if (res == (std::size_t)(-1)) { if (errno == EINVAL) @@ -121,7 +103,7 @@ int glibc_iconv_string(const char* tocode, const char* fromcode, } } { - std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); if (res == (std::size_t)(-1)) { int saved_errno = errno; @@ -130,35 +112,32 @@ int glibc_iconv_string(const char* tocode, const char* fromcode, return -1; } } - if (outsize != 0) std::abort(); + if (outsize != 0) + std::abort(); } ::iconv_close(cd); return 0; } -void glibc_static_size_convert(const char* tocode, - const char* fromcode, - const char* data, - std::size_t size, - char** resultp, - std::size_t result_size) +void glibc_static_size_convert(const char *tocode, const char *fromcode, const char *data, std::size_t size, + char **resultp, std::size_t result_size) { - iconv_t cd = ::iconv_open(tocode,fromcode); + iconv_t cd = ::iconv_open(tocode, fromcode); if (cd == (iconv_t)(-1)) { *resultp = nullptr; std::abort(); } - *resultp = (char*)malloc(result_size); - char* inptr = (char*)data; - char* outptr = *resultp; + *resultp = (char *)malloc(result_size); + char *inptr = (char *)data; + char *outptr = *resultp; std::size_t insize = size; std::size_t outsize = result_size; - std::size_t res = ::iconv(cd,&inptr,&insize,&outptr,&outsize); + std::size_t res = ::iconv(cd, &inptr, &insize, &outptr, &outsize); if (res == (std::size_t)(-1)) { ::iconv_close(cd); - free(*resultp); + std::free(*resultp); std::abort(); } ::iconv_close(cd); diff --git a/benchmark/libiconv_iconv.cpp b/benchmark/libiconv_iconv.cpp index c3ef1285..969e7ec2 100644 --- a/benchmark/libiconv_iconv.cpp +++ b/benchmark/libiconv_iconv.cpp @@ -2,8 +2,8 @@ #include "/usr/local/include/iconv.h" -#include #include +#include #ifndef iconv #warning iconv is not defined. Please make sure you are including libiconv instead of glibc iconv. @@ -21,14 +21,10 @@ extern "C" { - typedef void* iconv_t; + typedef void *iconv_t; extern int iconv_close(iconv_t cd); - extern iconv_t iconv_open(const char* tocode, const char* fromcode); - extern size_t iconv(iconv_t cd, - char** inbuf, - size_t* inbytesleft, - char** outbuf, - size_t* outbytesleft); + extern iconv_t iconv_open(const char *tocode, const char *fromcode); + extern size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); } #endif @@ -36,27 +32,23 @@ constexpr std::size_t tmpbufsize = 4096; // iconv_string without autodetection. Link with libiconv. // See https://git.savannah.gnu.org/cgit/libiconv.git/tree/extras/iconv_string.c -int libiconv_iconv_string(const char* tocode, - const char* fromcode, - const char* start, - const char* end, - char** resultp, - std::size_t* lengthp) +int libiconv_iconv_string(const char *tocode, const char *fromcode, const char *start, const char *end, char **resultp, + std::size_t *lengthp) { - iconv_t cd = ::iconv_open(tocode,fromcode); + iconv_t cd = ::iconv_open(tocode, fromcode); std::size_t length; - char* result; + char *result; /* Determine the length we need. */ { std::size_t count = 0; char tmpbuf[tmpbufsize]; - const char* inptr = start; - std::size_t insize = end-start; + const char *inptr = start; + std::size_t insize = end - start; while (insize > 0) { - char* outptr = tmpbuf; + char *outptr = tmpbuf; std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); if (res == (std::size_t)(-1) && errno != E2BIG) { int saved_errno = (errno == EINVAL ? EILSEQ : errno); @@ -64,12 +56,12 @@ int libiconv_iconv_string(const char* tocode, errno = saved_errno; return -1; } - count += outptr-tmpbuf; + count += outptr - tmpbuf; } { - char* outptr = tmpbuf; + char *outptr = tmpbuf; std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); if (res == (std::size_t)(-1)) { int saved_errno = errno; @@ -77,7 +69,7 @@ int libiconv_iconv_string(const char* tocode, errno = saved_errno; return -1; } - count += outptr-tmpbuf; + count += outptr - tmpbuf; } length = count; } @@ -90,7 +82,7 @@ int libiconv_iconv_string(const char* tocode, ::iconv_close(cd); return 0; } - result = (*resultp == nullptr ? (char*)malloc(length) : (char*)realloc(*resultp,length)); + result = (*resultp == nullptr ? (char *)malloc(length) : (char *)realloc(*resultp, length)); *resultp = result; if (length == 0) { @@ -103,16 +95,16 @@ int libiconv_iconv_string(const char* tocode, errno = ENOMEM; return -1; } - ::iconv(cd,nullptr,nullptr,nullptr,nullptr); /* return to the initial state */ + ::iconv(cd, nullptr, nullptr, nullptr, nullptr); /* return to the initial state */ /* Do the conversion for real. */ { - const char* inptr = start; - std::size_t insize = end-start; - char* outptr = result; + const char *inptr = start; + std::size_t insize = end - start; + char *outptr = result; std::size_t outsize = length; while (insize > 0) { - std::size_t res = ::iconv(cd,(char**)&inptr,&insize,&outptr,&outsize); + std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); if (res == (std::size_t)(-1)) { if (errno == EINVAL) @@ -129,7 +121,7 @@ int libiconv_iconv_string(const char* tocode, } } { - std::size_t res = ::iconv(cd,nullptr,nullptr,&outptr,&outsize); + std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); if (res == (std::size_t)(-1)) { int saved_errno = errno; @@ -138,31 +130,28 @@ int libiconv_iconv_string(const char* tocode, return -1; } } - if (outsize != 0) std::abort(); + if (outsize != 0) + std::abort(); } ::iconv_close(cd); return 0; } -void libiconv_static_size_convert(const char* tocode, - const char* fromcode, - const char* data, - std::size_t size, - char** resultp, - std::size_t result_size) +void libiconv_static_size_convert(const char *tocode, const char *fromcode, const char *data, std::size_t size, + char **resultp, std::size_t result_size) { - iconv_t cd = ::iconv_open(tocode,fromcode); + iconv_t cd = ::iconv_open(tocode, fromcode); if (cd == (iconv_t)(-1)) { *resultp = nullptr; std::abort(); } - *resultp = (char*)malloc(result_size); - char* inptr = (char*)data; - char* outptr = *resultp; + *resultp = (char *)malloc(result_size); + char *inptr = (char *)data; + char *outptr = *resultp; std::size_t insize = size; std::size_t outsize = result_size; - std::size_t res = ::iconv(cd,&inptr,&insize,&outptr,&outsize); + std::size_t res = ::iconv(cd, &inptr, &insize, &outptr, &outsize); if (res == (std::size_t)(-1)) { ::iconv_close(cd); diff --git a/benchmark/test_string.hpp b/benchmark/test_string.hpp index 79876b9f..53c8e1d9 100644 --- a/benchmark/test_string.hpp +++ b/benchmark/test_string.hpp @@ -1,7 +1,34 @@ constexpr const char* simple_test_string_utf8 = "S"; -#define _big_test_string_utf8 "The quick brown fox jumps over the lazy dog.0123456789你好,世界!" +#define _big_test_string_utf8 "The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ +"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -constexpr const char big_test_string_utf8[] = _big_test_string_utf8; - -constexpr const char big_test_string_gb18030[] = "The quick brown fox jumps over the lazy dog.0123456789\xc4\xe3\xba\xc3\xa3\xac\xca\xc0\xbd\xe7\xa3\xa1"; +constexpr const char big_test_string_utf8[] = _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8; diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in index 99733771..a29692c4 100644 --- a/include/cppp/reiconv.h.in +++ b/include/cppp/reiconv.h.in @@ -3,8 +3,6 @@ * @author ChenPi11 * @brief reiconv C API. * @version 3.0.0 - * @date 2024-11-3 - * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. * @copyright Copyright (C) 2024 The C++ Plus Project. */ /* @@ -40,7 +38,7 @@ #define _CPPP_API #ifndef _CPPP_API -#define _CPPP_API @CPPP_API @ +#define _CPPP_API @CPPP_API@ #endif #if _MSC_VER >= 1600 @@ -120,19 +118,24 @@ typedef void *reiconv_t; extern _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq); /** - * @brief Close a conversion descriptor. - * @param cd The conversion descriptor. + * @brief Open a conversion descriptor from codepage. + * @note The return value is a conversion descriptor. + * @param fromcode The input buffer encoding's codepage. + * @param tocode The output buffer encoding's codepage. + * @param discard_ilseq If true, we will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @return The conversion descriptor. (reiconv_t)(-1) is returned if error occured with errno set. */ -extern _CPPP_API void reiconv_handle_close(reiconv_t cd); +extern _CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, bool discard_ilseq); /** - * @brief Do conversion. For iconv compatibility. - * @note At most `*inbytesleft` bytes starting at `*inbuf`. - * @note writing at most `*outbytesleft` bytes starting at `*outbuf`. - * @note Decrements `*inbytesleft` and increments `*inbuf` by the same amount. - * @note Decrements `*outbytesleft` and increments `*outbuf` by the same amount. + * @brief Open a conversion descriptor from encoding name. + * @note The return value is a conversion descriptor. + * @param fromcode The input buffer encoding's name. + * @param tocode The output buffer encoding's name. + * @param discard_ilseq If true, we will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @return The conversion descriptor. (reiconv_t)(-1) is returned if error occured with errno set. */ -_CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +extern _CPPP_API reiconv_t reiconv_open_from_name(const char* fromcode, const char* tocode, bool discard_ilseq); /** * @brief Get the size of the result. -1 on error with errno set. @@ -141,24 +144,54 @@ _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, * @param inlength The input buffer length. * @return The size of the result. */ -_CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength); +extern _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength); + +/** + * @brief Converts a string using conversion descriptor `cd`, with a static size output buffer. + * @note The function `reiconv_convert` is more easy to use. This function is for performance and flexibility. + * @note This function does not treat zero characters specially. + * @param cd The input conversion descriptor. + * @param input_data the input buffer. + * @param input_length Input buffer length. + * @param output_data The output buffer pointer. + * @param output_length the output buffer's length. + * @note If the output buffer is too small, -1 is returned. + * @note If the output buffer is too big, the rest of the buffer is filled with zero. + * @return 0 on success, -1 on error with errno set. + */ +extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char* input_data, size_t input_length, char* output_data, size_t output_length); /** * @brief Converts an string from one encoding to another. - * @note Converts a string given in encoding `fromcode` to a new string in encoding `tocode`. - * `fromcode` and `tocode` are same as for iconv_open(3), but we don't support '//IGNORE' and - * '//TRANSLIT'. `malloc`/`realloc` is used to allocate the result. + * @note Converts a string using conversion descriptor `cd`. + * @note `malloc`/`realloc` is used to allocate the result. * @note This function does not treat zero characters specially. - * @param fromcode The input buffer encoding's index. - * @param tocode The output buffer encoding's index. - * @param input Input buffer. - * @param inputlen Input buffer length. - * @param poutput Output buffer pointer. - * @param poutputlen Output buffer length pointer. - * @param strict If false. We will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @param cd The input conversion descriptor. + * @param input_data Input buffer. + * @param input_length Input buffer length. + * @param output_data_ptr Output buffer pointer's pointer. If NULL, error will be occured. + * @note If `*output_data_ptr` is NULL, `malloc` is used to allocate the result. if not, `realloc` is used. + * @param output_length_ptr Output buffer length pointer. If NULL, error will be occured. + * @note The length of the result is stored in `*output_length_ptr`. * @return 0 on success, -1 on error with errno set. */ -extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *start, size_t inlength, char **resultp, size_t *lengthp); +extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, size_t *output_length_ptr); + +/** + * @brief Do conversion. For iconv compatibility. + * @note At most `*inbytesleft` bytes starting at `*inbuf`. + * @note Writing at most `*outbytesleft` bytes starting at `*outbuf`. + * @note Decrements `*inbytesleft` and increments `*inbuf` by the same amount. + * @note Decrements `*outbytesleft` and increments `*outbuf` by the same amount. + */ +extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + +/** + * @brief Close a conversion descriptor. For iconv compatibility. + * @param cd The conversion descriptor. + * @return 0 on success. Returns 0 every time. + */ +extern _CPPP_API int reiconv_handle_close(reiconv_t cd); #ifdef __cplusplus } diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 0c232e5e..49269d2a 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -3,7 +3,6 @@ * @author ChenPi11 * @brief reiconv C++ API. * @version 3.0.0 - * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. * @copyright Copyright (C) 2023-2024 The C++ Plus Project. */ /* diff --git a/include/iconv.h.in b/include/iconv.h.in new file mode 100644 index 00000000..e071c822 --- /dev/null +++ b/include/iconv.h.in @@ -0,0 +1,82 @@ +/** + * @file iconv.h + * @author ChenPi11 + * @brief reiconv iconv API compatibility header. + * @version 3.0.0 + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +/* When installed, this file is called "iconv.h". */ + +#ifndef _ICONV_H_ +#define _ICONV_H_ + +#if _MSC_VER >= 1600 +#pragma execution_character_set("utf-8") +#endif + +#include + +#undef iconv_t +#undef iconv_open +#undef iconv +#undef iconv_close + +/** + * @brief Iconv conversion descriptor type. + * @note This type is equivalent to `reiconv_t`. + * @see reiconv_t + */ +#define iconv_t reiconv_t + +/** + * @brief Open a conversion descriptor. + * @param tocode The target encoding. + * @param fromcode The source encoding. + * @return The conversion descriptor. (iconv_t)(-1) on error with errno set. + * @note This function is equivalent to `reiconv_open_from_name(fromcode, tocode)`. + * @see reiconv_open_from_name + */ +#define iconv_open(tocode, fromcode) reiconv_open_from_name(fromcode, tocode, false) + +/** + * @brief Convert at most `*inbytesleft` bytes from `*inbuf` according to the code conversion + * algorithm specified by `cd` and place up to `*outbytesleft` bytes in buffer at `*outbuf`. + * @param cd The conversion descriptor. + * @param inbuf The input buffer. + * @param inbytesleft The number of bytes in the input buffer. + * @param outbuf The output buffer. + * @param outbytesleft The number of bytes in the output buffer. + * @return The number of bytes converted, or (size_t)(-1) on error with errno set. + * @note This function is equivalent to `reiconv_iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft)`. + * @see reiconv_iconv + */ +#define iconv reiconv_iconv + +/** + * @brief Close the conversion descriptor. + * @param cd The conversion descriptor. + * @return 0 on success, -1 on error with errno set. + * @note This function is equivalent to `reiconv_handle_close(cd)`. + * @see reiconv_handle_close + */ +#define iconv_close reiconv_handle_close + +#endif /* _ICONV_H_ */ diff --git a/lib/iconv.c b/lib/iconv.c index 324614b0..3cb00eb8 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -19,9 +19,9 @@ #include -#include #include #include +#include #include const size_t TEMP_BUFFER_SIZE = 4096; @@ -49,7 +49,7 @@ struct encoding enum { - #include "encodings.h.snippet" +#include "encodings.h.snippet" ei_end }; @@ -57,14 +57,13 @@ enum #undef DEFCODEPAGE #undef DEFENCODING -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ -{xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, #define DEFCODEPAGE(codepage, xxx) #define DEFINDEX(alias, name) -static struct encoding const all_encodings[] = -{ - #include "encodings.h.snippet" +static struct encoding const all_encodings[] = { +#include "encodings.h.snippet" }; #undef DEFINDEX @@ -72,12 +71,11 @@ static struct encoding const all_encodings[] = #undef DEFCODEPAGE #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) -#define DEFCODEPAGE(codepage, xxx) [codepage]=ei_##xxx + 1, +#define DEFCODEPAGE(codepage, xxx) [codepage] = ei_##xxx + 1, #define DEFINDEX(alias, name) -static const int codepage_to_eindex[] = -{ - #include "encodings.h.snippet" +static const int codepage_to_eindex[] = { +#include "encodings.h.snippet" }; #undef DEFINDEX @@ -98,18 +96,18 @@ static const int codepage_to_eindex[] = _CPPP_API struct VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; -_CPPP_API size_t reiconv_name_canonicalize(const char* name, char* outbuf) +_CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf) { - char* bp = outbuf; - const char* cp = name; + char *bp = outbuf; + const char *cp = name; for (; *cp; cp++, bp++) { char c = (char)*cp; - if (c >= 'a' && c <= 'z') // Uppercase. + if (c >= 'a' && c <= 'z') // Uppercase. { c -= 'a' - 'A'; } - if (c == '-' || c == '_') // Ignore '-' and '_'. + if (c == '-' || c == '_') // Ignore '-' and '_'. { bp--; } @@ -122,12 +120,12 @@ _CPPP_API size_t reiconv_name_canonicalize(const char* name, char* outbuf) return bp - outbuf; } -_CPPP_API int reiconv_lookup_from_name(const char* encoding) +_CPPP_API int reiconv_lookup_from_name(const char *encoding) { char buf[MAX_WORD_LENGTH + 2]; size_t buf_len = reiconv_name_canonicalize(encoding, buf); - const struct alias* ap = aliases_lookup(buf, buf_len); + const struct alias *ap = aliases_lookup(buf, buf_len); return ap ? ap->encoding_index : -1; } @@ -138,8 +136,8 @@ _CPPP_API int reiconv_lookup_from_codepage(int codepage) _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq) { - struct conv_struct* cd; - cd = (struct conv_struct*)malloc(sizeof(struct conv_struct)); + struct conv_struct *cd; + cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); if (cd == NULL) { errno = ENOMEM; @@ -166,43 +164,52 @@ _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool disca return cd; } -_CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +_CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, bool discard_ilseq) { - if (inbuf == NULL || *inbuf == NULL) + int from_index = reiconv_lookup_from_codepage(fromcode); + int to_index = reiconv_lookup_from_codepage(tocode); + + if (from_index == -1 || to_index == -1) { - return ((conv_t)cd)->lfuncs.loop_reset(cd, outbuf, outbytesleft); + errno = EINVAL; + return (reiconv_t)(-1); } - return ((conv_t)cd)->lfuncs.loop_convert(cd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); + return reiconv_open_from_index(from_index, to_index, discard_ilseq); } -/* -_CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict) +_CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *tocode, bool discard_ilseq) { - unsigned int to_index = lookup_by_name(tocode); - unsigned int from_index = lookup_by_name(fromcode); + int from_index = reiconv_lookup_from_name(fromcode); + int to_index = reiconv_lookup_from_name(tocode); - if (to_index == -1 || from_index == -1) + if (from_index == -1 || to_index == -1) { errno = EINVAL; - return (iconv_t)(-1); + return (reiconv_t)(-1); } + return reiconv_open_from_index(from_index, to_index, discard_ilseq); +} - struct conv_struct* cd = iconv_open_from_index(to_index, from_index, (int)!strict); - - return (iconv_t)cd; -}*/ +_CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +{ + if (inbuf == NULL || *inbuf == NULL) + { + return ((conv_t)cd)->lfuncs.loop_reset(cd, outbuf, outbytesleft); + } + return ((conv_t)cd)->lfuncs.loop_convert(cd, (const char **)inbuf, inbytesleft, outbuf, outbytesleft); +} -_CPPP_API void reiconv_handle_close(reiconv_t icd) +_CPPP_API int reiconv_handle_close(reiconv_t icd) { free(icd); + return 0; } _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength) { - // Determine the length we need. size_t count = 0; char tmpbuf[TEMP_BUFFER_SIZE]; - char* inptr = (char*)start; + char *inptr = (char *)start; size_t insize = inlength; while (insize > 0) { @@ -215,7 +222,7 @@ _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inl { errno = EILSEQ; } - return -1; + return (size_t)(-1); } count += outptr - tmpbuf; } @@ -226,45 +233,19 @@ _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inl { // Return to the initial state. reiconv_iconv(cd, NULL, NULL, NULL, NULL); - return -1; + return (size_t)(-1); } reiconv_iconv(cd, NULL, NULL, NULL, NULL); return count + outptr - tmpbuf; } -_CPPP_API int reiconv_convert(reiconv_t cd, const char *start, size_t inlength, char **resultp, - size_t *lengthp) +_CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length) { - size_t length = reiconv_result_size(cd, start, inlength); - char* result; - - if (length == 0) - { - return 0; - } - - if (lengthp != NULL) - { - *lengthp = length; - } - if (resultp == NULL) - { - // If resultp is NULL, we can't save results. - return -1; - } - result = (*resultp == NULL ? (char*)malloc(length) : (char*)realloc(*resultp, length)); - *resultp = result; - if (result == NULL) - { - errno = ENOMEM; - return -1; - } - - // Do the conversion for real. - char *inptr = (char*)start; - size_t insize = inlength; - char* outptr = result; - size_t outsize = length; + char *inptr = (char *)input_data; + size_t insize = input_length; + char *outptr = output_data; + size_t outsize = output_length; while (insize > 0) { size_t res = reiconv_iconv(cd, &inptr, &insize, &outptr, &outsize); @@ -280,14 +261,41 @@ _CPPP_API int reiconv_convert(reiconv_t cd, const char *start, size_t inlength, } } } - size_t res = reiconv_iconv(cd, NULL, NULL, &outptr, &outsize); - if (res == (size_t)(-1)) + if (reiconv_iconv(cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1)) + { + return -1; + } + memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. + return 0; +} +_CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, + size_t *output_length_ptr) +{ + size_t output_length = reiconv_result_size(cd, input_data, input_length); + if (output_length == (size_t)(-1)) { return -1; } - if (outsize != 0) + + if (output_length_ptr != NULL) { - abort(); + *output_length_ptr = output_length; } + + if (output_data_ptr == NULL) + { + errno = EINVAL; + return -1; + } + + *output_data_ptr = (*output_data_ptr == NULL ? (char *)malloc(output_length) : (char *)realloc(*output_data_ptr, output_length)); + + if (reiconv_convert_static_size(cd, input_data, input_length, *output_data_ptr, output_length) == -1) + { + free(*output_data_ptr); + *output_data_ptr = NULL; + return -1; + } + return 0; } diff --git a/lib/reiconv.cpp b/lib/reiconv.cpp index f57f1a54..615bfb5c 100644 --- a/lib/reiconv.cpp +++ b/lib/reiconv.cpp @@ -58,8 +58,7 @@ _CPPP_API std::string reiconv::convert(reiconv::Encoding from, reiconv::Encoding std::string res (outlen, '\0'); char* result = const_cast(res.data()); - std::size_t length = 0; - if (::reiconv_convert(cd, input.data(), input.size(), &result, &length) != 0) + if (::reiconv_convert_static_size(cd, input.data(), input.size(), result, outlen) != 0) { ::reiconv_handle_close(cd); throw std::system_error(errno, std::system_category(), "reiconv_convert"); diff --git a/tests/_iconv.hpp b/tests/_iconv.hpp deleted file mode 100644 index 14e75a01..00000000 --- a/tests/_iconv.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/** - * @file _iconv.hpp - * @author ChenPi11 - * @brief C++ Plus cppp-reiconv package. - * @version 3.0.0 - * @date 2023-10-22 - * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. - */ -/* Copyright (C) 1999-2023 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ - -#pragma once - -#include -#include - -#if _MSC_VER >= 1600 -#pragma execution_character_set("utf-8") -#endif - -extern "C" -{ - typedef void* iconv_t; - - extern _CPPP_API iconv_t iconv_open(const char* tocode, const char* fromcode, bool strict); - extern _CPPP_API size_t iconv(iconv_t icd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - extern _CPPP_API void iconv_close(iconv_t cd); -}; diff --git a/tests/buffer.hpp b/tests/buffer.hpp new file mode 100644 index 00000000..a27bbfc2 --- /dev/null +++ b/tests/buffer.hpp @@ -0,0 +1,213 @@ +/** + * @file buffer.hpp + * @brief A simple buffer class. + * @author ChenPi11 + * @copyright Copyright (C) 2024 The C++ Plus Project + */ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +#pragma once + +#include +#include +#include +#include + +#include "output.hpp" +#include + +class Buffer +{ + private: + Buffer(char *buffer, std::size_t size, const std::string_view id) : id(id), buffer(buffer), size(size) + { + } + + public: + std::string id; + char *buffer; + std::size_t size; + + Buffer() : id(""), buffer(nullptr), size(0) + { + } + + Buffer(Buffer &&other) : id(other.id), buffer(other.buffer), size(other.size) + { + other.buffer = nullptr; + other.size = 0; + other.id = ""; + } + + Buffer(const Buffer &source) : Buffer(source.copy()) + { + } + + Buffer(const std::string_view source, const std::string_view id = "") + { + size = source.size(); + buffer = static_cast(std::malloc(size)); + if (buffer == nullptr) + { + error("malloc", "Unable to allocate buffer."); + } + std::memcpy(buffer, source.data(), size); + this->id = id; + } + + void dump(const std::filesystem::path &output_file_path) const + { + print_stderr("DEBUG: Dumping buffer {} to file {}.\n", colorize(id, CONTROL_UNDERLINE), + colorize(output_file_path.string(), CONTROL_UNDERLINE)); + std::ofstream output_file{output_file_path, std::ios::binary | std::ios::trunc}; + if (!output_file.good()) + { + error(output_file_path, "Unable to open output file."); + } + + output_file.write(buffer, size); + output_file.close(); + } + + constexpr char *data() noexcept + { + return buffer; + } + + constexpr const char *data() const noexcept + { + return buffer; + } + + Buffer &operator=(Buffer &&other) noexcept + { + reset(other.buffer, other.size, other.id); + other.buffer = nullptr; + other.reset(); + return *this; + } + + Buffer &operator=(const Buffer &source) + { + Buffer copy = source.copy(); + reset(copy.buffer); + copy.reset(); + return *this; + } + + Buffer &reset(char *new_buffer = nullptr, const std::size_t new_size = 0, + const std::string_view new_id = "") noexcept + { + std::free(buffer); + buffer = new_buffer; + size = new_size; + id = new_id; + return *this; + } + + Buffer copy() const + { + Buffer res = Buffer::allocate(size, id); + std::memcpy(res.buffer, buffer, size); + return std::move(res); + } + + constexpr operator bool() const + { + return buffer != nullptr; + } + + constexpr bool operator!() const + { + return !buffer; + } + + constexpr bool operator==(const Buffer &other) const + { + if (size != other.size) + { + return false; + } + return std::memcmp(buffer, other.buffer, size) == 0; + } + + constexpr bool operator!=(const Buffer &other) const + { + return !(*this == other); + } + + void compare_assert(const Buffer &other) const + { + if (*this != other) + { + error("compare_data", "The data is different."); + } + success("compare_data", "The data is the same."); + } + + void write_stream(std::ostream &stream, bool newline = false, bool flush = true) const + { + stream.write(buffer, size); + if (newline) + { + stream.write("\n", 1); + } + if (flush) + { + stream.flush(); + } + if (!stream.good()) + { + error("write_stream", "Unable to write to stream."); + } + } + + ~Buffer() + { + reset(); + } + + static Buffer allocate(const std::size_t size, const std::string_view id) + { + char *c_buffer = static_cast(std::malloc(size)); + std::memset(c_buffer, 0, size); + if (c_buffer == nullptr) + { + error("malloc", "Unable to allocate buffer."); + } + return Buffer(c_buffer, size, id); + } + + static Buffer read_from_file(const std::filesystem::path &input_file_path, bool binary = true) + { + std::ifstream input_file{input_file_path, binary ? std::ios::binary : std::ios::in}; + if (!input_file.good()) + { + error(input_file_path, "Unable to open file " + input_file_path.string()); + } + + std::size_t size = std::filesystem::file_size(input_file_path); + + Buffer buffer = Buffer::allocate(size, input_file_path.string()); + input_file.read(buffer.buffer, size); + input_file.close(); + return std::move(buffer); + } +}; diff --git a/tests/check-stateful.cpp b/tests/check-stateful.cpp index 09c6e2cb..30acc4cc 100644 --- a/tests/check-stateful.cpp +++ b/tests/check-stateful.cpp @@ -26,6 +26,8 @@ #include #include +#include "buffer.hpp" +#include "cppp/reiconv.hpp" #include "reiconv-test.hpp" #include "utils.hpp" @@ -50,18 +52,18 @@ int main(int argc, char *argv[]) Buffer res, snippet_data; if (std::filesystem::exists(snippet_alt_file)) { - res = reiconv_test(charset, "UTF-8", snippet_alt_file); - snippet_data = read_all(utf8_snippet_file); - compare_data(snippet_data, res); + res = reiconv_test(charset, reiconv::Encodings::UTF8, snippet_alt_file); + snippet_data = Buffer::read_from_file(utf8_snippet_file); + res.compare_assert(snippet_data); } - res = reiconv_test(charset, "UTF-8", datadir / (charsetf + "-snippet")); - snippet_data = read_all(utf8_snippet_file); - compare_data(snippet_data, res); + res = reiconv_test(charset, reiconv::Encodings::UTF8, datadir / (charsetf + "-snippet")); + snippet_data = Buffer::read_from_file(utf8_snippet_file); + res.compare_assert(snippet_data); - res = reiconv_test("UTF-8", charset, utf8_snippet_file); - snippet_data = read_all(datadir / (charsetf + "-snippet")); - compare_data(snippet_data, res); + res = reiconv_test(reiconv::Encodings::UTF8, charset, utf8_snippet_file); + snippet_data = Buffer::read_from_file(datadir / (charsetf + "-snippet")); + res.compare_assert(snippet_data); success("check-stateful", charset + " OK."); diff --git a/tests/output.hpp b/tests/output.hpp index f7792b48..fd7b7050 100644 --- a/tests/output.hpp +++ b/tests/output.hpp @@ -134,7 +134,8 @@ inline void error(const std::string& operation, const std::string &msg, print_stderr("{}: ", operation); } std::string file_info = std::string(location.file_name()) + ":" + std::to_string(location.line()); - print_stderr(msg, "\n\tAt ", colorize(file_info, CONTROL_UNDERLINE), "\n"); + print_stderr(msg); + print_stderr("\n\tAt {}\n", colorize(file_info, CONTROL_UNDERLINE), "\n"); exit(EXIT_FAILURE); } diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index ca592990..7db41332 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -24,18 +24,16 @@ #pragma once -#include "utils.hpp" - #include -#include #include -#include -inline Buffer reiconv_test(const std::string &from, const std::string &to, const std::filesystem::path &input_file_path) +#include "buffer.hpp" + +inline Buffer reiconv_test(reiconv::Encoding from, reiconv::Encoding to, const std::filesystem::path &input_file_path) { - using namespace cppp::base::reiconv; - auto s = read_all(input_file_path); - auto res = convert(Encoding(from), Encoding(to), {(std::byte *)s.first.get(), s.second}, true); - return {std::shared_ptr {res.buffer}, res.length}; + using namespace reiconv; + Buffer input = Buffer::read_from_file(input_file_path); + std::string res = convert(from, to, {input.data(), input.size}, true); + return Buffer(res, "converted"); } diff --git a/tests/sort.hpp b/tests/sort.hpp index 21ee0af5..5ab92cae 100644 --- a/tests/sort.hpp +++ b/tests/sort.hpp @@ -59,6 +59,7 @@ inline void sort_file(const std::string &file_name, const std::string &output_fi for (const std::string &line : lines) { + print_string(""); write_stream(output_file, line + "\n"); } } diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 00f0c4be..41f39ea2 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -25,7 +25,12 @@ #pragma once -#include "_iconv.hpp" +#include +#include + +#ifndef _CPPP_API +#error This header is not cppp-reiconv's API header. +#endif #include #include @@ -61,9 +66,8 @@ inline std::string hexbuf(unsigned char *buf, unsigned int buflen) * @param out The output buffer. * @return The number of Unicode values in the output buffer. */ -static int try_convert(cppp::base::reiconv::iconv_t cd, unsigned char *buf, unsigned int buflen, unsigned int *out) +static int try_convert(iconv_t cd, unsigned char *buf, unsigned int buflen, unsigned int *out) { - using namespace cppp::base::reiconv; const char *inbuf = (const char *)buf; std::size_t inbytesleft = buflen; char *outbuf = (char *)out; @@ -146,9 +150,8 @@ static const char *ucs4_decode(const unsigned int *out, unsigned int outlen, boo * @param bmp_only When true, ignore conversions outside Unicode plane 0. * @param save_file The save file stream. */ -inline void run_table_from_test(cppp::base::reiconv::iconv_t cd, unsigned int (&i)[4], std::size_t index, - unsigned int (&out)[3], unsigned char (&buf)[4], bool bmp_only, - std::ofstream &save_file) +inline void run_table_from_test(iconv_t cd, unsigned int (&i)[4], std::size_t index, unsigned int (&out)[3], + unsigned char (&buf)[4], bool bmp_only, std::ofstream &save_file) { int result; for (i[index] = 0; i[index] < 0x100; i[index]++) @@ -189,8 +192,6 @@ inline void run_table_from_test(cppp::base::reiconv::iconv_t cd, unsigned int (& */ inline void table_from(const std::filesystem::path &save_file_path, const std::string &charset) { - using namespace cppp::base::reiconv; - /* If nonzero, ignore conversions outside Unicode plane 0. */ bool bmp_only = (charset == "UTF-8"); int search_depth = (bmp_only ? 3 : 4); @@ -201,7 +202,7 @@ inline void table_from(const std::filesystem::path &save_file_path, const std::s error(save_file_path, "Cannot open save file."); } - iconv_t cd = iconv_open("UCS-4-INTERNAL", charset.c_str(), true); + iconv_t cd = iconv_open("UCS-4-INTERNAL", charset.c_str()); if (cd == (iconv_t)(-1)) { error("iconv_open", " Iconv open error."); diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 9a9d0077..4fb3b680 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -25,7 +25,7 @@ #pragma once -#include "_iconv.hpp" +#include "iconv.h" #include #include @@ -38,8 +38,6 @@ inline void table_to(const std::filesystem::path &save_file_path, const std::string &charset) { - using namespace cppp::base::reiconv; - // When testing UTF-8, stop at 0x10000, otherwise the output file gets too big. int bmp_only = (charset == "UTF-8"); @@ -49,7 +47,7 @@ inline void table_to(const std::filesystem::path &save_file_path, const std::str error(save_file_path, "Cannot open save file."); } - iconv_t cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL", true); + iconv_t cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL"); if (cd == (iconv_t)(-1)) { error("iconv_open", "Iconv open error."); diff --git a/tests/utils.hpp b/tests/utils.hpp index 6f1f355e..903abd2d 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -31,93 +31,28 @@ #include #include #include -#include #include #include #include -#include "output.hpp" - -class Buffer : public std::pair, std::size_t> -{ - public: - std::string id; - Buffer() : std::pair, std::size_t>(), id("") - { - } - Buffer(std::shared_ptr first, std::size_t second, std::string id = "") - : std::pair, std::size_t>(first, second), id(id) - { - } - Buffer(const Buffer &buffer) : std::pair, std::size_t>(buffer), id(buffer.id) - { - } -}; +#include "buffer.hpp" /** - * @brief Dump a buffer to a file. - */ -inline void dump_data(const Buffer &buffer, const std::filesystem::path &output_file_path) -{ - std::ofstream output_file{output_file_path, std::ios::binary | std::ios::trunc}; - if (!output_file.good()) - { - error(output_file_path, "Unable to open output file."); - } - - output_file.write((char *)buffer.first.get(), buffer.second); - output_file.close(); -} - -/** - * @brief Compare two buffers. - * @param buffer1 The first buffer. - * @param buffer2 The second buffer. - */ -inline void compare_data(const Buffer &buffer1, const Buffer &buffer2) -{ - if (buffer1.second != buffer2.second || std::memcmp(buffer1.first.get(), buffer2.first.get(), buffer1.second) != 0) - { - dump_data(buffer1, "buffer1.dump"); - dump_data(buffer2, "buffer2.dump"); - print_stderr("{} {}\n", colorize(buffer1.id, COLOR_RED | CONTROL_UNDERLINE), - colorize(buffer2.id, COLOR_RED | CONTROL_UNDERLINE)); - error("compare_data", "The data is different."); - } - success("compare_data", "The data is the same."); -} - -/** - * @brief Read all content from a file. - * @param input_file_path The file path. - * @return The content of the file and its size. + * @brief Compare two files. + * @param file1 The first file. + * @param file2 The second file. */ -inline Buffer read_all(const std::filesystem::path &input_file_path) +inline void compare_files(const std::filesystem::path &file1, const std::filesystem::path &file2) { - std::ifstream input_file{input_file_path, std::ios::binary}; - if (!input_file.good()) - { - error(input_file_path, "Unable to open input file."); - } - - std::size_t size = std::filesystem::file_size(input_file_path); - auto buffer = std::make_shared(size); - input_file.read((char *)buffer.get(), size); - input_file.close(); - - return {std::move(buffer), size, input_file_path.string()}; + Buffer::read_from_file(file1).compare_assert(Buffer::read_from_file(file2)); } /** - * @brief Compare two files. - * @param file1 The first file. - * @param file2 The second file. + * @brief Write all content to a stream. */ -inline void compare_files(const std::filesystem::path &file1, const std::filesystem::path &file2) +inline void write_stream(std::ostream &stream, const std::string &buffer) { - auto buffer1 = read_all(file1); - auto buffer2 = read_all(file2); - compare_data(buffer1, buffer2); + stream.write(buffer.data(), buffer.size()); } /** @@ -155,24 +90,10 @@ inline void write_all(const std::filesystem::path &output_file_path, const Buffe error(output_file_path, "Unable to open output file."); } - output_file.write((char *)buffer.first.get(), buffer.second); + output_file.write(buffer.data(), buffer.size); output_file.close(); } -/** - * @brief Write a string to a stream. - * @param output The stream. - * @param buffer The string. - */ -inline void write_stream(std::ostream &output, const std::string_view buffer) -{ - output.write(buffer.data(), buffer.size()); - if (!output.good()) - { - error("write_stream", "Unable to write to stream."); - } -} - /** * @brief Merge files into one. * @param files The files to merge. @@ -188,14 +109,8 @@ inline void merge_files(const std::vector &files, const s for (const auto &file : files) { - std::ifstream input_file{file, std::ios::binary}; - if (!input_file.good()) - { - error(file, "Unable to open input file."); - } - - output_file << input_file.rdbuf() << std::endl; // Flush after each write. - input_file.close(); + Buffer input_file = Buffer::read_from_file(file); + input_file.write_stream(output_file, true, true); } output_file.close(); From 8691ddb8d31f3551cf6524d0f131fd59e3e69d13 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 7 Nov 2024 22:11:05 +0800 Subject: [PATCH 46/77] Remove the charactor that caused warning in GCC. --- tests/table-from.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 41f39ea2..7d7349f4 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -29,7 +29,7 @@ #include #ifndef _CPPP_API -#error This header is not cppp-reiconv's API header. +#error This header is not API header of cppp-reiconv. #endif #include From 5cb112af6e6c56d8a7e181028888561827da6f82 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 7 Nov 2024 22:20:08 +0800 Subject: [PATCH 47/77] Move all converters to a separate directory. --- lib/converters.h | 437 ++++++++++++----------- lib/{ => converters}/armscii_8.h | 0 lib/{ => converters}/ascii.h | 0 lib/{ => converters}/atarist.h | 0 lib/{ => converters}/big5.h | 0 lib/{ => converters}/big5_2003.h | 0 lib/{ => converters}/big5hkscs1999.h | 0 lib/{ => converters}/big5hkscs2001.h | 0 lib/{ => converters}/big5hkscs2004.h | 0 lib/{ => converters}/big5hkscs2008.h | 0 lib/{ => converters}/c99.h | 0 lib/{ => converters}/ces_big5.h | 0 lib/{ => converters}/ces_gbk.h | 0 lib/{ => converters}/cjk_variants.h | 0 lib/{ => converters}/cns11643.h | 0 lib/{ => converters}/cns11643_1.h | 0 lib/{ => converters}/cns11643_15.h | 0 lib/{ => converters}/cns11643_2.h | 0 lib/{ => converters}/cns11643_3.h | 0 lib/{ => converters}/cns11643_4.h | 0 lib/{ => converters}/cns11643_4a.h | 0 lib/{ => converters}/cns11643_4b.h | 0 lib/{ => converters}/cns11643_5.h | 0 lib/{ => converters}/cns11643_6.h | 0 lib/{ => converters}/cns11643_7.h | 0 lib/{ => converters}/cns11643_inv.h | 0 lib/{ => converters}/cp1046.h | 0 lib/{ => converters}/cp1124.h | 0 lib/{ => converters}/cp1125.h | 0 lib/{ => converters}/cp1129.h | 0 lib/{ => converters}/cp1131.h | 0 lib/{ => converters}/cp1133.h | 0 lib/{ => converters}/cp1161.h | 0 lib/{ => converters}/cp1162.h | 0 lib/{ => converters}/cp1163.h | 0 lib/{ => converters}/cp1250.h | 0 lib/{ => converters}/cp1251.h | 0 lib/{ => converters}/cp1252.h | 0 lib/{ => converters}/cp1253.h | 0 lib/{ => converters}/cp1254.h | 0 lib/{ => converters}/cp1255.h | 0 lib/{ => converters}/cp1256.h | 0 lib/{ => converters}/cp1257.h | 0 lib/{ => converters}/cp1258.h | 0 lib/{ => converters}/cp437.h | 0 lib/{ => converters}/cp50221_0208_ext.h | 0 lib/{ => converters}/cp50221_0212_ext.h | 0 lib/{ => converters}/cp737.h | 0 lib/{ => converters}/cp775.h | 0 lib/{ => converters}/cp850.h | 0 lib/{ => converters}/cp852.h | 0 lib/{ => converters}/cp853.h | 0 lib/{ => converters}/cp855.h | 0 lib/{ => converters}/cp856.h | 0 lib/{ => converters}/cp857.h | 0 lib/{ => converters}/cp858.h | 0 lib/{ => converters}/cp860.h | 0 lib/{ => converters}/cp861.h | 0 lib/{ => converters}/cp862.h | 0 lib/{ => converters}/cp863.h | 0 lib/{ => converters}/cp864.h | 0 lib/{ => converters}/cp865.h | 0 lib/{ => converters}/cp866.h | 0 lib/{ => converters}/cp869.h | 0 lib/{ => converters}/cp874.h | 0 lib/{ => converters}/cp922.h | 0 lib/{ => converters}/cp932.h | 0 lib/{ => converters}/cp932ext.h | 0 lib/{ => converters}/cp936.h | 0 lib/{ => converters}/cp936ext.h | 0 lib/{ => converters}/cp943.h | 0 lib/{ => converters}/cp949.h | 0 lib/{ => converters}/cp950.h | 0 lib/{ => converters}/cp950ext.h | 0 lib/{ => converters}/dec_hanyu.h | 0 lib/{ => converters}/dec_kanji.h | 0 lib/{ => converters}/ebcdic037.h | 0 lib/{ => converters}/ebcdic1025.h | 0 lib/{ => converters}/ebcdic1026.h | 0 lib/{ => converters}/ebcdic1047.h | 0 lib/{ => converters}/ebcdic1097.h | 0 lib/{ => converters}/ebcdic1112.h | 0 lib/{ => converters}/ebcdic1122.h | 0 lib/{ => converters}/ebcdic1123.h | 0 lib/{ => converters}/ebcdic1130.h | 0 lib/{ => converters}/ebcdic1132.h | 0 lib/{ => converters}/ebcdic1137.h | 0 lib/{ => converters}/ebcdic1140.h | 0 lib/{ => converters}/ebcdic1141.h | 0 lib/{ => converters}/ebcdic1142.h | 0 lib/{ => converters}/ebcdic1143.h | 0 lib/{ => converters}/ebcdic1144.h | 0 lib/{ => converters}/ebcdic1145.h | 0 lib/{ => converters}/ebcdic1146.h | 0 lib/{ => converters}/ebcdic1147.h | 0 lib/{ => converters}/ebcdic1148.h | 0 lib/{ => converters}/ebcdic1149.h | 0 lib/{ => converters}/ebcdic1153.h | 0 lib/{ => converters}/ebcdic1154.h | 0 lib/{ => converters}/ebcdic1155.h | 0 lib/{ => converters}/ebcdic1156.h | 0 lib/{ => converters}/ebcdic1157.h | 0 lib/{ => converters}/ebcdic1158.h | 0 lib/{ => converters}/ebcdic1160.h | 0 lib/{ => converters}/ebcdic1164.h | 0 lib/{ => converters}/ebcdic1165.h | 0 lib/{ => converters}/ebcdic1166.h | 0 lib/{ => converters}/ebcdic12712.h | 0 lib/{ => converters}/ebcdic16804.h | 0 lib/{ => converters}/ebcdic273.h | 0 lib/{ => converters}/ebcdic277.h | 0 lib/{ => converters}/ebcdic278.h | 0 lib/{ => converters}/ebcdic280.h | 0 lib/{ => converters}/ebcdic282.h | 0 lib/{ => converters}/ebcdic284.h | 0 lib/{ => converters}/ebcdic285.h | 0 lib/{ => converters}/ebcdic297.h | 0 lib/{ => converters}/ebcdic423.h | 0 lib/{ => converters}/ebcdic424.h | 0 lib/{ => converters}/ebcdic425.h | 0 lib/{ => converters}/ebcdic4971.h | 0 lib/{ => converters}/ebcdic500.h | 0 lib/{ => converters}/ebcdic838.h | 0 lib/{ => converters}/ebcdic870.h | 0 lib/{ => converters}/ebcdic871.h | 0 lib/{ => converters}/ebcdic875.h | 0 lib/{ => converters}/ebcdic880.h | 0 lib/{ => converters}/ebcdic905.h | 0 lib/{ => converters}/ebcdic924.h | 0 lib/{ => converters}/euc_cn.h | 0 lib/{ => converters}/euc_jisx0213.h | 0 lib/{ => converters}/euc_jp.h | 0 lib/{ => converters}/euc_kr.h | 0 lib/{ => converters}/euc_tw.h | 0 lib/{ => converters}/flushwc.h | 0 lib/{ => converters}/gb12345.h | 0 lib/{ => converters}/gb12345ext.h | 0 lib/{ => converters}/gb18030_2005.h | 0 lib/{ => converters}/gb18030_2022.h | 0 lib/{ => converters}/gb18030ext.h | 0 lib/{ => converters}/gb18030uni.h | 0 lib/{ => converters}/gb2312.h | 0 lib/{ => converters}/gbk.h | 0 lib/{ => converters}/gbkext1.h | 0 lib/{ => converters}/gbkext2.h | 0 lib/{ => converters}/gbkext_inv.h | 0 lib/{ => converters}/georgian_academy.h | 0 lib/{ => converters}/georgian_ps.h | 0 lib/{ => converters}/hkscs1999.h | 0 lib/{ => converters}/hkscs2001.h | 0 lib/{ => converters}/hkscs2004.h | 0 lib/{ => converters}/hkscs2008.h | 0 lib/{ => converters}/hp_roman8.h | 0 lib/{ => converters}/hz.h | 0 lib/{ => converters}/iso2022_cn.h | 0 lib/{ => converters}/iso2022_cnext.h | 0 lib/{ => converters}/iso2022_jp.h | 0 lib/{ => converters}/iso2022_jp1.h | 0 lib/{ => converters}/iso2022_jp2.h | 0 lib/{ => converters}/iso2022_jp3.h | 0 lib/{ => converters}/iso2022_jpms.h | 0 lib/{ => converters}/iso2022_kr.h | 0 lib/{ => converters}/iso646_cn.h | 0 lib/{ => converters}/iso646_jp.h | 0 lib/{ => converters}/iso8859_1.h | 0 lib/{ => converters}/iso8859_10.h | 0 lib/{ => converters}/iso8859_11.h | 0 lib/{ => converters}/iso8859_13.h | 0 lib/{ => converters}/iso8859_14.h | 0 lib/{ => converters}/iso8859_15.h | 0 lib/{ => converters}/iso8859_16.h | 0 lib/{ => converters}/iso8859_2.h | 0 lib/{ => converters}/iso8859_3.h | 0 lib/{ => converters}/iso8859_4.h | 0 lib/{ => converters}/iso8859_5.h | 0 lib/{ => converters}/iso8859_6.h | 0 lib/{ => converters}/iso8859_7.h | 0 lib/{ => converters}/iso8859_8.h | 0 lib/{ => converters}/iso8859_9.h | 0 lib/{ => converters}/isoir165.h | 0 lib/{ => converters}/isoir165ext.h | 0 lib/{ => converters}/java.h | 0 lib/{ => converters}/jisx0201.h | 0 lib/{ => converters}/jisx0208.h | 0 lib/{ => converters}/jisx0212.h | 0 lib/{ => converters}/jisx0213.h | 0 lib/{ => converters}/johab.h | 0 lib/{ => converters}/johab_hangul.h | 0 lib/{ => converters}/koi8_r.h | 0 lib/{ => converters}/koi8_ru.h | 0 lib/{ => converters}/koi8_t.h | 0 lib/{ => converters}/koi8_u.h | 0 lib/{ => converters}/ksc5601.h | 0 lib/{ => converters}/mac_arabic.h | 0 lib/{ => converters}/mac_centraleurope.h | 0 lib/{ => converters}/mac_croatian.h | 0 lib/{ => converters}/mac_cyrillic.h | 0 lib/{ => converters}/mac_greek.h | 0 lib/{ => converters}/mac_hebrew.h | 0 lib/{ => converters}/mac_iceland.h | 0 lib/{ => converters}/mac_roman.h | 0 lib/{ => converters}/mac_romania.h | 0 lib/{ => converters}/mac_thai.h | 0 lib/{ => converters}/mac_turkish.h | 0 lib/{ => converters}/mac_ukraine.h | 0 lib/{ => converters}/mulelao.h | 0 lib/{ => converters}/nextstep.h | 0 lib/{ => converters}/pt154.h | 0 lib/{ => converters}/riscos1.h | 0 lib/{ => converters}/rk1048.h | 0 lib/{ => converters}/shift_jisx0213.h | 0 lib/{ => converters}/sjis.h | 0 lib/{ => converters}/tcvn.h | 0 lib/{ => converters}/tds565.h | 0 lib/{ => converters}/tis620.h | 0 lib/{ => converters}/ucs2.h | 0 lib/{ => converters}/ucs2be.h | 0 lib/{ => converters}/ucs2internal.h | 0 lib/{ => converters}/ucs2le.h | 0 lib/{ => converters}/ucs2swapped.h | 0 lib/{ => converters}/ucs4.h | 0 lib/{ => converters}/ucs4be.h | 0 lib/{ => converters}/ucs4internal.h | 0 lib/{ => converters}/ucs4le.h | 0 lib/{ => converters}/ucs4swapped.h | 0 lib/{ => converters}/uhc_1.h | 0 lib/{ => converters}/uhc_2.h | 0 lib/{ => converters}/utf16.h | 0 lib/{ => converters}/utf16be.h | 0 lib/{ => converters}/utf16le.h | 0 lib/{ => converters}/utf32.h | 0 lib/{ => converters}/utf32be.h | 0 lib/{ => converters}/utf32le.h | 0 lib/{ => converters}/utf7.h | 0 lib/{ => converters}/utf8.h | 0 lib/{ => converters}/vietcomb.h | 0 lib/{ => converters}/viscii.h | 0 237 files changed, 223 insertions(+), 214 deletions(-) rename lib/{ => converters}/armscii_8.h (100%) rename lib/{ => converters}/ascii.h (100%) rename lib/{ => converters}/atarist.h (100%) rename lib/{ => converters}/big5.h (100%) rename lib/{ => converters}/big5_2003.h (100%) rename lib/{ => converters}/big5hkscs1999.h (100%) rename lib/{ => converters}/big5hkscs2001.h (100%) rename lib/{ => converters}/big5hkscs2004.h (100%) rename lib/{ => converters}/big5hkscs2008.h (100%) rename lib/{ => converters}/c99.h (100%) rename lib/{ => converters}/ces_big5.h (100%) rename lib/{ => converters}/ces_gbk.h (100%) rename lib/{ => converters}/cjk_variants.h (100%) rename lib/{ => converters}/cns11643.h (100%) rename lib/{ => converters}/cns11643_1.h (100%) rename lib/{ => converters}/cns11643_15.h (100%) rename lib/{ => converters}/cns11643_2.h (100%) rename lib/{ => converters}/cns11643_3.h (100%) rename lib/{ => converters}/cns11643_4.h (100%) rename lib/{ => converters}/cns11643_4a.h (100%) rename lib/{ => converters}/cns11643_4b.h (100%) rename lib/{ => converters}/cns11643_5.h (100%) rename lib/{ => converters}/cns11643_6.h (100%) rename lib/{ => converters}/cns11643_7.h (100%) rename lib/{ => converters}/cns11643_inv.h (100%) rename lib/{ => converters}/cp1046.h (100%) rename lib/{ => converters}/cp1124.h (100%) rename lib/{ => converters}/cp1125.h (100%) rename lib/{ => converters}/cp1129.h (100%) rename lib/{ => converters}/cp1131.h (100%) rename lib/{ => converters}/cp1133.h (100%) rename lib/{ => converters}/cp1161.h (100%) rename lib/{ => converters}/cp1162.h (100%) rename lib/{ => converters}/cp1163.h (100%) rename lib/{ => converters}/cp1250.h (100%) rename lib/{ => converters}/cp1251.h (100%) rename lib/{ => converters}/cp1252.h (100%) rename lib/{ => converters}/cp1253.h (100%) rename lib/{ => converters}/cp1254.h (100%) rename lib/{ => converters}/cp1255.h (100%) rename lib/{ => converters}/cp1256.h (100%) rename lib/{ => converters}/cp1257.h (100%) rename lib/{ => converters}/cp1258.h (100%) rename lib/{ => converters}/cp437.h (100%) rename lib/{ => converters}/cp50221_0208_ext.h (100%) rename lib/{ => converters}/cp50221_0212_ext.h (100%) rename lib/{ => converters}/cp737.h (100%) rename lib/{ => converters}/cp775.h (100%) rename lib/{ => converters}/cp850.h (100%) rename lib/{ => converters}/cp852.h (100%) rename lib/{ => converters}/cp853.h (100%) rename lib/{ => converters}/cp855.h (100%) rename lib/{ => converters}/cp856.h (100%) rename lib/{ => converters}/cp857.h (100%) rename lib/{ => converters}/cp858.h (100%) rename lib/{ => converters}/cp860.h (100%) rename lib/{ => converters}/cp861.h (100%) rename lib/{ => converters}/cp862.h (100%) rename lib/{ => converters}/cp863.h (100%) rename lib/{ => converters}/cp864.h (100%) rename lib/{ => converters}/cp865.h (100%) rename lib/{ => converters}/cp866.h (100%) rename lib/{ => converters}/cp869.h (100%) rename lib/{ => converters}/cp874.h (100%) rename lib/{ => converters}/cp922.h (100%) rename lib/{ => converters}/cp932.h (100%) rename lib/{ => converters}/cp932ext.h (100%) rename lib/{ => converters}/cp936.h (100%) rename lib/{ => converters}/cp936ext.h (100%) rename lib/{ => converters}/cp943.h (100%) rename lib/{ => converters}/cp949.h (100%) rename lib/{ => converters}/cp950.h (100%) rename lib/{ => converters}/cp950ext.h (100%) rename lib/{ => converters}/dec_hanyu.h (100%) rename lib/{ => converters}/dec_kanji.h (100%) rename lib/{ => converters}/ebcdic037.h (100%) rename lib/{ => converters}/ebcdic1025.h (100%) rename lib/{ => converters}/ebcdic1026.h (100%) rename lib/{ => converters}/ebcdic1047.h (100%) rename lib/{ => converters}/ebcdic1097.h (100%) rename lib/{ => converters}/ebcdic1112.h (100%) rename lib/{ => converters}/ebcdic1122.h (100%) rename lib/{ => converters}/ebcdic1123.h (100%) rename lib/{ => converters}/ebcdic1130.h (100%) rename lib/{ => converters}/ebcdic1132.h (100%) rename lib/{ => converters}/ebcdic1137.h (100%) rename lib/{ => converters}/ebcdic1140.h (100%) rename lib/{ => converters}/ebcdic1141.h (100%) rename lib/{ => converters}/ebcdic1142.h (100%) rename lib/{ => converters}/ebcdic1143.h (100%) rename lib/{ => converters}/ebcdic1144.h (100%) rename lib/{ => converters}/ebcdic1145.h (100%) rename lib/{ => converters}/ebcdic1146.h (100%) rename lib/{ => converters}/ebcdic1147.h (100%) rename lib/{ => converters}/ebcdic1148.h (100%) rename lib/{ => converters}/ebcdic1149.h (100%) rename lib/{ => converters}/ebcdic1153.h (100%) rename lib/{ => converters}/ebcdic1154.h (100%) rename lib/{ => converters}/ebcdic1155.h (100%) rename lib/{ => converters}/ebcdic1156.h (100%) rename lib/{ => converters}/ebcdic1157.h (100%) rename lib/{ => converters}/ebcdic1158.h (100%) rename lib/{ => converters}/ebcdic1160.h (100%) rename lib/{ => converters}/ebcdic1164.h (100%) rename lib/{ => converters}/ebcdic1165.h (100%) rename lib/{ => converters}/ebcdic1166.h (100%) rename lib/{ => converters}/ebcdic12712.h (100%) rename lib/{ => converters}/ebcdic16804.h (100%) rename lib/{ => converters}/ebcdic273.h (100%) rename lib/{ => converters}/ebcdic277.h (100%) rename lib/{ => converters}/ebcdic278.h (100%) rename lib/{ => converters}/ebcdic280.h (100%) rename lib/{ => converters}/ebcdic282.h (100%) rename lib/{ => converters}/ebcdic284.h (100%) rename lib/{ => converters}/ebcdic285.h (100%) rename lib/{ => converters}/ebcdic297.h (100%) rename lib/{ => converters}/ebcdic423.h (100%) rename lib/{ => converters}/ebcdic424.h (100%) rename lib/{ => converters}/ebcdic425.h (100%) rename lib/{ => converters}/ebcdic4971.h (100%) rename lib/{ => converters}/ebcdic500.h (100%) rename lib/{ => converters}/ebcdic838.h (100%) rename lib/{ => converters}/ebcdic870.h (100%) rename lib/{ => converters}/ebcdic871.h (100%) rename lib/{ => converters}/ebcdic875.h (100%) rename lib/{ => converters}/ebcdic880.h (100%) rename lib/{ => converters}/ebcdic905.h (100%) rename lib/{ => converters}/ebcdic924.h (100%) rename lib/{ => converters}/euc_cn.h (100%) rename lib/{ => converters}/euc_jisx0213.h (100%) rename lib/{ => converters}/euc_jp.h (100%) rename lib/{ => converters}/euc_kr.h (100%) rename lib/{ => converters}/euc_tw.h (100%) rename lib/{ => converters}/flushwc.h (100%) rename lib/{ => converters}/gb12345.h (100%) rename lib/{ => converters}/gb12345ext.h (100%) rename lib/{ => converters}/gb18030_2005.h (100%) rename lib/{ => converters}/gb18030_2022.h (100%) rename lib/{ => converters}/gb18030ext.h (100%) rename lib/{ => converters}/gb18030uni.h (100%) rename lib/{ => converters}/gb2312.h (100%) rename lib/{ => converters}/gbk.h (100%) rename lib/{ => converters}/gbkext1.h (100%) rename lib/{ => converters}/gbkext2.h (100%) rename lib/{ => converters}/gbkext_inv.h (100%) rename lib/{ => converters}/georgian_academy.h (100%) rename lib/{ => converters}/georgian_ps.h (100%) rename lib/{ => converters}/hkscs1999.h (100%) rename lib/{ => converters}/hkscs2001.h (100%) rename lib/{ => converters}/hkscs2004.h (100%) rename lib/{ => converters}/hkscs2008.h (100%) rename lib/{ => converters}/hp_roman8.h (100%) rename lib/{ => converters}/hz.h (100%) rename lib/{ => converters}/iso2022_cn.h (100%) rename lib/{ => converters}/iso2022_cnext.h (100%) rename lib/{ => converters}/iso2022_jp.h (100%) rename lib/{ => converters}/iso2022_jp1.h (100%) rename lib/{ => converters}/iso2022_jp2.h (100%) rename lib/{ => converters}/iso2022_jp3.h (100%) rename lib/{ => converters}/iso2022_jpms.h (100%) rename lib/{ => converters}/iso2022_kr.h (100%) rename lib/{ => converters}/iso646_cn.h (100%) rename lib/{ => converters}/iso646_jp.h (100%) rename lib/{ => converters}/iso8859_1.h (100%) rename lib/{ => converters}/iso8859_10.h (100%) rename lib/{ => converters}/iso8859_11.h (100%) rename lib/{ => converters}/iso8859_13.h (100%) rename lib/{ => converters}/iso8859_14.h (100%) rename lib/{ => converters}/iso8859_15.h (100%) rename lib/{ => converters}/iso8859_16.h (100%) rename lib/{ => converters}/iso8859_2.h (100%) rename lib/{ => converters}/iso8859_3.h (100%) rename lib/{ => converters}/iso8859_4.h (100%) rename lib/{ => converters}/iso8859_5.h (100%) rename lib/{ => converters}/iso8859_6.h (100%) rename lib/{ => converters}/iso8859_7.h (100%) rename lib/{ => converters}/iso8859_8.h (100%) rename lib/{ => converters}/iso8859_9.h (100%) rename lib/{ => converters}/isoir165.h (100%) rename lib/{ => converters}/isoir165ext.h (100%) rename lib/{ => converters}/java.h (100%) rename lib/{ => converters}/jisx0201.h (100%) rename lib/{ => converters}/jisx0208.h (100%) rename lib/{ => converters}/jisx0212.h (100%) rename lib/{ => converters}/jisx0213.h (100%) rename lib/{ => converters}/johab.h (100%) rename lib/{ => converters}/johab_hangul.h (100%) rename lib/{ => converters}/koi8_r.h (100%) rename lib/{ => converters}/koi8_ru.h (100%) rename lib/{ => converters}/koi8_t.h (100%) rename lib/{ => converters}/koi8_u.h (100%) rename lib/{ => converters}/ksc5601.h (100%) rename lib/{ => converters}/mac_arabic.h (100%) rename lib/{ => converters}/mac_centraleurope.h (100%) rename lib/{ => converters}/mac_croatian.h (100%) rename lib/{ => converters}/mac_cyrillic.h (100%) rename lib/{ => converters}/mac_greek.h (100%) rename lib/{ => converters}/mac_hebrew.h (100%) rename lib/{ => converters}/mac_iceland.h (100%) rename lib/{ => converters}/mac_roman.h (100%) rename lib/{ => converters}/mac_romania.h (100%) rename lib/{ => converters}/mac_thai.h (100%) rename lib/{ => converters}/mac_turkish.h (100%) rename lib/{ => converters}/mac_ukraine.h (100%) rename lib/{ => converters}/mulelao.h (100%) rename lib/{ => converters}/nextstep.h (100%) rename lib/{ => converters}/pt154.h (100%) rename lib/{ => converters}/riscos1.h (100%) rename lib/{ => converters}/rk1048.h (100%) rename lib/{ => converters}/shift_jisx0213.h (100%) rename lib/{ => converters}/sjis.h (100%) rename lib/{ => converters}/tcvn.h (100%) rename lib/{ => converters}/tds565.h (100%) rename lib/{ => converters}/tis620.h (100%) rename lib/{ => converters}/ucs2.h (100%) rename lib/{ => converters}/ucs2be.h (100%) rename lib/{ => converters}/ucs2internal.h (100%) rename lib/{ => converters}/ucs2le.h (100%) rename lib/{ => converters}/ucs2swapped.h (100%) rename lib/{ => converters}/ucs4.h (100%) rename lib/{ => converters}/ucs4be.h (100%) rename lib/{ => converters}/ucs4internal.h (100%) rename lib/{ => converters}/ucs4le.h (100%) rename lib/{ => converters}/ucs4swapped.h (100%) rename lib/{ => converters}/uhc_1.h (100%) rename lib/{ => converters}/uhc_2.h (100%) rename lib/{ => converters}/utf16.h (100%) rename lib/{ => converters}/utf16be.h (100%) rename lib/{ => converters}/utf16le.h (100%) rename lib/{ => converters}/utf32.h (100%) rename lib/{ => converters}/utf32be.h (100%) rename lib/{ => converters}/utf32le.h (100%) rename lib/{ => converters}/utf7.h (100%) rename lib/{ => converters}/utf8.h (100%) rename lib/{ => converters}/vietcomb.h (100%) rename lib/{ => converters}/viscii.h (100%) diff --git a/lib/converters.h b/lib/converters.h index 81c8e7ae..a0bfb325 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -111,235 +111,244 @@ struct conv_struct { * Include all the converters. */ -#include "ascii.h" +#pragma region ASCII +#include "converters/ascii.h" +#pragma endregion -/* General multi-byte encodings */ -#include "utf8.h" -#include "ucs2.h" -#include "ucs2be.h" -#include "ucs2le.h" -#include "ucs4.h" -#include "ucs4be.h" -#include "ucs4le.h" -#include "utf16.h" -#include "utf16be.h" -#include "utf16le.h" -#include "utf32.h" -#include "utf32be.h" -#include "utf32le.h" -#include "utf7.h" -#include "ucs2internal.h" -#include "ucs2swapped.h" -#include "ucs4internal.h" -#include "ucs4swapped.h" -#include "c99.h" -#include "java.h" +#pragma region General multi-byte encodings +#include "converters/utf8.h" +#include "converters/ucs2.h" +#include "converters/ucs2be.h" +#include "converters/ucs2le.h" +#include "converters/ucs4.h" +#include "converters/ucs4be.h" +#include "converters/ucs4le.h" +#include "converters/utf16.h" +#include "converters/utf16be.h" +#include "converters/utf16le.h" +#include "converters/utf32.h" +#include "converters/utf32be.h" +#include "converters/utf32le.h" +#include "converters/utf7.h" +#include "converters/ucs2internal.h" +#include "converters/ucs2swapped.h" +#include "converters/ucs4internal.h" +#include "converters/ucs4swapped.h" +#include "converters/c99.h" +#include "converters/java.h" +#pragma endregion -/* 8-bit encodings */ -#include "iso8859_1.h" -#include "iso8859_2.h" -#include "iso8859_3.h" -#include "iso8859_4.h" -#include "iso8859_5.h" -#include "iso8859_6.h" -#include "iso8859_7.h" -#include "iso8859_8.h" -#include "iso8859_9.h" -#include "iso8859_10.h" -#include "iso8859_11.h" -#include "iso8859_13.h" -#include "iso8859_14.h" -#include "iso8859_15.h" -#include "iso8859_16.h" -#include "koi8_r.h" -#include "koi8_u.h" -#include "koi8_ru.h" -#include "cp1250.h" -#include "cp1251.h" -#include "cp1252.h" -#include "cp1253.h" -#include "cp1254.h" -#include "cp1255.h" -#include "cp1256.h" -#include "cp1257.h" -#include "cp1258.h" -#include "cp850.h" -#include "cp862.h" -#include "cp866.h" -#include "cp1131.h" -#include "mac_roman.h" -#include "mac_centraleurope.h" -#include "mac_iceland.h" -#include "mac_croatian.h" -#include "mac_romania.h" -#include "mac_cyrillic.h" -#include "mac_ukraine.h" -#include "mac_greek.h" -#include "mac_turkish.h" -#include "mac_hebrew.h" -#include "mac_arabic.h" -#include "mac_thai.h" -#include "hp_roman8.h" -#include "nextstep.h" -#include "armscii_8.h" -#include "georgian_academy.h" -#include "georgian_ps.h" -#include "koi8_t.h" -#include "pt154.h" -#include "rk1048.h" -#include "mulelao.h" -#include "cp1133.h" -#include "tis620.h" -#include "cp874.h" -#include "viscii.h" -#include "tcvn.h" - -/* CJK character sets [CCS = coded character set] [CJKV.INF chapter 3] */ +#pragma region 8-bit encodings +#include "converters/iso8859_1.h" +#include "converters/iso8859_2.h" +#include "converters/iso8859_3.h" +#include "converters/iso8859_4.h" +#include "converters/iso8859_5.h" +#include "converters/iso8859_6.h" +#include "converters/iso8859_7.h" +#include "converters/iso8859_8.h" +#include "converters/iso8859_9.h" +#include "converters/iso8859_10.h" +#include "converters/iso8859_11.h" +#include "converters/iso8859_13.h" +#include "converters/iso8859_14.h" +#include "converters/iso8859_15.h" +#include "converters/iso8859_16.h" +#include "converters/koi8_r.h" +#include "converters/koi8_u.h" +#include "converters/koi8_ru.h" +#include "converters/cp1250.h" +#include "converters/cp1251.h" +#include "converters/cp1252.h" +#include "converters/cp1253.h" +#include "converters/cp1254.h" +#include "converters/cp1255.h" +#include "converters/cp1256.h" +#include "converters/cp1257.h" +#include "converters/cp1258.h" +#include "converters/cp850.h" +#include "converters/cp862.h" +#include "converters/cp866.h" +#include "converters/cp1131.h" +#include "converters/mac_roman.h" +#include "converters/mac_centraleurope.h" +#include "converters/mac_iceland.h" +#include "converters/mac_croatian.h" +#include "converters/mac_romania.h" +#include "converters/mac_cyrillic.h" +#include "converters/mac_ukraine.h" +#include "converters/mac_greek.h" +#include "converters/mac_turkish.h" +#include "converters/mac_hebrew.h" +#include "converters/mac_arabic.h" +#include "converters/mac_thai.h" +#include "converters/hp_roman8.h" +#include "converters/nextstep.h" +#include "converters/armscii_8.h" +#include "converters/georgian_academy.h" +#include "converters/georgian_ps.h" +#include "converters/koi8_t.h" +#include "converters/pt154.h" +#include "converters/rk1048.h" +#include "converters/mulelao.h" +#include "converters/cp1133.h" +#include "converters/tis620.h" +#include "converters/cp874.h" +#include "converters/viscii.h" +#include "converters/tcvn.h" +#pragma endregion +/* [CCS = coded character set] [CJKV.INF chapter 3] */ typedef struct { - unsigned short indx; /* index into big table */ - unsigned short used; /* bitmask of used entries */ + unsigned short indx; /* Index into big table. */ + unsigned short used; /* Bitmask of used entries. */ } Summary16; -#include "iso646_jp.h" -#include "jisx0201.h" -#include "jisx0208.h" -#include "jisx0212.h" - -#include "iso646_cn.h" -#include "gb2312.h" -#include "isoir165.h" -/*#include "gb12345.h"*/ -#include "gbk.h" -#include "cns11643.h" -#include "big5.h" - -#include "ksc5601.h" -#include "johab_hangul.h" - -/* CJK encodings [CES = character encoding scheme] [CJKV.INF chapter 4] */ +#pragma region CJK character sets +#include "converters/iso646_jp.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "converters/jisx0212.h" -#include "euc_jp.h" -#include "sjis.h" -#include "cp932.h" -#include "iso2022_jp.h" -#include "iso2022_jp1.h" -#include "iso2022_jp2.h" -#include "iso2022_jpms.h" +#include "converters/iso646_cn.h" +#include "converters/gb2312.h" +#include "converters/isoir165.h" +/* #include "converters/gb12345.h" */ +#include "converters/gbk.h" +#include "converters/cns11643.h" +#include "converters/big5.h" -#include "euc_cn.h" -#include "ces_gbk.h" -#include "cp936.h" -#include "gb18030_2005.h" -#include "gb18030_2022.h" -#include "iso2022_cn.h" -#include "iso2022_cnext.h" -#include "hz.h" -#include "euc_tw.h" -#include "ces_big5.h" -#include "cp950.h" -#include "big5hkscs1999.h" -#include "big5hkscs2001.h" -#include "big5hkscs2004.h" -#include "big5hkscs2008.h" +#include "converters/ksc5601.h" +#include "converters/johab_hangul.h" +#pragma endregion -#include "euc_kr.h" -#include "cp949.h" -#include "johab.h" -#include "iso2022_kr.h" +/* [CES = character encoding scheme] [CJKV.INF chapter 4] */ +#pragma region CJK encodings +#include "converters/euc_jp.h" +#include "converters/sjis.h" +#include "converters/cp932.h" +#include "converters/iso2022_jp.h" +#include "converters/iso2022_jp1.h" +#include "converters/iso2022_jp2.h" +#include "converters/iso2022_jpms.h" -#include "dec_kanji.h" -#include "dec_hanyu.h" +#include "converters/euc_cn.h" +#include "converters/ces_gbk.h" +#include "converters/cp936.h" +#include "converters/gb18030_2005.h" +#include "converters/gb18030_2022.h" +#include "converters/iso2022_cn.h" +#include "converters/iso2022_cnext.h" +#include "converters/hz.h" +#include "converters/euc_tw.h" +#include "converters/ces_big5.h" +#include "converters/cp950.h" +#include "converters/big5hkscs1999.h" +#include "converters/big5hkscs2001.h" +#include "converters/big5hkscs2004.h" +#include "converters/big5hkscs2008.h" -/* Encodings used by system dependent locales. */ +#include "converters/euc_kr.h" +#include "converters/cp949.h" +#include "converters/johab.h" +#include "converters/iso2022_kr.h" -#include "cp856.h" -#include "cp922.h" -#include "cp943.h" -#include "cp1046.h" -#include "cp1124.h" -#include "cp1129.h" -#include "cp1161.h" -#include "cp1162.h" -#include "cp1163.h" +#include "converters/dec_kanji.h" +#include "converters/dec_hanyu.h" +#pragma endregion -#include "cp437.h" -#include "cp737.h" -#include "cp775.h" -#include "cp852.h" -#include "cp853.h" -#include "cp855.h" -#include "cp857.h" -#include "cp858.h" -#include "cp860.h" -#include "cp861.h" -#include "cp863.h" -#include "cp864.h" -#include "cp865.h" -#include "cp869.h" -#include "cp1125.h" +#pragma region Encodings used by system dependent locales +#include "converters/cp856.h" +#include "converters/cp922.h" +#include "converters/cp943.h" +#include "converters/cp1046.h" +#include "converters/cp1124.h" +#include "converters/cp1129.h" +#include "converters/cp1161.h" +#include "converters/cp1162.h" +#include "converters/cp1163.h" +#include "converters/cp437.h" +#include "converters/cp737.h" +#include "converters/cp775.h" +#include "converters/cp852.h" +#include "converters/cp853.h" +#include "converters/cp855.h" +#include "converters/cp857.h" +#include "converters/cp858.h" +#include "converters/cp860.h" +#include "converters/cp861.h" +#include "converters/cp863.h" +#include "converters/cp864.h" +#include "converters/cp865.h" +#include "converters/cp869.h" +#include "converters/cp1125.h" +#pragma endregion #define DEDUPLICATE_TABLES 1 -#include "ebcdic037.h" -#include "ebcdic273.h" -#include "ebcdic277.h" -#include "ebcdic278.h" -#include "ebcdic280.h" -#include "ebcdic282.h" -#include "ebcdic284.h" -#include "ebcdic285.h" -#include "ebcdic297.h" -#include "ebcdic423.h" -#include "ebcdic424.h" -#include "ebcdic425.h" -#include "ebcdic500.h" -#include "ebcdic838.h" -#include "ebcdic870.h" -#include "ebcdic871.h" -#include "ebcdic875.h" -#include "ebcdic880.h" -#include "ebcdic905.h" -#include "ebcdic924.h" -#include "ebcdic1025.h" -#include "ebcdic1026.h" -#include "ebcdic1047.h" -#include "ebcdic1097.h" -#include "ebcdic1112.h" -#include "ebcdic1122.h" -#include "ebcdic1123.h" -#include "ebcdic1130.h" -#include "ebcdic1132.h" -#include "ebcdic1137.h" -#include "ebcdic1140.h" -#include "ebcdic1141.h" -#include "ebcdic1142.h" -#include "ebcdic1143.h" -#include "ebcdic1144.h" -#include "ebcdic1145.h" -#include "ebcdic1146.h" -#include "ebcdic1147.h" -#include "ebcdic1148.h" -#include "ebcdic1149.h" -#include "ebcdic1153.h" -#include "ebcdic1154.h" -#include "ebcdic1155.h" -#include "ebcdic1156.h" -#include "ebcdic1157.h" -#include "ebcdic1158.h" -#include "ebcdic1160.h" -#include "ebcdic1164.h" -#include "ebcdic1165.h" -#include "ebcdic1166.h" -#include "ebcdic4971.h" -#include "ebcdic12712.h" -#include "ebcdic16804.h" +#pragma region AIX locales +#include "converters/ebcdic037.h" +#include "converters/ebcdic273.h" +#include "converters/ebcdic277.h" +#include "converters/ebcdic278.h" +#include "converters/ebcdic280.h" +#include "converters/ebcdic282.h" +#include "converters/ebcdic284.h" +#include "converters/ebcdic285.h" +#include "converters/ebcdic297.h" +#include "converters/ebcdic423.h" +#include "converters/ebcdic424.h" +#include "converters/ebcdic425.h" +#include "converters/ebcdic500.h" +#include "converters/ebcdic838.h" +#include "converters/ebcdic870.h" +#include "converters/ebcdic871.h" +#include "converters/ebcdic875.h" +#include "converters/ebcdic880.h" +#include "converters/ebcdic905.h" +#include "converters/ebcdic924.h" +#include "converters/ebcdic1025.h" +#include "converters/ebcdic1026.h" +#include "converters/ebcdic1047.h" +#include "converters/ebcdic1097.h" +#include "converters/ebcdic1112.h" +#include "converters/ebcdic1122.h" +#include "converters/ebcdic1123.h" +#include "converters/ebcdic1130.h" +#include "converters/ebcdic1132.h" +#include "converters/ebcdic1137.h" +#include "converters/ebcdic1140.h" +#include "converters/ebcdic1141.h" +#include "converters/ebcdic1142.h" +#include "converters/ebcdic1143.h" +#include "converters/ebcdic1144.h" +#include "converters/ebcdic1145.h" +#include "converters/ebcdic1146.h" +#include "converters/ebcdic1147.h" +#include "converters/ebcdic1148.h" +#include "converters/ebcdic1149.h" +#include "converters/ebcdic1153.h" +#include "converters/ebcdic1154.h" +#include "converters/ebcdic1155.h" +#include "converters/ebcdic1156.h" +#include "converters/ebcdic1157.h" +#include "converters/ebcdic1158.h" +#include "converters/ebcdic1160.h" +#include "converters/ebcdic1164.h" +#include "converters/ebcdic1165.h" +#include "converters/ebcdic1166.h" +#include "converters/ebcdic4971.h" +#include "converters/ebcdic12712.h" +#include "converters/ebcdic16804.h" +#pragma endregion -#include "euc_jisx0213.h" -#include "shift_jisx0213.h" -#include "iso2022_jp3.h" -#include "big5_2003.h" -#include "tds565.h" -#include "atarist.h" -#include "riscos1.h" +#pragma region Extra encodings +#include "converters/euc_jisx0213.h" +#include "converters/shift_jisx0213.h" +#include "converters/iso2022_jp3.h" +#include "converters/big5_2003.h" +#include "converters/tds565.h" +#include "converters/atarist.h" +#include "converters/riscos1.h" +#pragma endregion diff --git a/lib/armscii_8.h b/lib/converters/armscii_8.h similarity index 100% rename from lib/armscii_8.h rename to lib/converters/armscii_8.h diff --git a/lib/ascii.h b/lib/converters/ascii.h similarity index 100% rename from lib/ascii.h rename to lib/converters/ascii.h diff --git a/lib/atarist.h b/lib/converters/atarist.h similarity index 100% rename from lib/atarist.h rename to lib/converters/atarist.h diff --git a/lib/big5.h b/lib/converters/big5.h similarity index 100% rename from lib/big5.h rename to lib/converters/big5.h diff --git a/lib/big5_2003.h b/lib/converters/big5_2003.h similarity index 100% rename from lib/big5_2003.h rename to lib/converters/big5_2003.h diff --git a/lib/big5hkscs1999.h b/lib/converters/big5hkscs1999.h similarity index 100% rename from lib/big5hkscs1999.h rename to lib/converters/big5hkscs1999.h diff --git a/lib/big5hkscs2001.h b/lib/converters/big5hkscs2001.h similarity index 100% rename from lib/big5hkscs2001.h rename to lib/converters/big5hkscs2001.h diff --git a/lib/big5hkscs2004.h b/lib/converters/big5hkscs2004.h similarity index 100% rename from lib/big5hkscs2004.h rename to lib/converters/big5hkscs2004.h diff --git a/lib/big5hkscs2008.h b/lib/converters/big5hkscs2008.h similarity index 100% rename from lib/big5hkscs2008.h rename to lib/converters/big5hkscs2008.h diff --git a/lib/c99.h b/lib/converters/c99.h similarity index 100% rename from lib/c99.h rename to lib/converters/c99.h diff --git a/lib/ces_big5.h b/lib/converters/ces_big5.h similarity index 100% rename from lib/ces_big5.h rename to lib/converters/ces_big5.h diff --git a/lib/ces_gbk.h b/lib/converters/ces_gbk.h similarity index 100% rename from lib/ces_gbk.h rename to lib/converters/ces_gbk.h diff --git a/lib/cjk_variants.h b/lib/converters/cjk_variants.h similarity index 100% rename from lib/cjk_variants.h rename to lib/converters/cjk_variants.h diff --git a/lib/cns11643.h b/lib/converters/cns11643.h similarity index 100% rename from lib/cns11643.h rename to lib/converters/cns11643.h diff --git a/lib/cns11643_1.h b/lib/converters/cns11643_1.h similarity index 100% rename from lib/cns11643_1.h rename to lib/converters/cns11643_1.h diff --git a/lib/cns11643_15.h b/lib/converters/cns11643_15.h similarity index 100% rename from lib/cns11643_15.h rename to lib/converters/cns11643_15.h diff --git a/lib/cns11643_2.h b/lib/converters/cns11643_2.h similarity index 100% rename from lib/cns11643_2.h rename to lib/converters/cns11643_2.h diff --git a/lib/cns11643_3.h b/lib/converters/cns11643_3.h similarity index 100% rename from lib/cns11643_3.h rename to lib/converters/cns11643_3.h diff --git a/lib/cns11643_4.h b/lib/converters/cns11643_4.h similarity index 100% rename from lib/cns11643_4.h rename to lib/converters/cns11643_4.h diff --git a/lib/cns11643_4a.h b/lib/converters/cns11643_4a.h similarity index 100% rename from lib/cns11643_4a.h rename to lib/converters/cns11643_4a.h diff --git a/lib/cns11643_4b.h b/lib/converters/cns11643_4b.h similarity index 100% rename from lib/cns11643_4b.h rename to lib/converters/cns11643_4b.h diff --git a/lib/cns11643_5.h b/lib/converters/cns11643_5.h similarity index 100% rename from lib/cns11643_5.h rename to lib/converters/cns11643_5.h diff --git a/lib/cns11643_6.h b/lib/converters/cns11643_6.h similarity index 100% rename from lib/cns11643_6.h rename to lib/converters/cns11643_6.h diff --git a/lib/cns11643_7.h b/lib/converters/cns11643_7.h similarity index 100% rename from lib/cns11643_7.h rename to lib/converters/cns11643_7.h diff --git a/lib/cns11643_inv.h b/lib/converters/cns11643_inv.h similarity index 100% rename from lib/cns11643_inv.h rename to lib/converters/cns11643_inv.h diff --git a/lib/cp1046.h b/lib/converters/cp1046.h similarity index 100% rename from lib/cp1046.h rename to lib/converters/cp1046.h diff --git a/lib/cp1124.h b/lib/converters/cp1124.h similarity index 100% rename from lib/cp1124.h rename to lib/converters/cp1124.h diff --git a/lib/cp1125.h b/lib/converters/cp1125.h similarity index 100% rename from lib/cp1125.h rename to lib/converters/cp1125.h diff --git a/lib/cp1129.h b/lib/converters/cp1129.h similarity index 100% rename from lib/cp1129.h rename to lib/converters/cp1129.h diff --git a/lib/cp1131.h b/lib/converters/cp1131.h similarity index 100% rename from lib/cp1131.h rename to lib/converters/cp1131.h diff --git a/lib/cp1133.h b/lib/converters/cp1133.h similarity index 100% rename from lib/cp1133.h rename to lib/converters/cp1133.h diff --git a/lib/cp1161.h b/lib/converters/cp1161.h similarity index 100% rename from lib/cp1161.h rename to lib/converters/cp1161.h diff --git a/lib/cp1162.h b/lib/converters/cp1162.h similarity index 100% rename from lib/cp1162.h rename to lib/converters/cp1162.h diff --git a/lib/cp1163.h b/lib/converters/cp1163.h similarity index 100% rename from lib/cp1163.h rename to lib/converters/cp1163.h diff --git a/lib/cp1250.h b/lib/converters/cp1250.h similarity index 100% rename from lib/cp1250.h rename to lib/converters/cp1250.h diff --git a/lib/cp1251.h b/lib/converters/cp1251.h similarity index 100% rename from lib/cp1251.h rename to lib/converters/cp1251.h diff --git a/lib/cp1252.h b/lib/converters/cp1252.h similarity index 100% rename from lib/cp1252.h rename to lib/converters/cp1252.h diff --git a/lib/cp1253.h b/lib/converters/cp1253.h similarity index 100% rename from lib/cp1253.h rename to lib/converters/cp1253.h diff --git a/lib/cp1254.h b/lib/converters/cp1254.h similarity index 100% rename from lib/cp1254.h rename to lib/converters/cp1254.h diff --git a/lib/cp1255.h b/lib/converters/cp1255.h similarity index 100% rename from lib/cp1255.h rename to lib/converters/cp1255.h diff --git a/lib/cp1256.h b/lib/converters/cp1256.h similarity index 100% rename from lib/cp1256.h rename to lib/converters/cp1256.h diff --git a/lib/cp1257.h b/lib/converters/cp1257.h similarity index 100% rename from lib/cp1257.h rename to lib/converters/cp1257.h diff --git a/lib/cp1258.h b/lib/converters/cp1258.h similarity index 100% rename from lib/cp1258.h rename to lib/converters/cp1258.h diff --git a/lib/cp437.h b/lib/converters/cp437.h similarity index 100% rename from lib/cp437.h rename to lib/converters/cp437.h diff --git a/lib/cp50221_0208_ext.h b/lib/converters/cp50221_0208_ext.h similarity index 100% rename from lib/cp50221_0208_ext.h rename to lib/converters/cp50221_0208_ext.h diff --git a/lib/cp50221_0212_ext.h b/lib/converters/cp50221_0212_ext.h similarity index 100% rename from lib/cp50221_0212_ext.h rename to lib/converters/cp50221_0212_ext.h diff --git a/lib/cp737.h b/lib/converters/cp737.h similarity index 100% rename from lib/cp737.h rename to lib/converters/cp737.h diff --git a/lib/cp775.h b/lib/converters/cp775.h similarity index 100% rename from lib/cp775.h rename to lib/converters/cp775.h diff --git a/lib/cp850.h b/lib/converters/cp850.h similarity index 100% rename from lib/cp850.h rename to lib/converters/cp850.h diff --git a/lib/cp852.h b/lib/converters/cp852.h similarity index 100% rename from lib/cp852.h rename to lib/converters/cp852.h diff --git a/lib/cp853.h b/lib/converters/cp853.h similarity index 100% rename from lib/cp853.h rename to lib/converters/cp853.h diff --git a/lib/cp855.h b/lib/converters/cp855.h similarity index 100% rename from lib/cp855.h rename to lib/converters/cp855.h diff --git a/lib/cp856.h b/lib/converters/cp856.h similarity index 100% rename from lib/cp856.h rename to lib/converters/cp856.h diff --git a/lib/cp857.h b/lib/converters/cp857.h similarity index 100% rename from lib/cp857.h rename to lib/converters/cp857.h diff --git a/lib/cp858.h b/lib/converters/cp858.h similarity index 100% rename from lib/cp858.h rename to lib/converters/cp858.h diff --git a/lib/cp860.h b/lib/converters/cp860.h similarity index 100% rename from lib/cp860.h rename to lib/converters/cp860.h diff --git a/lib/cp861.h b/lib/converters/cp861.h similarity index 100% rename from lib/cp861.h rename to lib/converters/cp861.h diff --git a/lib/cp862.h b/lib/converters/cp862.h similarity index 100% rename from lib/cp862.h rename to lib/converters/cp862.h diff --git a/lib/cp863.h b/lib/converters/cp863.h similarity index 100% rename from lib/cp863.h rename to lib/converters/cp863.h diff --git a/lib/cp864.h b/lib/converters/cp864.h similarity index 100% rename from lib/cp864.h rename to lib/converters/cp864.h diff --git a/lib/cp865.h b/lib/converters/cp865.h similarity index 100% rename from lib/cp865.h rename to lib/converters/cp865.h diff --git a/lib/cp866.h b/lib/converters/cp866.h similarity index 100% rename from lib/cp866.h rename to lib/converters/cp866.h diff --git a/lib/cp869.h b/lib/converters/cp869.h similarity index 100% rename from lib/cp869.h rename to lib/converters/cp869.h diff --git a/lib/cp874.h b/lib/converters/cp874.h similarity index 100% rename from lib/cp874.h rename to lib/converters/cp874.h diff --git a/lib/cp922.h b/lib/converters/cp922.h similarity index 100% rename from lib/cp922.h rename to lib/converters/cp922.h diff --git a/lib/cp932.h b/lib/converters/cp932.h similarity index 100% rename from lib/cp932.h rename to lib/converters/cp932.h diff --git a/lib/cp932ext.h b/lib/converters/cp932ext.h similarity index 100% rename from lib/cp932ext.h rename to lib/converters/cp932ext.h diff --git a/lib/cp936.h b/lib/converters/cp936.h similarity index 100% rename from lib/cp936.h rename to lib/converters/cp936.h diff --git a/lib/cp936ext.h b/lib/converters/cp936ext.h similarity index 100% rename from lib/cp936ext.h rename to lib/converters/cp936ext.h diff --git a/lib/cp943.h b/lib/converters/cp943.h similarity index 100% rename from lib/cp943.h rename to lib/converters/cp943.h diff --git a/lib/cp949.h b/lib/converters/cp949.h similarity index 100% rename from lib/cp949.h rename to lib/converters/cp949.h diff --git a/lib/cp950.h b/lib/converters/cp950.h similarity index 100% rename from lib/cp950.h rename to lib/converters/cp950.h diff --git a/lib/cp950ext.h b/lib/converters/cp950ext.h similarity index 100% rename from lib/cp950ext.h rename to lib/converters/cp950ext.h diff --git a/lib/dec_hanyu.h b/lib/converters/dec_hanyu.h similarity index 100% rename from lib/dec_hanyu.h rename to lib/converters/dec_hanyu.h diff --git a/lib/dec_kanji.h b/lib/converters/dec_kanji.h similarity index 100% rename from lib/dec_kanji.h rename to lib/converters/dec_kanji.h diff --git a/lib/ebcdic037.h b/lib/converters/ebcdic037.h similarity index 100% rename from lib/ebcdic037.h rename to lib/converters/ebcdic037.h diff --git a/lib/ebcdic1025.h b/lib/converters/ebcdic1025.h similarity index 100% rename from lib/ebcdic1025.h rename to lib/converters/ebcdic1025.h diff --git a/lib/ebcdic1026.h b/lib/converters/ebcdic1026.h similarity index 100% rename from lib/ebcdic1026.h rename to lib/converters/ebcdic1026.h diff --git a/lib/ebcdic1047.h b/lib/converters/ebcdic1047.h similarity index 100% rename from lib/ebcdic1047.h rename to lib/converters/ebcdic1047.h diff --git a/lib/ebcdic1097.h b/lib/converters/ebcdic1097.h similarity index 100% rename from lib/ebcdic1097.h rename to lib/converters/ebcdic1097.h diff --git a/lib/ebcdic1112.h b/lib/converters/ebcdic1112.h similarity index 100% rename from lib/ebcdic1112.h rename to lib/converters/ebcdic1112.h diff --git a/lib/ebcdic1122.h b/lib/converters/ebcdic1122.h similarity index 100% rename from lib/ebcdic1122.h rename to lib/converters/ebcdic1122.h diff --git a/lib/ebcdic1123.h b/lib/converters/ebcdic1123.h similarity index 100% rename from lib/ebcdic1123.h rename to lib/converters/ebcdic1123.h diff --git a/lib/ebcdic1130.h b/lib/converters/ebcdic1130.h similarity index 100% rename from lib/ebcdic1130.h rename to lib/converters/ebcdic1130.h diff --git a/lib/ebcdic1132.h b/lib/converters/ebcdic1132.h similarity index 100% rename from lib/ebcdic1132.h rename to lib/converters/ebcdic1132.h diff --git a/lib/ebcdic1137.h b/lib/converters/ebcdic1137.h similarity index 100% rename from lib/ebcdic1137.h rename to lib/converters/ebcdic1137.h diff --git a/lib/ebcdic1140.h b/lib/converters/ebcdic1140.h similarity index 100% rename from lib/ebcdic1140.h rename to lib/converters/ebcdic1140.h diff --git a/lib/ebcdic1141.h b/lib/converters/ebcdic1141.h similarity index 100% rename from lib/ebcdic1141.h rename to lib/converters/ebcdic1141.h diff --git a/lib/ebcdic1142.h b/lib/converters/ebcdic1142.h similarity index 100% rename from lib/ebcdic1142.h rename to lib/converters/ebcdic1142.h diff --git a/lib/ebcdic1143.h b/lib/converters/ebcdic1143.h similarity index 100% rename from lib/ebcdic1143.h rename to lib/converters/ebcdic1143.h diff --git a/lib/ebcdic1144.h b/lib/converters/ebcdic1144.h similarity index 100% rename from lib/ebcdic1144.h rename to lib/converters/ebcdic1144.h diff --git a/lib/ebcdic1145.h b/lib/converters/ebcdic1145.h similarity index 100% rename from lib/ebcdic1145.h rename to lib/converters/ebcdic1145.h diff --git a/lib/ebcdic1146.h b/lib/converters/ebcdic1146.h similarity index 100% rename from lib/ebcdic1146.h rename to lib/converters/ebcdic1146.h diff --git a/lib/ebcdic1147.h b/lib/converters/ebcdic1147.h similarity index 100% rename from lib/ebcdic1147.h rename to lib/converters/ebcdic1147.h diff --git a/lib/ebcdic1148.h b/lib/converters/ebcdic1148.h similarity index 100% rename from lib/ebcdic1148.h rename to lib/converters/ebcdic1148.h diff --git a/lib/ebcdic1149.h b/lib/converters/ebcdic1149.h similarity index 100% rename from lib/ebcdic1149.h rename to lib/converters/ebcdic1149.h diff --git a/lib/ebcdic1153.h b/lib/converters/ebcdic1153.h similarity index 100% rename from lib/ebcdic1153.h rename to lib/converters/ebcdic1153.h diff --git a/lib/ebcdic1154.h b/lib/converters/ebcdic1154.h similarity index 100% rename from lib/ebcdic1154.h rename to lib/converters/ebcdic1154.h diff --git a/lib/ebcdic1155.h b/lib/converters/ebcdic1155.h similarity index 100% rename from lib/ebcdic1155.h rename to lib/converters/ebcdic1155.h diff --git a/lib/ebcdic1156.h b/lib/converters/ebcdic1156.h similarity index 100% rename from lib/ebcdic1156.h rename to lib/converters/ebcdic1156.h diff --git a/lib/ebcdic1157.h b/lib/converters/ebcdic1157.h similarity index 100% rename from lib/ebcdic1157.h rename to lib/converters/ebcdic1157.h diff --git a/lib/ebcdic1158.h b/lib/converters/ebcdic1158.h similarity index 100% rename from lib/ebcdic1158.h rename to lib/converters/ebcdic1158.h diff --git a/lib/ebcdic1160.h b/lib/converters/ebcdic1160.h similarity index 100% rename from lib/ebcdic1160.h rename to lib/converters/ebcdic1160.h diff --git a/lib/ebcdic1164.h b/lib/converters/ebcdic1164.h similarity index 100% rename from lib/ebcdic1164.h rename to lib/converters/ebcdic1164.h diff --git a/lib/ebcdic1165.h b/lib/converters/ebcdic1165.h similarity index 100% rename from lib/ebcdic1165.h rename to lib/converters/ebcdic1165.h diff --git a/lib/ebcdic1166.h b/lib/converters/ebcdic1166.h similarity index 100% rename from lib/ebcdic1166.h rename to lib/converters/ebcdic1166.h diff --git a/lib/ebcdic12712.h b/lib/converters/ebcdic12712.h similarity index 100% rename from lib/ebcdic12712.h rename to lib/converters/ebcdic12712.h diff --git a/lib/ebcdic16804.h b/lib/converters/ebcdic16804.h similarity index 100% rename from lib/ebcdic16804.h rename to lib/converters/ebcdic16804.h diff --git a/lib/ebcdic273.h b/lib/converters/ebcdic273.h similarity index 100% rename from lib/ebcdic273.h rename to lib/converters/ebcdic273.h diff --git a/lib/ebcdic277.h b/lib/converters/ebcdic277.h similarity index 100% rename from lib/ebcdic277.h rename to lib/converters/ebcdic277.h diff --git a/lib/ebcdic278.h b/lib/converters/ebcdic278.h similarity index 100% rename from lib/ebcdic278.h rename to lib/converters/ebcdic278.h diff --git a/lib/ebcdic280.h b/lib/converters/ebcdic280.h similarity index 100% rename from lib/ebcdic280.h rename to lib/converters/ebcdic280.h diff --git a/lib/ebcdic282.h b/lib/converters/ebcdic282.h similarity index 100% rename from lib/ebcdic282.h rename to lib/converters/ebcdic282.h diff --git a/lib/ebcdic284.h b/lib/converters/ebcdic284.h similarity index 100% rename from lib/ebcdic284.h rename to lib/converters/ebcdic284.h diff --git a/lib/ebcdic285.h b/lib/converters/ebcdic285.h similarity index 100% rename from lib/ebcdic285.h rename to lib/converters/ebcdic285.h diff --git a/lib/ebcdic297.h b/lib/converters/ebcdic297.h similarity index 100% rename from lib/ebcdic297.h rename to lib/converters/ebcdic297.h diff --git a/lib/ebcdic423.h b/lib/converters/ebcdic423.h similarity index 100% rename from lib/ebcdic423.h rename to lib/converters/ebcdic423.h diff --git a/lib/ebcdic424.h b/lib/converters/ebcdic424.h similarity index 100% rename from lib/ebcdic424.h rename to lib/converters/ebcdic424.h diff --git a/lib/ebcdic425.h b/lib/converters/ebcdic425.h similarity index 100% rename from lib/ebcdic425.h rename to lib/converters/ebcdic425.h diff --git a/lib/ebcdic4971.h b/lib/converters/ebcdic4971.h similarity index 100% rename from lib/ebcdic4971.h rename to lib/converters/ebcdic4971.h diff --git a/lib/ebcdic500.h b/lib/converters/ebcdic500.h similarity index 100% rename from lib/ebcdic500.h rename to lib/converters/ebcdic500.h diff --git a/lib/ebcdic838.h b/lib/converters/ebcdic838.h similarity index 100% rename from lib/ebcdic838.h rename to lib/converters/ebcdic838.h diff --git a/lib/ebcdic870.h b/lib/converters/ebcdic870.h similarity index 100% rename from lib/ebcdic870.h rename to lib/converters/ebcdic870.h diff --git a/lib/ebcdic871.h b/lib/converters/ebcdic871.h similarity index 100% rename from lib/ebcdic871.h rename to lib/converters/ebcdic871.h diff --git a/lib/ebcdic875.h b/lib/converters/ebcdic875.h similarity index 100% rename from lib/ebcdic875.h rename to lib/converters/ebcdic875.h diff --git a/lib/ebcdic880.h b/lib/converters/ebcdic880.h similarity index 100% rename from lib/ebcdic880.h rename to lib/converters/ebcdic880.h diff --git a/lib/ebcdic905.h b/lib/converters/ebcdic905.h similarity index 100% rename from lib/ebcdic905.h rename to lib/converters/ebcdic905.h diff --git a/lib/ebcdic924.h b/lib/converters/ebcdic924.h similarity index 100% rename from lib/ebcdic924.h rename to lib/converters/ebcdic924.h diff --git a/lib/euc_cn.h b/lib/converters/euc_cn.h similarity index 100% rename from lib/euc_cn.h rename to lib/converters/euc_cn.h diff --git a/lib/euc_jisx0213.h b/lib/converters/euc_jisx0213.h similarity index 100% rename from lib/euc_jisx0213.h rename to lib/converters/euc_jisx0213.h diff --git a/lib/euc_jp.h b/lib/converters/euc_jp.h similarity index 100% rename from lib/euc_jp.h rename to lib/converters/euc_jp.h diff --git a/lib/euc_kr.h b/lib/converters/euc_kr.h similarity index 100% rename from lib/euc_kr.h rename to lib/converters/euc_kr.h diff --git a/lib/euc_tw.h b/lib/converters/euc_tw.h similarity index 100% rename from lib/euc_tw.h rename to lib/converters/euc_tw.h diff --git a/lib/flushwc.h b/lib/converters/flushwc.h similarity index 100% rename from lib/flushwc.h rename to lib/converters/flushwc.h diff --git a/lib/gb12345.h b/lib/converters/gb12345.h similarity index 100% rename from lib/gb12345.h rename to lib/converters/gb12345.h diff --git a/lib/gb12345ext.h b/lib/converters/gb12345ext.h similarity index 100% rename from lib/gb12345ext.h rename to lib/converters/gb12345ext.h diff --git a/lib/gb18030_2005.h b/lib/converters/gb18030_2005.h similarity index 100% rename from lib/gb18030_2005.h rename to lib/converters/gb18030_2005.h diff --git a/lib/gb18030_2022.h b/lib/converters/gb18030_2022.h similarity index 100% rename from lib/gb18030_2022.h rename to lib/converters/gb18030_2022.h diff --git a/lib/gb18030ext.h b/lib/converters/gb18030ext.h similarity index 100% rename from lib/gb18030ext.h rename to lib/converters/gb18030ext.h diff --git a/lib/gb18030uni.h b/lib/converters/gb18030uni.h similarity index 100% rename from lib/gb18030uni.h rename to lib/converters/gb18030uni.h diff --git a/lib/gb2312.h b/lib/converters/gb2312.h similarity index 100% rename from lib/gb2312.h rename to lib/converters/gb2312.h diff --git a/lib/gbk.h b/lib/converters/gbk.h similarity index 100% rename from lib/gbk.h rename to lib/converters/gbk.h diff --git a/lib/gbkext1.h b/lib/converters/gbkext1.h similarity index 100% rename from lib/gbkext1.h rename to lib/converters/gbkext1.h diff --git a/lib/gbkext2.h b/lib/converters/gbkext2.h similarity index 100% rename from lib/gbkext2.h rename to lib/converters/gbkext2.h diff --git a/lib/gbkext_inv.h b/lib/converters/gbkext_inv.h similarity index 100% rename from lib/gbkext_inv.h rename to lib/converters/gbkext_inv.h diff --git a/lib/georgian_academy.h b/lib/converters/georgian_academy.h similarity index 100% rename from lib/georgian_academy.h rename to lib/converters/georgian_academy.h diff --git a/lib/georgian_ps.h b/lib/converters/georgian_ps.h similarity index 100% rename from lib/georgian_ps.h rename to lib/converters/georgian_ps.h diff --git a/lib/hkscs1999.h b/lib/converters/hkscs1999.h similarity index 100% rename from lib/hkscs1999.h rename to lib/converters/hkscs1999.h diff --git a/lib/hkscs2001.h b/lib/converters/hkscs2001.h similarity index 100% rename from lib/hkscs2001.h rename to lib/converters/hkscs2001.h diff --git a/lib/hkscs2004.h b/lib/converters/hkscs2004.h similarity index 100% rename from lib/hkscs2004.h rename to lib/converters/hkscs2004.h diff --git a/lib/hkscs2008.h b/lib/converters/hkscs2008.h similarity index 100% rename from lib/hkscs2008.h rename to lib/converters/hkscs2008.h diff --git a/lib/hp_roman8.h b/lib/converters/hp_roman8.h similarity index 100% rename from lib/hp_roman8.h rename to lib/converters/hp_roman8.h diff --git a/lib/hz.h b/lib/converters/hz.h similarity index 100% rename from lib/hz.h rename to lib/converters/hz.h diff --git a/lib/iso2022_cn.h b/lib/converters/iso2022_cn.h similarity index 100% rename from lib/iso2022_cn.h rename to lib/converters/iso2022_cn.h diff --git a/lib/iso2022_cnext.h b/lib/converters/iso2022_cnext.h similarity index 100% rename from lib/iso2022_cnext.h rename to lib/converters/iso2022_cnext.h diff --git a/lib/iso2022_jp.h b/lib/converters/iso2022_jp.h similarity index 100% rename from lib/iso2022_jp.h rename to lib/converters/iso2022_jp.h diff --git a/lib/iso2022_jp1.h b/lib/converters/iso2022_jp1.h similarity index 100% rename from lib/iso2022_jp1.h rename to lib/converters/iso2022_jp1.h diff --git a/lib/iso2022_jp2.h b/lib/converters/iso2022_jp2.h similarity index 100% rename from lib/iso2022_jp2.h rename to lib/converters/iso2022_jp2.h diff --git a/lib/iso2022_jp3.h b/lib/converters/iso2022_jp3.h similarity index 100% rename from lib/iso2022_jp3.h rename to lib/converters/iso2022_jp3.h diff --git a/lib/iso2022_jpms.h b/lib/converters/iso2022_jpms.h similarity index 100% rename from lib/iso2022_jpms.h rename to lib/converters/iso2022_jpms.h diff --git a/lib/iso2022_kr.h b/lib/converters/iso2022_kr.h similarity index 100% rename from lib/iso2022_kr.h rename to lib/converters/iso2022_kr.h diff --git a/lib/iso646_cn.h b/lib/converters/iso646_cn.h similarity index 100% rename from lib/iso646_cn.h rename to lib/converters/iso646_cn.h diff --git a/lib/iso646_jp.h b/lib/converters/iso646_jp.h similarity index 100% rename from lib/iso646_jp.h rename to lib/converters/iso646_jp.h diff --git a/lib/iso8859_1.h b/lib/converters/iso8859_1.h similarity index 100% rename from lib/iso8859_1.h rename to lib/converters/iso8859_1.h diff --git a/lib/iso8859_10.h b/lib/converters/iso8859_10.h similarity index 100% rename from lib/iso8859_10.h rename to lib/converters/iso8859_10.h diff --git a/lib/iso8859_11.h b/lib/converters/iso8859_11.h similarity index 100% rename from lib/iso8859_11.h rename to lib/converters/iso8859_11.h diff --git a/lib/iso8859_13.h b/lib/converters/iso8859_13.h similarity index 100% rename from lib/iso8859_13.h rename to lib/converters/iso8859_13.h diff --git a/lib/iso8859_14.h b/lib/converters/iso8859_14.h similarity index 100% rename from lib/iso8859_14.h rename to lib/converters/iso8859_14.h diff --git a/lib/iso8859_15.h b/lib/converters/iso8859_15.h similarity index 100% rename from lib/iso8859_15.h rename to lib/converters/iso8859_15.h diff --git a/lib/iso8859_16.h b/lib/converters/iso8859_16.h similarity index 100% rename from lib/iso8859_16.h rename to lib/converters/iso8859_16.h diff --git a/lib/iso8859_2.h b/lib/converters/iso8859_2.h similarity index 100% rename from lib/iso8859_2.h rename to lib/converters/iso8859_2.h diff --git a/lib/iso8859_3.h b/lib/converters/iso8859_3.h similarity index 100% rename from lib/iso8859_3.h rename to lib/converters/iso8859_3.h diff --git a/lib/iso8859_4.h b/lib/converters/iso8859_4.h similarity index 100% rename from lib/iso8859_4.h rename to lib/converters/iso8859_4.h diff --git a/lib/iso8859_5.h b/lib/converters/iso8859_5.h similarity index 100% rename from lib/iso8859_5.h rename to lib/converters/iso8859_5.h diff --git a/lib/iso8859_6.h b/lib/converters/iso8859_6.h similarity index 100% rename from lib/iso8859_6.h rename to lib/converters/iso8859_6.h diff --git a/lib/iso8859_7.h b/lib/converters/iso8859_7.h similarity index 100% rename from lib/iso8859_7.h rename to lib/converters/iso8859_7.h diff --git a/lib/iso8859_8.h b/lib/converters/iso8859_8.h similarity index 100% rename from lib/iso8859_8.h rename to lib/converters/iso8859_8.h diff --git a/lib/iso8859_9.h b/lib/converters/iso8859_9.h similarity index 100% rename from lib/iso8859_9.h rename to lib/converters/iso8859_9.h diff --git a/lib/isoir165.h b/lib/converters/isoir165.h similarity index 100% rename from lib/isoir165.h rename to lib/converters/isoir165.h diff --git a/lib/isoir165ext.h b/lib/converters/isoir165ext.h similarity index 100% rename from lib/isoir165ext.h rename to lib/converters/isoir165ext.h diff --git a/lib/java.h b/lib/converters/java.h similarity index 100% rename from lib/java.h rename to lib/converters/java.h diff --git a/lib/jisx0201.h b/lib/converters/jisx0201.h similarity index 100% rename from lib/jisx0201.h rename to lib/converters/jisx0201.h diff --git a/lib/jisx0208.h b/lib/converters/jisx0208.h similarity index 100% rename from lib/jisx0208.h rename to lib/converters/jisx0208.h diff --git a/lib/jisx0212.h b/lib/converters/jisx0212.h similarity index 100% rename from lib/jisx0212.h rename to lib/converters/jisx0212.h diff --git a/lib/jisx0213.h b/lib/converters/jisx0213.h similarity index 100% rename from lib/jisx0213.h rename to lib/converters/jisx0213.h diff --git a/lib/johab.h b/lib/converters/johab.h similarity index 100% rename from lib/johab.h rename to lib/converters/johab.h diff --git a/lib/johab_hangul.h b/lib/converters/johab_hangul.h similarity index 100% rename from lib/johab_hangul.h rename to lib/converters/johab_hangul.h diff --git a/lib/koi8_r.h b/lib/converters/koi8_r.h similarity index 100% rename from lib/koi8_r.h rename to lib/converters/koi8_r.h diff --git a/lib/koi8_ru.h b/lib/converters/koi8_ru.h similarity index 100% rename from lib/koi8_ru.h rename to lib/converters/koi8_ru.h diff --git a/lib/koi8_t.h b/lib/converters/koi8_t.h similarity index 100% rename from lib/koi8_t.h rename to lib/converters/koi8_t.h diff --git a/lib/koi8_u.h b/lib/converters/koi8_u.h similarity index 100% rename from lib/koi8_u.h rename to lib/converters/koi8_u.h diff --git a/lib/ksc5601.h b/lib/converters/ksc5601.h similarity index 100% rename from lib/ksc5601.h rename to lib/converters/ksc5601.h diff --git a/lib/mac_arabic.h b/lib/converters/mac_arabic.h similarity index 100% rename from lib/mac_arabic.h rename to lib/converters/mac_arabic.h diff --git a/lib/mac_centraleurope.h b/lib/converters/mac_centraleurope.h similarity index 100% rename from lib/mac_centraleurope.h rename to lib/converters/mac_centraleurope.h diff --git a/lib/mac_croatian.h b/lib/converters/mac_croatian.h similarity index 100% rename from lib/mac_croatian.h rename to lib/converters/mac_croatian.h diff --git a/lib/mac_cyrillic.h b/lib/converters/mac_cyrillic.h similarity index 100% rename from lib/mac_cyrillic.h rename to lib/converters/mac_cyrillic.h diff --git a/lib/mac_greek.h b/lib/converters/mac_greek.h similarity index 100% rename from lib/mac_greek.h rename to lib/converters/mac_greek.h diff --git a/lib/mac_hebrew.h b/lib/converters/mac_hebrew.h similarity index 100% rename from lib/mac_hebrew.h rename to lib/converters/mac_hebrew.h diff --git a/lib/mac_iceland.h b/lib/converters/mac_iceland.h similarity index 100% rename from lib/mac_iceland.h rename to lib/converters/mac_iceland.h diff --git a/lib/mac_roman.h b/lib/converters/mac_roman.h similarity index 100% rename from lib/mac_roman.h rename to lib/converters/mac_roman.h diff --git a/lib/mac_romania.h b/lib/converters/mac_romania.h similarity index 100% rename from lib/mac_romania.h rename to lib/converters/mac_romania.h diff --git a/lib/mac_thai.h b/lib/converters/mac_thai.h similarity index 100% rename from lib/mac_thai.h rename to lib/converters/mac_thai.h diff --git a/lib/mac_turkish.h b/lib/converters/mac_turkish.h similarity index 100% rename from lib/mac_turkish.h rename to lib/converters/mac_turkish.h diff --git a/lib/mac_ukraine.h b/lib/converters/mac_ukraine.h similarity index 100% rename from lib/mac_ukraine.h rename to lib/converters/mac_ukraine.h diff --git a/lib/mulelao.h b/lib/converters/mulelao.h similarity index 100% rename from lib/mulelao.h rename to lib/converters/mulelao.h diff --git a/lib/nextstep.h b/lib/converters/nextstep.h similarity index 100% rename from lib/nextstep.h rename to lib/converters/nextstep.h diff --git a/lib/pt154.h b/lib/converters/pt154.h similarity index 100% rename from lib/pt154.h rename to lib/converters/pt154.h diff --git a/lib/riscos1.h b/lib/converters/riscos1.h similarity index 100% rename from lib/riscos1.h rename to lib/converters/riscos1.h diff --git a/lib/rk1048.h b/lib/converters/rk1048.h similarity index 100% rename from lib/rk1048.h rename to lib/converters/rk1048.h diff --git a/lib/shift_jisx0213.h b/lib/converters/shift_jisx0213.h similarity index 100% rename from lib/shift_jisx0213.h rename to lib/converters/shift_jisx0213.h diff --git a/lib/sjis.h b/lib/converters/sjis.h similarity index 100% rename from lib/sjis.h rename to lib/converters/sjis.h diff --git a/lib/tcvn.h b/lib/converters/tcvn.h similarity index 100% rename from lib/tcvn.h rename to lib/converters/tcvn.h diff --git a/lib/tds565.h b/lib/converters/tds565.h similarity index 100% rename from lib/tds565.h rename to lib/converters/tds565.h diff --git a/lib/tis620.h b/lib/converters/tis620.h similarity index 100% rename from lib/tis620.h rename to lib/converters/tis620.h diff --git a/lib/ucs2.h b/lib/converters/ucs2.h similarity index 100% rename from lib/ucs2.h rename to lib/converters/ucs2.h diff --git a/lib/ucs2be.h b/lib/converters/ucs2be.h similarity index 100% rename from lib/ucs2be.h rename to lib/converters/ucs2be.h diff --git a/lib/ucs2internal.h b/lib/converters/ucs2internal.h similarity index 100% rename from lib/ucs2internal.h rename to lib/converters/ucs2internal.h diff --git a/lib/ucs2le.h b/lib/converters/ucs2le.h similarity index 100% rename from lib/ucs2le.h rename to lib/converters/ucs2le.h diff --git a/lib/ucs2swapped.h b/lib/converters/ucs2swapped.h similarity index 100% rename from lib/ucs2swapped.h rename to lib/converters/ucs2swapped.h diff --git a/lib/ucs4.h b/lib/converters/ucs4.h similarity index 100% rename from lib/ucs4.h rename to lib/converters/ucs4.h diff --git a/lib/ucs4be.h b/lib/converters/ucs4be.h similarity index 100% rename from lib/ucs4be.h rename to lib/converters/ucs4be.h diff --git a/lib/ucs4internal.h b/lib/converters/ucs4internal.h similarity index 100% rename from lib/ucs4internal.h rename to lib/converters/ucs4internal.h diff --git a/lib/ucs4le.h b/lib/converters/ucs4le.h similarity index 100% rename from lib/ucs4le.h rename to lib/converters/ucs4le.h diff --git a/lib/ucs4swapped.h b/lib/converters/ucs4swapped.h similarity index 100% rename from lib/ucs4swapped.h rename to lib/converters/ucs4swapped.h diff --git a/lib/uhc_1.h b/lib/converters/uhc_1.h similarity index 100% rename from lib/uhc_1.h rename to lib/converters/uhc_1.h diff --git a/lib/uhc_2.h b/lib/converters/uhc_2.h similarity index 100% rename from lib/uhc_2.h rename to lib/converters/uhc_2.h diff --git a/lib/utf16.h b/lib/converters/utf16.h similarity index 100% rename from lib/utf16.h rename to lib/converters/utf16.h diff --git a/lib/utf16be.h b/lib/converters/utf16be.h similarity index 100% rename from lib/utf16be.h rename to lib/converters/utf16be.h diff --git a/lib/utf16le.h b/lib/converters/utf16le.h similarity index 100% rename from lib/utf16le.h rename to lib/converters/utf16le.h diff --git a/lib/utf32.h b/lib/converters/utf32.h similarity index 100% rename from lib/utf32.h rename to lib/converters/utf32.h diff --git a/lib/utf32be.h b/lib/converters/utf32be.h similarity index 100% rename from lib/utf32be.h rename to lib/converters/utf32be.h diff --git a/lib/utf32le.h b/lib/converters/utf32le.h similarity index 100% rename from lib/utf32le.h rename to lib/converters/utf32le.h diff --git a/lib/utf7.h b/lib/converters/utf7.h similarity index 100% rename from lib/utf7.h rename to lib/converters/utf7.h diff --git a/lib/utf8.h b/lib/converters/utf8.h similarity index 100% rename from lib/utf8.h rename to lib/converters/utf8.h diff --git a/lib/vietcomb.h b/lib/converters/vietcomb.h similarity index 100% rename from lib/vietcomb.h rename to lib/converters/vietcomb.h diff --git a/lib/viscii.h b/lib/converters/viscii.h similarity index 100% rename from lib/viscii.h rename to lib/converters/viscii.h From 3984ac90e0f94b3d001fffc3a662158977a19e47 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Thu, 7 Nov 2024 23:00:44 +0800 Subject: [PATCH 48/77] Optimize the project structure. The compile may be a little slower, but the project structure is more reasonable. --- lib/all_encodings.h | 39 +++++++ lib/converters.h | 239 +++++++++++++------------------------- lib/converters/isoir165.h | 2 + lib/encoding.h | 34 ++++++ lib/encoding_indexes.h | 37 ++++++ lib/iconv.c | 52 ++------- lib/loop_funcs.h | 36 ++++++ lib/reiconv.cpp | 2 +- lib/reiconv_defines.h | 138 ++++++++++++++++++++++ tests/output.hpp | 6 +- tools/genindexes.cpp | 33 ++---- 11 files changed, 387 insertions(+), 231 deletions(-) create mode 100644 lib/all_encodings.h create mode 100644 lib/encoding.h create mode 100644 lib/encoding_indexes.h create mode 100644 lib/loop_funcs.h create mode 100644 lib/reiconv_defines.h diff --git a/lib/all_encodings.h b/lib/all_encodings.h new file mode 100644 index 00000000..881633ca --- /dev/null +++ b/lib/all_encodings.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _ALL_ENCODINGS_H_ +#define _ALL_ENCODINGS_H_ + +#include "converters.h" +#include "encoding.h" + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ + {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, name) + +static struct encoding const all_encodings[] = { +#include "encodings.h.snippet" +}; + +#undef DEFINDEX +#undef DEFENCODING +#undef DEFCODEPAGE + +#endif /* _ALL_ENCODINGS_H_ */ diff --git a/lib/converters.h b/lib/converters.h index a0bfb325..4e7a17e9 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -1,5 +1,6 @@ /* * Copyright (C) 1999-2002, 2004-2011, 2016, 2022-2023 Free Software Foundation, Inc. + * Copyright (C) 2024 The C++ Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,112 +18,30 @@ * If not, see . */ -/* This file defines all the converters. */ +#ifndef _CONVERTERS_H_ +#define _CONVERTERS_H_ +#include "reiconv_defines.h" -/* Our own notion of wide character, as UCS-4, according to ISO-10646-1. */ -typedef unsigned int ucs4_t; - -/* State used by a conversion. 0 denotes the initial state. */ -typedef unsigned int state_t; - -/* iconv_t is an opaque type. This is the real iconv_t type. */ -typedef struct conv_struct * conv_t; - -/* - * Data type for conversion multibyte -> unicode - */ -struct mbtowc_funcs { - int (*xxx_mbtowc) (conv_t conv, ucs4_t *pwc, unsigned char const *s, size_t n); - /* - * int xxx_mbtowc (conv_t conv, ucs4_t *pwc, unsigned char const *s, size_t n) - * converts the byte sequence starting at s to a wide character. Up to n bytes - * are available at s. n is >= 1. - * Result is number of bytes consumed (if a wide character was read), - * or -1 if invalid, or -2 if n too small, - * or RET_SHIFT_ILSEQ(number of bytes consumed) if invalid input after a shift - * sequence was read, - * or RET_TOOFEW(number of bytes consumed) if only a shift sequence was read. - */ - int (*xxx_flushwc) (conv_t conv, ucs4_t *pwc); - /* - * int xxx_flushwc (conv_t conv, ucs4_t *pwc) - * returns to the initial state and stores the pending wide character, if any. - * Result is 1 (if a wide character was read) or 0 if none was pending. - */ -}; - -/* Return code if invalid input after a shift sequence of n bytes was read. - (xxx_mbtowc) */ -#define RET_SHIFT_ILSEQ(n) (-1-2*(n)) -/* Return code if invalid. (xxx_mbtowc) */ -#define RET_ILSEQ RET_SHIFT_ILSEQ(0) -/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */ -#define RET_TOOFEW(n) (-2-2*(n)) -/* Retrieve the n from the encoded RET_... value. */ -#define DECODE_SHIFT_ILSEQ(r) ((unsigned int)(RET_SHIFT_ILSEQ(0) - (r)) / 2) -#define DECODE_TOOFEW(r) ((unsigned int)(RET_TOOFEW(0) - (r)) / 2) -/* Maximum value of n that may be used as argument to RET_SHIFT_ILSEQ or RET_TOOFEW. */ -#define RET_COUNT_MAX ((INT_MAX / 2) - 1) - -/* - * Data type for conversion unicode -> multibyte - */ -struct wctomb_funcs { - int (*xxx_wctomb) (conv_t conv, unsigned char *r, ucs4_t wc, size_t n); - /* - * int xxx_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) - * converts the wide character wc to the character set xxx, and stores the - * result beginning at r. Up to n bytes may be written at r. n is >= 1. - * Result is number of bytes written, or -1 if invalid, or -2 if n too small. - */ - int (*xxx_reset) (conv_t conv, unsigned char *r, size_t n); - /* - * int xxx_reset (conv_t conv, unsigned char *r, size_t n) - * stores a shift sequences returning to the initial state beginning at r. - * Up to n bytes may be written at r. n is >= 0. - * Result is number of bytes written, or -2 if n too small. - */ -}; - -/* Return code if invalid. (xxx_wctomb) */ -#define RET_ILUNI -1 -/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */ -#define RET_TOOSMALL -2 - -/* - * Contents of a conversion descriptor. - */ -struct conv_struct { - struct loop_funcs lfuncs; - /* Input (conversion multibyte -> unicode) */ - int iindex; - struct mbtowc_funcs ifuncs; - state_t istate; - /* Output (conversion unicode -> multibyte) */ - int oindex; - struct wctomb_funcs ofuncs; - state_t ostate; - /* Operation flags */ - int discard_ilseq; -}; - -/* - * Include all the converters. - */ +// Include all the converters. #pragma region ASCII #include "converters/ascii.h" #pragma endregion #pragma region General multi-byte encodings -#include "converters/utf8.h" +#include "converters/c99.h" +#include "converters/java.h" #include "converters/ucs2.h" #include "converters/ucs2be.h" +#include "converters/ucs2internal.h" #include "converters/ucs2le.h" +#include "converters/ucs2swapped.h" #include "converters/ucs4.h" #include "converters/ucs4be.h" +#include "converters/ucs4internal.h" #include "converters/ucs4le.h" +#include "converters/ucs4swapped.h" #include "converters/utf16.h" #include "converters/utf16be.h" #include "converters/utf16le.h" @@ -130,33 +49,13 @@ struct conv_struct { #include "converters/utf32be.h" #include "converters/utf32le.h" #include "converters/utf7.h" -#include "converters/ucs2internal.h" -#include "converters/ucs2swapped.h" -#include "converters/ucs4internal.h" -#include "converters/ucs4swapped.h" -#include "converters/c99.h" -#include "converters/java.h" +#include "converters/utf8.h" #pragma endregion #pragma region 8-bit encodings -#include "converters/iso8859_1.h" -#include "converters/iso8859_2.h" -#include "converters/iso8859_3.h" -#include "converters/iso8859_4.h" -#include "converters/iso8859_5.h" -#include "converters/iso8859_6.h" -#include "converters/iso8859_7.h" -#include "converters/iso8859_8.h" -#include "converters/iso8859_9.h" -#include "converters/iso8859_10.h" -#include "converters/iso8859_11.h" -#include "converters/iso8859_13.h" -#include "converters/iso8859_14.h" -#include "converters/iso8859_15.h" -#include "converters/iso8859_16.h" -#include "converters/koi8_r.h" -#include "converters/koi8_u.h" -#include "converters/koi8_ru.h" +#include "converters/armscii_8.h" +#include "converters/cp1131.h" +#include "converters/cp1133.h" #include "converters/cp1250.h" #include "converters/cp1251.h" #include "converters/cp1252.h" @@ -169,39 +68,55 @@ struct conv_struct { #include "converters/cp850.h" #include "converters/cp862.h" #include "converters/cp866.h" -#include "converters/cp1131.h" -#include "converters/mac_roman.h" +#include "converters/cp874.h" +#include "converters/georgian_academy.h" +#include "converters/georgian_ps.h" +#include "converters/hp_roman8.h" +#include "converters/iso8859_1.h" +#include "converters/iso8859_10.h" +#include "converters/iso8859_11.h" +#include "converters/iso8859_13.h" +#include "converters/iso8859_14.h" +#include "converters/iso8859_15.h" +#include "converters/iso8859_16.h" +#include "converters/iso8859_2.h" +#include "converters/iso8859_3.h" +#include "converters/iso8859_4.h" +#include "converters/iso8859_5.h" +#include "converters/iso8859_6.h" +#include "converters/iso8859_7.h" +#include "converters/iso8859_8.h" +#include "converters/iso8859_9.h" +#include "converters/koi8_r.h" +#include "converters/koi8_ru.h" +#include "converters/koi8_t.h" +#include "converters/koi8_u.h" +#include "converters/mac_arabic.h" #include "converters/mac_centraleurope.h" -#include "converters/mac_iceland.h" #include "converters/mac_croatian.h" -#include "converters/mac_romania.h" #include "converters/mac_cyrillic.h" -#include "converters/mac_ukraine.h" #include "converters/mac_greek.h" -#include "converters/mac_turkish.h" #include "converters/mac_hebrew.h" -#include "converters/mac_arabic.h" +#include "converters/mac_iceland.h" +#include "converters/mac_roman.h" +#include "converters/mac_romania.h" #include "converters/mac_thai.h" -#include "converters/hp_roman8.h" +#include "converters/mac_turkish.h" +#include "converters/mac_ukraine.h" +#include "converters/mulelao.h" #include "converters/nextstep.h" -#include "converters/armscii_8.h" -#include "converters/georgian_academy.h" -#include "converters/georgian_ps.h" -#include "converters/koi8_t.h" #include "converters/pt154.h" #include "converters/rk1048.h" -#include "converters/mulelao.h" -#include "converters/cp1133.h" +#include "converters/tcvn.h" #include "converters/tis620.h" -#include "converters/cp874.h" #include "converters/viscii.h" -#include "converters/tcvn.h" #pragma endregion /* [CCS = coded character set] [CJKV.INF chapter 3] */ -typedef struct { - unsigned short indx; /* Index into big table. */ - unsigned short used; /* Bitmask of used entries. */ +typedef struct +{ + unsigned short indx; /* Index into big table. */ + unsigned short used; /* Bitmask of used entries. */ } Summary16; #pragma region CJK character sets @@ -210,64 +125,65 @@ typedef struct { #include "converters/jisx0208.h" #include "converters/jisx0212.h" -#include "converters/iso646_cn.h" #include "converters/gb2312.h" +#include "converters/iso646_cn.h" #include "converters/isoir165.h" /* #include "converters/gb12345.h" */ -#include "converters/gbk.h" -#include "converters/cns11643.h" #include "converters/big5.h" +#include "converters/cns11643.h" +#include "converters/gbk.h" -#include "converters/ksc5601.h" #include "converters/johab_hangul.h" +#include "converters/ksc5601.h" #pragma endregion /* [CES = character encoding scheme] [CJKV.INF chapter 4] */ #pragma region CJK encodings -#include "converters/euc_jp.h" -#include "converters/sjis.h" #include "converters/cp932.h" +#include "converters/euc_jp.h" #include "converters/iso2022_jp.h" #include "converters/iso2022_jp1.h" #include "converters/iso2022_jp2.h" #include "converters/iso2022_jpms.h" +#include "converters/sjis.h" -#include "converters/euc_cn.h" +#include "converters/big5hkscs1999.h" +#include "converters/big5hkscs2001.h" +#include "converters/big5hkscs2004.h" +#include "converters/big5hkscs2008.h" +#include "converters/ces_big5.h" #include "converters/ces_gbk.h" #include "converters/cp936.h" +#include "converters/cp950.h" +#include "converters/euc_cn.h" +#include "converters/euc_tw.h" #include "converters/gb18030_2005.h" #include "converters/gb18030_2022.h" +#include "converters/hz.h" #include "converters/iso2022_cn.h" #include "converters/iso2022_cnext.h" -#include "converters/hz.h" -#include "converters/euc_tw.h" -#include "converters/ces_big5.h" -#include "converters/cp950.h" -#include "converters/big5hkscs1999.h" -#include "converters/big5hkscs2001.h" -#include "converters/big5hkscs2004.h" -#include "converters/big5hkscs2008.h" -#include "converters/euc_kr.h" #include "converters/cp949.h" -#include "converters/johab.h" +#include "converters/euc_kr.h" #include "converters/iso2022_kr.h" +#include "converters/johab.h" -#include "converters/dec_kanji.h" #include "converters/dec_hanyu.h" +#include "converters/dec_kanji.h" #pragma endregion #pragma region Encodings used by system dependent locales -#include "converters/cp856.h" -#include "converters/cp922.h" -#include "converters/cp943.h" #include "converters/cp1046.h" #include "converters/cp1124.h" #include "converters/cp1129.h" #include "converters/cp1161.h" #include "converters/cp1162.h" #include "converters/cp1163.h" +#include "converters/cp856.h" +#include "converters/cp922.h" +#include "converters/cp943.h" +#include "converters/cp1125.h" #include "converters/cp437.h" #include "converters/cp737.h" #include "converters/cp775.h" @@ -282,7 +198,6 @@ typedef struct { #include "converters/cp864.h" #include "converters/cp865.h" #include "converters/cp869.h" -#include "converters/cp1125.h" #pragma endregion #define DEDUPLICATE_TABLES 1 @@ -344,11 +259,13 @@ typedef struct { #pragma endregion #pragma region Extra encodings +#include "converters/atarist.h" +#include "converters/big5_2003.h" #include "converters/euc_jisx0213.h" -#include "converters/shift_jisx0213.h" #include "converters/iso2022_jp3.h" -#include "converters/big5_2003.h" -#include "converters/tds565.h" -#include "converters/atarist.h" #include "converters/riscos1.h" +#include "converters/shift_jisx0213.h" +#include "converters/tds565.h" #pragma endregion + +#endif /* _CONVERTERS_H_ */ diff --git a/lib/converters/isoir165.h b/lib/converters/isoir165.h index 08b3f661..633004a5 100644 --- a/lib/converters/isoir165.h +++ b/lib/converters/isoir165.h @@ -79,6 +79,8 @@ #include "isoir165ext.h" +#include + static int isoir165_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { diff --git a/lib/encoding.h b/lib/encoding.h new file mode 100644 index 00000000..7f92973d --- /dev/null +++ b/lib/encoding.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _ENCODING_H_ +#define _ENCODING_H_ + +#include "reiconv_defines.h" + +/** + * @brief Table of all supported encodings. + */ +struct encoding +{ + struct mbtowc_funcs ifuncs; // Conversion multibyte -> unicode + struct wctomb_funcs ofuncs; // Conversion unicode -> multibyte +}; + +#endif /* _ENCODING_H_ */ diff --git a/lib/encoding_indexes.h b/lib/encoding_indexes.h new file mode 100644 index 00000000..a7a0fcae --- /dev/null +++ b/lib/encoding_indexes.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _ENCODING_INDEXES_H_ +#define _ENCODING_INDEXES_H_ + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, +#define DEFCODEPAGE(codepage, xxx) +#define DEFINDEX(alias, index) + +enum +{ +#include "encodings.h.snippet" + ei_end +}; + +#undef DEFINDEX +#undef DEFCODEPAGE +#undef DEFENCODING + +#endif /* _ENCODING_INDEXES_H_ */ diff --git a/lib/iconv.c b/lib/iconv.c index 3cb00eb8..00fac264 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -1,5 +1,6 @@ /* * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. + * Copyright (C) The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -24,51 +25,13 @@ #include #include -const size_t TEMP_BUFFER_SIZE = 4096; - -// Data type for general conversion loop. -struct loop_funcs -{ - size_t (*loop_convert)(reiconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - size_t (*loop_reset)(reiconv_t icd, char **outbuf, size_t *outbytesleft); -}; - -// Converters +#include "all_encodings.h" #include "converters.h" +#include "encoding_indexes.h" +#include "loop_funcs.h" +#include "encoding.h" -// Table of all supported encodings. -struct encoding -{ - struct mbtowc_funcs ifuncs; // conversion multibyte -> unicode - struct wctomb_funcs ofuncs; // conversion unicode -> multibyte -}; - -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, -#define DEFCODEPAGE(codepage, xxx) -#define DEFINDEX(alias, index) - -enum -{ -#include "encodings.h.snippet" - ei_end -}; - -#undef DEFINDEX -#undef DEFCODEPAGE -#undef DEFENCODING - -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ - {xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2}, -#define DEFCODEPAGE(codepage, xxx) -#define DEFINDEX(alias, name) - -static struct encoding const all_encodings[] = { -#include "encodings.h.snippet" -}; - -#undef DEFINDEX -#undef DEFENCODING -#undef DEFCODEPAGE +const size_t TEMP_BUFFER_SIZE = 4096; #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) #define DEFCODEPAGE(codepage, xxx) [codepage] = ei_##xxx + 1, @@ -288,7 +251,8 @@ _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input return -1; } - *output_data_ptr = (*output_data_ptr == NULL ? (char *)malloc(output_length) : (char *)realloc(*output_data_ptr, output_length)); + *output_data_ptr = + (*output_data_ptr == NULL ? (char *)malloc(output_length) : (char *)realloc(*output_data_ptr, output_length)); if (reiconv_convert_static_size(cd, input_data, input_length, *output_data_ptr, output_length) == -1) { diff --git a/lib/loop_funcs.h b/lib/loop_funcs.h new file mode 100644 index 00000000..1e8b5c3d --- /dev/null +++ b/lib/loop_funcs.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _LOOP_FUNCS_H_ +#define _LOOP_FUNCS_H_ + +#include + +#include + +/** + * @brief Data type for general conversion loop. + */ +struct loop_funcs +{ + size_t (*loop_convert)(reiconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + size_t (*loop_reset)(reiconv_t icd, char **outbuf, size_t *outbytesleft); +}; + +#endif /* _LOOP_FUNCS_H_ */ diff --git a/lib/reiconv.cpp b/lib/reiconv.cpp index 615bfb5c..75adb993 100644 --- a/lib/reiconv.cpp +++ b/lib/reiconv.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. + * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it diff --git a/lib/reiconv_defines.h b/lib/reiconv_defines.h new file mode 100644 index 00000000..d23cd90d --- /dev/null +++ b/lib/reiconv_defines.h @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2024 The C++ Plus Project. + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _REICONV_DEFINES_H_ +#define _REICONV_DEFINES_H_ + +#include + +#include "loop_funcs.h" + +/** + * @brief Our own notion of wide character, as UCS-4, according to ISO-10646-1. + */ +typedef unsigned int ucs4_t; + +/** + * @brief State used by a conversion. 0 denotes the initial state. + */ +typedef unsigned int state_t; + +/** + * @brief reiconv_t is an opaque type. This is the real reiconv_t type. + */ +typedef struct conv_struct *conv_t; + +/** + * @brief Data type for conversion multibyte -> unicode + */ +struct mbtowc_funcs +{ + /** + * @brief Converts the byte sequence starting at `s` to a wide character. Up to `n` bytes are + * available at `s`. `n` is >= 1. + * @param conv Conversion structure. + * @param pwc Pointer to the wide character. + * @param s Pointer to the byte sequence. + * @param n Number of bytes available at `s`. + * @return Number of bytes consumed (if a wide character was read), or -1 if invalid, or -2 if + * `n` too small, or RET_SHIFT_ILSEQ(number of bytes consumed) if invalid input after a shift + * sequence was read, or RET_TOOFEW(number of bytes consumed) if only a shift sequence was read. + */ + int (*xxx_mbtowc)(conv_t conv, ucs4_t *pwc, unsigned char const *s, size_t n); + + /** + * @brief Returns to the initial state and stores the pending wide character, if any. + * @param conv Conversion structure. + * @param pwc Pointer to the wide character. + * @return Result is 1 (if a wide character was read) or 0 if none was pending. + */ + int (*xxx_flushwc)(conv_t conv, ucs4_t *pwc); +}; + +/* Return code if invalid input after a shift sequence of n bytes was read. + (xxx_mbtowc) */ +#define RET_SHIFT_ILSEQ(n) (-1 - 2 * (n)) + +/* Return code if invalid. (xxx_mbtowc) */ +#define RET_ILSEQ RET_SHIFT_ILSEQ(0) + +/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */ +#define RET_TOOFEW(n) (-2 - 2 * (n)) + +/* Retrieve the n from the encoded RET_... value. */ +#define DECODE_SHIFT_ILSEQ(r) ((unsigned int)(RET_SHIFT_ILSEQ(0) - (r)) / 2) + +#define DECODE_TOOFEW(r) ((unsigned int)(RET_TOOFEW(0) - (r)) / 2) + +/* Maximum value of n that may be used as argument to RET_SHIFT_ILSEQ or RET_TOOFEW. */ +#define RET_COUNT_MAX ((INT_MAX / 2) - 1) + +/** + * @brief Data type for conversion unicode -> multibyte + */ +struct wctomb_funcs +{ + /** + * @brief Converts the wide character `wc` to the character set xxx, and stores the result + * beginning at `r`. Up to `n` bytes may be written at `r`. `n` is >= 1. + * @param conv Conversion structure. + * @param r Pointer to the result. + * @param wc Wide character to convert. + * @param n Number of bytes available at `r`. + * @return Number of bytes written, or -1 if invalid, or -2 if `n` too small. + */ + int (*xxx_wctomb)(conv_t conv, unsigned char *r, ucs4_t wc, size_t n); + + /** + * @brief Stores a shift sequence returning to the initial state beginning at `r`. Up to `n` + * bytes may be written at `r`. `n` is >= 0. + * @param conv Conversion structure. + * @param r Pointer to the result. + * @param n Number of bytes available at `r`. + * @return Number of bytes written, or -2 if `n` too small. + */ + int (*xxx_reset)(conv_t conv, unsigned char *r, size_t n); +}; + +/* Return code if invalid. (xxx_wctomb) */ +#define RET_ILUNI -1 + +/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */ +#define RET_TOOSMALL -2 + +/** + * @brief Contents of a conversion descriptor. + */ +struct conv_struct +{ + struct loop_funcs lfuncs; + /* Input (conversion multibyte -> unicode) */ + int iindex; + struct mbtowc_funcs ifuncs; + state_t istate; + /* Output (conversion unicode -> multibyte) */ + int oindex; + struct wctomb_funcs ofuncs; + state_t ostate; + /* Operation flags */ + int discard_ilseq; +}; + +#endif /* _REICONV_DEFINES_H_ */ diff --git a/tests/output.hpp b/tests/output.hpp index fd7b7050..43bc5366 100644 --- a/tests/output.hpp +++ b/tests/output.hpp @@ -121,7 +121,7 @@ template inline void print_stderr(const std::string &format, std::fputs(str.c_str(), stderr); } -inline void error(const std::string& operation, const std::string &msg, +inline void error(const std::string &operation, const std::string &msg, const std::source_location location = std::source_location::current()) { print_stderr(colorize("", COLOR_RED, false)); @@ -135,12 +135,12 @@ inline void error(const std::string& operation, const std::string &msg, } std::string file_info = std::string(location.file_name()) + ":" + std::to_string(location.line()); print_stderr(msg); - print_stderr("\n\tAt {}\n", colorize(file_info, CONTROL_UNDERLINE), "\n"); + print_stderr("\n\tAt {}", colorize(file_info, CONTROL_UNDERLINE)); exit(EXIT_FAILURE); } inline void success(const std::string &operation, const std::string &msg) { - print_stdout(colorize(operation + ": " + msg + "\n", COLOR_GREEN)); + print_stdout(colorize("{}: {}", COLOR_GREEN), operation, msg); } diff --git a/tools/genindexes.cpp b/tools/genindexes.cpp index f8f9b787..98737d9b 100644 --- a/tools/genindexes.cpp +++ b/tools/genindexes.cpp @@ -20,21 +20,10 @@ /* Generate indexes enum. */ #include -#include +#include #include -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) ei_##xxx, -#define DEFCODEPAGE(codepage, xxx) -#define DEFINDEX(alias, index) - -enum -{ -#include "encodings.h.snippet" -}; - -#undef DEFINDEX -#undef DEFCODEPAGE -#undef DEFENCODING +#include "encoding_indexes.h" #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ {#xxx_index, ei_##xxx}, @@ -63,10 +52,10 @@ std::unordered_map aliases = { void cpp_gen() { - std::printf("namespace reiconv::encoding\n"); - std::printf("{\n"); - std::printf(" enum class Encodings\n"); - std::printf(" {\n"); + std::puts("namespace reiconv::encoding"); + std::puts("{"); + std::puts(" enum class Encodings"); + std::puts(" {"); for (auto &it : enum_data) { std::printf(" %s = %d,\n", it.first.c_str(), it.second); @@ -75,15 +64,15 @@ void cpp_gen() { std::printf(" %s = %s,\n", it.first.c_str(), it.second.c_str()); } - std::printf(" };\n"); - std::printf("} // reiconv::encoding\n"); + std::puts(" };"); + std::puts("} // reiconv::encoding"); std::fflush(stdout); } void c_gen() { - std::printf("enum\n"); - std::printf("{\n"); + std::puts("enum"); + std::puts("{"); for (auto &it : enum_data) { std::printf(" ENCODING_%s = %d,\n", it.first.c_str(), it.second); @@ -92,7 +81,7 @@ void c_gen() { std::printf(" ENCODING_%s = ENCODING_%s,\n", it.first.c_str(), it.second.c_str()); } - std::printf("};\n"); + std::puts("};"); std::fflush(stdout); } From c61d24fd38e9c54df3c8c8f300268f51d2b40d02 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 9 Nov 2024 10:15:23 +0800 Subject: [PATCH 49/77] Fix all LSP errors and format the code. --- lib/converters.h | 7 - lib/converters/armscii_8.h | 91 +- lib/converters/ascii.h | 46 +- lib/converters/atarist.h | 92 +- lib/converters/big5.h | 184 ++-- lib/converters/big5_2003.h | 1003 ++++++++++++++++------ lib/converters/big5hkscs1999.h | 307 ++++--- lib/converters/big5hkscs2001.h | 341 ++++---- lib/converters/big5hkscs2004.h | 379 +++++---- lib/converters/big5hkscs2008.h | 415 +++++---- lib/converters/c99.h | 206 +++-- lib/converters/ces_big5.h | 93 +- lib/converters/ces_gbk.h | 85 +- lib/converters/cjk_variants.h | 14 +- lib/converters/cns11643.h | 36 +- lib/converters/cns11643_1.h | 89 +- lib/converters/cns11643_15.h | 64 +- lib/converters/cns11643_2.h | 61 +- lib/converters/cns11643_3.h | 76 +- lib/converters/cns11643_4.h | 70 +- lib/converters/cns11643_4a.h | 18 +- lib/converters/cns11643_4b.h | 21 +- lib/converters/cns11643_5.h | 67 +- lib/converters/cns11643_6.h | 67 +- lib/converters/cns11643_7.h | 67 +- lib/converters/cns11643_inv.h | 129 +-- lib/converters/cp1046.h | 113 +-- lib/converters/cp1124.h | 77 +- lib/converters/cp1125.h | 92 +- lib/converters/cp1129.h | 78 +- lib/converters/cp1131.h | 85 +- lib/converters/cp1133.h | 115 +-- lib/converters/cp1161.h | 94 ++- lib/converters/cp1162.h | 98 ++- lib/converters/cp1163.h | 79 +- lib/converters/cp1250.h | 91 +- lib/converters/cp1251.h | 95 ++- lib/converters/cp1252.h | 95 ++- lib/converters/cp1253.h | 95 ++- lib/converters/cp1254.h | 135 +-- lib/converters/cp1255.h | 464 +++++----- lib/converters/cp1256.h | 84 +- lib/converters/cp1257.h | 91 +- lib/converters/cp1258.h | 345 ++++---- lib/converters/cp437.h | 88 +- lib/converters/cp50221_0208_ext.h | 85 +- lib/converters/cp50221_0212_ext.h | 242 +++--- lib/converters/cp737.h | 80 +- lib/converters/cp775.h | 72 +- lib/converters/cp850.h | 76 +- lib/converters/cp852.h | 68 +- lib/converters/cp853.h | 91 +- lib/converters/cp855.h | 72 +- lib/converters/cp856.h | 87 +- lib/converters/cp857.h | 83 +- lib/converters/cp858.h | 81 +- lib/converters/cp860.h | 84 +- lib/converters/cp861.h | 88 +- lib/converters/cp862.h | 96 ++- lib/converters/cp863.h | 88 +- lib/converters/cp864.h | 133 +-- lib/converters/cp865.h | 88 +- lib/converters/cp866.h | 80 +- lib/converters/cp869.h | 87 +- lib/converters/cp874.h | 87 +- lib/converters/cp922.h | 84 +- lib/converters/cp932.h | 319 +++---- lib/converters/cp932ext.h | 183 ++-- lib/converters/cp936.h | 163 ++-- lib/converters/cp936ext.h | 104 ++- lib/converters/cp943.h | 16 +- lib/converters/cp949.h | 181 ++-- lib/converters/cp950.h | 415 ++++++--- lib/converters/cp950ext.h | 140 +-- lib/converters/dec_hanyu.h | 190 +++-- lib/converters/dec_kanji.h | 97 ++- lib/converters/ebcdic037.h | 45 +- lib/converters/ebcdic1025.h | 53 +- lib/converters/ebcdic1026.h | 49 +- lib/converters/ebcdic1047.h | 45 +- lib/converters/ebcdic1097.h | 69 +- lib/converters/ebcdic1112.h | 49 +- lib/converters/ebcdic1122.h | 49 +- lib/converters/ebcdic1123.h | 53 +- lib/converters/ebcdic1130.h | 53 +- lib/converters/ebcdic1132.h | 62 +- lib/converters/ebcdic1137.h | 62 +- lib/converters/ebcdic1140.h | 49 +- lib/converters/ebcdic1141.h | 49 +- lib/converters/ebcdic1142.h | 49 +- lib/converters/ebcdic1143.h | 49 +- lib/converters/ebcdic1144.h | 49 +- lib/converters/ebcdic1145.h | 49 +- lib/converters/ebcdic1146.h | 49 +- lib/converters/ebcdic1147.h | 49 +- lib/converters/ebcdic1148.h | 49 +- lib/converters/ebcdic1149.h | 49 +- lib/converters/ebcdic1153.h | 53 +- lib/converters/ebcdic1154.h | 57 +- lib/converters/ebcdic1155.h | 53 +- lib/converters/ebcdic1156.h | 53 +- lib/converters/ebcdic1157.h | 53 +- lib/converters/ebcdic1158.h | 57 +- lib/converters/ebcdic1160.h | 53 +- lib/converters/ebcdic1164.h | 53 +- lib/converters/ebcdic1165.h | 53 +- lib/converters/ebcdic1166.h | 57 +- lib/converters/ebcdic12712.h | 66 +- lib/converters/ebcdic16804.h | 70 +- lib/converters/ebcdic273.h | 45 +- lib/converters/ebcdic277.h | 45 +- lib/converters/ebcdic278.h | 45 +- lib/converters/ebcdic280.h | 45 +- lib/converters/ebcdic282.h | 45 +- lib/converters/ebcdic284.h | 45 +- lib/converters/ebcdic285.h | 45 +- lib/converters/ebcdic297.h | 45 +- lib/converters/ebcdic423.h | 58 +- lib/converters/ebcdic424.h | 62 +- lib/converters/ebcdic425.h | 70 +- lib/converters/ebcdic4971.h | 66 +- lib/converters/ebcdic500.h | 45 +- lib/converters/ebcdic838.h | 49 +- lib/converters/ebcdic870.h | 49 +- lib/converters/ebcdic871.h | 45 +- lib/converters/ebcdic875.h | 62 +- lib/converters/ebcdic880.h | 53 +- lib/converters/ebcdic905.h | 62 +- lib/converters/ebcdic924.h | 53 +- lib/converters/euc_cn.h | 100 ++- lib/converters/euc_jisx0213.h | 458 +++++----- lib/converters/euc_jp.h | 352 ++++---- lib/converters/euc_kr.h | 99 ++- lib/converters/euc_tw.h | 210 +++-- lib/converters/flushwc.h | 15 +- lib/converters/gb12345.h | 67 +- lib/converters/gb12345ext.h | 85 +- lib/converters/gb18030_2005.h | 342 ++++---- lib/converters/gb18030_2022.h | 340 ++++---- lib/converters/gb18030ext.h | 546 ++++++------ lib/converters/gb18030uni.h | 409 +++++---- lib/converters/gb2312.h | 143 ++-- lib/converters/gbk.h | 231 ++--- lib/converters/gbkext1.h | 58 +- lib/converters/gbkext2.h | 58 +- lib/converters/gbkext_inv.h | 97 ++- lib/converters/georgian_academy.h | 88 +- lib/converters/georgian_ps.h | 88 +- lib/converters/hkscs1999.h | 198 +++-- lib/converters/hkscs2001.h | 330 ++++---- lib/converters/hkscs2004.h | 350 ++++---- lib/converters/hkscs2008.h | 263 +++--- lib/converters/hp_roman8.h | 95 ++- lib/converters/hz.h | 270 +++--- lib/converters/iso2022_cn.h | 560 ++++++------ lib/converters/iso2022_cnext.h | 1109 +++++++++++++----------- lib/converters/iso2022_jp.h | 371 ++++---- lib/converters/iso2022_jp1.h | 461 +++++----- lib/converters/iso2022_jp2.h | 1268 +++++++++++++++------------- lib/converters/iso2022_jp3.h | 25 +- lib/converters/iso2022_jpms.h | 766 +++++++++-------- lib/converters/iso2022_kr.h | 345 ++++---- lib/converters/iso646_cn.h | 73 +- lib/converters/iso646_jp.h | 73 +- lib/converters/iso8859_1.h | 39 +- lib/converters/iso8859_10.h | 64 +- lib/converters/iso8859_11.h | 64 +- lib/converters/iso8859_13.h | 64 +- lib/converters/iso8859_14.h | 76 +- lib/converters/iso8859_15.h | 72 +- lib/converters/iso8859_16.h | 72 +- lib/converters/iso8859_2.h | 64 +- lib/converters/iso8859_3.h | 83 +- lib/converters/iso8859_4.h | 64 +- lib/converters/iso8859_5.h | 68 +- lib/converters/iso8859_6.h | 79 +- lib/converters/iso8859_7.h | 91 +- lib/converters/iso8859_8.h | 83 +- lib/converters/iso8859_9.h | 49 +- lib/converters/isoir165.h | 165 ++-- lib/converters/isoir165ext.h | 159 ++-- lib/converters/java.h | 244 +++--- lib/converters/jisx0201.h | 92 +- lib/converters/jisx0208.h | 93 +- lib/converters/jisx0212.h | 151 ++-- lib/converters/jisx0213.h | 122 +-- lib/converters/johab.h | 182 ++-- lib/converters/johab_hangul.h | 236 +++--- lib/converters/koi8_r.h | 76 +- lib/converters/koi8_ru.h | 76 +- lib/converters/koi8_t.h | 87 +- lib/converters/koi8_u.h | 76 +- lib/converters/ksc5601.h | 155 ++-- lib/converters/mac_arabic.h | 83 +- lib/converters/mac_centraleurope.h | 84 +- lib/converters/mac_croatian.h | 99 ++- lib/converters/mac_cyrillic.h | 69 +- lib/converters/mac_greek.h | 95 ++- lib/converters/mac_hebrew.h | 91 +- lib/converters/mac_iceland.h | 103 ++- lib/converters/mac_roman.h | 107 +-- lib/converters/mac_romania.h | 99 ++- lib/converters/mac_thai.h | 95 ++- lib/converters/mac_turkish.h | 103 ++- lib/converters/mac_ukraine.h | 84 +- lib/converters/mulelao.h | 79 +- lib/converters/nextstep.h | 91 +- lib/converters/pt154.h | 76 +- lib/converters/riscos1.h | 84 +- lib/converters/rk1048.h | 91 +- lib/converters/shift_jisx0213.h | 557 ++++++------ lib/converters/sjis.h | 181 ++-- lib/converters/tcvn.h | 20 +- lib/converters/tds565.h | 16 +- lib/converters/tis620.h | 64 +- lib/converters/ucs2.h | 92 +- lib/converters/ucs2be.h | 63 +- lib/converters/ucs2internal.h | 64 +- lib/converters/ucs2le.h | 63 +- lib/converters/ucs2swapped.h | 86 +- lib/converters/ucs4.h | 105 ++- lib/converters/ucs4be.h | 54 +- lib/converters/ucs4internal.h | 45 +- lib/converters/ucs4le.h | 54 +- lib/converters/ucs4swapped.h | 69 +- lib/converters/uhc_1.h | 106 ++- lib/converters/uhc_2.h | 106 ++- lib/converters/utf16.h | 174 ++-- lib/converters/utf16be.h | 118 +-- lib/converters/utf16le.h | 118 +-- lib/converters/utf32.h | 18 +- lib/converters/utf32be.h | 16 +- lib/converters/utf32le.h | 16 +- lib/converters/utf7.h | 18 +- lib/converters/utf8.h | 16 +- lib/converters/vietcomb.h | 15 +- lib/converters/viscii.h | 16 +- lib/reiconv_defines.h | 7 + 238 files changed, 17149 insertions(+), 12943 deletions(-) diff --git a/lib/converters.h b/lib/converters.h index 4e7a17e9..988b7b22 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -112,13 +112,6 @@ #include "converters/viscii.h" #pragma endregion -/* [CCS = coded character set] [CJKV.INF chapter 3] */ -typedef struct -{ - unsigned short indx; /* Index into big table. */ - unsigned short used; /* Bitmask of used entries. */ -} Summary16; - #pragma region CJK character sets #include "converters/iso646_jp.h" #include "converters/jisx0201.h" diff --git a/lib/converters/armscii_8.h b/lib/converters/armscii_8.h index 3202f7e2..383a16cf 100644 --- a/lib/converters/armscii_8.h +++ b/lib/converters/armscii_8.h @@ -1,5 +1,10 @@ +/** + * @file armscii_8.h + * @brief ARMSCII-8 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ARMSCII-8 - */ +#ifndef _ARMSCII_8_H_ +#define _ARMSCII_8_H_ + +#include "reiconv_defines.h" static const unsigned short armscii_8_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short armscii_8_2uni[96] = { 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd, }; -static int -armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int armscii_8_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = armscii_8_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = armscii_8_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char armscii_8_page00[8] = { @@ -89,27 +97,30 @@ static const unsigned char armscii_8_page20[24] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */ }; -static int -armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int armscii_8_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0028) { - *r = wc; - return 1; - } - else if (wc >= 0x0028 && wc < 0x0030) - c = armscii_8_page00[wc-0x0028]; - else if (wc >= 0x0030 && wc < 0x00a0) - c = wc; - else if (wc >= 0x00a0 && wc < 0x00c0) - c = armscii_8_page00_1[wc-0x00a0]; - else if (wc >= 0x0530 && wc < 0x0590) - c = armscii_8_page05[wc-0x0530]; - else if (wc >= 0x2010 && wc < 0x2028) - c = armscii_8_page20[wc-0x2010]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0028) + { + *r = wc; + return 1; + } + else if (wc >= 0x0028 && wc < 0x0030) + c = armscii_8_page00[wc - 0x0028]; + else if (wc >= 0x0030 && wc < 0x00a0) + c = wc; + else if (wc >= 0x00a0 && wc < 0x00c0) + c = armscii_8_page00_1[wc - 0x00a0]; + else if (wc >= 0x0530 && wc < 0x0590) + c = armscii_8_page05[wc - 0x0530]; + else if (wc >= 0x2010 && wc < 0x2028) + c = armscii_8_page20[wc - 0x2010]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ARMSCII_8_H_ */ diff --git a/lib/converters/ascii.h b/lib/converters/ascii.h index b8ed01be..ce289681 100644 --- a/lib/converters/ascii.h +++ b/lib/converters/ascii.h @@ -1,5 +1,10 @@ +/** + * @file ascii.h + * @brief ASCII + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,27 +22,30 @@ * If not, see . */ -/* - * ASCII - */ +#ifndef _ASCII_H_ +#define _ASCII_H_ -static int -ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ascii_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; + } + return RET_ILSEQ; } -static int -ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ascii_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x0080) { - *r = wc; - return 1; - } - return RET_ILUNI; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + return RET_ILUNI; } + +#endif /* _ASCII_H_ */ diff --git a/lib/converters/atarist.h b/lib/converters/atarist.h index 70628d44..b1490ad4 100644 --- a/lib/converters/atarist.h +++ b/lib/converters/atarist.h @@ -1,5 +1,10 @@ +/** + * @file atarist.h + * @brief Atari ST + * @copyright Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * Atari ST - */ +#ifndef _ATARIST_H_ +#define _ATARIST_H_ + +#include "reiconv_defines.h" static const unsigned short atarist_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short atarist_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af, }; -static int -atarist_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int atarist_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) atarist_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)atarist_2uni[c - 0x80]; + return 1; } static const unsigned char atarist_page00[96] = { @@ -123,35 +128,38 @@ static const unsigned char atarist_page23[24] = { 0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; -static int -atarist_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int atarist_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = atarist_page00[wc-0x00a0]; - else if (wc >= 0x0130 && wc < 0x0198) - c = atarist_page01[wc-0x0130]; - else if (wc >= 0x0390 && wc < 0x03c8) - c = atarist_page03[wc-0x0390]; - else if (wc >= 0x05d0 && wc < 0x05f0) - c = atarist_page05[wc-0x05d0]; - else if (wc == 0x2020) - c = 0xbb; - else if (wc == 0x207f) - c = 0xfc; - else if (wc == 0x2122) - c = 0xbf; - else if (wc >= 0x2208 && wc < 0x2268) - c = atarist_page22[wc-0x2208]; - else if (wc >= 0x2310 && wc < 0x2328) - c = atarist_page23[wc-0x2310]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = atarist_page00[wc - 0x00a0]; + else if (wc >= 0x0130 && wc < 0x0198) + c = atarist_page01[wc - 0x0130]; + else if (wc >= 0x0390 && wc < 0x03c8) + c = atarist_page03[wc - 0x0390]; + else if (wc >= 0x05d0 && wc < 0x05f0) + c = atarist_page05[wc - 0x05d0]; + else if (wc == 0x2020) + c = 0xbb; + else if (wc == 0x207f) + c = 0xfc; + else if (wc == 0x2122) + c = 0xbf; + else if (wc >= 0x2208 && wc < 0x2268) + c = atarist_page22[wc - 0x2208]; + else if (wc >= 0x2310 && wc < 0x2328) + c = atarist_page23[wc - 0x2310]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ATARIST_H_ */ diff --git a/lib/converters/big5.h b/lib/converters/big5.h index b08ede09..27b357b8 100644 --- a/lib/converters/big5.h +++ b/lib/converters/big5.h @@ -1,5 +1,10 @@ +/** + * @file big5.h + * @brief BIG5 + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * BIG5 - */ +#ifndef _BIG5_H_ +#define _BIG5_H_ -static const unsigned short big5_2uni_pagea1[6121] = { +#include "reiconv_defines.h" + +static const unsigned short big5_2uni_pagea1[6121] = +{ /* 0xa1 */ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a, 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52, @@ -842,7 +849,8 @@ static const unsigned short big5_2uni_pagea1[6121] = { 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, }; -static const unsigned short big5_2uni_pagec9[7652] = { +static const unsigned short big5_2uni_pagec9[7652] = +{ /* 0xc9 */ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e, @@ -1869,36 +1877,43 @@ static const unsigned short big5_2uni_pagec9[7652] = { 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, }; -static int -big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int big5_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - unsigned short wc = 0xfffd; - if (i < 6280) { - if (i < 6121) - wc = big5_2uni_pagea1[i]; - } else { - if (i < 13932) - wc = big5_2uni_pagec9[i-6280]; - } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + unsigned char c1 = s[0]; + if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + unsigned short wc = 0xfffd; + if (i < 6280) + { + if (i < 6121) + wc = big5_2uni_pagea1[i]; + } + else + { + if (i < 13932) + wc = big5_2uni_pagec9[i - 6280]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } -static const unsigned short big5_2charset[13703] = { +static const unsigned short big5_2charset[13703] = +{ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1, 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d, @@ -3614,14 +3629,16 @@ static const unsigned short big5_2charset[13703] = { 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e, }; -static const Summary16 big5_uni2indx_page00[16] = { +static const Summary16 big5_uni2indx_page00[16] = +{ /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 }, { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 }, }; -static const Summary16 big5_uni2indx_page02[38] = { +static const Summary16 big5_uni2indx_page02[38] = +{ /* 0x0200 */ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, @@ -3636,7 +3653,8 @@ static const Summary16 big5_uni2indx_page02[38] = { { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff }, { 101, 0xffff }, { 117, 0x0002 }, }; -static const Summary16 big5_uni2indx_page20[44] = { +static const Summary16 big5_uni2indx_page20[44] = +{ /* 0x2000 */ { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, @@ -3652,7 +3670,8 @@ static const Summary16 big5_uni2indx_page20[44] = { { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 }, }; -static const Summary16 big5_uni2indx_page24[37] = { +static const Summary16 big5_uni2indx_page24[37] = +{ /* 0x2400 */ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 }, @@ -3667,7 +3686,8 @@ static const Summary16 big5_uni2indx_page24[37] = { { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0007 }, }; -static const Summary16 big5_uni2indx_page30[62] = { +static const Summary16 big5_uni2indx_page30[62] = +{ /* 0x3000 */ { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 }, { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff }, @@ -3689,7 +3709,8 @@ static const Summary16 big5_uni2indx_page30[62] = { { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 }, { 497, 0x4010 }, { 499, 0x0026 }, }; -static const Summary16 big5_uni2indx_page4e[1307] = { +static const Summary16 big5_uni2indx_page4e[1307] = +{ /* 0x4e00 */ { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f }, { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 }, @@ -4100,11 +4121,13 @@ static const Summary16 big5_uni2indx_page4e[1307] = { { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 }, { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 }, }; -static const Summary16 big5_uni2indx_pagefa[1] = { +static const Summary16 big5_uni2indx_pagefa[1] = +{ /* 0xfa00 */ { 13563, 0x3000 }, }; -static const Summary16 big5_uni2indx_pagefe[23] = { +static const Summary16 big5_uni2indx_pagefe[23] = +{ /* 0xfe00 */ { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb }, { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 }, @@ -4115,45 +4138,50 @@ static const Summary16 big5_uni2indx_pagefe[23] = { { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 }, }; -static int -big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int big5_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0100) - summary = &big5_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x0200 && wc < 0x0460) - summary = &big5_uni2indx_page02[(wc>>4)-0x020]; - else if (wc >= 0x2000 && wc < 0x22c0) - summary = &big5_uni2indx_page20[(wc>>4)-0x200]; - else if (wc >= 0x2400 && wc < 0x2650) - summary = &big5_uni2indx_page24[(wc>>4)-0x240]; - else if (wc >= 0x3000 && wc < 0x33e0) - summary = &big5_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x4e00 && wc < 0x9fb0) - summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0xfa00 && wc < 0xfa10) - summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0]; - else if (wc >= 0xfe00 && wc < 0xff70) - summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = big5_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0100) + summary = &big5_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x0200 && wc < 0x0460) + summary = &big5_uni2indx_page02[(wc >> 4) - 0x020]; + else if (wc >= 0x2000 && wc < 0x22c0) + summary = &big5_uni2indx_page20[(wc >> 4) - 0x200]; + else if (wc >= 0x2400 && wc < 0x2650) + summary = &big5_uni2indx_page24[(wc >> 4) - 0x240]; + else if (wc >= 0x3000 && wc < 0x33e0) + summary = &big5_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x4e00 && wc < 0x9fb0) + summary = &big5_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0xfa00 && wc < 0xfa10) + summary = &big5_uni2indx_pagefa[(wc >> 4) - 0xfa0]; + else if (wc >= 0xfe00 && wc < 0xff70) + summary = &big5_uni2indx_pagefe[(wc >> 4) - 0xfe0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = big5_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _BIG5_H_ */ diff --git a/lib/converters/big5_2003.h b/lib/converters/big5_2003.h index 90332b23..5739a569 100644 --- a/lib/converters/big5_2003.h +++ b/lib/converters/big5_2003.h @@ -1,5 +1,10 @@ +/** + * @file big5_2003.h + * @brief BIG5-2003 + * @copyright Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * BIG5-2003 - */ - /* * BIG5-2003 is a slightly extended and slightly modified version of BIG5. * It is actually nearer to Microsoft CP950 than to BIG5. The differences @@ -109,7 +110,17 @@ * they were contained in a draft of it. */ -static const unsigned short big5_2003_2uni_pagea1[314] = { +#ifndef _BIG5_2003_H_ +#define _BIG5_2003_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "reiconv_defines.h" + +#include + +static const unsigned short big5_2003_2uni_pagea1[314] = +{ /* 0xa1 */ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a, 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52, @@ -154,7 +165,8 @@ static const unsigned short big5_2003_2uni_pagea1[314] = { 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, }; -static const unsigned short big5_2003_2uni_pagec6[70] = { +static const unsigned short big5_2003_2uni_pagec6[70] = +{ /* 0xc6a1 */ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, @@ -167,7 +179,8 @@ static const unsigned short big5_2003_2uni_pagec6[70] = { 0x3006, 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, }; -static const unsigned short big5_2003_2uni_pagef9[41] = { +static const unsigned short big5_2003_2uni_pagef9[41] = +{ /* 0xf9d6 */ 0x7881, 0x92b9, 0x88cf, 0x58bb, 0x6052, 0x7ca7, 0x5afa, /* 0xf9dd */ @@ -179,297 +192,771 @@ static const unsigned short big5_2003_2uni_pagef9[41] = { 0x2593, }; -static int -big5_2003_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int big5_2003_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5 extended) */ - if (c >= 0x81 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5 extended) */ + if (c >= 0x81 && c < 0xff) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - if (c >= 0xa1) { - if (c < 0xa3) { - unsigned int i = 157 * (c - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - unsigned short wc = big5_2003_2uni_pagea1[i]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { - if (!(c == 0xc2 && c2 == 0x55)) { - int ret = big5_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; - if (c == 0xa3) { - if (c2 >= 0xc0 && c2 <= 0xe1) { - *pwc = (c2 == 0xe1 ? 0x20ac : c2 == 0xe0 ? 0x2421 : 0x2340 + c2); - return 2; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + if (c >= 0xa1) + { + if (c < 0xa3) + { + unsigned int i = 157 * (c - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + unsigned short wc = big5_2003_2uni_pagea1[i]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) + { + if (!(c == 0xc2 && c2 == 0x55)) + { + int ret = big5_mbtowc(conv, pwc, s, 2); + if (ret != RET_ILSEQ) + return ret; + if (c == 0xa3) + { + if (c2 >= 0xc0 && c2 <= 0xe1) + { + *pwc = (c2 == 0xe1 ? 0x20ac : c2 == 0xe0 ? 0x2421 : 0x2340 + c2); + return 2; + } + } + else if (c == 0xf9) + { + if (c2 >= 0xd6) + { + *pwc = big5_2003_2uni_pagef9[c2 - 0xd6]; + return 2; + } + } + else if (c >= 0xfa) + { + *pwc = 0xe000 + 157 * (c - 0xfa) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + return 2; + } + } + else + { + /* c == 0xc2 && c2 == 0x55. */ + *pwc = 0x5f5e; + return 2; + } + } + else + { + /* (c == 0xc6 && c2 >= 0xa1) || c == 0xc7. */ + unsigned int i = 157 * (c - 0xc6) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + if (i < 133) + { + /* 63 <= i < 133. */ + unsigned short wc = big5_2003_2uni_pagec6[i - 63]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + else if (i < 216) + { + /* 133 <= i < 216. Hiragana. */ + *pwc = 0x3041 - 133 + i; + return 2; + } + else if (i < 302) + { + /* 216 <= i < 302. Katakana. */ + *pwc = 0x30a1 - 216 + i; + return 2; + } + } } - } else if (c == 0xf9) { - if (c2 >= 0xd6) { - *pwc = big5_2003_2uni_pagef9[c2-0xd6]; - return 2; + else + { + /* 0x81 <= c < 0xa1. */ + *pwc = (c >= 0x8e ? 0xdb18 : 0xeeb8) + 157 * (c - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + return 2; } - } else if (c >= 0xfa) { - *pwc = 0xe000 + 157 * (c - 0xfa) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - return 2; - } - } else { - /* c == 0xc2 && c2 == 0x55. */ - *pwc = 0x5f5e; - return 2; - } - } else { - /* (c == 0xc6 && c2 >= 0xa1) || c == 0xc7. */ - unsigned int i = 157 * (c - 0xc6) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - if (i < 133) { - /* 63 <= i < 133. */ - unsigned short wc = big5_2003_2uni_pagec6[i-63]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } else if (i < 216) { - /* 133 <= i < 216. Hiragana. */ - *pwc = 0x3041 - 133 + i; - return 2; - } else if (i < 302) { - /* 216 <= i < 302. Katakana. */ - *pwc = 0x30a1 - 216 + i; - return 2; } - } - } else { - /* 0x81 <= c < 0xa1. */ - *pwc = (c >= 0x8e ? 0xdb18 : 0xeeb8) + 157 * (c - 0x81) - + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - return 2; - } - } + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned char big5_2003_2charset_page25[29] = { - /* 0x2550 */ - 0xf9, 0xf8, 0xe6, 0xef, 0xdd, 0xe8, 0xf1, 0xdf, - 0xec, 0xf5, 0xe3, 0xee, 0xf7, 0xe5, 0xe9, 0xf2, - 0xe0, 0xeb, 0xf4, 0xe2, 0xe7, 0xf0, 0xde, 0xed, - 0xf6, 0xe4, 0xea, 0xf3, 0xe1, + /* 0x2550 */ + 0xf9, 0xf8, 0xe6, 0xef, 0xdd, 0xe8, 0xf1, 0xdf, 0xec, 0xf5, 0xe3, 0xee, 0xf7, 0xe5, 0xe9, + 0xf2, 0xe0, 0xeb, 0xf4, 0xe2, 0xe7, 0xf0, 0xde, 0xed, 0xf6, 0xe4, 0xea, 0xf3, 0xe1, }; -static int -big5_2003_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int big5_2003_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (BIG5 extended) */ - switch (wc >> 8) { + /* Code set 1 (BIG5 extended) */ + switch (wc >> 8) + { case 0x00: - if (wc == 0x00a8) { buf[0] = 0xc6; buf[1] = 0xd8; ret = 2; break; } - if (wc == 0x00a2 || wc == 0x00a3 || wc == 0x00a5) - return RET_ILUNI; - break; + if (wc == 0x00a8) + { + buf[0] = 0xc6; + buf[1] = 0xd8; + ret = 2; + break; + } + if (wc == 0x00a2 || wc == 0x00a3 || wc == 0x00a5) + return RET_ILUNI; + break; case 0x02: - if (wc == 0x02cd) { buf[0] = 0xa1; buf[1] = 0xc5; ret = 2; break; } - break; + if (wc == 0x02cd) + { + buf[0] = 0xa1; + buf[1] = 0xc5; + ret = 2; + break; + } + break; case 0x04: - return RET_ILUNI; - case 0x20: - if (wc == 0x2015) { buf[0] = 0xa1; buf[1] = 0x56; ret = 2; break; } - if (wc == 0x2027) { buf[0] = 0xa1; buf[1] = 0x45; ret = 2; break; } - if (wc == 0x20ac) { buf[0] = 0xa3; buf[1] = 0xe1; ret = 2; break; } - if (wc == 0x2013 || wc == 0x2022) return RET_ILUNI; - break; + case 0x20: + if (wc == 0x2015) + { + buf[0] = 0xa1; + buf[1] = 0x56; + ret = 2; + break; + } + if (wc == 0x2027) + { + buf[0] = 0xa1; + buf[1] = 0x45; + ret = 2; + break; + } + if (wc == 0x20ac) + { + buf[0] = 0xa3; + buf[1] = 0xe1; + ret = 2; + break; + } + if (wc == 0x2013 || wc == 0x2022) + return RET_ILUNI; + break; case 0x21: - if (wc >= 0x2170 && wc <= 0x2179) { - buf[0] = 0xc6; buf[1] = wc - 0x20bb; ret = 2; + if (wc >= 0x2170 && wc <= 0x2179) + { + buf[0] = 0xc6; + buf[1] = wc - 0x20bb; + ret = 2; + break; + } break; - } - break; case 0x22: - if (wc == 0x2215) { buf[0] = 0xa2; buf[1] = 0x41; ret = 2; break; } - if (wc == 0x2295) { buf[0] = 0xa1; buf[1] = 0xf2; ret = 2; break; } - if (wc == 0x2299) { buf[0] = 0xa1; buf[1] = 0xf3; ret = 2; break; } - if (wc == 0x223c) - return RET_ILUNI; - break; - case 0x24: - if (wc <= 0x241f) { buf[0] = 0xa3; buf[1] = wc - 0x2340; ret = 2; break; } - if (wc == 0x2421) { buf[0] = 0xa3; buf[1] = 0xe0; ret = 2; break; } - if (wc >= 0x2460 && wc <= 0x2469) { - buf[0] = 0xc6; buf[1] = wc - 0x23bf; ret = 2; + if (wc == 0x2215) + { + buf[0] = 0xa2; + buf[1] = 0x41; + ret = 2; + break; + } + if (wc == 0x2295) + { + buf[0] = 0xa1; + buf[1] = 0xf2; + ret = 2; + break; + } + if (wc == 0x2299) + { + buf[0] = 0xa1; + buf[1] = 0xf3; + ret = 2; + break; + } + if (wc == 0x223c) + return RET_ILUNI; break; - } - if (wc >= 0x2474 && wc <= 0x247d) { - buf[0] = 0xc6; buf[1] = wc - 0x23c9; ret = 2; + case 0x24: + if (wc <= 0x241f) + { + buf[0] = 0xa3; + buf[1] = wc - 0x2340; + ret = 2; + break; + } + if (wc == 0x2421) + { + buf[0] = 0xa3; + buf[1] = 0xe0; + ret = 2; + break; + } + if (wc >= 0x2460 && wc <= 0x2469) + { + buf[0] = 0xc6; + buf[1] = wc - 0x23bf; + ret = 2; + break; + } + if (wc >= 0x2474 && wc <= 0x247d) + { + buf[0] = 0xc6; + buf[1] = wc - 0x23c9; + ret = 2; + break; + } break; - } - break; case 0x25: - if (wc == 0x2501) { buf[0] = 0xa2; buf[1] = 0xa4; ret = 2; break; } - if (wc == 0x251d) { buf[0] = 0xa2; buf[1] = 0xa5; ret = 2; break; } - if (wc == 0x2525) { buf[0] = 0xa2; buf[1] = 0xa7; ret = 2; break; } - if (wc == 0x253f) { buf[0] = 0xa2; buf[1] = 0xa6; ret = 2; break; } - if (wc >= 0x2550 && wc <= 0x256c) { - buf[0] = 0xf9; buf[1] = big5_2003_2charset_page25[wc-0x2550]; ret = 2; + if (wc == 0x2501) + { + buf[0] = 0xa2; + buf[1] = 0xa4; + ret = 2; + break; + } + if (wc == 0x251d) + { + buf[0] = 0xa2; + buf[1] = 0xa5; + ret = 2; + break; + } + if (wc == 0x2525) + { + buf[0] = 0xa2; + buf[1] = 0xa7; + ret = 2; + break; + } + if (wc == 0x253f) + { + buf[0] = 0xa2; + buf[1] = 0xa6; + ret = 2; + break; + } + if (wc >= 0x2550 && wc <= 0x256c) + { + buf[0] = 0xf9; + buf[1] = big5_2003_2charset_page25[wc - 0x2550]; + ret = 2; + break; + } + if (wc == 0x2574) + { + buf[0] = 0xa1; + buf[1] = 0x5a; + ret = 2; + break; + } + if (wc == 0x2593) + { + buf[0] = 0xf9; + buf[1] = 0xfe; + ret = 2; + break; + } break; - } - if (wc == 0x2574) { buf[0] = 0xa1; buf[1] = 0x5a; ret = 2; break; } - if (wc == 0x2593) { buf[0] = 0xf9; buf[1] = 0xfe; ret = 2; break; } - break; case 0x26: - if (wc == 0x2609 || wc == 0x2641) - return RET_ILUNI; - break; - case 0x27: - if (wc == 0x273d) { buf[0] = 0xc6; buf[1] = 0xe6; ret = 2; break; } - break; - case 0x2f: - if (wc == 0x2f02) { buf[0] = 0xc6; buf[1] = 0xbf; ret = 2; break; } - if (wc == 0x2f03) { buf[0] = 0xc6; buf[1] = 0xc0; ret = 2; break; } - if (wc == 0x2f05) { buf[0] = 0xc6; buf[1] = 0xc1; ret = 2; break; } - if (wc == 0x2f07) { buf[0] = 0xc6; buf[1] = 0xc2; ret = 2; break; } - if (wc == 0x2f0c) { buf[0] = 0xc6; buf[1] = 0xc3; ret = 2; break; } - if (wc == 0x2f0d) { buf[0] = 0xc6; buf[1] = 0xc4; ret = 2; break; } - if (wc == 0x2f0e) { buf[0] = 0xc6; buf[1] = 0xc5; ret = 2; break; } - if (wc == 0x2f13) { buf[0] = 0xc6; buf[1] = 0xc6; ret = 2; break; } - if (wc == 0x2f16) { buf[0] = 0xc6; buf[1] = 0xc7; ret = 2; break; } - if (wc == 0x2f19) { buf[0] = 0xc6; buf[1] = 0xc8; ret = 2; break; } - if (wc == 0x2f1b) { buf[0] = 0xc6; buf[1] = 0xc9; ret = 2; break; } - if (wc == 0x2f22) { buf[0] = 0xc6; buf[1] = 0xca; ret = 2; break; } - if (wc == 0x2f27) { buf[0] = 0xc6; buf[1] = 0xcb; ret = 2; break; } - if (wc == 0x2f2e) { buf[0] = 0xc6; buf[1] = 0xcc; ret = 2; break; } - if (wc == 0x2f33) { buf[0] = 0xc6; buf[1] = 0xcd; ret = 2; break; } - if (wc == 0x2f34) { buf[0] = 0xc6; buf[1] = 0xce; ret = 2; break; } - if (wc == 0x2f35) { buf[0] = 0xc6; buf[1] = 0xcf; ret = 2; break; } - if (wc == 0x2f39) { buf[0] = 0xc6; buf[1] = 0xd0; ret = 2; break; } - if (wc == 0x2f3a) { buf[0] = 0xc6; buf[1] = 0xd1; ret = 2; break; } - if (wc == 0x2f41) { buf[0] = 0xc6; buf[1] = 0xd2; ret = 2; break; } - if (wc == 0x2f46) { buf[0] = 0xc6; buf[1] = 0xd3; ret = 2; break; } - if (wc == 0x2f67) { buf[0] = 0xc6; buf[1] = 0xd4; ret = 2; break; } - if (wc == 0x2f68) { buf[0] = 0xc6; buf[1] = 0xd5; ret = 2; break; } - if (wc == 0x2fa1) { buf[0] = 0xc6; buf[1] = 0xd6; ret = 2; break; } - if (wc == 0x2faa) { buf[0] = 0xc6; buf[1] = 0xd7; ret = 2; break; } - break; - case 0x30: - if (wc >= 0x3005 && wc <= 0x3007) { - buf[0] = 0xc6; buf[1] = wc - 0x2f25; ret = 2; + if (wc == 0x2609 || wc == 0x2641) + return RET_ILUNI; break; - } - if (wc >= 0x3038 && wc <= 0x303a) { - buf[0] = 0xa2; buf[1] = wc - 0x2f6c; ret = 2; + case 0x27: + if (wc == 0x273d) + { + buf[0] = 0xc6; + buf[1] = 0xe6; + ret = 2; + break; + } break; - } - if (wc >= 0x3041 && wc <= 0x3093) { - if (wc < 0x3059) { - buf[0] = 0xc6; buf[1] = wc - 0x2f5a; - } else { - buf[0] = 0xc7; buf[1] = wc - 0x3019; - } - ret = 2; + case 0x2f: + if (wc == 0x2f02) + { + buf[0] = 0xc6; + buf[1] = 0xbf; + ret = 2; + break; + } + if (wc == 0x2f03) + { + buf[0] = 0xc6; + buf[1] = 0xc0; + ret = 2; + break; + } + if (wc == 0x2f05) + { + buf[0] = 0xc6; + buf[1] = 0xc1; + ret = 2; + break; + } + if (wc == 0x2f07) + { + buf[0] = 0xc6; + buf[1] = 0xc2; + ret = 2; + break; + } + if (wc == 0x2f0c) + { + buf[0] = 0xc6; + buf[1] = 0xc3; + ret = 2; + break; + } + if (wc == 0x2f0d) + { + buf[0] = 0xc6; + buf[1] = 0xc4; + ret = 2; + break; + } + if (wc == 0x2f0e) + { + buf[0] = 0xc6; + buf[1] = 0xc5; + ret = 2; + break; + } + if (wc == 0x2f13) + { + buf[0] = 0xc6; + buf[1] = 0xc6; + ret = 2; + break; + } + if (wc == 0x2f16) + { + buf[0] = 0xc6; + buf[1] = 0xc7; + ret = 2; + break; + } + if (wc == 0x2f19) + { + buf[0] = 0xc6; + buf[1] = 0xc8; + ret = 2; + break; + } + if (wc == 0x2f1b) + { + buf[0] = 0xc6; + buf[1] = 0xc9; + ret = 2; + break; + } + if (wc == 0x2f22) + { + buf[0] = 0xc6; + buf[1] = 0xca; + ret = 2; + break; + } + if (wc == 0x2f27) + { + buf[0] = 0xc6; + buf[1] = 0xcb; + ret = 2; + break; + } + if (wc == 0x2f2e) + { + buf[0] = 0xc6; + buf[1] = 0xcc; + ret = 2; + break; + } + if (wc == 0x2f33) + { + buf[0] = 0xc6; + buf[1] = 0xcd; + ret = 2; + break; + } + if (wc == 0x2f34) + { + buf[0] = 0xc6; + buf[1] = 0xce; + ret = 2; + break; + } + if (wc == 0x2f35) + { + buf[0] = 0xc6; + buf[1] = 0xcf; + ret = 2; + break; + } + if (wc == 0x2f39) + { + buf[0] = 0xc6; + buf[1] = 0xd0; + ret = 2; + break; + } + if (wc == 0x2f3a) + { + buf[0] = 0xc6; + buf[1] = 0xd1; + ret = 2; + break; + } + if (wc == 0x2f41) + { + buf[0] = 0xc6; + buf[1] = 0xd2; + ret = 2; + break; + } + if (wc == 0x2f46) + { + buf[0] = 0xc6; + buf[1] = 0xd3; + ret = 2; + break; + } + if (wc == 0x2f67) + { + buf[0] = 0xc6; + buf[1] = 0xd4; + ret = 2; + break; + } + if (wc == 0x2f68) + { + buf[0] = 0xc6; + buf[1] = 0xd5; + ret = 2; + break; + } + if (wc == 0x2fa1) + { + buf[0] = 0xc6; + buf[1] = 0xd6; + ret = 2; + break; + } + if (wc == 0x2faa) + { + buf[0] = 0xc6; + buf[1] = 0xd7; + ret = 2; + break; + } break; - } - if (wc == 0x309d) { buf[0] = 0xc6; buf[1] = 0xdc; ret = 2; break; } - if (wc == 0x309e) { buf[0] = 0xc6; buf[1] = 0xdd; ret = 2; break; } - if (wc >= 0x30a1 && wc <= 0x30f6) { - buf[0] = 0xc7; buf[1] = wc - (wc < 0x30a5 ? 0x3026 : 0x3004); ret = 2; + case 0x30: + if (wc >= 0x3005 && wc <= 0x3007) + { + buf[0] = 0xc6; + buf[1] = wc - 0x2f25; + ret = 2; + break; + } + if (wc >= 0x3038 && wc <= 0x303a) + { + buf[0] = 0xa2; + buf[1] = wc - 0x2f6c; + ret = 2; + break; + } + if (wc >= 0x3041 && wc <= 0x3093) + { + if (wc < 0x3059) + { + buf[0] = 0xc6; + buf[1] = wc - 0x2f5a; + } + else + { + buf[0] = 0xc7; + buf[1] = wc - 0x3019; + } + ret = 2; + break; + } + if (wc == 0x309d) + { + buf[0] = 0xc6; + buf[1] = 0xdc; + ret = 2; + break; + } + if (wc == 0x309e) + { + buf[0] = 0xc6; + buf[1] = 0xdd; + ret = 2; + break; + } + if (wc >= 0x30a1 && wc <= 0x30f6) + { + buf[0] = 0xc7; + buf[1] = wc - (wc < 0x30a5 ? 0x3026 : 0x3004); + ret = 2; + break; + } + if (wc == 0x30fc) + { + buf[0] = 0xc6; + buf[1] = 0xe3; + ret = 2; + break; + } + if (wc == 0x30fd) + { + buf[0] = 0xc6; + buf[1] = 0xda; + ret = 2; + break; + } + if (wc == 0x30fe) + { + buf[0] = 0xc6; + buf[1] = 0xdb; + ret = 2; + break; + } break; - } - if (wc == 0x30fc) { buf[0] = 0xc6; buf[1] = 0xe3; ret = 2; break; } - if (wc == 0x30fd) { buf[0] = 0xc6; buf[1] = 0xda; ret = 2; break; } - if (wc == 0x30fe) { buf[0] = 0xc6; buf[1] = 0xdb; ret = 2; break; } - break; case 0x53: - if (wc == 0x5344) - return RET_ILUNI; - break; + if (wc == 0x5344) + return RET_ILUNI; + break; case 0x58: - if (wc == 0x58bb) { buf[0] = 0xf9; buf[1] = 0xd9; ret = 2; break; } - break; + if (wc == 0x58bb) + { + buf[0] = 0xf9; + buf[1] = 0xd9; + ret = 2; + break; + } + break; case 0x5a: - if (wc == 0x5afa) { buf[0] = 0xf9; buf[1] = 0xdc; ret = 2; break; } - break; + if (wc == 0x5afa) + { + buf[0] = 0xf9; + buf[1] = 0xdc; + ret = 2; + break; + } + break; case 0x5f: - if (wc == 0x5f5e) { buf[0] = 0xc2; buf[1] = 0x55; ret = 2; break; } - if (wc == 0x5f5d) - return RET_ILUNI; - break; + if (wc == 0x5f5e) + { + buf[0] = 0xc2; + buf[1] = 0x55; + ret = 2; + break; + } + if (wc == 0x5f5d) + return RET_ILUNI; + break; case 0x60: - if (wc == 0x6052) { buf[0] = 0xf9; buf[1] = 0xda; ret = 2; break; } - break; + if (wc == 0x6052) + { + buf[0] = 0xf9; + buf[1] = 0xda; + ret = 2; + break; + } + break; case 0x78: - if (wc == 0x7881) { buf[0] = 0xf9; buf[1] = 0xd6; ret = 2; break; } - break; + if (wc == 0x7881) + { + buf[0] = 0xf9; + buf[1] = 0xd6; + ret = 2; + break; + } + break; case 0x7c: - if (wc == 0x7ca7) { buf[0] = 0xf9; buf[1] = 0xdb; ret = 2; break; } - break; + if (wc == 0x7ca7) + { + buf[0] = 0xf9; + buf[1] = 0xdb; + ret = 2; + break; + } + break; case 0x88: - if (wc == 0x88cf) { buf[0] = 0xf9; buf[1] = 0xd8; ret = 2; break; } - break; + if (wc == 0x88cf) + { + buf[0] = 0xf9; + buf[1] = 0xd8; + ret = 2; + break; + } + break; case 0x92: - if (wc == 0x92b9) { buf[0] = 0xf9; buf[1] = 0xd7; ret = 2; break; } - break; - case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: - case 0xe6: case 0xe7: case 0xe8: case 0xe9: case 0xea: case 0xeb: - case 0xec: case 0xed: case 0xee: case 0xef: case 0xf0: case 0xf1: - case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: - { + if (wc == 0x92b9) + { + buf[0] = 0xf9; + buf[1] = 0xd7; + ret = 2; + break; + } + break; + case 0xe0: + case 0xe1: + case 0xe2: + case 0xe3: + case 0xe4: + case 0xe5: + case 0xe6: + case 0xe7: + case 0xe8: + case 0xe9: + case 0xea: + case 0xeb: + case 0xec: + case 0xed: + case 0xee: + case 0xef: + case 0xf0: + case 0xf1: + case 0xf2: + case 0xf3: + case 0xf4: + case 0xf5: + case 0xf6: { unsigned int i = wc - 0xe000; - if (i < 5809) { - unsigned int c1 = i / 157; - unsigned int c2 = i % 157; - buf[0] = c1 + (c1 < 5 ? 0xfa : c1 < 24 ? 0x89 : 0x69); - buf[1] = c2 + (c2 < 0x3f ? 0x40 : 0x62); - ret = 2; - break; - } - } - break; + if (i < 5809) + { + unsigned int c1 = i / 157; + unsigned int c2 = i % 157; + buf[0] = c1 + (c1 < 5 ? 0xfa : c1 < 24 ? 0x89 : 0x69); + buf[1] = c2 + (c2 < 0x3f ? 0x40 : 0x62); + ret = 2; + break; + } + } + break; case 0xfe: - if (wc == 0xfe51) { buf[0] = 0xa1; buf[1] = 0x4e; ret = 2; break; } - if (wc == 0xfe68) { buf[0] = 0xa2; buf[1] = 0x42; ret = 2; break; } - break; + if (wc == 0xfe51) + { + buf[0] = 0xa1; + buf[1] = 0x4e; + ret = 2; + break; + } + if (wc == 0xfe68) + { + buf[0] = 0xa2; + buf[1] = 0x42; + ret = 2; + break; + } + break; case 0xff: - if (wc == 0xff0f) { buf[0] = 0xa1; buf[1] = 0xfe; ret = 2; break; } - if (wc == 0xff3b) { buf[0] = 0xc6; buf[1] = 0xe4; ret = 2; break; } - if (wc == 0xff3c) { buf[0] = 0xa2; buf[1] = 0x40; ret = 2; break; } - if (wc == 0xff3d) { buf[0] = 0xc6; buf[1] = 0xe5; ret = 2; break; } - if (wc == 0xff3e) { buf[0] = 0xc6; buf[1] = 0xd9; ret = 2; break; } - if (wc == 0xff5e) { buf[0] = 0xa1; buf[1] = 0xe3; ret = 2; break; } - if (wc == 0xffe0) { buf[0] = 0xa2; buf[1] = 0x46; ret = 2; break; } - if (wc == 0xffe1) { buf[0] = 0xa2; buf[1] = 0x47; ret = 2; break; } - if (wc == 0xffe3) { buf[0] = 0xa1; buf[1] = 0xc3; ret = 2; break; } - if (wc == 0xffe5) { buf[0] = 0xa2; buf[1] = 0x44; ret = 2; break; } - if (wc == 0xff64) - return RET_ILUNI; - break; - } - if (ret == RET_ILUNI) - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } + if (wc == 0xff0f) + { + buf[0] = 0xa1; + buf[1] = 0xfe; + ret = 2; + break; + } + if (wc == 0xff3b) + { + buf[0] = 0xc6; + buf[1] = 0xe4; + ret = 2; + break; + } + if (wc == 0xff3c) + { + buf[0] = 0xa2; + buf[1] = 0x40; + ret = 2; + break; + } + if (wc == 0xff3d) + { + buf[0] = 0xc6; + buf[1] = 0xe5; + ret = 2; + break; + } + if (wc == 0xff3e) + { + buf[0] = 0xc6; + buf[1] = 0xd9; + ret = 2; + break; + } + if (wc == 0xff5e) + { + buf[0] = 0xa1; + buf[1] = 0xe3; + ret = 2; + break; + } + if (wc == 0xffe0) + { + buf[0] = 0xa2; + buf[1] = 0x46; + ret = 2; + break; + } + if (wc == 0xffe1) + { + buf[0] = 0xa2; + buf[1] = 0x47; + ret = 2; + break; + } + if (wc == 0xffe3) + { + buf[0] = 0xa1; + buf[1] = 0xc3; + ret = 2; + break; + } + if (wc == 0xffe5) + { + buf[0] = 0xa2; + buf[1] = 0x44; + ret = 2; + break; + } + if (wc == 0xff64) + return RET_ILUNI; + break; + } + if (ret == RET_ILUNI) + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _BIG5_2003_H_ */ diff --git a/lib/converters/big5hkscs1999.h b/lib/converters/big5hkscs1999.h index 4585da71..1d456faf 100644 --- a/lib/converters/big5hkscs1999.h +++ b/lib/converters/big5hkscs1999.h @@ -1,5 +1,10 @@ +/** + * @file big5hkscs1999.h + * @brief BIG5-HKSCS:1999 + * @copyright Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * BIG5-HKSCS:1999 - */ - /* * BIG5-HKSCS:1999 can be downloaded from * http://www.info.gov.hk/digital21/eng/hkscs/download.html @@ -42,155 +43,193 @@ * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON */ +#ifndef _BIG5HKSCS1999_H_ +#define _BIG5HKSCS1999_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "reiconv_defines.h" + +#include "flushwc.h" // IWYU pragma: keep. #include "hkscs1999.h" -#include "flushwc.h" -static int -big5hkscs1999_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int big5hkscs1999_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - ucs4_t last_wc = conv->istate; - if (last_wc) { - /* Output the buffered character. */ - conv->istate = 0; - *pwc = last_wc; - return 0; /* Don't advance the input pointer. */ - } else { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5 extended) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { - int ret = big5_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; - } - } - } - } + ucs4_t last_wc = conv->istate; + if (last_wc) { - int ret = hkscs1999_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; + /* Output the buffered character. */ + conv->istate = 0; + *pwc = last_wc; + return 0; /* Don't advance the input pointer. */ } - if (c == 0x88) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { - /* It's a composed character. */ - ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ - ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ - /* We cannot output two Unicode characters at once. So, - output the first character and buffer the second one. */ - *pwc = wc1; - conv->istate = wc2; - return 2; + else + { + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5 extended) */ + if (c >= 0xa1 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) + { + int ret = big5_mbtowc(conv, pwc, s, 2); + if (ret != RET_ILSEQ) + return ret; + } + } + } + } + { + int ret = hkscs1999_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + if (c == 0x88) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) + { + /* It's a composed character. */ + ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ + ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ + /* We cannot output two Unicode characters at once. So, + output the first character and buffer the second one. */ + *pwc = wc1; + conv->istate = wc2; + return 2; + } + } } - } + return RET_ILSEQ; } - return RET_ILSEQ; - } } #define big5hkscs1999_flushwc normal_flushwc -static int -big5hkscs1999_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int big5hkscs1999_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int count = 0; - unsigned char last = conv->ostate; + int count = 0; + unsigned char last = conv->ostate; - if (last) { - /* last is = 0x66 or = 0xa7. */ - if (wc == 0x0304 || wc == 0x030c) { - /* Output the combined character. */ - if (n >= 2) { + if (last) + { + /* last is = 0x66 or = 0xa7. */ + if (wc == 0x0304 || wc == 0x030c) + { + /* Output the combined character. */ + if (n >= 2) + { + r[0] = 0x88; + r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ + conv->ostate = 0; + return 2; + } + else + return RET_TOOSMALL; + } + + /* Output the buffered character. */ + if (n < 2) + return RET_TOOSMALL; r[0] = 0x88; - r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ - conv->ostate = 0; - return 2; - } else - return RET_TOOSMALL; + r[1] = last; + r += 2; + count = 2; } - /* Output the buffered character. */ - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - r += 2; - count = 2; - } - - /* Code set 0 (ASCII) */ - if (wc < 0x0080) { - /* Plain ASCII character. */ - if (n > count) { - r[0] = (unsigned char) wc; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else { - unsigned char buf[2]; - int ret; - - /* Code set 1 (BIG5 extended) */ - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } + /* Code set 0 (ASCII) */ + if (wc < 0x0080) + { + /* Plain ASCII character. */ + if (n > count) + { + r[0] = (unsigned char)wc; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; } - ret = hkscs1999_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if ((wc & ~0x0020) == 0x00ca) { - /* A possible first character of a multi-character sequence. We have to - buffer it. */ - if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); - conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ - return count+0; - } - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + else + { + unsigned char buf[2]; + int ret; + + /* Code set 1 (BIG5 extended) */ + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) + { + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + } + ret = hkscs1999_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if ((wc & ~0x0020) == 0x00ca) + { + /* A possible first character of a multi-character sequence. We have to + buffer it. */ + if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) + abort(); + conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ + return count + 0; + } + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } - return RET_ILUNI; - } } -static int -big5hkscs1999_reset (conv_t conv, unsigned char *r, size_t n) +static int big5hkscs1999_reset(conv_t conv, unsigned char *r, size_t n) { - unsigned char last = conv->ostate; + unsigned char last = conv->ostate; - if (last) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + if (last) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x88; + r[1] = last; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _BIG5HKSCS1999_H_ */ diff --git a/lib/converters/big5hkscs2001.h b/lib/converters/big5hkscs2001.h index 2d105447..c6f2bf93 100644 --- a/lib/converters/big5hkscs2001.h +++ b/lib/converters/big5hkscs2001.h @@ -1,5 +1,10 @@ +/** + * @file big5hkscs2001.h + * @brief BIG5-HKSCS:2001 + * @copyright Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * BIG5-HKSCS:2001 - */ - /* * BIG5-HKSCS:2001 can be downloaded from * http://www.info.gov.hk/digital21/eng/hkscs/download.html @@ -44,171 +45,213 @@ * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON */ +#ifndef _BIG5HKSCS2001_H_ +#define _BIG5HKSCS2001_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "converters/hkscs1999.h" +#include "reiconv_defines.h" +#include "flushwc.h" // IWYU pragma: keep #include "hkscs2001.h" -#include "flushwc.h" -static int -big5hkscs2001_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int big5hkscs2001_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - ucs4_t last_wc = conv->istate; - if (last_wc) { - /* Output the buffered character. */ - conv->istate = 0; - *pwc = last_wc; - return 0; /* Don't advance the input pointer. */ - } else { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5 extended) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { - int ret = big5_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; - } - } - } - } + ucs4_t last_wc = conv->istate; + if (last_wc) { - int ret = hkscs1999_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; + /* Output the buffered character. */ + conv->istate = 0; + *pwc = last_wc; + return 0; /* Don't advance the input pointer. */ } + else { - int ret = hkscs2001_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } - if (c == 0x88) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { - /* It's a composed character. */ - ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ - ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ - /* We cannot output two Unicode characters at once. So, - output the first character and buffer the second one. */ - *pwc = wc1; - conv->istate = wc2; - return 2; + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5 extended) */ + if (c >= 0xa1 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) + { + int ret = big5_mbtowc(conv, pwc, s, 2); + if (ret != RET_ILSEQ) + return ret; + } + } + } } - } + { + int ret = hkscs1999_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + { + int ret = hkscs2001_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + if (c == 0x88) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) + { + /* It's a composed character. */ + ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ + ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ + /* We cannot output two Unicode characters at once. So, + output the first character and buffer the second one. */ + *pwc = wc1; + conv->istate = wc2; + return 2; + } + } + } + return RET_ILSEQ; } - return RET_ILSEQ; - } } #define big5hkscs2001_flushwc normal_flushwc -static int -big5hkscs2001_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int big5hkscs2001_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int count = 0; - unsigned char last = conv->ostate; + int count = 0; + unsigned char last = conv->ostate; + + if (last) + { + /* last is = 0x66 or = 0xa7. */ + if (wc == 0x0304 || wc == 0x030c) + { + /* Output the combined character. */ + if (n >= 2) + { + r[0] = 0x88; + r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ + conv->ostate = 0; + return 2; + } + else + return RET_TOOSMALL; + } - if (last) { - /* last is = 0x66 or = 0xa7. */ - if (wc == 0x0304 || wc == 0x030c) { - /* Output the combined character. */ - if (n >= 2) { + /* Output the buffered character. */ + if (n < 2) + return RET_TOOSMALL; r[0] = 0x88; - r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ - conv->ostate = 0; - return 2; - } else - return RET_TOOSMALL; + r[1] = last; + r += 2; + count = 2; } - /* Output the buffered character. */ - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - r += 2; - count = 2; - } - - /* Code set 0 (ASCII) */ - if (wc < 0x0080) { - /* Plain ASCII character. */ - if (n > count) { - r[0] = (unsigned char) wc; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else { - unsigned char buf[2]; - int ret; - - /* Code set 1 (BIG5 extended) */ - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } - } - ret = hkscs1999_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if ((wc & ~0x0020) == 0x00ca) { - /* A possible first character of a multi-character sequence. We have to - buffer it. */ - if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); - conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ - return count+0; - } - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + /* Code set 0 (ASCII) */ + if (wc < 0x0080) + { + /* Plain ASCII character. */ + if (n > count) + { + r[0] = (unsigned char)wc; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; } - ret = hkscs2001_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + else + { + unsigned char buf[2]; + int ret; + + /* Code set 1 (BIG5 extended) */ + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) + { + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + } + ret = hkscs1999_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if ((wc & ~0x0020) == 0x00ca) + { + /* A possible first character of a multi-character sequence. We have to + buffer it. */ + if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) + abort(); + conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ + return count + 0; + } + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + ret = hkscs2001_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } - return RET_ILUNI; - } } -static int -big5hkscs2001_reset (conv_t conv, unsigned char *r, size_t n) +static int big5hkscs2001_reset(conv_t conv, unsigned char *r, size_t n) { - unsigned char last = conv->ostate; + unsigned char last = conv->ostate; - if (last) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + if (last) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x88; + r[1] = last; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _BIG5HKSCS2001_H_ */ diff --git a/lib/converters/big5hkscs2004.h b/lib/converters/big5hkscs2004.h index cc8bbeb5..9282126d 100644 --- a/lib/converters/big5hkscs2004.h +++ b/lib/converters/big5hkscs2004.h @@ -1,5 +1,10 @@ +/** + * @file big5hkscs2004.h + * @brief BIG5-HKSCS:2004 + * @copyright Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * BIG5-HKSCS:2004 - */ - /* * BIG5-HKSCS:2004 can be downloaded from * http://www.info.gov.hk/digital21/eng/hkscs/download.html @@ -44,187 +45,235 @@ * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON */ +#ifndef _BIG5HKSCS2004_H_ +#define _BIG5HKSCS2004_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "converters/hkscs1999.h" +#include "converters/hkscs2001.h" +#include "reiconv_defines.h" + +#include "flushwc.h" // IWYU pragma: keep. #include "hkscs2004.h" -#include "flushwc.h" -static int -big5hkscs2004_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int big5hkscs2004_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - ucs4_t last_wc = conv->istate; - if (last_wc) { - /* Output the buffered character. */ - conv->istate = 0; - *pwc = last_wc; - return 0; /* Don't advance the input pointer. */ - } else { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5 extended) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { - int ret = big5_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; - } - } - } - } + ucs4_t last_wc = conv->istate; + if (last_wc) { - int ret = hkscs1999_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; + /* Output the buffered character. */ + conv->istate = 0; + *pwc = last_wc; + return 0; /* Don't advance the input pointer. */ } + else { - int ret = hkscs2001_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } - { - int ret = hkscs2004_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } - if (c == 0x88) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { - /* It's a composed character. */ - ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ - ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ - /* We cannot output two Unicode characters at once. So, - output the first character and buffer the second one. */ - *pwc = wc1; - conv->istate = wc2; - return 2; + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5 extended) */ + if (c >= 0xa1 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) + { + int ret = big5_mbtowc(conv, pwc, s, 2); + if (ret != RET_ILSEQ) + return ret; + } + } + } } - } + { + int ret = hkscs1999_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + { + int ret = hkscs2001_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + { + int ret = hkscs2004_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + if (c == 0x88) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) + { + /* It's a composed character. */ + ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ + ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ + /* We cannot output two Unicode characters at once. So, + output the first character and buffer the second one. */ + *pwc = wc1; + conv->istate = wc2; + return 2; + } + } + } + return RET_ILSEQ; } - return RET_ILSEQ; - } } #define big5hkscs2004_flushwc normal_flushwc -static int -big5hkscs2004_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int big5hkscs2004_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int count = 0; - unsigned char last = conv->ostate; + int count = 0; + unsigned char last = conv->ostate; - if (last) { - /* last is = 0x66 or = 0xa7. */ - if (wc == 0x0304 || wc == 0x030c) { - /* Output the combined character. */ - if (n >= 2) { + if (last) + { + /* last is = 0x66 or = 0xa7. */ + if (wc == 0x0304 || wc == 0x030c) + { + /* Output the combined character. */ + if (n >= 2) + { + r[0] = 0x88; + r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ + conv->ostate = 0; + return 2; + } + else + return RET_TOOSMALL; + } + + /* Output the buffered character. */ + if (n < 2) + return RET_TOOSMALL; r[0] = 0x88; - r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ - conv->ostate = 0; - return 2; - } else - return RET_TOOSMALL; + r[1] = last; + r += 2; + count = 2; } - /* Output the buffered character. */ - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - r += 2; - count = 2; - } - - /* Code set 0 (ASCII) */ - if (wc < 0x0080) { - /* Plain ASCII character. */ - if (n > count) { - r[0] = (unsigned char) wc; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else { - unsigned char buf[2]; - int ret; - - /* Code set 1 (BIG5 extended) */ - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } - } - ret = hkscs1999_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if ((wc & ~0x0020) == 0x00ca) { - /* A possible first character of a multi-character sequence. We have to - buffer it. */ - if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); - conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ - return count+0; - } - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } - ret = hkscs2001_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + /* Code set 0 (ASCII) */ + if (wc < 0x0080) + { + /* Plain ASCII character. */ + if (n > count) + { + r[0] = (unsigned char)wc; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; } - ret = hkscs2004_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + else + { + unsigned char buf[2]; + int ret; + + /* Code set 1 (BIG5 extended) */ + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) + { + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + } + ret = hkscs1999_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if ((wc & ~0x0020) == 0x00ca) + { + /* A possible first character of a multi-character sequence. We have to + buffer it. */ + if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) + abort(); + conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ + return count + 0; + } + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + ret = hkscs2001_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + ret = hkscs2004_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } - return RET_ILUNI; - } } -static int -big5hkscs2004_reset (conv_t conv, unsigned char *r, size_t n) +static int big5hkscs2004_reset(conv_t conv, unsigned char *r, size_t n) { - unsigned char last = conv->ostate; + unsigned char last = conv->ostate; - if (last) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + if (last) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x88; + r[1] = last; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _BIG5HKSCS2004_H_ */ diff --git a/lib/converters/big5hkscs2008.h b/lib/converters/big5hkscs2008.h index ae84c68d..6cd7aa59 100644 --- a/lib/converters/big5hkscs2008.h +++ b/lib/converters/big5hkscs2008.h @@ -1,5 +1,10 @@ +/** + * @file big5hkscs2008.h + * @brief BIG5-HKSCS:2008 + * @copyright Copyright (C) 1999-2002, 2006, 2010 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2006, 2010 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * BIG5-HKSCS:2008 - */ - /* * BIG5-HKSCS:2008 can be downloaded from * http://www.ogcio.gov.hk/ccli/eng/hkscs/download.html @@ -44,203 +45,255 @@ * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON */ +#ifndef _BIG5HKSCS2008_H_ +#define _BIG5HKSCS2008_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "converters/hkscs1999.h" +#include "converters/hkscs2001.h" +#include "converters/hkscs2004.h" +#include "flushwc.h" // IWYU pragma: keep #include "hkscs2008.h" -#include "flushwc.h" +#include "reiconv_defines.h" + +#include -static int -big5hkscs2008_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int big5hkscs2008_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - ucs4_t last_wc = conv->istate; - if (last_wc) { - /* Output the buffered character. */ - conv->istate = 0; - *pwc = last_wc; - return 0; /* Don't advance the input pointer. */ - } else { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5 extended) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { - int ret = big5_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; - } - } - } - } - { - int ret = hkscs1999_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } + ucs4_t last_wc = conv->istate; + if (last_wc) { - int ret = hkscs2001_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; + /* Output the buffered character. */ + conv->istate = 0; + *pwc = last_wc; + return 0; /* Don't advance the input pointer. */ } + else { - int ret = hkscs2004_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } - { - int ret = hkscs2008_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } - if (c == 0x88) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { - /* It's a composed character. */ - ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ - ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ - /* We cannot output two Unicode characters at once. So, - output the first character and buffer the second one. */ - *pwc = wc1; - conv->istate = wc2; - return 2; + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5 extended) */ + if (c >= 0xa1 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) + { + int ret = big5_mbtowc(conv, pwc, s, 2); + if (ret != RET_ILSEQ) + return ret; + } + } + } + } + { + int ret = hkscs1999_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + { + int ret = hkscs2001_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + { + int ret = hkscs2004_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + { + int ret = hkscs2008_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + } + if (c == 0x88) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) + { + /* It's a composed character. */ + ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ + ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ + /* We cannot output two Unicode characters at once. So, + output the first character and buffer the second one. */ + *pwc = wc1; + conv->istate = wc2; + return 2; + } + } } - } + return RET_ILSEQ; } - return RET_ILSEQ; - } } #define big5hkscs2008_flushwc normal_flushwc -static int -big5hkscs2008_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int big5hkscs2008_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int count = 0; - unsigned char last = conv->ostate; + int count = 0; + unsigned char last = conv->ostate; - if (last) { - /* last is = 0x66 or = 0xa7. */ - if (wc == 0x0304 || wc == 0x030c) { - /* Output the combined character. */ - if (n >= 2) { + if (last) + { + /* last is = 0x66 or = 0xa7. */ + if (wc == 0x0304 || wc == 0x030c) + { + /* Output the combined character. */ + if (n >= 2) + { + r[0] = 0x88; + r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ + conv->ostate = 0; + return 2; + } + else + return RET_TOOSMALL; + } + + /* Output the buffered character. */ + if (n < 2) + return RET_TOOSMALL; r[0] = 0x88; - r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ - conv->ostate = 0; - return 2; - } else - return RET_TOOSMALL; + r[1] = last; + r += 2; + count = 2; } - /* Output the buffered character. */ - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - r += 2; - count = 2; - } - - /* Code set 0 (ASCII) */ - if (wc < 0x0080) { - /* Plain ASCII character. */ - if (n > count) { - r[0] = (unsigned char) wc; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else { - unsigned char buf[2]; - int ret; - - /* Code set 1 (BIG5 extended) */ - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } - } - ret = hkscs1999_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if ((wc & ~0x0020) == 0x00ca) { - /* A possible first character of a multi-character sequence. We have to - buffer it. */ - if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); - conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ - return count+0; - } - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } - ret = hkscs2001_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } - ret = hkscs2004_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + /* Code set 0 (ASCII) */ + if (wc < 0x0080) + { + /* Plain ASCII character. */ + if (n > count) + { + r[0] = (unsigned char)wc; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; } - ret = hkscs2008_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n >= count+2) { - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + else + { + unsigned char buf[2]; + int ret; + + /* Code set 1 (BIG5 extended) */ + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) + { + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + } + ret = hkscs1999_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if ((wc & ~0x0020) == 0x00ca) + { + /* A possible first character of a multi-character sequence. We have to + buffer it. */ + if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) + abort(); + conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ + return count + 0; + } + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + ret = hkscs2001_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + ret = hkscs2004_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + ret = hkscs2008_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n >= count + 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } - return RET_ILUNI; - } } -static int -big5hkscs2008_reset (conv_t conv, unsigned char *r, size_t n) +static int big5hkscs2008_reset(conv_t conv, unsigned char *r, size_t n) { - unsigned char last = conv->ostate; + unsigned char last = conv->ostate; - if (last) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x88; - r[1] = last; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + if (last) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x88; + r[1] = last; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _BIG5HKSCS2008_H_ */ diff --git a/lib/converters/c99.h b/lib/converters/c99.h index df1c6bac..673d1436 100644 --- a/lib/converters/c99.h +++ b/lib/converters/c99.h @@ -1,5 +1,10 @@ +/** + * @file c99.h + * @brief C99 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,107 +23,128 @@ */ /* - * C99 * This is ASCII with \uXXXX and \UXXXXXXXX escape sequences, denoting Unicode * characters. See ISO/IEC 9899:1999, section 6.4.3. * The treatment of control characters in the range U+0080..U+009F is not * specified; we pass them through unmodified. */ -static int -c99_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#ifndef _C99_H_ +#define _C99_H_ + +#include "reiconv_defines.h" + +static int c99_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c; - ucs4_t wc; - int i; + unsigned char c; + ucs4_t wc; + int i; - c = s[0]; - if (c < 0xa0) { - if (c != '\\') { - *pwc = c; - return 1; - } - if (n < 2) - return RET_TOOFEW(0); - c = s[1]; - if (c == 'u') { - wc = 0; - for (i = 2; i < 6; i++) { - if (n <= i) - return RET_TOOFEW(0); - c = s[i]; - if (c >= '0' && c <= '9') - c -= '0'; - else if (c >= 'A' && c <= 'Z') - c -= 'A'-10; - else if (c >= 'a' && c <= 'z') - c -= 'a'-10; - else - goto simply_backslash; - wc |= (ucs4_t) c << (4 * (5-i)); - } - if ((wc >= 0x00a0 && !(wc >= 0xd800 && wc < 0xe000)) - || wc == 0x0024 || wc == 0x0040 || wc == 0x0060) { - *pwc = wc; - return 6; - } - } else if (c == 'U') { - wc = 0; - for (i = 2; i < 10; i++) { - if (n <= i) - return RET_TOOFEW(0); - c = s[i]; - if (c >= '0' && c <= '9') - c -= '0'; - else if (c >= 'A' && c <= 'Z') - c -= 'A'-10; - else if (c >= 'a' && c <= 'z') - c -= 'a'-10; + c = s[0]; + if (c < 0xa0) + { + if (c != '\\') + { + *pwc = c; + return 1; + } + if (n < 2) + return RET_TOOFEW(0); + c = s[1]; + if (c == 'u') + { + wc = 0; + for (i = 2; i < 6; i++) + { + if (n <= i) + return RET_TOOFEW(0); + c = s[i]; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'Z') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'z') + c -= 'a' - 10; + else + goto simply_backslash; + wc |= (ucs4_t)c << (4 * (5 - i)); + } + if ((wc >= 0x00a0 && !(wc >= 0xd800 && wc < 0xe000)) || wc == 0x0024 || wc == 0x0040 || wc == 0x0060) + { + *pwc = wc; + return 6; + } + } + else if (c == 'U') + { + wc = 0; + for (i = 2; i < 10; i++) + { + if (n <= i) + return RET_TOOFEW(0); + c = s[i]; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'Z') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'z') + c -= 'a' - 10; + else + goto simply_backslash; + wc |= (ucs4_t)c << (4 * (9 - i)); + } + if ((wc >= 0x00a0 && !(wc >= 0xd800 && wc < 0xe000)) || wc == 0x0024 || wc == 0x0040 || wc == 0x0060) + { + *pwc = wc; + return 10; + } + } else - goto simply_backslash; - wc |= (ucs4_t) c << (4 * (9-i)); - } - if ((wc >= 0x00a0 && !(wc >= 0xd800 && wc < 0xe000)) - || wc == 0x0024 || wc == 0x0040 || wc == 0x0060) { - *pwc = wc; - return 10; - } - } else - goto simply_backslash; - } - return RET_ILSEQ; + goto simply_backslash; + } + return RET_ILSEQ; simply_backslash: - *pwc = '\\'; - return 1; + *pwc = '\\'; + return 1; } -static int -c99_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int c99_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0xa0) { - *r = wc; - return 1; - } else { - int result; - unsigned char u; - if (wc < 0x10000) { - result = 6; - u = 'u'; - } else { - result = 10; - u = 'U'; + if (wc < 0xa0) + { + *r = wc; + return 1; + } + else + { + int result; + unsigned char u; + if (wc < 0x10000) + { + result = 6; + u = 'u'; + } + else + { + result = 10; + u = 'U'; + } + if (n >= result) + { + int count; + r[0] = '\\'; + r[1] = u; + r += 2; + for (count = result - 3; count >= 0; count--) + { + unsigned int i = (wc >> (4 * count)) & 0x0f; + *r++ = (i < 10 ? '0' + i : 'a' - 10 + i); + } + return result; + } + else + return RET_TOOSMALL; } - if (n >= result) { - int count; - r[0] = '\\'; - r[1] = u; - r += 2; - for (count = result-3; count >= 0; count--) { - unsigned int i = (wc >> (4*count)) & 0x0f; - *r++ = (i < 10 ? '0'+i : 'a'-10+i); - } - return result; - } else - return RET_TOOSMALL; - } } + +#endif /* _C99_H_ */ diff --git a/lib/converters/ces_big5.h b/lib/converters/ces_big5.h index 793bddb4..238c95e7 100644 --- a/lib/converters/ces_big5.h +++ b/lib/converters/ces_big5.h @@ -1,5 +1,10 @@ +/** + * @file ces_big5.h + * @brief BIG-5 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,53 +22,61 @@ * If not, see . */ -/* - * BIG-5 - */ +#ifndef _CES_BIG5_H_ +#define _CES_BIG5_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "reiconv_defines.h" -static int -ces_big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int ces_big5_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5) */ + if (c >= 0xa1 && c < 0xff) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) - return big5_mbtowc(conv,pwc,s,2); - else - return RET_ILSEQ; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + return big5_mbtowc(conv, pwc, s, 2); + else + return RET_ILSEQ; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -ces_big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ces_big5_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (BIG5) */ - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } + /* Code set 1 (BIG5) */ + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CES_BIG5_H_ */ diff --git a/lib/converters/ces_gbk.h b/lib/converters/ces_gbk.h index 8ad8531f..ee6882bd 100644 --- a/lib/converters/ces_gbk.h +++ b/lib/converters/ces_gbk.h @@ -1,5 +1,10 @@ +/** + * @file ces_gbk.h + * @brief GBK + * @copyright Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,48 +22,56 @@ * If not, see . */ -/* - * GBK - */ +#ifndef _CES_GBK_H_ +#define _CES_GBK_H_ -static int -ces_gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "converters/ascii.h" +#include "converters/gbk.h" +#include "reiconv_defines.h" + +#include + +static int ces_gbk_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; + unsigned char c = *s; - /* Code set 0 (ASCII or GB 1988-89) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (GBK) */ - if (c >= 0x81 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - return gbk_mbtowc(conv,pwc,s,2); - } - return RET_ILSEQ; + /* Code set 0 (ASCII or GB 1988-89) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (GBK) */ + if (c >= 0x81 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + return gbk_mbtowc(conv, pwc, s, 2); + } + return RET_ILSEQ; } -static int -ces_gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ces_gbk_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII or GB 1988-89) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII or GB 1988-89) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (GBK) */ - ret = gbk_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } + /* Code set 1 (GBK) */ + ret = gbk_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CES_GBK_H_ */ diff --git a/lib/converters/cjk_variants.h b/lib/converters/cjk_variants.h index 1e1b5f9b..67bbcd0c 100644 --- a/lib/converters/cjk_variants.h +++ b/lib/converters/cjk_variants.h @@ -1,5 +1,10 @@ +/** + * @file cjk_variants.h + * @brief CJK variants table + * @copyright Copyright (C) 1999-2001 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,8 @@ * If not, see . */ -/* - * CJK variants table - */ +#ifndef _CJK_VARIANTS_H_ +#define _CJK_VARIANTS_H_ static const unsigned short cjk_variants[12038] = { 0x9e44, 0x1e2a, 0x200b, 0xcb87, 0xaf0c, 0x9e0a, 0x9e0b, 0xd42c, @@ -4238,3 +4242,5 @@ static const short cjk_variants_indx[0x5200] = { -1, -1, -1, -1, -1, -1, -1, -1, }; + +#endif /* _CJK_VARIANTS_H_ */ diff --git a/lib/converters/cns11643.h b/lib/converters/cns11643.h index 2b7f6c0b..5b4f1f1c 100644 --- a/lib/converters/cns11643.h +++ b/lib/converters/cns11643.h @@ -1,5 +1,10 @@ +/** + * @file cns11643.h + * @brief CNS 11643-1992 + * @copyright Copyright (C) 1999-2001 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,24 +22,27 @@ * If not, see . */ -/* - * CNS 11643-1992 - */ - /* ISO-2022-CN and EUC-TW use CNS 11643-1992 planes 1 to 7. We also * have a table for the older plane 15. We use a trick to keep the * Unicode -> CNS 11643 table as small as possible (see cns11643_inv.h). */ -#include "cns11643_1.h" -#include "cns11643_2.h" -#include "cns11643_3.h" -#include "cns11643_4.h" -#include "cns11643_5.h" -#include "cns11643_6.h" -#include "cns11643_7.h" -#include "cns11643_15.h" -#include "cns11643_inv.h" +#ifndef _CNS11643_H_ +#define _CNS11643_H_ + +#include "reiconv_defines.h" // IWYU pragma: keep + +#include "cns11643_1.h" // IWYU pragma: keep +#include "cns11643_2.h" // IWYU pragma: keep +#include "cns11643_3.h" // IWYU pragma: keep +#include "cns11643_4.h" // IWYU pragma: keep +#include "cns11643_5.h" // IWYU pragma: keep +#include "cns11643_6.h" // IWYU pragma: keep +#include "cns11643_7.h" // IWYU pragma: keep +#include "cns11643_15.h" // IWYU pragma: keep +#include "cns11643_inv.h" // IWYU pragma: keep /* Returns the plane number (1,...,7,15) in r[0], the two bytes in r[1],r[2]. */ #define cns11643_wctomb cns11643_inv_wctomb + +#endif /* _CNS11643_H_ */ diff --git a/lib/converters/cns11643_1.h b/lib/converters/cns11643_1.h index 5246c267..66a3f606 100644 --- a/lib/converters/cns11643_1.h +++ b/lib/converters/cns11643_1.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_1.h + * @brief CNS 11643-1992 plane 1 + * @copyright Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 1 - */ +#ifndef _CNS11643_1_H_ +#define _CNS11643_1_H_ + +#include "reiconv_defines.h" static const unsigned short cns11643_1_2uni_page21[500] = { /* 0x21 */ @@ -852,41 +858,50 @@ static const unsigned short cns11643_1_2uni_page44[5401] = { 0x9e1b, 0x9e1e, 0x7c72, }; -static int -cns11643_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_1_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x27) || (c1 == 0x42) || (c1 >= 0x44 && c1 <= 0x7d)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - unsigned short wc = 0xfffd; - if (i < 3102) { - if (i < 500) - wc = cns11643_1_2uni_page21[i]; - else if (i == 571) - wc = 0x4ea0; - else if (i == 578) - wc = 0x51ab; - else if (i == 583) - wc = 0x52f9; - } else if (i < 3290) { - if (i < 3136) - wc = cns11643_1_2uni_page42[i-3102]; - } else { - if (i < 8691) - wc = cns11643_1_2uni_page44[i-3290]; - } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x27) || (c1 == 0x42) || (c1 >= 0x44 && c1 <= 0x7d)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + if (i < 3102) + { + if (i < 500) + wc = cns11643_1_2uni_page21[i]; + else if (i == 571) + wc = 0x4ea0; + else if (i == 578) + wc = 0x51ab; + else if (i == 583) + wc = 0x52f9; + } + else if (i < 3290) + { + if (i < 3136) + wc = cns11643_1_2uni_page42[i - 3102]; + } + else + { + if (i < 8691) + wc = cns11643_1_2uni_page44[i - 3290]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_1_H_ */ diff --git a/lib/converters/cns11643_15.h b/lib/converters/cns11643_15.h index b26b2345..cff72076 100644 --- a/lib/converters/cns11643_15.h +++ b/lib/converters/cns11643_15.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_15.h + * @brief CNS 11643-1992 plane 15 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 15 - */ +#ifndef _CNS11643_15_H_ +#define _CNS11643_15_H_ -static const unsigned short cns11643_15_2uni_page21[7169] = { +#include "reiconv_defines.h" + +static const unsigned short cns11643_15_2uni_page21[7169] = +{ /* 0x21 */ 0x5302, 0x538c, 0x53d4, 0x54a5, 0x5392, 0x5393, 0x53d8, 0x53d9, 0x54a7, 0x592b, 0x592c, 0x592d, 0x5930, 0x592e, 0x59ab, 0x1a01, @@ -1052,31 +1059,34 @@ static const ucs4_t cns11643_15_2uni_upages[253] = { 0x2a500, 0x2a600, 0x2f800, 0x2f900, 0x2fa00, }; -static int -cns11643_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_15_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x6d)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x6d)) + { + if (n >= 2) { - if (i < 7169) - swc = cns11643_15_2uni_page21[i], - wc = cns11643_15_2uni_upages[swc>>8] | (swc & 0xff); - } - if (wc != 0xfffd) { - *pwc = wc; - return 2; + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 7169) + swc = cns11643_15_2uni_page21[i], wc = cns11643_15_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_15_H_ */ diff --git a/lib/converters/cns11643_2.h b/lib/converters/cns11643_2.h index ab608b83..6814a081 100644 --- a/lib/converters/cns11643_2.h +++ b/lib/converters/cns11643_2.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_2.h + * @brief CNS 11643-1992 plane 2 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 2 - */ +#ifndef _CNS11643_2_H_ +#define _CNS11643_2_H_ -static const unsigned short cns11643_2_2uni_page21[7650] = { +#include "reiconv_defines.h" + +static const unsigned short cns11643_2_2uni_page21[7650] = +{ /* 0x21 */ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, 0x4e8d, 0x56d7, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e, 0x4e2e, @@ -1083,29 +1090,33 @@ static const unsigned short cns11643_2_2uni_page21[7650] = { 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, }; -static int -cns11643_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x72)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - unsigned short wc = 0xfffd; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x72)) + { + if (n >= 2) { - if (i < 7650) - wc = cns11643_2_2uni_page21[i]; - } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + { + if (i < 7650) + wc = cns11643_2_2uni_page21[i]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_2_H_ */ diff --git a/lib/converters/cns11643_3.h b/lib/converters/cns11643_3.h index 8e3edb07..3af4b9c0 100644 --- a/lib/converters/cns11643_3.h +++ b/lib/converters/cns11643_3.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_3.h + * @brief CNS 11643-1992 plane 3 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 3 - */ +#ifndef _CNS11643_3_H_ +#define _CNS11643_3_H_ -static const unsigned short cns11643_3_2uni_page21[6148] = { +#include "reiconv_defines.h" + +static const unsigned short cns11643_3_2uni_page21[6148] = +{ /* 0x21 */ 0x1a28, 0x1a36, 0x1a3f, 0x1a85, 0x1a05, 0x1a04, 0x1d82, 0x1d96, 0x1f38, 0x1f69, 0x1fb6, 0x1a2a, 0x1a87, 0x1a49, 0x1de2, 0x1a46, @@ -939,35 +946,40 @@ static const ucs4_t cns11643_3_2uni_upages[136] = { 0x25900, 0x25c00, 0x26500, 0x28c00, 0x29900, 0x2f800, 0x2f900, 0x2fa00, }; -static int -cns11643_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_3_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x62) || (c1 >= 0x64 && c1 <= 0x67)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - ucs4_t wc = 0xfffd; - unsigned short swc; - if (i < 6298) { - if (i < 6148) - swc = cns11643_3_2uni_page21[i], - wc = cns11643_3_2uni_upages[swc>>8] | (swc & 0xff); - } else { - if (i < 6590) - swc = cns11643_3_2uni_page64[i-6298], - wc = cns11643_3_2uni_upages[swc>>8] | (swc & 0xff); - } - if (wc != 0xfffd) { - *pwc = wc; - return 2; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x62) || (c1 >= 0x64 && c1 <= 0x67)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + ucs4_t wc = 0xfffd; + unsigned short swc; + if (i < 6298) + { + if (i < 6148) + swc = cns11643_3_2uni_page21[i], wc = cns11643_3_2uni_upages[swc >> 8] | (swc & 0xff); + } + else + { + if (i < 6590) + swc = cns11643_3_2uni_page64[i - 6298], wc = cns11643_3_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_3_H_ */ diff --git a/lib/converters/cns11643_4.h b/lib/converters/cns11643_4.h index 78c5b6fc..432722d9 100644 --- a/lib/converters/cns11643_4.h +++ b/lib/converters/cns11643_4.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_4.h + * @brief CNS 11643-1992 plane 4 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,44 +22,49 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 4 - */ - /* * The table has been split into two parts. Each part's entries fit it 16 bits. * But the combined table would need 17 bits per entry. */ + +#ifndef _CNS11643_4_H_ +#define _CNS11643_4_H_ + +#include "reiconv_defines.h" + #include "cns11643_4a.h" #include "cns11643_4b.h" -static int -cns11643_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_4_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x6e)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x6e)) + { + if (n >= 2) { - if (i < 2914) - swc = cns11643_4a_2uni_page21[i], - wc = cns11643_4a_2uni_upages[swc>>8] | (swc & 0xff); - else if (i < 7298) - swc = cns11643_4b_2uni_page40[i-2914], - wc = cns11643_4b_2uni_upages[swc>>8] | (swc & 0xff); + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 2914) + swc = cns11643_4a_2uni_page21[i], wc = cns11643_4a_2uni_upages[swc >> 8] | (swc & 0xff); + else if (i < 7298) + swc = cns11643_4b_2uni_page40[i - 2914], wc = cns11643_4b_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } + +#endif /* _CNS11643_4_H_ */ diff --git a/lib/converters/cns11643_4a.h b/lib/converters/cns11643_4a.h index c6d91540..bacedc12 100644 --- a/lib/converters/cns11643_4a.h +++ b/lib/converters/cns11643_4a.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_4a.h + * @brief CNS 11643-1992 plane 4 part a + * @copyright Copyright (C) 1999-2002 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 4 part a - */ +#ifndef _CNS11643_4A_H_ +#define _CNS11643_4A_H_ + +#include "reiconv_defines.h" -static const unsigned short cns11643_4a_2uni_page21[2914] = { +static const unsigned short cns11643_4a_2uni_page21[2914] = +{ /* 0x21 */ 0x5a86, 0x1840, 0x1841, 0x185a, 0x75e8, 0x1802, 0x1829, 0x5b0e, 0x6027, 0x1c02, 0x013e, 0x27dc, 0x5f3c, 0x6075, 0xd128, 0x1d42, @@ -457,3 +464,4 @@ static const ucs4_t cns11643_4a_2uni_upages[212] = { 0x29d00, 0x2f800, 0x2f900, 0x2fa00, }; +#endif /* _CNS11643_4A_H_ */ diff --git a/lib/converters/cns11643_4b.h b/lib/converters/cns11643_4b.h index fac2b5c8..cd519798 100644 --- a/lib/converters/cns11643_4b.h +++ b/lib/converters/cns11643_4b.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_4b.h + * @brief CNS 11643-1992 plane 4 part b + * @copyright Copyright (C) 1999-2002 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 4 part b - */ +#ifndef _CNS11643_4B_H_ +#define _CNS11643_4B_H_ + +#include "reiconv_defines.h" -static const unsigned short cns11643_4b_2uni_page40[4384] = { +static const unsigned short cns11643_4b_2uni_page40[4384] = +{ /* 0x40 */ 0xb65b, 0xb66a, 0x1011, 0xb668, 0x101b, 0x1012, 0x100e, 0x1015, 0x3f68, 0x1010, 0xb681, 0x1017, 0x4046, 0x4043, 0x1070, 0x10ed, @@ -631,7 +638,8 @@ static const unsigned short cns11643_4b_2uni_page40[4384] = { 0x1911, 0x19ab, 0x189c, 0xdfd4, }; -static const ucs4_t cns11643_4b_2uni_upages[248] = { +static const ucs4_t cns11643_4b_2uni_upages[248] = +{ 0x03400, 0x03500, 0x03600, 0x03700, 0x03800, 0x03900, 0x03a00, 0x03b00, 0x03c00, 0x03d00, 0x03e00, 0x03f00, 0x04000, 0x04100, 0x04200, 0x04300, 0x04400, 0x04500, 0x04600, 0x04700, 0x04800, 0x04900, 0x04a00, 0x04b00, @@ -665,3 +673,4 @@ static const ucs4_t cns11643_4b_2uni_upages[248] = { 0x2a200, 0x2a300, 0x2a400, 0x2a500, 0x2a600, 0x2f800, 0x2f900, 0x2fa00, }; +#endif /* _CNS11643_4B_H_ */ diff --git a/lib/converters/cns11643_5.h b/lib/converters/cns11643_5.h index aec9e380..96de48f5 100644 --- a/lib/converters/cns11643_5.h +++ b/lib/converters/cns11643_5.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_5.h + * @brief CNS 11643-1992 plane 5 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 5 - */ +#ifndef _CNS11643_5_H_ +#define _CNS11643_5_H_ + +#include "reiconv_defines.h" -static const unsigned short cns11643_5_2uni_page21[8603] = { +static const unsigned short cns11643_5_2uni_page21[8603] = +{ /* 0x21 */ 0x3bd1, 0x3bcb, 0x3bc9, 0x3c0c, 0x3b00, 0x3b87, 0x3c0d, 0x3c0f, 0xe21d, 0x5e98, 0x3bd2, 0x3c11, 0x3b7e, 0x45d3, 0x5052, 0x57fe, @@ -1215,7 +1222,8 @@ static const unsigned short cns11643_5_2uni_page21[8603] = { 0xe1a5, }; -static const ucs4_t cns11643_5_2uni_upages[229] = { +static const ucs4_t cns11643_5_2uni_upages[229] = +{ 0x03400, 0x03500, 0x03600, 0x03700, 0x03800, 0x03900, 0x03a00, 0x03b00, 0x03c00, 0x03d00, 0x03e00, 0x03f00, 0x04000, 0x04100, 0x04200, 0x04300, 0x04400, 0x04500, 0x04600, 0x04700, 0x04800, 0x04900, 0x04a00, 0x04b00, @@ -1247,31 +1255,34 @@ static const ucs4_t cns11643_5_2uni_upages[229] = { 0x2a500, 0x2a600, 0x2f800, 0x2f900, 0x2fa00, }; -static int -cns11643_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_5_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x7c)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x7c)) + { + if (n >= 2) { - if (i < 8603) - swc = cns11643_5_2uni_page21[i], - wc = cns11643_5_2uni_upages[swc>>8] | (swc & 0xff); - } - if (wc != 0xfffd) { - *pwc = wc; - return 2; + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 8603) + swc = cns11643_5_2uni_page21[i], wc = cns11643_5_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_5_H_ */ diff --git a/lib/converters/cns11643_6.h b/lib/converters/cns11643_6.h index 7a920ec7..e346c230 100644 --- a/lib/converters/cns11643_6.h +++ b/lib/converters/cns11643_6.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_6.h + * @brief CNS 11643-1992 plane 6 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 6 - */ +#ifndef _CNS11643_6_H_ +#define _CNS11643_6_H_ + +#include "reiconv_defines.h" -static const unsigned short cns11643_6_2uni_page21[6388] = { +static const unsigned short cns11643_6_2uni_page21[6388] = +{ /* 0x21 */ 0xc902, 0x3362, 0x0005, 0x3388, 0x33d0, 0x33cf, 0x341e, 0x341f, 0x3420, 0x3c0e, 0x3c2c, 0x3361, 0x3304, 0x3305, 0x3303, 0x0004, @@ -908,7 +915,8 @@ static const unsigned short cns11643_6_2uni_page21[6388] = { 0xc7d1, 0x4737, }; -static const ucs4_t cns11643_6_2uni_upages[204] = { +static const ucs4_t cns11643_6_2uni_upages[204] = +{ 0x03400, 0x03500, 0x03600, 0x03700, 0x03800, 0x03900, 0x03a00, 0x03b00, 0x03c00, 0x03d00, 0x03e00, 0x03f00, 0x04000, 0x04100, 0x04200, 0x04300, 0x04400, 0x04500, 0x04600, 0x04700, 0x04800, 0x04900, 0x04a00, 0x04b00, @@ -937,31 +945,34 @@ static const ucs4_t cns11643_6_2uni_upages[204] = { 0x2a500, 0x2f800, 0x2f900, 0x2fa00, }; -static int -cns11643_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_6_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x64)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x64)) + { + if (n >= 2) { - if (i < 6388) - swc = cns11643_6_2uni_page21[i], - wc = cns11643_6_2uni_upages[swc>>8] | (swc & 0xff); - } - if (wc != 0xfffd) { - *pwc = wc; - return 2; + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 6388) + swc = cns11643_6_2uni_page21[i], wc = cns11643_6_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_6_H_ */ diff --git a/lib/converters/cns11643_7.h b/lib/converters/cns11643_7.h index 8544f4f0..3d99e2c9 100644 --- a/lib/converters/cns11643_7.h +++ b/lib/converters/cns11643_7.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_7.h + * @brief CNS 11643-1992 plane 7 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 plane 7 - */ +#ifndef _CNS11643_7_H_ +#define _CNS11643_7_H_ + +#include "reiconv_defines.h" -static const unsigned short cns11643_7_2uni_page21[6539] = { +static const unsigned short cns11643_7_2uni_page21[6539] = +{ /* 0x21 */ 0x2b55, 0x2c82, 0x2c89, 0x2c87, 0x2dbe, 0x2dbd, 0x2dca, 0x2dd4, 0x2dbc, 0x2dc4, 0x2dc1, 0x2dc2, 0x2dd7, 0x2d70, 0x2dba, 0x2de3, @@ -929,7 +936,8 @@ static const unsigned short cns11643_7_2uni_page21[6539] = { 0xadd3, 0xc0ca, 0x87c4, 0x94b1, 0xb264, }; -static const ucs4_t cns11643_7_2uni_upages[198] = { +static const ucs4_t cns11643_7_2uni_upages[198] = +{ 0x03400, 0x03500, 0x03600, 0x03700, 0x03800, 0x03900, 0x03a00, 0x03b00, 0x03c00, 0x03d00, 0x03e00, 0x03f00, 0x04000, 0x04100, 0x04200, 0x04300, 0x04400, 0x04500, 0x04600, 0x04700, 0x04800, 0x04900, 0x04a00, 0x04b00, @@ -957,31 +965,34 @@ static const ucs4_t cns11643_7_2uni_upages[198] = { 0x2a400, 0x2a500, 0x2a600, 0x2f800, 0x2f900, 0x2fa00, }; -static int -cns11643_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cns11643_7_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x66)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x66)) + { + if (n >= 2) { - if (i < 6539) - swc = cns11643_7_2uni_page21[i], - wc = cns11643_7_2uni_upages[swc>>8] | (swc & 0xff); - } - if (wc != 0xfffd) { - *pwc = wc; - return 2; + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 6539) + swc = cns11643_7_2uni_page21[i], wc = cns11643_7_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _CNS11643_7_H_ */ diff --git a/lib/converters/cns11643_inv.h b/lib/converters/cns11643_inv.h index fa60e536..f95f5696 100644 --- a/lib/converters/cns11643_inv.h +++ b/lib/converters/cns11643_inv.h @@ -1,5 +1,10 @@ +/** + * @file cns11643_inv.h + * @brief CNS 11643-1992 planes 1-7, CNS 11643-1986 plane 15 + * @copyright Copyright (C) 1999-2005, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2005, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CNS 11643-1992 planes 1-7, CNS 11643-1986 plane 15 - */ +#ifndef _CNS11643_INV_H_ +#define _CNS11643_INV_H_ + +#include "reiconv_defines.h" -static const unsigned char cns11643_inv_2charset[3*55442] = { +static const unsigned char cns11643_inv_2charset[3 * 55442] = +{ 0x1,0x21,0x70, 0x1,0x22,0x78, 0x1,0x22,0x34, 0x1,0x21,0x31, 0x1,0x22,0x32, 0x1,0x22,0x33, 0x1,0x25,0x6f, 0x1,0x25,0x6d, 0x1,0x25,0x6e, 0x1,0x25,0x70, 0x1,0x25,0x6c, 0x1,0x24,0x75, @@ -13885,14 +13892,16 @@ static const unsigned char cns11643_inv_2charset[3*55442] = { 0x4,0x48,0x77, 0x7,0x5e,0x4d, }; -static const Summary16 cns11643_inv_uni2indx_page00[16] = { +static const Summary16 cns11643_inv_uni2indx_page00[16] = +{ /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0080 }, { 1, 0x0083 }, { 4, 0x0000 }, { 4, 0x0080 }, { 5, 0x0000 }, { 5, 0x0080 }, }; -static const Summary16 cns11643_inv_uni2indx_page02[29] = { +static const Summary16 cns11643_inv_uni2indx_page02[29] = +{ /* 0x0200 */ { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, @@ -13904,7 +13913,8 @@ static const Summary16 cns11643_inv_uni2indx_page02[29] = { { 11, 0x0000 }, { 11, 0xfffe }, { 26, 0x03fb }, { 35, 0xfffe }, { 50, 0x03fb }, }; -static const Summary16 cns11643_inv_uni2indx_page20[44] = { +static const Summary16 cns11643_inv_uni2indx_page20[44] = +{ /* 0x2000 */ { 59, 0x0000 }, { 59, 0x3358 }, { 66, 0x0060 }, { 68, 0x4824 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, @@ -13920,7 +13930,8 @@ static const Summary16 cns11643_inv_uni2indx_page20[44] = { { 116, 0x0000 }, { 116, 0x0004 }, { 117, 0x00c3 }, { 121, 0x0000 }, { 121, 0x0000 }, { 121, 0x0000 }, { 121, 0x0020 }, { 122, 0x8000 }, }; -static const Summary16 cns11643_inv_uni2indx_page24[37] = { +static const Summary16 cns11643_inv_uni2indx_page24[37] = +{ /* 0x2400 */ { 123, 0xffff }, { 139, 0xffff }, { 155, 0x0002 }, { 156, 0x0000 }, { 156, 0x0000 }, { 156, 0x0000 }, { 156, 0x03ff }, { 166, 0x3ff0 }, @@ -13935,7 +13946,8 @@ static const Summary16 cns11643_inv_uni2indx_page24[37] = { { 230, 0x0260 }, { 233, 0x0000 }, { 233, 0x0000 }, { 233, 0x0000 }, { 233, 0x0007 }, }; -static const Summary16 cns11643_inv_uni2indx_page30[1787] = { +static const Summary16 cns11643_inv_uni2indx_page30[1787] = +{ /* 0x3000 */ { 236, 0xff0f }, { 248, 0x6037 }, { 255, 0x03fe }, { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x0000 }, @@ -14496,11 +14508,13 @@ static const Summary16 cns11643_inv_uni2indx_page30[1787] = { { 24505, 0xffff }, { 24521, 0xfffd }, { 24536, 0xfffb }, { 24551, 0x7fff }, { 24566, 0xe000 }, { 24569, 0x73ff }, { 24582, 0x003f }, }; -static const Summary16 cns11643_inv_uni2indx_pagefa[3] = { +static const Summary16 cns11643_inv_uni2indx_pagefa[3] = +{ /* 0xfa00 */ { 24588, 0x0000 }, { 24588, 0x0000 }, { 24588, 0x0100 }, }; -static const Summary16 cns11643_inv_uni2indx_pagefe[31] = { +static const Summary16 cns11643_inv_uni2indx_pagefe[31] = +{ /* 0xfe00 */ { 24589, 0x0000 }, { 24589, 0x0000 }, { 24589, 0x0000 }, { 24589, 0xffe7 }, { 24603, 0x7e1f }, { 24614, 0xfef7 }, { 24628, 0x0f7f }, { 24639, 0x0000 }, @@ -14512,7 +14526,8 @@ static const Summary16 cns11643_inv_uni2indx_pagefe[31] = { { 24726, 0x0000 }, { 24726, 0x0000 }, { 24726, 0x0000 }, { 24726, 0x0000 }, { 24726, 0x0000 }, { 24726, 0x0000 }, { 24726, 0x0023 }, }; -static const Summary16 cns11643_inv_uni2indx_page200[2670] = { +static const Summary16 cns11643_inv_uni2indx_page200[2670] = +{ /* 0x20000 */ { 24729, 0x8bbd }, { 24739, 0x0715 }, { 24745, 0x722f }, { 24754, 0x0860 }, { 24757, 0x39ca }, { 24765, 0x08ec }, { 24771, 0xeaf6 }, { 24782, 0xe0d7 }, @@ -15364,48 +15379,52 @@ static const Summary16 cns11643_inv_uni2indx_page2f8[34] = { { 55412, 0xffff }, { 55428, 0x3fff }, }; -static int -cns11643_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cns11643_inv_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0100) - summary = &cns11643_inv_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x0200 && wc < 0x03d0) - summary = &cns11643_inv_uni2indx_page02[(wc>>4)-0x020]; - else if (wc >= 0x2000 && wc < 0x22c0) - summary = &cns11643_inv_uni2indx_page20[(wc>>4)-0x200]; - else if (wc >= 0x2400 && wc < 0x2650) - summary = &cns11643_inv_uni2indx_page24[(wc>>4)-0x240]; - else if (wc >= 0x3000 && wc < 0x9fb0) - summary = &cns11643_inv_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0xfa00 && wc < 0xfa30) - summary = &cns11643_inv_uni2indx_pagefa[(wc>>4)-0xfa0]; - else if (wc >= 0xfe00 && wc < 0xfff0) - summary = &cns11643_inv_uni2indx_pagefe[(wc>>4)-0xfe0]; - else if (wc >= 0x20000 && wc < 0x2a6e0) - summary = &cns11643_inv_uni2indx_page200[(wc>>4)-0x2000]; - else if (wc >= 0x2f800 && wc < 0x2fa20) - summary = &cns11643_inv_uni2indx_page2f8[(wc>>4)-0x2f80]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - used += summary->indx; - r[0] = cns11643_inv_2charset[3*used]; - r[1] = cns11643_inv_2charset[3*used+1]; - r[2] = cns11643_inv_2charset[3*used+2]; - return 3; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0100) + summary = &cns11643_inv_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x0200 && wc < 0x03d0) + summary = &cns11643_inv_uni2indx_page02[(wc >> 4) - 0x020]; + else if (wc >= 0x2000 && wc < 0x22c0) + summary = &cns11643_inv_uni2indx_page20[(wc >> 4) - 0x200]; + else if (wc >= 0x2400 && wc < 0x2650) + summary = &cns11643_inv_uni2indx_page24[(wc >> 4) - 0x240]; + else if (wc >= 0x3000 && wc < 0x9fb0) + summary = &cns11643_inv_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0xfa00 && wc < 0xfa30) + summary = &cns11643_inv_uni2indx_pagefa[(wc >> 4) - 0xfa0]; + else if (wc >= 0xfe00 && wc < 0xfff0) + summary = &cns11643_inv_uni2indx_pagefe[(wc >> 4) - 0xfe0]; + else if (wc >= 0x20000 && wc < 0x2a6e0) + summary = &cns11643_inv_uni2indx_page200[(wc >> 4) - 0x2000]; + else if (wc >= 0x2f800 && wc < 0x2fa20) + summary = &cns11643_inv_uni2indx_page2f8[(wc >> 4) - 0x2f80]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + used += summary->indx; + r[0] = cns11643_inv_2charset[3 * used]; + r[1] = cns11643_inv_2charset[3 * used + 1]; + r[2] = cns11643_inv_2charset[3 * used + 2]; + return 3; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _CNS11643_INV_H_ */ diff --git a/lib/converters/cp1046.h b/lib/converters/cp1046.h index c98eb0bf..13dbfbb3 100644 --- a/lib/converters/cp1046.h +++ b/lib/converters/cp1046.h @@ -1,5 +1,10 @@ +/** + * @file cp1046.h + * @brief CP1046 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CP1046 - */ +#ifndef _CP1046_H_ +#define _CP1046_H_ + +#include "reiconv_defines.h" -static const unsigned short cp1046_2uni[128] = { +static const unsigned short cp1046_2uni[128] = +{ /* 0x80 */ 0xfe88, 0x00d7, 0x00f7, 0xf8f6, 0xf8f5, 0xf8f4, 0xf8f7, 0xfe71, 0x0088, 0x25a0, 0x2502, 0x2500, 0x2510, 0x250c, 0x2514, 0x2518, @@ -48,25 +55,28 @@ static const unsigned short cp1046_2uni[128] = { 0xfef7, 0xfef9, 0xfefb, 0xfee3, 0xfee7, 0xfeec, 0xfee9, 0xfffd, }; -static int -cp1046_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1046_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp1046_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; + } + else + { + unsigned short wc = cp1046_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static const unsigned char cp1046_page00[112] = { +static const unsigned char cp1046_page00[112] = +{ 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ @@ -82,7 +92,8 @@ static const unsigned char cp1046_page00[112] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, /* 0xf0-0xf7 */ }; -static const unsigned char cp1046_page06[104] = { +static const unsigned char cp1046_page06[104] = +{ 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */ @@ -97,17 +108,20 @@ static const unsigned char cp1046_page06[104] = { 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x60-0x67 */ 0xb8, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ }; -static const unsigned char cp1046_page25[32] = { +static const unsigned char cp1046_page25[32] = +{ 0x8b, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x8c, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; -static const unsigned char cp1046_pagef8[16] = { +static const unsigned char cp1046_pagef8[16] = +{ 0x00, 0x00, 0x00, 0x00, 0x85, 0x84, 0x83, 0x86, /* 0xf0-0xf7 */ 0xa3, 0xa2, 0xa1, 0xa5, 0xf6, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; -static const unsigned char cp1046_pagefe[144] = { +static const unsigned char cp1046_pagefe[144] = +{ 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, /* 0x70-0x77 */ 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, /* 0x78-0x7f */ 0x00, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0x00, 0x00, /* 0x80-0x87 */ @@ -128,29 +142,32 @@ static const unsigned char cp1046_pagefe[144] = { 0x9d, 0xf9, 0x9e, 0xfa, 0x9f, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; -static int -cp1046_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1046_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x0088 && wc < 0x00f8) - c = cp1046_page00[wc-0x0088]; - else if (wc >= 0x0608 && wc < 0x0670) - c = cp1046_page06[wc-0x0608]; - else if (wc >= 0x2500 && wc < 0x2520) - c = cp1046_page25[wc-0x2500]; - else if (wc == 0x25a0) - c = 0x89; - else if (wc >= 0xf8f0 && wc < 0xf900) - c = cp1046_pagef8[wc-0xf8f0]; - else if (wc >= 0xfe70 && wc < 0xff00) - c = cp1046_pagefe[wc-0xfe70]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x0088 && wc < 0x00f8) + c = cp1046_page00[wc - 0x0088]; + else if (wc >= 0x0608 && wc < 0x0670) + c = cp1046_page06[wc - 0x0608]; + else if (wc >= 0x2500 && wc < 0x2520) + c = cp1046_page25[wc - 0x2500]; + else if (wc == 0x25a0) + c = 0x89; + else if (wc >= 0xf8f0 && wc < 0xf900) + c = cp1046_pagef8[wc - 0xf8f0]; + else if (wc >= 0xfe70 && wc < 0xff00) + c = cp1046_pagefe[wc - 0xfe70]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1046_H_ */ diff --git a/lib/converters/cp1124.h b/lib/converters/cp1124.h index fe91ac7e..eea7c13a 100644 --- a/lib/converters/cp1124.h +++ b/lib/converters/cp1124.h @@ -1,5 +1,10 @@ +/** + * @file cp1124.h + * @brief CP1124 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CP1124 - */ +#ifndef _CP1124_H_ +#define _CP1124_H_ -static const unsigned short cp1124_2uni[96] = { +#include "reiconv_defines.h" + +static const unsigned short cp1124_2uni[96] = +{ /* 0xa0 */ 0x00a0, 0x0401, 0x0402, 0x0490, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, @@ -42,22 +49,23 @@ static const unsigned short cp1124_2uni[96] = { 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, }; -static int -cp1124_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1124_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp1124_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp1124_2uni[c - 0xa0]; + return 1; } -static const unsigned char cp1124_page00[16] = { +static const unsigned char cp1124_page00[16] = +{ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ }; -static const unsigned char cp1124_page04[152] = { +static const unsigned char cp1124_page04[152] = +{ 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */ @@ -79,23 +87,26 @@ static const unsigned char cp1124_page04[152] = { 0xa3, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; -static int -cp1124_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1124_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b0) - c = cp1124_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0498) - c = cp1124_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0xf0; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b0) + c = cp1124_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0498) + c = cp1124_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0xf0; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1124_H_ */ diff --git a/lib/converters/cp1125.h b/lib/converters/cp1125.h index b3ba9b7a..38bd8233 100644 --- a/lib/converters/cp1125.h +++ b/lib/converters/cp1125.h @@ -1,5 +1,10 @@ +/** + * @file cp1125.h + * @brief CP1125 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CP1125 - */ +#ifndef _CP1125_H_ +#define _CP1125_H_ -static const unsigned short cp1125_2uni[80] = { +#include "reiconv_defines.h" + +static const unsigned short cp1125_2uni[80] = +{ /* 0xb0 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, @@ -39,25 +46,26 @@ static const unsigned short cp1125_2uni[80] = { 0x0407, 0x0457, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, }; -static int -cp1125_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1125_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else if (c < 0xb0) - *pwc = (ucs4_t) c + 0x0390; - else - *pwc = (ucs4_t) cp1125_2uni[c-0xb0]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else if (c < 0xb0) + *pwc = (ucs4_t)c + 0x0390; + else + *pwc = (ucs4_t)cp1125_2uni[c - 0xb0]; + return 1; } -static const unsigned char cp1125_page00[24] = { +static const unsigned char cp1125_page00[24] = +{ 0xff, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, /* 0xb0-0xb7 */ }; -static const unsigned char cp1125_page04[152] = { +static const unsigned char cp1125_page04[152] = +{ 0x00, 0xf0, 0x00, 0x00, 0xf4, 0x00, 0xf6, 0xf8, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x10-0x17 */ @@ -78,7 +86,8 @@ static const unsigned char cp1125_page04[152] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xf2, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; -static const unsigned char cp1125_page25[168] = { +static const unsigned char cp1125_page25[168] = +{ 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ @@ -102,27 +111,30 @@ static const unsigned char cp1125_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp1125_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1125_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b8) - c = cp1125_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0498) - c = cp1125_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0xfc; - else if (wc == 0x221a) - c = 0xfb; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp1125_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b8) + c = cp1125_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0498) + c = cp1125_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0xfc; + else if (wc == 0x221a) + c = 0xfb; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp1125_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1125_H_ */ diff --git a/lib/converters/cp1129.h b/lib/converters/cp1129.h index 8713ce99..18e0ddf6 100644 --- a/lib/converters/cp1129.h +++ b/lib/converters/cp1129.h @@ -1,5 +1,10 @@ +/** + * @file cp1129.h + * @brief CP1129 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CP1129 - */ +#ifndef _CP1129_H_ +#define _CP1129_H_ -static const unsigned short cp1129_2uni[96] = { +#include "reiconv_defines.h" + +static const unsigned short cp1129_2uni[96] = +{ /* 0xa0 */ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x0153, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, @@ -42,18 +49,18 @@ static const unsigned short cp1129_2uni[96] = { 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff, }; -static int -cp1129_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1129_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp1129_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp1129_2uni[c - 0xa0]; + return 1; } -static const unsigned char cp1129_page00[272] = { +static const unsigned char cp1129_page00[272] = +{ 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ @@ -90,7 +97,9 @@ static const unsigned char cp1129_page00[272] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, /* 0xa8-0xaf */ 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ }; -static const unsigned char cp1129_page03[40] = { + +static const unsigned char cp1129_page03[40] = +{ 0xcc, 0xec, 0x00, 0xde, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ @@ -98,23 +107,26 @@ static const unsigned char cp1129_page03[40] = { 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; -static int -cp1129_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1129_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a8) { - *r = wc; - return 1; - } - else if (wc >= 0x00a8 && wc < 0x01b8) - c = cp1129_page00[wc-0x00a8]; - else if (wc >= 0x0300 && wc < 0x0328) - c = cp1129_page03[wc-0x0300]; - else if (wc == 0x20ab) - c = 0xfe; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a8) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a8 && wc < 0x01b8) + c = cp1129_page00[wc - 0x00a8]; + else if (wc >= 0x0300 && wc < 0x0328) + c = cp1129_page03[wc - 0x0300]; + else if (wc == 0x20ab) + c = 0xfe; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1129_H_ */ diff --git a/lib/converters/cp1131.h b/lib/converters/cp1131.h index b1470dbc..7316ab86 100644 --- a/lib/converters/cp1131.h +++ b/lib/converters/cp1131.h @@ -1,5 +1,10 @@ +/** + * @file cp1131.h + * @brief CP1131 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * CP1131 - */ +#ifndef _CP1131_H_ +#define _CP1131_H_ + +#include "reiconv_defines.h" -static const unsigned short cp1131_2uni[128] = { +static const unsigned short cp1131_2uni[128] = +{ /* 0x80 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, @@ -48,23 +55,25 @@ static const unsigned short cp1131_2uni[128] = { 0x0406, 0x0456, 0x00b7, 0x00a4, 0x0490, 0x0491, 0x2219, 0x00a0, }; -static int -cp1131_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1131_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp1131_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp1131_2uni[c - 0x80]; + return 1; } -static const unsigned char cp1131_page00[24] = { +static const unsigned char cp1131_page00[24] = +{ 0xff, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, /* 0xb0-0xb7 */ }; -static const unsigned char cp1131_page04[152] = { + +static const unsigned char cp1131_page04[152] = +{ 0x00, 0xf0, 0x00, 0x00, 0xf2, 0x00, 0xf8, 0xf4, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, /* 0x08-0x0f */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x10-0x17 */ @@ -85,7 +94,8 @@ static const unsigned char cp1131_page04[152] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xfc, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; -static const unsigned char cp1131_page25[152] = { +static const unsigned char cp1131_page25[152] = +{ 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ @@ -107,25 +117,28 @@ static const unsigned char cp1131_page25[152] = { 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; -static int -cp1131_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1131_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b8) - c = cp1131_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0498) - c = cp1131_page04[wc-0x0400]; - else if (wc == 0x2219) - c = 0xfe; - else if (wc >= 0x2500 && wc < 0x2598) - c = cp1131_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b8) + c = cp1131_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0498) + c = cp1131_page04[wc - 0x0400]; + else if (wc == 0x2219) + c = 0xfe; + else if (wc >= 0x2500 && wc < 0x2598) + c = cp1131_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1131_H_ */ diff --git a/lib/converters/cp1133.h b/lib/converters/cp1133.h index 8a2f9b1c..381053ab 100644 --- a/lib/converters/cp1133.h +++ b/lib/converters/cp1133.h @@ -1,5 +1,10 @@ +/** + * @file cp1133.h + * @brief IBM-CP1133 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,13 @@ * If not, see . */ -/* - * IBM-CP1133 - */ +#ifndef _CP1133_H_ +#define _CP1133_H_ + +#include "reiconv_defines.h" -static const unsigned short cp1133_2uni_1[64] = { +static const unsigned short cp1133_2uni_1[64] = +{ /* 0xa0 */ 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a, 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b, @@ -35,44 +42,53 @@ static const unsigned short cp1133_2uni_1[64] = { 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad, }; -static const unsigned short cp1133_2uni_2[16] = { + +static const unsigned short cp1133_2uni_2[16] = +{ /* 0xf0 */ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd, }; -static int -cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1133_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c < 0xe0) { - unsigned short wc = cp1133_2uni_1[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - else if (c < 0xf0) { - } - else { - unsigned short wc = cp1133_2uni_2[c-0xf0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + else if (c < 0xe0) + { + unsigned short wc = cp1133_2uni_1[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } } - } - return RET_ILSEQ; + else if (c < 0xf0) + { + } + else + { + unsigned short wc = cp1133_2uni_2[c - 0xf0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } -static const unsigned char cp1133_page00[16] = { +static const unsigned char cp1133_page00[16] = +{ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ }; -static const unsigned char cp1133_page0e[96] = { +static const unsigned char cp1133_page0e[96] = +{ 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */ 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */ @@ -87,23 +103,26 @@ static const unsigned char cp1133_page0e[96] = { 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1133_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b0) - c = cp1133_page00[wc-0x00a0]; - else if (wc >= 0x0e80 && wc < 0x0ee0) - c = cp1133_page0e[wc-0x0e80]; - else if (wc == 0x20ad) - c = 0xdf; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b0) + c = cp1133_page00[wc - 0x00a0]; + else if (wc >= 0x0e80 && wc < 0x0ee0) + c = cp1133_page0e[wc - 0x0e80]; + else if (wc == 0x20ad) + c = 0xdf; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1133_H_ */ diff --git a/lib/converters/cp1161.h b/lib/converters/cp1161.h index ab9f4a90..d7d2a282 100644 --- a/lib/converters/cp1161.h +++ b/lib/converters/cp1161.h @@ -1,5 +1,10 @@ +/** + * @file cp1161.h + * @brief CP1161 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,14 @@ * If not, see . */ -/* - * CP1161 - */ +#ifndef _CP1161_H_ +#define _CP1161_H_ + +#include "converters/cp874.h" +#include "reiconv_defines.h" -static const unsigned short cp1161_2uni[96] = { +static const unsigned short cp1161_2uni[96] = +{ /* 0xa0 */ 0x0e48, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, @@ -42,47 +50,53 @@ static const unsigned short cp1161_2uni[96] = { 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x00a2, 0x00ac, 0x00a6, 0x00a0, }; -static int -cp1161_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1161_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c < 0xa0) { - } - else { - *pwc = (ucs4_t) cp1161_2uni[c-0xa0]; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; + } + else if (c < 0xa0) + { + } + else + { + *pwc = (ucs4_t)cp1161_2uni[c - 0xa0]; + return 1; + } + return RET_ILSEQ; } -static const unsigned char cp1161_page00[16] = { +static const unsigned char cp1161_page00[16] = +{ 0xff, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ }; -static int -cp1161_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1161_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b0) - c = cp1161_page00[wc-0x00a0]; - else if (wc >= 0x0e48 && wc < 0x0e4c) - c = wc-0x0d60; - else if (wc >= 0x0e00 && wc < 0x0e60) - c = cp874_page0e[wc-0x0e00]; - else if (wc == 0x20ac) - c = 0xde; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b0) + c = cp1161_page00[wc - 0x00a0]; + else if (wc >= 0x0e48 && wc < 0x0e4c) + c = wc - 0x0d60; + else if (wc >= 0x0e00 && wc < 0x0e60) + c = cp874_page0e[wc - 0x0e00]; + else if (wc == 0x20ac) + c = 0xde; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1161_H_ */ diff --git a/lib/converters/cp1162.h b/lib/converters/cp1162.h index ee9535f7..554eb53d 100644 --- a/lib/converters/cp1162.h +++ b/lib/converters/cp1162.h @@ -1,5 +1,10 @@ +/** + * @file cp1162.h + * @brief CP1162 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,53 +22,60 @@ * If not, see . */ -/* - * CP1162 - */ +#ifndef _CP1162_H_ +#define _CP1162_H_ + +#include "reiconv_defines.h" -static int -cp1162_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1162_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp874_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; + else + { + unsigned short wc = cp874_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -cp1162_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1162_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x0080 && wc < 0x00a0 && cp874_2uni[wc-0x0080] == 0xfffd) - c = wc; - else if (wc == 0x00a0) - c = 0xa0; - else if (wc >= 0x0e00 && wc < 0x0e60) - c = cp874_page0e[wc-0x0e00]; - else if (wc >= 0x2010 && wc < 0x2028) - c = cp874_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x0080 && wc < 0x00a0 && cp874_2uni[wc - 0x0080] == 0xfffd) + c = wc; + else if (wc == 0x00a0) + c = 0xa0; + else if (wc >= 0x0e00 && wc < 0x0e60) + c = cp874_page0e[wc - 0x0e00]; + else if (wc >= 0x2010 && wc < 0x2028) + c = cp874_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1162_H_ */ diff --git a/lib/converters/cp1163.h b/lib/converters/cp1163.h index 383b7a25..d124191a 100644 --- a/lib/converters/cp1163.h +++ b/lib/converters/cp1163.h @@ -1,5 +1,10 @@ +/** + * @file cp1163.h + * @brief CP1163 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,46 +22,50 @@ * If not, see . */ -/* - * CP1163 - */ +#ifndef _CP1163_H_ +#define _CP1163_H_ + +#include "converters/cp1129.h" +#include "reiconv_defines.h" -static int -cp1163_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1163_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else if (c == 0xa4) - *pwc = 0x20ac; - else - *pwc = (ucs4_t) cp1129_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else if (c == 0xa4) + *pwc = 0x20ac; + else + *pwc = (ucs4_t)cp1129_2uni[c - 0xa0]; + return 1; } static const unsigned char cp1163_page20[8] = { - 0x00, 0x00, 0x00, 0xfe, 0xa4, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ + 0x00, 0x00, 0x00, 0xfe, 0xa4, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ }; -static int -cp1163_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1163_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0 || (wc < 0x00a8 && wc != 0x00a4) || wc == 0x00d0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a8 && wc < 0x01b8) - c = cp1129_page00[wc-0x00a8]; - else if (wc >= 0x0300 && wc < 0x0328) - c = cp1129_page03[wc-0x0300]; - else if (wc == 0x203e) - c = 0xaf; - else if (wc >= 0x20a8 && wc < 0x20b0) - c = cp1163_page20[wc-0x20a8]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0 || (wc < 0x00a8 && wc != 0x00a4) || wc == 0x00d0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a8 && wc < 0x01b8) + c = cp1129_page00[wc - 0x00a8]; + else if (wc >= 0x0300 && wc < 0x0328) + c = cp1129_page03[wc - 0x0300]; + else if (wc == 0x203e) + c = 0xaf; + else if (wc >= 0x20a8 && wc < 0x20b0) + c = cp1163_page20[wc - 0x20a8]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1163_H_ */ diff --git a/lib/converters/cp1250.h b/lib/converters/cp1250.h index 1b4791c5..7c04b857 100644 --- a/lib/converters/cp1250.h +++ b/lib/converters/cp1250.h @@ -1,5 +1,10 @@ +/** + * @file cp1250.h + * @brief CP1250 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1250 - */ +#ifndef _CP1250_H_ +#define _CP1250_H_ + +#include "reiconv_defines.h" static const unsigned short cp1250_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp1250_2uni[128] = { 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, }; -static int -cp1250_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1250_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp1250_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp1250_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp1250_page00[224] = { @@ -112,27 +120,30 @@ static const unsigned char cp1250_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1250_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1250_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = cp1250_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp1250_page02[wc-0x02c0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1250_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = cp1250_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp1250_page02[wc - 0x02c0]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1250_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1250_H_ */ diff --git a/lib/converters/cp1251.h b/lib/converters/cp1251.h index 82bb631a..60e42430 100644 --- a/lib/converters/cp1251.h +++ b/lib/converters/cp1251.h @@ -1,5 +1,10 @@ +/** + * @file cp1251.h + * @brief CP1251 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1251 - */ +#ifndef _CP1251_H_ +#define _CP1251_H_ + +#include "reiconv_defines.h" static const unsigned short cp1251_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp1251_2uni[128] = { 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, }; -static int -cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1251_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp1251_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp1251_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp1251_page00[32] = { @@ -102,29 +110,32 @@ static const unsigned char cp1251_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1251_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = cp1251_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0498) - c = cp1251_page04[wc-0x0400]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1251_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x88; - else if (wc == 0x2116) - c = 0xb9; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = cp1251_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0498) + c = cp1251_page04[wc - 0x0400]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1251_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x88; + else if (wc == 0x2116) + c = 0xb9; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1251_H_ */ diff --git a/lib/converters/cp1252.h b/lib/converters/cp1252.h index 08057d9f..2ee3554f 100644 --- a/lib/converters/cp1252.h +++ b/lib/converters/cp1252.h @@ -1,5 +1,10 @@ +/** + * @file cp1252.h + * @brief CP1252 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1252 - */ +#ifndef _CP1252_H_ +#define _CP1252_H_ + +#include "reiconv_defines.h" static const unsigned short cp1252_2uni[32] = { /* 0x80 */ @@ -30,22 +36,24 @@ static const unsigned short cp1252_2uni[32] = { 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0x017e, 0x0178, }; -static int -cp1252_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1252_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80 || c >= 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp1252_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80 || c >= 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp1252_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp1252_page01[72] = { @@ -74,29 +82,32 @@ static const unsigned char cp1252_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1252_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1252_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = wc; - else if (wc >= 0x0150 && wc < 0x0198) - c = cp1252_page01[wc-0x0150]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp1252_page02[wc-0x02c0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1252_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = wc; + else if (wc >= 0x0150 && wc < 0x0198) + c = cp1252_page01[wc - 0x0150]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp1252_page02[wc - 0x02c0]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1252_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1252_H_ */ diff --git a/lib/converters/cp1253.h b/lib/converters/cp1253.h index 59d63017..58116096 100644 --- a/lib/converters/cp1253.h +++ b/lib/converters/cp1253.h @@ -1,5 +1,10 @@ +/** + * @file cp1253.h + * @brief CP1253 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1253 - */ +#ifndef _CP1253_H_ +#define _CP1253_H_ + +#include "reiconv_defines.h" static const unsigned short cp1253_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp1253_2uni[128] = { 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, }; -static int -cp1253_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1253_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp1253_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp1253_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp1253_page00[32] = { @@ -93,29 +101,32 @@ static const unsigned char cp1253_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1253_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1253_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = cp1253_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x83; - else if (wc >= 0x0380 && wc < 0x03d0) - c = cp1253_page03[wc-0x0380]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1253_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = cp1253_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x83; + else if (wc >= 0x0380 && wc < 0x03d0) + c = cp1253_page03[wc - 0x0380]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1253_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1253_H_ */ diff --git a/lib/converters/cp1254.h b/lib/converters/cp1254.h index 2d654a1d..c0182596 100644 --- a/lib/converters/cp1254.h +++ b/lib/converters/cp1254.h @@ -1,5 +1,10 @@ +/** + * @file cp1254.h + * @brief CP1254 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1254 - */ +#ifndef _CP1254_H_ +#define _CP1254_H_ + +#include "reiconv_defines.h" static const unsigned short cp1254_2uni_1[32] = { /* 0x80 */ @@ -40,38 +46,44 @@ static const unsigned short cp1254_2uni_3[16] = { 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, }; -static int -cp1254_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1254_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c < 0xa0) { - unsigned short wc = cp1254_2uni_1[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; + } + else if (c < 0xa0) + { + unsigned short wc = cp1254_2uni_1[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + else if (c < 0xd0) + { + *pwc = (ucs4_t)c; + return 1; } - } - else if (c < 0xd0) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c < 0xe0) { - *pwc = (ucs4_t) cp1254_2uni_2[c-0xd0]; - return 1; - } - else if (c < 0xf0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - *pwc = (ucs4_t) cp1254_2uni_3[c-0xf0]; - return 1; - } - return RET_ILSEQ; + else if (c < 0xe0) + { + *pwc = (ucs4_t)cp1254_2uni_2[c - 0xd0]; + return 1; + } + else if (c < 0xf0) + { + *pwc = (ucs4_t)c; + return 1; + } + else + { + *pwc = (ucs4_t)cp1254_2uni_3[c - 0xf0]; + return 1; + } + return RET_ILSEQ; } static const unsigned char cp1254_page00[48] = { @@ -115,31 +127,34 @@ static const unsigned char cp1254_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1254_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1254_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00d0) - c = wc; - else if (wc >= 0x00d0 && wc < 0x0100) - c = cp1254_page00[wc-0x00d0]; - else if (wc >= 0x0118 && wc < 0x0198) - c = cp1254_page01[wc-0x0118]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp1254_page02[wc-0x02c0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1254_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00d0) + c = wc; + else if (wc >= 0x00d0 && wc < 0x0100) + c = cp1254_page00[wc - 0x00d0]; + else if (wc >= 0x0118 && wc < 0x0198) + c = cp1254_page01[wc - 0x0118]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp1254_page02[wc - 0x02c0]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1254_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1254_H_ */ diff --git a/lib/converters/cp1255.h b/lib/converters/cp1255.h index e06a05c5..d0fd58af 100644 --- a/lib/converters/cp1255.h +++ b/lib/converters/cp1255.h @@ -1,5 +1,10 @@ +/** + * @file cp1255.h + * @brief CP1255 + * @copyright Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,11 +22,12 @@ * If not, see . */ -/* - * CP1255 - */ +#ifndef _CP1255_H_ +#define _CP1255_H_ + +#include "reiconv_defines.h" -#include "flushwc.h" +#include "flushwc.h" // IWYU pragma: keep /* Combining characters used in Hebrew encoding CP1255. */ @@ -29,73 +35,58 @@ 0x05b4, 0x05b7, 0x05b8, 0x05b9, 0x05bc, 0x05bf, 0x05c1, 0x05c2. */ /* Composition tables for each of the relevant combining characters. */ -static const struct { unsigned short base; unsigned short composed; } cp1255_comp_table_data[] = { +static const struct +{ + unsigned short base; + unsigned short composed; +} cp1255_comp_table_data[] = { #define cp1255_comp_table05b4_idx 0 #define cp1255_comp_table05b4_len 1 - { 0x05D9, 0xFB1D }, -#define cp1255_comp_table05b7_idx (cp1255_comp_table05b4_idx+cp1255_comp_table05b4_len) + {0x05D9, 0xFB1D}, +#define cp1255_comp_table05b7_idx (cp1255_comp_table05b4_idx + cp1255_comp_table05b4_len) #define cp1255_comp_table05b7_len 2 - { 0x05D0, 0xFB2E }, - { 0x05F2, 0xFB1F }, -#define cp1255_comp_table05b8_idx (cp1255_comp_table05b7_idx+cp1255_comp_table05b7_len) + {0x05D0, 0xFB2E}, {0x05F2, 0xFB1F}, +#define cp1255_comp_table05b8_idx (cp1255_comp_table05b7_idx + cp1255_comp_table05b7_len) #define cp1255_comp_table05b8_len 1 - { 0x05D0, 0xFB2F }, -#define cp1255_comp_table05b9_idx (cp1255_comp_table05b8_idx+cp1255_comp_table05b8_len) + {0x05D0, 0xFB2F}, +#define cp1255_comp_table05b9_idx (cp1255_comp_table05b8_idx + cp1255_comp_table05b8_len) #define cp1255_comp_table05b9_len 1 - { 0x05D5, 0xFB4B }, -#define cp1255_comp_table05bc_idx (cp1255_comp_table05b9_idx+cp1255_comp_table05b9_len) + {0x05D5, 0xFB4B}, +#define cp1255_comp_table05bc_idx (cp1255_comp_table05b9_idx + cp1255_comp_table05b9_len) #define cp1255_comp_table05bc_len 24 - { 0x05D0, 0xFB30 }, - { 0x05D1, 0xFB31 }, - { 0x05D2, 0xFB32 }, - { 0x05D3, 0xFB33 }, - { 0x05D4, 0xFB34 }, - { 0x05D5, 0xFB35 }, - { 0x05D6, 0xFB36 }, - { 0x05D8, 0xFB38 }, - { 0x05D9, 0xFB39 }, - { 0x05DA, 0xFB3A }, - { 0x05DB, 0xFB3B }, - { 0x05DC, 0xFB3C }, - { 0x05DE, 0xFB3E }, - { 0x05E0, 0xFB40 }, - { 0x05E1, 0xFB41 }, - { 0x05E3, 0xFB43 }, - { 0x05E4, 0xFB44 }, - { 0x05E6, 0xFB46 }, - { 0x05E7, 0xFB47 }, - { 0x05E8, 0xFB48 }, - { 0x05E9, 0xFB49 }, - { 0x05EA, 0xFB4A }, - { 0xFB2A, 0xFB2C }, - { 0xFB2B, 0xFB2D }, -#define cp1255_comp_table05bf_idx (cp1255_comp_table05bc_idx+cp1255_comp_table05bc_len) + {0x05D0, 0xFB30}, {0x05D1, 0xFB31}, {0x05D2, 0xFB32}, {0x05D3, 0xFB33}, {0x05D4, 0xFB34}, {0x05D5, 0xFB35}, + {0x05D6, 0xFB36}, {0x05D8, 0xFB38}, {0x05D9, 0xFB39}, {0x05DA, 0xFB3A}, {0x05DB, 0xFB3B}, {0x05DC, 0xFB3C}, + {0x05DE, 0xFB3E}, {0x05E0, 0xFB40}, {0x05E1, 0xFB41}, {0x05E3, 0xFB43}, {0x05E4, 0xFB44}, {0x05E6, 0xFB46}, + {0x05E7, 0xFB47}, {0x05E8, 0xFB48}, {0x05E9, 0xFB49}, {0x05EA, 0xFB4A}, {0xFB2A, 0xFB2C}, {0xFB2B, 0xFB2D}, +#define cp1255_comp_table05bf_idx (cp1255_comp_table05bc_idx + cp1255_comp_table05bc_len) #define cp1255_comp_table05bf_len 3 - { 0x05D1, 0xFB4C }, - { 0x05DB, 0xFB4D }, - { 0x05E4, 0xFB4E }, -#define cp1255_comp_table05c1_idx (cp1255_comp_table05bf_idx+cp1255_comp_table05bf_len) + {0x05D1, 0xFB4C}, {0x05DB, 0xFB4D}, {0x05E4, 0xFB4E}, +#define cp1255_comp_table05c1_idx (cp1255_comp_table05bf_idx + cp1255_comp_table05bf_len) #define cp1255_comp_table05c1_len 2 - { 0x05E9, 0xFB2A }, - { 0xFB49, 0xFB2C }, -#define cp1255_comp_table05c2_idx (cp1255_comp_table05c1_idx+cp1255_comp_table05c1_len) + {0x05E9, 0xFB2A}, {0xFB49, 0xFB2C}, +#define cp1255_comp_table05c2_idx (cp1255_comp_table05c1_idx + cp1255_comp_table05c1_len) #define cp1255_comp_table05c2_len 2 - { 0x05E9, 0xFB2B }, - { 0xFB49, 0xFB2D }, + {0x05E9, 0xFB2B}, {0xFB49, 0xFB2D}, }; -static const struct { unsigned int len; unsigned int idx; } cp1255_comp_table[] = { - { cp1255_comp_table05b4_len, cp1255_comp_table05b4_idx }, - { cp1255_comp_table05b7_len, cp1255_comp_table05b7_idx }, - { cp1255_comp_table05b8_len, cp1255_comp_table05b8_idx }, - { cp1255_comp_table05b9_len, cp1255_comp_table05b9_idx }, - { cp1255_comp_table05bc_len, cp1255_comp_table05bc_idx }, - { cp1255_comp_table05bf_len, cp1255_comp_table05bf_idx }, - { cp1255_comp_table05c1_len, cp1255_comp_table05c1_idx }, - { cp1255_comp_table05c2_len, cp1255_comp_table05c2_idx }, +static const struct +{ + unsigned int len; + unsigned int idx; +} cp1255_comp_table[] = { + {cp1255_comp_table05b4_len, cp1255_comp_table05b4_idx}, {cp1255_comp_table05b7_len, cp1255_comp_table05b7_idx}, + {cp1255_comp_table05b8_len, cp1255_comp_table05b8_idx}, {cp1255_comp_table05b9_len, cp1255_comp_table05b9_idx}, + {cp1255_comp_table05bc_len, cp1255_comp_table05bc_idx}, {cp1255_comp_table05bf_len, cp1255_comp_table05bf_idx}, + {cp1255_comp_table05c1_len, cp1255_comp_table05c1_idx}, {cp1255_comp_table05c2_len, cp1255_comp_table05c2_idx}, }; /* Decomposition table for the relevant Unicode characters. */ -struct cp1255_decomp { unsigned short composed; unsigned short base; int comb1 : 8; signed int comb2 : 8; }; +struct cp1255_decomp +{ + unsigned short composed; + unsigned short base; + int comb1 : 8; + signed int comb2 : 8; +}; static const struct cp1255_decomp cp1255_decomp_table[] = { { 0xFB1D, 0x05D9, 0, -1 }, { 0xFB1F, 0x05F2, 1, -1 }, @@ -167,89 +158,121 @@ static const unsigned short cp1255_2uni[128] = { /* In the CP1255 to Unicode direction, the state contains a buffered character, or 0 if none. */ -static int -cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1255_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc; - unsigned short last_wc; - if (c < 0x80) { - wc = c; - } else { - wc = cp1255_2uni[c-0x80]; - if (wc == 0xfffd) - return RET_ILSEQ; - } - last_wc = conv->istate; - if (last_wc) { - if (wc >= 0x05b0 && wc < 0x05c5) { - /* See whether last_wc and wc can be combined. */ - unsigned int k; - unsigned int i1, i2; - switch (wc) { - case 0x05b4: k = 0; break; - case 0x05b7: k = 1; break; - case 0x05b8: k = 2; break; - case 0x05b9: k = 3; break; - case 0x05bc: k = 4; break; - case 0x05bf: k = 5; break; - case 0x05c1: k = 6; break; - case 0x05c2: k = 7; break; - default: goto not_combining; - } - i1 = cp1255_comp_table[k].idx; - i2 = i1 + cp1255_comp_table[k].len-1; - if (last_wc >= cp1255_comp_table_data[i1].base - && last_wc <= cp1255_comp_table_data[i2].base) { - unsigned int i; - for (;;) { - i = (i1+i2)>>1; - if (last_wc == cp1255_comp_table_data[i].base) - break; - if (last_wc < cp1255_comp_table_data[i].base) { - if (i1 == i) - goto not_combining; - i2 = i; - } else { - if (i1 != i) - i1 = i; - else { - i = i2; - if (last_wc == cp1255_comp_table_data[i].base) + unsigned char c = *s; + unsigned short wc; + unsigned short last_wc; + if (c < 0x80) + { + wc = c; + } + else + { + wc = cp1255_2uni[c - 0x80]; + if (wc == 0xfffd) + return RET_ILSEQ; + } + last_wc = conv->istate; + if (last_wc) + { + if (wc >= 0x05b0 && wc < 0x05c5) + { + /* See whether last_wc and wc can be combined. */ + unsigned int k; + unsigned int i1, i2; + switch (wc) + { + case 0x05b4: + k = 0; + break; + case 0x05b7: + k = 1; + break; + case 0x05b8: + k = 2; + break; + case 0x05b9: + k = 3; + break; + case 0x05bc: + k = 4; break; - goto not_combining; + case 0x05bf: + k = 5; + break; + case 0x05c1: + k = 6; + break; + case 0x05c2: + k = 7; + break; + default: + goto not_combining; + } + i1 = cp1255_comp_table[k].idx; + i2 = i1 + cp1255_comp_table[k].len - 1; + if (last_wc >= cp1255_comp_table_data[i1].base && last_wc <= cp1255_comp_table_data[i2].base) + { + unsigned int i; + for (;;) + { + i = (i1 + i2) >> 1; + if (last_wc == cp1255_comp_table_data[i].base) + break; + if (last_wc < cp1255_comp_table_data[i].base) + { + if (i1 == i) + goto not_combining; + i2 = i; + } + else + { + if (i1 != i) + i1 = i; + else + { + i = i2; + if (last_wc == cp1255_comp_table_data[i].base) + break; + goto not_combining; + } + } + } + last_wc = cp1255_comp_table_data[i].composed; + if (last_wc == 0xfb2a || last_wc == 0xfb2b || last_wc == 0xfb49) + { + /* Buffer the combined character. */ + conv->istate = last_wc; + return RET_TOOFEW(1); + } + else + { + /* Output the combined character. */ + conv->istate = 0; + *pwc = (ucs4_t)last_wc; + return 1; + } } - } - } - last_wc = cp1255_comp_table_data[i].composed; - if (last_wc == 0xfb2a || last_wc == 0xfb2b || last_wc == 0xfb49) { - /* Buffer the combined character. */ - conv->istate = last_wc; - return RET_TOOFEW(1); - } else { - /* Output the combined character. */ - conv->istate = 0; - *pwc = (ucs4_t) last_wc; - return 1; } - } + not_combining: + /* Output the buffered character. */ + conv->istate = 0; + *pwc = (ucs4_t)last_wc; + return 0; /* Don't advance the input pointer. */ + } + if ((wc >= 0x05d0 && wc <= 0x05ea && ((0x07db5f7f >> (wc - 0x05d0)) & 1)) || wc == 0x05f2) + { + /* wc is a possible match in cp1255_comp_table_data. Buffer it. */ + conv->istate = wc; + return RET_TOOFEW(1); + } + else + { + /* Output wc immediately. */ + *pwc = (ucs4_t)wc; + return 1; } - not_combining: - /* Output the buffered character. */ - conv->istate = 0; - *pwc = (ucs4_t) last_wc; - return 0; /* Don't advance the input pointer. */ - } - if ((wc >= 0x05d0 && wc <= 0x05ea && ((0x07db5f7f >> (wc - 0x05d0)) & 1)) - || wc == 0x05f2) { - /* wc is a possible match in cp1255_comp_table_data. Buffer it. */ - conv->istate = wc; - return RET_TOOFEW(1); - } else { - /* Output wc immediately. */ - *pwc = (ucs4_t) wc; - return 1; - } } #define cp1255_flushwc normal_flushwc @@ -294,86 +317,97 @@ static const unsigned char cp1255_page20[56] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1255_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00f8) - c = cp1255_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x83; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp1255_page02[wc-0x02c0]; - else if (wc >= 0x05b0 && wc < 0x05f8) - c = cp1255_page05[wc-0x05b0]; - else if (wc >= 0x2008 && wc < 0x2040) - c = cp1255_page20[wc-0x2008]; - else if (wc == 0x20aa) - c = 0xa4; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - /* Try canonical decomposition. */ - { - /* Binary search through cp1255_decomp_table. */ - unsigned int i1 = 0; - unsigned int i2 = sizeof(cp1255_decomp_table)/sizeof(cp1255_decomp_table[0])-1; - if (wc >= cp1255_decomp_table[i1].composed - && wc <= cp1255_decomp_table[i2].composed) { - unsigned int i; - for (;;) { - /* Here i2 - i1 > 0. */ - i = (i1+i2)>>1; - if (wc == cp1255_decomp_table[i].composed) - break; - if (wc < cp1255_decomp_table[i].composed) { - if (i1 == i) - return RET_ILUNI; - /* Here i1 < i < i2. */ - i2 = i; - } else { - /* Here i1 <= i < i2. */ - if (i1 != i) - i1 = i; - else { - /* Here i2 - i1 = 1. */ - i = i2; - if (wc == cp1255_decomp_table[i].composed) - break; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00f8) + c = cp1255_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x83; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp1255_page02[wc - 0x02c0]; + else if (wc >= 0x05b0 && wc < 0x05f8) + c = cp1255_page05[wc - 0x05b0]; + else if (wc >= 0x2008 && wc < 0x2040) + c = cp1255_page20[wc - 0x2008]; + else if (wc == 0x20aa) + c = 0xa4; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + /* Try canonical decomposition. */ + { + /* Binary search through cp1255_decomp_table. */ + unsigned int i1 = 0; + unsigned int i2 = sizeof(cp1255_decomp_table) / sizeof(cp1255_decomp_table[0]) - 1; + if (wc >= cp1255_decomp_table[i1].composed && wc <= cp1255_decomp_table[i2].composed) + { + unsigned int i; + for (;;) + { + /* Here i2 - i1 > 0. */ + i = (i1 + i2) >> 1; + if (wc == cp1255_decomp_table[i].composed) + break; + if (wc < cp1255_decomp_table[i].composed) + { + if (i1 == i) + return RET_ILUNI; + /* Here i1 < i < i2. */ + i2 = i; + } + else + { + /* Here i1 <= i < i2. */ + if (i1 != i) + i1 = i; + else + { + /* Here i2 - i1 = 1. */ + i = i2; + if (wc == cp1255_decomp_table[i].composed) + break; + else + return RET_ILUNI; + } + } + } + /* Found a canonical decomposition. */ + wc = cp1255_decomp_table[i].base; + /* wc is one of 0x05d0..0x05d6, 0x05d8..0x05dc, 0x05de, 0x05e0..0x05e1, + 0x05e3..0x05e4, 0x05e6..0x05ea, 0x05f2. */ + c = cp1255_page05[wc - 0x05b0]; + if (cp1255_decomp_table[i].comb2 < 0) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = c; + r[1] = cp1255_comb_table[cp1255_decomp_table[i].comb1]; + return 2; + } else - return RET_ILUNI; - } + { + if (n < 3) + return RET_TOOSMALL; + r[0] = c; + r[1] = cp1255_comb_table[cp1255_decomp_table[i].comb1]; + r[2] = cp1255_comb_table[cp1255_decomp_table[i].comb2]; + return 3; + } } - } - /* Found a canonical decomposition. */ - wc = cp1255_decomp_table[i].base; - /* wc is one of 0x05d0..0x05d6, 0x05d8..0x05dc, 0x05de, 0x05e0..0x05e1, - 0x05e3..0x05e4, 0x05e6..0x05ea, 0x05f2. */ - c = cp1255_page05[wc-0x05b0]; - if (cp1255_decomp_table[i].comb2 < 0) { - if (n < 2) - return RET_TOOSMALL; - r[0] = c; - r[1] = cp1255_comb_table[cp1255_decomp_table[i].comb1]; - return 2; - } else { - if (n < 3) - return RET_TOOSMALL; - r[0] = c; - r[1] = cp1255_comb_table[cp1255_decomp_table[i].comb1]; - r[2] = cp1255_comb_table[cp1255_decomp_table[i].comb2]; - return 3; - } } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CP1255_H_ */ diff --git a/lib/converters/cp1256.h b/lib/converters/cp1256.h index cc5af5ca..8e327297 100644 --- a/lib/converters/cp1256.h +++ b/lib/converters/cp1256.h @@ -1,5 +1,10 @@ +/** + * @file cp1256.h + * @brief CP1256 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1256 - */ +#ifndef _CP1256_H_ +#define _CP1256_H_ + +#include "reiconv_defines.h" static const unsigned short cp1256_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp1256_2uni[128] = { 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2, }; -static int -cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1256_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp1256_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp1256_2uni[c - 0x80]; + return 1; } static const unsigned char cp1256_page00[96] = { @@ -122,31 +127,34 @@ static const unsigned char cp1256_page20[56] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1256_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp1256_page00[wc-0x00a0]; - else if (wc >= 0x0150 && wc < 0x0198) - c = cp1256_page01[wc-0x0150]; - else if (wc == 0x02c6) - c = 0x88; - else if (wc >= 0x0608 && wc < 0x06d8) - c = cp1256_page06[wc-0x0608]; - else if (wc >= 0x2008 && wc < 0x2040) - c = cp1256_page20[wc-0x2008]; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp1256_page00[wc - 0x00a0]; + else if (wc >= 0x0150 && wc < 0x0198) + c = cp1256_page01[wc - 0x0150]; + else if (wc == 0x02c6) + c = 0x88; + else if (wc >= 0x0608 && wc < 0x06d8) + c = cp1256_page06[wc - 0x0608]; + else if (wc >= 0x2008 && wc < 0x2040) + c = cp1256_page20[wc - 0x2008]; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1256_H_ */ diff --git a/lib/converters/cp1257.h b/lib/converters/cp1257.h index 0c1714b0..a15fc67f 100644 --- a/lib/converters/cp1257.h +++ b/lib/converters/cp1257.h @@ -1,5 +1,10 @@ +/** + * @file cp1257.h + * @brief CP1257 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP1257 - */ +#ifndef _CP1257_H_ +#define _CP1257_H_ + +#include "reiconv_defines.h" static const unsigned short cp1257_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp1257_2uni[128] = { 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9, }; -static int -cp1257_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1257_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp1257_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp1257_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp1257_page00[224] = { @@ -112,27 +120,30 @@ static const unsigned char cp1257_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1257_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1257_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = cp1257_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp1257_page02[wc-0x02c0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1257_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = cp1257_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp1257_page02[wc - 0x02c0]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1257_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP1257_H_ */ diff --git a/lib/converters/cp1258.h b/lib/converters/cp1258.h index b274beaa..312a81dd 100644 --- a/lib/converters/cp1258.h +++ b/lib/converters/cp1258.h @@ -1,5 +1,10 @@ +/** + * @file cp1258.h + * @brief CP1258 + * @copyright Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,13 +22,16 @@ * If not, see . */ -/* - * CP1258 - */ +#ifndef _CP1258_H_ +#define _CP1258_H_ -#include "flushwc.h" +#include "reiconv_defines.h" + +#include "flushwc.h" // IWYU pragma: keep #include "vietcomb.h" +#include + static const unsigned char cp1258_comb_table[] = { 0xcc, 0xec, 0xde, 0xd2, 0xf2, }; @@ -70,80 +78,103 @@ static const unsigned short cp1258_2uni[128] = { /* In the CP1258 to Unicode direction, the state contains a buffered character, or 0 if none. */ -static int -cp1258_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp1258_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc; - unsigned short last_wc; - if (c < 0x80) { - wc = c; - } else { - wc = cp1258_2uni[c-0x80]; - if (wc == 0xfffd) - return RET_ILSEQ; - } - last_wc = conv->istate; - if (last_wc) { - if (wc >= 0x0300 && wc < 0x0340) { - /* See whether last_wc and wc can be combined. */ - unsigned int k; - unsigned int i1, i2; - switch (wc) { - case 0x0300: k = 0; break; - case 0x0301: k = 1; break; - case 0x0303: k = 2; break; - case 0x0309: k = 3; break; - case 0x0323: k = 4; break; - default: abort(); - } - i1 = viet_comp_table[k].idx; - i2 = i1 + viet_comp_table[k].len-1; - if (last_wc >= viet_comp_table_data[i1].base - && last_wc <= viet_comp_table_data[i2].base) { - unsigned int i; - for (;;) { - i = (i1+i2)>>1; - if (last_wc == viet_comp_table_data[i].base) - break; - if (last_wc < viet_comp_table_data[i].base) { - if (i1 == i) - goto not_combining; - i2 = i; - } else { - if (i1 != i) - i1 = i; - else { - i = i2; - if (last_wc == viet_comp_table_data[i].base) + unsigned char c = *s; + unsigned short wc; + unsigned short last_wc; + if (c < 0x80) + { + wc = c; + } + else + { + wc = cp1258_2uni[c - 0x80]; + if (wc == 0xfffd) + return RET_ILSEQ; + } + last_wc = conv->istate; + if (last_wc) + { + if (wc >= 0x0300 && wc < 0x0340) + { + /* See whether last_wc and wc can be combined. */ + unsigned int k; + unsigned int i1, i2; + switch (wc) + { + case 0x0300: + k = 0; + break; + case 0x0301: + k = 1; + break; + case 0x0303: + k = 2; + break; + case 0x0309: + k = 3; + break; + case 0x0323: + k = 4; break; - goto not_combining; + default: + abort(); + } + i1 = viet_comp_table[k].idx; + i2 = i1 + viet_comp_table[k].len - 1; + if (last_wc >= viet_comp_table_data[i1].base && last_wc <= viet_comp_table_data[i2].base) + { + unsigned int i; + for (;;) + { + i = (i1 + i2) >> 1; + if (last_wc == viet_comp_table_data[i].base) + break; + if (last_wc < viet_comp_table_data[i].base) + { + if (i1 == i) + goto not_combining; + i2 = i; + } + else + { + if (i1 != i) + i1 = i; + else + { + i = i2; + if (last_wc == viet_comp_table_data[i].base) + break; + goto not_combining; + } + } + } + last_wc = viet_comp_table_data[i].composed; + /* Output the combined character. */ + conv->istate = 0; + *pwc = (ucs4_t)last_wc; + return 1; } - } } - last_wc = viet_comp_table_data[i].composed; - /* Output the combined character. */ + not_combining: + /* Output the buffered character. */ conv->istate = 0; - *pwc = (ucs4_t) last_wc; + *pwc = (ucs4_t)last_wc; + return 0; /* Don't advance the input pointer. */ + } + if (wc >= 0x0041 && wc <= 0x01b0 && ((cp1258_comp_bases[(wc - 0x0040) >> 5] >> (wc & 0x1f)) & 1)) + { + /* wc is a possible match in viet_comp_table_data. Buffer it. */ + conv->istate = wc; + return RET_TOOFEW(1); + } + else + { + /* Output wc immediately. */ + *pwc = (ucs4_t)wc; return 1; - } } - not_combining: - /* Output the buffered character. */ - conv->istate = 0; - *pwc = (ucs4_t) last_wc; - return 0; /* Don't advance the input pointer. */ - } - if (wc >= 0x0041 && wc <= 0x01b0 - && ((cp1258_comp_bases[(wc - 0x0040) >> 5] >> (wc & 0x1f)) & 1)) { - /* wc is a possible match in viet_comp_table_data. Buffer it. */ - conv->istate = wc; - return RET_TOOFEW(1); - } else { - /* Output wc immediately. */ - *pwc = (ucs4_t) wc; - return 1; - } } #define cp1258_flushwc normal_flushwc @@ -199,89 +230,97 @@ static const unsigned char cp1258_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -cp1258_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp1258_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = wc; - else if (wc >= 0x00c0 && wc < 0x0118) - c = cp1258_page00[wc-0x00c0]; - else if (wc >= 0x0150 && wc < 0x01b8) - c = cp1258_page01[wc-0x0150]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp1258_page02[wc-0x02c0]; - else if (wc >= 0x0300 && wc < 0x0328) - c = cp1258_page03[wc-0x0300]; - else if (wc >= 0x0340 && wc < 0x0342) /* deprecated Vietnamese tone marks */ - c = cp1258_page03[wc-0x0340]; - else if (wc >= 0x2010 && wc < 0x2040) - c = cp1258_page20[wc-0x2010]; - else if (wc == 0x20ab) - c = 0xfe; - else if (wc == 0x20ac) - c = 0x80; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - /* Try canonical decomposition. */ - { - /* Binary search through viet_decomp_table. */ - unsigned int i1 = 0; - unsigned int i2 = sizeof(viet_decomp_table)/sizeof(viet_decomp_table[0])-1; - if (wc >= viet_decomp_table[i1].composed - && wc <= viet_decomp_table[i2].composed) { - unsigned int i; - for (;;) { - /* Here i2 - i1 > 0. */ - i = (i1+i2)>>1; - if (wc == viet_decomp_table[i].composed) - break; - if (wc < viet_decomp_table[i].composed) { - if (i1 == i) - return RET_ILUNI; - /* Here i1 < i < i2. */ - i2 = i; - } else { - /* Here i1 <= i < i2. */ - if (i1 != i) - i1 = i; - else { - /* Here i2 - i1 = 1. */ - i = i2; - if (wc == viet_decomp_table[i].composed) - break; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = wc; + else if (wc >= 0x00c0 && wc < 0x0118) + c = cp1258_page00[wc - 0x00c0]; + else if (wc >= 0x0150 && wc < 0x01b8) + c = cp1258_page01[wc - 0x0150]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp1258_page02[wc - 0x02c0]; + else if (wc >= 0x0300 && wc < 0x0328) + c = cp1258_page03[wc - 0x0300]; + else if (wc >= 0x0340 && wc < 0x0342) /* deprecated Vietnamese tone marks */ + c = cp1258_page03[wc - 0x0340]; + else if (wc >= 0x2010 && wc < 0x2040) + c = cp1258_page20[wc - 0x2010]; + else if (wc == 0x20ab) + c = 0xfe; + else if (wc == 0x20ac) + c = 0x80; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + /* Try canonical decomposition. */ + { + /* Binary search through viet_decomp_table. */ + unsigned int i1 = 0; + unsigned int i2 = sizeof(viet_decomp_table) / sizeof(viet_decomp_table[0]) - 1; + if (wc >= viet_decomp_table[i1].composed && wc <= viet_decomp_table[i2].composed) + { + unsigned int i; + for (;;) + { + /* Here i2 - i1 > 0. */ + i = (i1 + i2) >> 1; + if (wc == viet_decomp_table[i].composed) + break; + if (wc < viet_decomp_table[i].composed) + { + if (i1 == i) + return RET_ILUNI; + /* Here i1 < i < i2. */ + i2 = i; + } + else + { + /* Here i1 <= i < i2. */ + if (i1 != i) + i1 = i; + else + { + /* Here i2 - i1 = 1. */ + i = i2; + if (wc == viet_decomp_table[i].composed) + break; + else + return RET_ILUNI; + } + } + } + /* Found a canonical decomposition. */ + wc = viet_decomp_table[i].base; + /* wc is one of 0x0020, 0x0041..0x005a, 0x0061..0x007a, 0x00a5, 0x00a8, + 0x00c2, 0x00c5..0x00c7, 0x00ca, 0x00cf, 0x00d3, 0x00d4, 0x00d6, + 0x00d8, 0x00da, 0x00dc, 0x00e2, 0x00e5..0x00e7, 0x00ea, 0x00ef, + 0x00f3, 0x00f4, 0x00f6, 0x00f8, 0x00fc, 0x0102, 0x0103, 0x01a0, + 0x01a1, 0x01af, 0x01b0. */ + if (wc < 0x0100) + c = wc; + else if (wc < 0x0118) + c = cp1258_page00[wc - 0x00c0]; else - return RET_ILUNI; - } + c = cp1258_page01[wc - 0x0150]; + if (n < 2) + return RET_TOOSMALL; + r[0] = c; + r[1] = cp1258_comb_table[viet_decomp_table[i].comb1]; + return 2; } - } - /* Found a canonical decomposition. */ - wc = viet_decomp_table[i].base; - /* wc is one of 0x0020, 0x0041..0x005a, 0x0061..0x007a, 0x00a5, 0x00a8, - 0x00c2, 0x00c5..0x00c7, 0x00ca, 0x00cf, 0x00d3, 0x00d4, 0x00d6, - 0x00d8, 0x00da, 0x00dc, 0x00e2, 0x00e5..0x00e7, 0x00ea, 0x00ef, - 0x00f3, 0x00f4, 0x00f6, 0x00f8, 0x00fc, 0x0102, 0x0103, 0x01a0, - 0x01a1, 0x01af, 0x01b0. */ - if (wc < 0x0100) - c = wc; - else if (wc < 0x0118) - c = cp1258_page00[wc-0x00c0]; - else - c = cp1258_page01[wc-0x0150]; - if (n < 2) - return RET_TOOSMALL; - r[0] = c; - r[1] = cp1258_comb_table[viet_decomp_table[i].comb1]; - return 2; } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CP1258_H_ */ diff --git a/lib/converters/cp437.h b/lib/converters/cp437.h index 6276bd52..0e3c9b9b 100644 --- a/lib/converters/cp437.h +++ b/lib/converters/cp437.h @@ -1,5 +1,10 @@ +/** + * @file cp437.h + * @brief CP437 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP437 - */ +#ifndef _CP437_H_ +#define _CP437_H_ + +#include "reiconv_defines.h" static const unsigned short cp437_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp437_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp437_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp437_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp437_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp437_2uni[c - 0x80]; + return 1; } static const unsigned char cp437_page00[96] = { @@ -123,33 +128,36 @@ static const unsigned char cp437_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp437_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp437_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp437_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x9f; - else if (wc >= 0x0390 && wc < 0x03c8) - c = cp437_page03[wc-0x0390]; - else if (wc == 0x207f) - c = 0xfc; - else if (wc == 0x20a7) - c = 0x9e; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp437_page22[wc-0x2218]; - else if (wc >= 0x2310 && wc < 0x2328) - c = cp437_page23[wc-0x2310]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp437_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp437_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x9f; + else if (wc >= 0x0390 && wc < 0x03c8) + c = cp437_page03[wc - 0x0390]; + else if (wc == 0x207f) + c = 0xfc; + else if (wc == 0x20a7) + c = 0x9e; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp437_page22[wc - 0x2218]; + else if (wc >= 0x2310 && wc < 0x2328) + c = cp437_page23[wc - 0x2310]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp437_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP437_H_ */ diff --git a/lib/converters/cp50221_0208_ext.h b/lib/converters/cp50221_0208_ext.h index e534ede6..40d9cc69 100644 --- a/lib/converters/cp50221_0208_ext.h +++ b/lib/converters/cp50221_0208_ext.h @@ -1,5 +1,10 @@ +/** + * @file cp50221_0208_ext.h + * @brief CP50221 JISX0208 extensions + * @copyright Copyright (C) 1999-2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP50221 JISX0208 extensions - */ +#ifndef _CP50221_0208_EXT_H_ +#define _CP50221_0208_EXT_H_ + +#include "reiconv_defines.h" static const unsigned short cp50221_0208_ext_2uni[96] = { /* 0x00 */ @@ -42,18 +48,19 @@ static const unsigned short cp50221_0208_ext_2uni[96] = { 0x221f, 0x22bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; -static int -cp50221_0208_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp50221_0208_ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x60) { - unsigned short wc = cp50221_0208_ext_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x60) + { + unsigned short wc = cp50221_0208_ext_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned char cp50221_0208_ext_page21[96] = { @@ -121,29 +128,31 @@ static const unsigned char cp50221_0208_ext_page33[208] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, /* 0xc8-0xcf */ }; -static int -cp50221_0208_ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp50221_0208_ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc >= 0x2110 && wc < 0x2170) - c = cp50221_0208_ext_page21[wc-0x2110]; - else if (wc >= 0x2210 && wc < 0x2230) - c = cp50221_0208_ext_page22[wc-0x2210]; - else if (wc == 0x22bf) - c = 0x59; - else if (wc >= 0x2460 && wc < 0x2478) - c = cp50221_0208_ext_page24[wc-0x2460]; - else if (wc >= 0x3018 && wc < 0x3020) - c = cp50221_0208_ext_page30[wc-0x3018]; - else if (wc >= 0x3230 && wc < 0x3240) - c = cp50221_0208_ext_page32[wc-0x3230]; - else if (wc >= 0x32a0 && wc < 0x32b0) - c = cp50221_0208_ext_page32_1[wc-0x32a0]; - else if (wc >= 0x3300 && wc < 0x33d0) - c = cp50221_0208_ext_page33[wc-0x3300]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc >= 0x2110 && wc < 0x2170) + c = cp50221_0208_ext_page21[wc - 0x2110]; + else if (wc >= 0x2210 && wc < 0x2230) + c = cp50221_0208_ext_page22[wc - 0x2210]; + else if (wc == 0x22bf) + c = 0x59; + else if (wc >= 0x2460 && wc < 0x2478) + c = cp50221_0208_ext_page24[wc - 0x2460]; + else if (wc >= 0x3018 && wc < 0x3020) + c = cp50221_0208_ext_page30[wc - 0x3018]; + else if (wc >= 0x3230 && wc < 0x3240) + c = cp50221_0208_ext_page32[wc - 0x3230]; + else if (wc >= 0x32a0 && wc < 0x32b0) + c = cp50221_0208_ext_page32_1[wc - 0x32a0]; + else if (wc >= 0x3300 && wc < 0x33d0) + c = cp50221_0208_ext_page33[wc - 0x3300]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP50221_0208_EXT_H_ */ diff --git a/lib/converters/cp50221_0212_ext.h b/lib/converters/cp50221_0212_ext.h index 5d401437..f450ea0d 100644 --- a/lib/converters/cp50221_0212_ext.h +++ b/lib/converters/cp50221_0212_ext.h @@ -1,5 +1,10 @@ +/** + * @file cp50221_0212_ext.h + * @brief CP50221 JISX0212 extensions + * @copyright Copyright (C) 1999-2011, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2011, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP50221 JISX0212 extensions - */ +#ifndef _CP50221_0212_EXT_H_ +#define _CP50221_0212_EXT_H_ + +#include "reiconv_defines.h" static const unsigned short cp50221_0212_ext_2uni[112] = { /* 0x00 */ @@ -45,22 +51,24 @@ static const unsigned short cp50221_0212_ext_2uni[112] = { 0x9b72, 0xfa2d, 0x9ed1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; -static int -cp50221_0212_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp50221_0212_ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x70) { - unsigned short wc = cp50221_0212_ext_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x70) + { + unsigned short wc = cp50221_0212_ext_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } } - } - else if (c == 0xa1) { - *pwc = 0x974d; - return 1; - } - return RET_ILSEQ; + else if (c == 0xa1) + { + *pwc = 0x974d; + return 1; + } + return RET_ILSEQ; } static const unsigned char cp50221_0212_ext_page21[16] = { @@ -110,103 +118,105 @@ static const unsigned char cp50221_0212_ext_pageff[8] = { 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x15, /* 0x00-0x07 */ }; -static int -cp50221_0212_ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp50221_0212_ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc >= 0x2170 && wc < 0x2180) - c = cp50221_0212_ext_page21[wc-0x2170]; - else if (wc == 0x4efc) - c = 0x1b; - else if (wc == 0x50f4) - c = 0x1c; - else if (wc == 0x51ec) - c = 0x1d; - else if (wc >= 0x5300 && wc < 0x5328) - c = cp50221_0212_ext_page53[wc-0x5300]; - else if (wc == 0x548a) - c = 0x21; - else if (wc == 0x5759) - c = 0x22; - else if (wc == 0x589e) - c = 0x25; - else if (wc == 0x5bec) - c = 0x26; - else if (wc == 0x5cf5) - c = 0x27; - else if (wc == 0x5d53) - c = 0x28; - else if (wc == 0x5fb7) - c = 0x2a; - else if (wc == 0x6085) - c = 0x2b; - else if (wc == 0x6120) - c = 0x2c; - else if (wc == 0x654e) - c = 0x2d; - else if (wc == 0x6665) - c = 0x2f; - else if (wc == 0x6801) - c = 0x32; - else if (wc == 0x6a6b) - c = 0x35; - else if (wc == 0x6ae2) - c = 0x36; - else if (wc >= 0x6df0 && wc < 0x6e00) - c = cp50221_0212_ext_page6d[wc-0x6df0]; - else if (wc == 0x7028) - c = 0x39; - else if (wc == 0x70bb) - c = 0x1a; - else if (wc == 0x7501) - c = 0x3c; - else if (wc >= 0x7680 && wc < 0x76a0) - c = cp50221_0212_ext_page76[wc-0x7680]; - else if (wc == 0x7930) - c = 0x40; - else if (wc == 0x7ae7) - c = 0x45; - else if (wc >= 0x7da0 && wc < 0x7dd8) - c = cp50221_0212_ext_page7d[wc-0x7da0]; - else if (wc == 0x8362) - c = 0x4b; - else if (wc == 0x85b0) - c = 0x4d; - else if (wc == 0x8807) - c = 0x50; - else if (wc == 0x8b7f) - c = 0x52; - else if (wc == 0x8cf4) - c = 0x53; - else if (wc == 0x8d76) - c = 0x54; - else if (wc == 0x90de) - c = 0x58; - else if (wc == 0x9115) - c = 0x5a; - else if (wc == 0x9592) - c = 0x5d; - else if (wc >= 0x9738 && wc < 0x9758) - c = cp50221_0212_ext_page97[wc-0x9738]; - else if (wc == 0x999e) - c = 0x66; - else if (wc == 0x9ad9) - c = 0x67; - else if (wc == 0x9b72) - c = 0x68; - else if (wc == 0x9ed1) - c = 0x6a; - else if (wc == 0xf929) - c = 0x31; - else if (wc == 0xf9dc) - c = 0x5e; - else if (wc >= 0xfa08 && wc < 0xfa30) - c = cp50221_0212_ext_pagefa[wc-0xfa08]; - else if (wc >= 0xff00 && wc < 0xff08) - c = cp50221_0212_ext_pageff[wc-0xff00]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc >= 0x2170 && wc < 0x2180) + c = cp50221_0212_ext_page21[wc - 0x2170]; + else if (wc == 0x4efc) + c = 0x1b; + else if (wc == 0x50f4) + c = 0x1c; + else if (wc == 0x51ec) + c = 0x1d; + else if (wc >= 0x5300 && wc < 0x5328) + c = cp50221_0212_ext_page53[wc - 0x5300]; + else if (wc == 0x548a) + c = 0x21; + else if (wc == 0x5759) + c = 0x22; + else if (wc == 0x589e) + c = 0x25; + else if (wc == 0x5bec) + c = 0x26; + else if (wc == 0x5cf5) + c = 0x27; + else if (wc == 0x5d53) + c = 0x28; + else if (wc == 0x5fb7) + c = 0x2a; + else if (wc == 0x6085) + c = 0x2b; + else if (wc == 0x6120) + c = 0x2c; + else if (wc == 0x654e) + c = 0x2d; + else if (wc == 0x6665) + c = 0x2f; + else if (wc == 0x6801) + c = 0x32; + else if (wc == 0x6a6b) + c = 0x35; + else if (wc == 0x6ae2) + c = 0x36; + else if (wc >= 0x6df0 && wc < 0x6e00) + c = cp50221_0212_ext_page6d[wc - 0x6df0]; + else if (wc == 0x7028) + c = 0x39; + else if (wc == 0x70bb) + c = 0x1a; + else if (wc == 0x7501) + c = 0x3c; + else if (wc >= 0x7680 && wc < 0x76a0) + c = cp50221_0212_ext_page76[wc - 0x7680]; + else if (wc == 0x7930) + c = 0x40; + else if (wc == 0x7ae7) + c = 0x45; + else if (wc >= 0x7da0 && wc < 0x7dd8) + c = cp50221_0212_ext_page7d[wc - 0x7da0]; + else if (wc == 0x8362) + c = 0x4b; + else if (wc == 0x85b0) + c = 0x4d; + else if (wc == 0x8807) + c = 0x50; + else if (wc == 0x8b7f) + c = 0x52; + else if (wc == 0x8cf4) + c = 0x53; + else if (wc == 0x8d76) + c = 0x54; + else if (wc == 0x90de) + c = 0x58; + else if (wc == 0x9115) + c = 0x5a; + else if (wc == 0x9592) + c = 0x5d; + else if (wc >= 0x9738 && wc < 0x9758) + c = cp50221_0212_ext_page97[wc - 0x9738]; + else if (wc == 0x999e) + c = 0x66; + else if (wc == 0x9ad9) + c = 0x67; + else if (wc == 0x9b72) + c = 0x68; + else if (wc == 0x9ed1) + c = 0x6a; + else if (wc == 0xf929) + c = 0x31; + else if (wc == 0xf9dc) + c = 0x5e; + else if (wc >= 0xfa08 && wc < 0xfa30) + c = cp50221_0212_ext_pagefa[wc - 0xfa08]; + else if (wc >= 0xff00 && wc < 0xff08) + c = cp50221_0212_ext_pageff[wc - 0xff00]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP50221_0212_EXT_H_ */ diff --git a/lib/converters/cp737.h b/lib/converters/cp737.h index 364906ba..532bdb82 100644 --- a/lib/converters/cp737.h +++ b/lib/converters/cp737.h @@ -1,5 +1,10 @@ +/** + * @file cp737.h + * @brief CP737 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP737 - */ +#ifndef _CP737_H_ +#define _CP737_H_ + +#include "reiconv_defines.h" static const unsigned short cp737_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp737_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp737_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp737_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp737_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp737_2uni[c - 0x80]; + return 1; } static const unsigned char cp737_page00[24] = { @@ -112,29 +117,32 @@ static const unsigned char cp737_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp737_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp737_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b8) - c = cp737_page00[wc-0x00a0]; - else if (wc == 0x00f7) - c = 0xf6; - else if (wc >= 0x0380 && wc < 0x03d0) - c = cp737_page03[wc-0x0380]; - else if (wc == 0x207f) - c = 0xfc; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp737_page22[wc-0x2218]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp737_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b8) + c = cp737_page00[wc - 0x00a0]; + else if (wc == 0x00f7) + c = 0xf6; + else if (wc >= 0x0380 && wc < 0x03d0) + c = cp737_page03[wc - 0x0380]; + else if (wc == 0x207f) + c = 0xfc; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp737_page22[wc - 0x2218]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp737_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP737_H_ */ diff --git a/lib/converters/cp775.h b/lib/converters/cp775.h index 3609ae59..c1285c77 100644 --- a/lib/converters/cp775.h +++ b/lib/converters/cp775.h @@ -1,5 +1,10 @@ +/** + * @file cp775.h + * @brief CP775 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP775 - */ +#ifndef _CP775_H_ +#define _CP775_H_ + +#include "reiconv_defines.h" static const unsigned short cp775_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp775_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp775_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp775_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp775_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp775_2uni[c - 0x80]; + return 1; } static const unsigned char cp775_page00[224] = { @@ -117,25 +122,28 @@ static const unsigned char cp775_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp775_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp775_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = cp775_page00[wc-0x00a0]; - else if (wc >= 0x2018 && wc < 0x2020) - c = cp775_page20[wc-0x2018]; - else if (wc == 0x2219) - c = 0xf9; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp775_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = cp775_page00[wc - 0x00a0]; + else if (wc >= 0x2018 && wc < 0x2020) + c = cp775_page20[wc - 0x2018]; + else if (wc == 0x2219) + c = 0xf9; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp775_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP775_H_ */ diff --git a/lib/converters/cp850.h b/lib/converters/cp850.h index ebe900fe..26594318 100644 --- a/lib/converters/cp850.h +++ b/lib/converters/cp850.h @@ -1,5 +1,10 @@ +/** + * @file cp850.h + * @brief CP850 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP850 - */ +#ifndef _CP850_H_ +#define _CP850_H_ + +#include "reiconv_defines.h" static const unsigned short cp850_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp850_2uni[128] = { 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp850_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp850_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp850_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp850_2uni[c - 0x80]; + return 1; } static const unsigned char cp850_page00[96] = { @@ -97,27 +102,30 @@ static const unsigned char cp850_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp850_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp850_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp850_page00[wc-0x00a0]; - else if (wc == 0x0131) - c = 0xd5; - else if (wc == 0x0192) - c = 0x9f; - else if (wc == 0x2017) - c = 0xf2; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp850_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp850_page00[wc - 0x00a0]; + else if (wc == 0x0131) + c = 0xd5; + else if (wc == 0x0192) + c = 0x9f; + else if (wc == 0x2017) + c = 0xf2; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp850_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP850_H_ */ diff --git a/lib/converters/cp852.h b/lib/converters/cp852.h index 2d3a5a2e..c80c0f51 100644 --- a/lib/converters/cp852.h +++ b/lib/converters/cp852.h @@ -1,5 +1,10 @@ +/** + * @file cp852.h + * @brief CP852 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP852 - */ +#ifndef _CP852_H_ +#define _CP852_H_ + +#include "reiconv_defines.h" static const unsigned short cp852_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp852_2uni[128] = { 0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0, }; -static int -cp852_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp852_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp852_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp852_2uni[c - 0x80]; + return 1; } static const unsigned char cp852_page00[224] = { @@ -120,23 +125,26 @@ static const unsigned char cp852_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp852_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp852_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = cp852_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = cp852_page02[wc-0x02c0]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp852_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = cp852_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = cp852_page02[wc - 0x02c0]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp852_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP852_H_ */ diff --git a/lib/converters/cp853.h b/lib/converters/cp853.h index 8b9e0b49..334e3c1f 100644 --- a/lib/converters/cp853.h +++ b/lib/converters/cp853.h @@ -1,5 +1,10 @@ +/** + * @file cp853.h + * @brief CP853 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP853 - */ +#ifndef _CP853_H_ +#define _CP853_H_ + +#include "reiconv_defines.h" static const unsigned short cp853_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp853_2uni[128] = { 0x00b0, 0x00a8, 0x02d9, 0xfffd, 0x00b3, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp853_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp853_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp853_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp853_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp853_page00[96] = { @@ -124,27 +132,30 @@ static const unsigned char cp853_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp853_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp853_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp853_page00[wc-0x00a0]; - else if (wc >= 0x0108 && wc < 0x0180) - c = cp853_page01[wc-0x0108]; - else if (wc >= 0x02d8 && wc < 0x02e0) - c = cp853_page02[wc-0x02d8]; - else if (wc == 0x2113) - c = 0xf2; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp853_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp853_page00[wc - 0x00a0]; + else if (wc >= 0x0108 && wc < 0x0180) + c = cp853_page01[wc - 0x0108]; + else if (wc >= 0x02d8 && wc < 0x02e0) + c = cp853_page02[wc - 0x02d8]; + else if (wc == 0x2113) + c = 0xf2; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp853_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP853_H_ */ diff --git a/lib/converters/cp855.h b/lib/converters/cp855.h index df8f0e01..31fe9e6c 100644 --- a/lib/converters/cp855.h +++ b/lib/converters/cp855.h @@ -1,5 +1,10 @@ +/** + * @file cp855.h + * @brief CP855 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP855 - */ +#ifndef _CP855_H_ +#define _CP855_H_ + +#include "reiconv_defines.h" static const unsigned short cp855_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp855_2uni[128] = { 0x042d, 0x0449, 0x0429, 0x0447, 0x0427, 0x00a7, 0x25a0, 0x00a0, }; -static int -cp855_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp855_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp855_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp855_2uni[c - 0x80]; + return 1; } static const unsigned char cp855_page00[32] = { @@ -103,25 +108,28 @@ static const unsigned char cp855_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp855_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp855_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = cp855_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0460) - c = cp855_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0xef; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp855_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = cp855_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0460) + c = cp855_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0xef; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp855_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP855_H_ */ diff --git a/lib/converters/cp856.h b/lib/converters/cp856.h index 831cbac4..7b37d9a6 100644 --- a/lib/converters/cp856.h +++ b/lib/converters/cp856.h @@ -1,5 +1,10 @@ +/** + * @file cp856.h + * @brief CP856 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP856 - */ +#ifndef _CP856_H_ +#define _CP856_H_ + +#include "reiconv_defines.h" static const unsigned short cp856_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp856_2uni[128] = { 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp856_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp856_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp856_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp856_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp856_page00[88] = { @@ -109,25 +117,28 @@ static const unsigned char cp856_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp856_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp856_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00f8) - c = cp856_page00[wc-0x00a0]; - else if (wc >= 0x05d0 && wc < 0x05f0) - c = cp856_page05[wc-0x05d0]; - else if (wc == 0x2017) - c = 0xf2; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp856_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00f8) + c = cp856_page00[wc - 0x00a0]; + else if (wc >= 0x05d0 && wc < 0x05f0) + c = cp856_page05[wc - 0x05d0]; + else if (wc == 0x2017) + c = 0xf2; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp856_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP856_H_ */ diff --git a/lib/converters/cp857.h b/lib/converters/cp857.h index 32985d25..dd9b3007 100644 --- a/lib/converters/cp857.h +++ b/lib/converters/cp857.h @@ -1,5 +1,10 @@ +/** + * @file cp857.h + * @brief CP857 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP857 - */ +#ifndef _CP857_H_ +#define _CP857_H_ + +#include "reiconv_defines.h" static const unsigned short cp857_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp857_2uni[128] = { 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp857_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp857_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp857_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp857_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp857_page00[96] = { @@ -115,23 +123,26 @@ static const unsigned char cp857_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp857_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp857_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp857_page00[wc-0x00a0]; - else if (wc >= 0x0118 && wc < 0x0160) - c = cp857_page01[wc-0x0118]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp857_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp857_page00[wc - 0x00a0]; + else if (wc >= 0x0118 && wc < 0x0160) + c = cp857_page01[wc - 0x0118]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp857_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP857_H_ */ diff --git a/lib/converters/cp858.h b/lib/converters/cp858.h index cd472fd3..c3699c51 100644 --- a/lib/converters/cp858.h +++ b/lib/converters/cp858.h @@ -1,5 +1,10 @@ +/** + * @file cp858.h + * @brief CP858 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,44 +22,48 @@ * If not, see . */ -/* - * CP858 - */ +#ifndef _CP858_H_ +#define _CP858_H_ + +#include "converters/cp850.h" +#include "reiconv_defines.h" -static int -cp858_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp858_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else if (c == 0xd5) - *pwc = 0x20ac; - else - *pwc = (ucs4_t) cp850_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else if (c == 0xd5) + *pwc = 0x20ac; + else + *pwc = (ucs4_t)cp850_2uni[c - 0x80]; + return 1; } -static int -cp858_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp858_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp850_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x9f; - else if (wc == 0x2017) - c = 0xf2; - else if (wc == 0x20ac) - c = 0xd5; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp850_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp850_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x9f; + else if (wc == 0x2017) + c = 0xf2; + else if (wc == 0x20ac) + c = 0xd5; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp850_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP858_H_ */ diff --git a/lib/converters/cp860.h b/lib/converters/cp860.h index 9da582bf..cf27c030 100644 --- a/lib/converters/cp860.h +++ b/lib/converters/cp860.h @@ -1,5 +1,10 @@ +/** + * @file cp860.h + * @brief CP860 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP860 - */ +#ifndef _CP860_H_ +#define _CP860_H_ + +#include "reiconv_defines.h" static const unsigned short cp860_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp860_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp860_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp860_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp860_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp860_2uni[c - 0x80]; + return 1; } static const unsigned char cp860_page00[96] = { @@ -118,31 +123,34 @@ static const unsigned char cp860_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp860_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp860_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp860_page00[wc-0x00a0]; - else if (wc >= 0x0390 && wc < 0x03c8) - c = cp860_page03[wc-0x0390]; - else if (wc == 0x207f) - c = 0xfc; - else if (wc == 0x20a7) - c = 0x9e; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp860_page22[wc-0x2218]; - else if (wc >= 0x2320 && wc < 0x2322) - c = wc-0x222c; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp860_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp860_page00[wc - 0x00a0]; + else if (wc >= 0x0390 && wc < 0x03c8) + c = cp860_page03[wc - 0x0390]; + else if (wc == 0x207f) + c = 0xfc; + else if (wc == 0x20a7) + c = 0x9e; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp860_page22[wc - 0x2218]; + else if (wc >= 0x2320 && wc < 0x2322) + c = wc - 0x222c; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp860_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP860_H_ */ diff --git a/lib/converters/cp861.h b/lib/converters/cp861.h index f365ff55..a6ac34c9 100644 --- a/lib/converters/cp861.h +++ b/lib/converters/cp861.h @@ -1,5 +1,10 @@ +/** + * @file cp861.h + * @brief CP861 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP861 - */ +#ifndef _CP861_H_ +#define _CP861_H_ + +#include "reiconv_defines.h" static const unsigned short cp861_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp861_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp861_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp861_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp861_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp861_2uni[c - 0x80]; + return 1; } static const unsigned char cp861_page00[96] = { @@ -123,33 +128,36 @@ static const unsigned char cp861_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp861_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp861_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp861_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x9f; - else if (wc >= 0x0390 && wc < 0x03c8) - c = cp861_page03[wc-0x0390]; - else if (wc == 0x207f) - c = 0xfc; - else if (wc == 0x20a7) - c = 0x9e; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp861_page22[wc-0x2218]; - else if (wc >= 0x2310 && wc < 0x2328) - c = cp861_page23[wc-0x2310]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp861_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp861_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x9f; + else if (wc >= 0x0390 && wc < 0x03c8) + c = cp861_page03[wc - 0x0390]; + else if (wc == 0x207f) + c = 0xfc; + else if (wc == 0x20a7) + c = 0x9e; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp861_page22[wc - 0x2218]; + else if (wc >= 0x2310 && wc < 0x2328) + c = cp861_page23[wc - 0x2310]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp861_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP861_H_ */ diff --git a/lib/converters/cp862.h b/lib/converters/cp862.h index e9316745..ef1e526e 100644 --- a/lib/converters/cp862.h +++ b/lib/converters/cp862.h @@ -1,5 +1,10 @@ +/** + * @file cp862.h + * @brief CP862 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP862 - */ +#ifndef _CP862_H_ +#define _CP862_H_ + +#include "reiconv_defines.h" static const unsigned short cp862_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp862_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp862_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp862_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp862_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp862_2uni[c - 0x80]; + return 1; } static const unsigned char cp862_page00[96] = { @@ -118,37 +123,40 @@ static const unsigned char cp862_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp862_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp862_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp862_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x9f; - else if (wc >= 0x0390 && wc < 0x03c8) - c = cp862_page03[wc-0x0390]; - else if (wc >= 0x05d0 && wc < 0x05eb) - c = wc-0x0550; - else if (wc == 0x207f) - c = 0xfc; - else if (wc == 0x20a7) - c = 0x9e; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp862_page22[wc-0x2218]; - else if (wc == 0x2310) - c = 0xa9; - else if (wc >= 0x2320 && wc < 0x2322) - c = wc-0x222c; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp862_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp862_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x9f; + else if (wc >= 0x0390 && wc < 0x03c8) + c = cp862_page03[wc - 0x0390]; + else if (wc >= 0x05d0 && wc < 0x05eb) + c = wc - 0x0550; + else if (wc == 0x207f) + c = 0xfc; + else if (wc == 0x20a7) + c = 0x9e; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp862_page22[wc - 0x2218]; + else if (wc == 0x2310) + c = 0xa9; + else if (wc >= 0x2320 && wc < 0x2322) + c = wc - 0x222c; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp862_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP862_H_ */ diff --git a/lib/converters/cp863.h b/lib/converters/cp863.h index 46c1d87d..7ff751a8 100644 --- a/lib/converters/cp863.h +++ b/lib/converters/cp863.h @@ -1,5 +1,10 @@ +/** + * @file cp863.h + * @brief CP863 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP863 - */ +#ifndef _CP863_H_ +#define _CP863_H_ + +#include "reiconv_defines.h" static const unsigned short cp863_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp863_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp863_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp863_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp863_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp863_2uni[c - 0x80]; + return 1; } static const unsigned char cp863_page00[96] = { @@ -123,33 +128,36 @@ static const unsigned char cp863_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp863_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp863_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp863_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x9f; - else if (wc >= 0x0390 && wc < 0x03c8) - c = cp863_page03[wc-0x0390]; - else if (wc == 0x2017) - c = 0x8d; - else if (wc == 0x207f) - c = 0xfc; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp863_page22[wc-0x2218]; - else if (wc >= 0x2310 && wc < 0x2328) - c = cp863_page23[wc-0x2310]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp863_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp863_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x9f; + else if (wc >= 0x0390 && wc < 0x03c8) + c = cp863_page03[wc - 0x0390]; + else if (wc == 0x2017) + c = 0x8d; + else if (wc == 0x207f) + c = 0xfc; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp863_page22[wc - 0x2218]; + else if (wc >= 0x2310 && wc < 0x2328) + c = cp863_page23[wc - 0x2310]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp863_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP863_H_ */ diff --git a/lib/converters/cp864.h b/lib/converters/cp864.h index 30d77cf9..e56a89a1 100644 --- a/lib/converters/cp864.h +++ b/lib/converters/cp864.h @@ -1,5 +1,10 @@ +/** + * @file cp864.h + * @brief CP864 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP864 - */ +#ifndef _CP864_H_ +#define _CP864_H_ + +#include "reiconv_defines.h" static const unsigned short cp864_2uni_1[16] = { /* 0x20 */ @@ -53,30 +59,34 @@ static const unsigned short cp864_2uni_2[128] = { 0xfed5, 0xfef5, 0xfef6, 0xfedd, 0xfed9, 0xfef1, 0x25a0, 0xfffd, }; -static int -cp864_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp864_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x20) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c < 0x30) { - *pwc = (ucs4_t) cp864_2uni_1[c-0x20]; - return 1; - } - else if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp864_2uni_2[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x20) + { + *pwc = (ucs4_t)c; + return 1; + } + else if (c < 0x30) + { + *pwc = (ucs4_t)cp864_2uni_1[c - 0x20]; + return 1; } - } - return RET_ILSEQ; + else if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; + } + else + { + unsigned short wc = cp864_2uni_2[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp864_page00[8] = { @@ -149,39 +159,42 @@ static const unsigned char cp864_pagefe[136] = { 0x9a, 0x00, 0x00, 0x9d, 0x9e, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; -static int -cp864_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp864_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0020) { - *r = wc; - return 1; - } - else if (wc >= 0x0020 && wc < 0x0028) - c = cp864_page00[wc-0x0020]; - else if (wc >= 0x0028 && wc < 0x0080) - c = wc; - else if (wc >= 0x00a0 && wc < 0x00f8) - c = cp864_page00_1[wc-0x00a0]; - else if (wc == 0x03b2) - c = 0x90; - else if (wc == 0x03c6) - c = 0x92; - else if (wc >= 0x0608 && wc < 0x0670) - c = cp864_page06[wc-0x0608]; - else if (wc >= 0x2218 && wc < 0x2250) - c = cp864_page22[wc-0x2218]; - else if (wc >= 0x2500 && wc < 0x2540) - c = cp864_page25[wc-0x2500]; - else if (wc == 0x2592) - c = 0x84; - else if (wc == 0x25a0) - c = 0xfe; - else if (wc >= 0xfe78 && wc < 0xff00) - c = cp864_pagefe[wc-0xfe78]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0020) + { + *r = wc; + return 1; + } + else if (wc >= 0x0020 && wc < 0x0028) + c = cp864_page00[wc - 0x0020]; + else if (wc >= 0x0028 && wc < 0x0080) + c = wc; + else if (wc >= 0x00a0 && wc < 0x00f8) + c = cp864_page00_1[wc - 0x00a0]; + else if (wc == 0x03b2) + c = 0x90; + else if (wc == 0x03c6) + c = 0x92; + else if (wc >= 0x0608 && wc < 0x0670) + c = cp864_page06[wc - 0x0608]; + else if (wc >= 0x2218 && wc < 0x2250) + c = cp864_page22[wc - 0x2218]; + else if (wc >= 0x2500 && wc < 0x2540) + c = cp864_page25[wc - 0x2500]; + else if (wc == 0x2592) + c = 0x84; + else if (wc == 0x25a0) + c = 0xfe; + else if (wc >= 0xfe78 && wc < 0xff00) + c = cp864_pagefe[wc - 0xfe78]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP864_H_ */ diff --git a/lib/converters/cp865.h b/lib/converters/cp865.h index 8d3c1dfa..7414f15f 100644 --- a/lib/converters/cp865.h +++ b/lib/converters/cp865.h @@ -1,5 +1,10 @@ +/** + * @file cp865.h + * @brief CP865 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP865 - */ +#ifndef _CP865_H_ +#define _CP865_H_ + +#include "reiconv_defines.h" static const unsigned short cp865_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short cp865_2uni[128] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, }; -static int -cp865_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp865_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp865_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp865_2uni[c - 0x80]; + return 1; } static const unsigned char cp865_page00[96] = { @@ -123,33 +128,36 @@ static const unsigned char cp865_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp865_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp865_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = cp865_page00[wc-0x00a0]; - else if (wc == 0x0192) - c = 0x9f; - else if (wc >= 0x0390 && wc < 0x03c8) - c = cp865_page03[wc-0x0390]; - else if (wc == 0x207f) - c = 0xfc; - else if (wc == 0x20a7) - c = 0x9e; - else if (wc >= 0x2218 && wc < 0x2268) - c = cp865_page22[wc-0x2218]; - else if (wc >= 0x2310 && wc < 0x2328) - c = cp865_page23[wc-0x2310]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp865_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = cp865_page00[wc - 0x00a0]; + else if (wc == 0x0192) + c = 0x9f; + else if (wc >= 0x0390 && wc < 0x03c8) + c = cp865_page03[wc - 0x0390]; + else if (wc == 0x207f) + c = 0xfc; + else if (wc == 0x20a7) + c = 0x9e; + else if (wc >= 0x2218 && wc < 0x2268) + c = cp865_page22[wc - 0x2218]; + else if (wc >= 0x2310 && wc < 0x2328) + c = cp865_page23[wc - 0x2310]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp865_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP865_H_ */ diff --git a/lib/converters/cp866.h b/lib/converters/cp866.h index 557b2155..3c457ff5 100644 --- a/lib/converters/cp866.h +++ b/lib/converters/cp866.h @@ -1,5 +1,10 @@ +/** + * @file cp866.h + * @brief CP866 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP866 - */ +#ifndef _CP866_H_ +#define _CP866_H_ + +#include "reiconv_defines.h" static const unsigned short cp866_2uni[80] = { /* 0xb0 */ @@ -39,17 +45,16 @@ static const unsigned short cp866_2uni[80] = { 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, }; -static int -cp866_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp866_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else if (c < 0xb0) - *pwc = (ucs4_t) c + 0x0390; - else - *pwc = (ucs4_t) cp866_2uni[c-0xb0]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else if (c < 0xb0) + *pwc = (ucs4_t)c + 0x0390; + else + *pwc = (ucs4_t)cp866_2uni[c - 0xb0]; + return 1; } static const unsigned char cp866_page00[24] = { @@ -98,27 +103,30 @@ static const unsigned char cp866_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp866_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp866_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b8) - c = cp866_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0460) - c = cp866_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0xfc; - else if (wc >= 0x2218 && wc < 0x2220) - c = cp866_page22[wc-0x2218]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp866_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b8) + c = cp866_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0460) + c = cp866_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0xfc; + else if (wc >= 0x2218 && wc < 0x2220) + c = cp866_page22[wc - 0x2218]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp866_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP866_H_ */ diff --git a/lib/converters/cp869.h b/lib/converters/cp869.h index 65b917c7..93d10ee9 100644 --- a/lib/converters/cp869.h +++ b/lib/converters/cp869.h @@ -1,5 +1,10 @@ +/** + * @file cp869.h + * @brief CP869 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP869 - */ +#ifndef _CP869_H_ +#define _CP869_H_ + +#include "reiconv_defines.h" static const unsigned short cp869_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp869_2uni[128] = { 0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0, }; -static int -cp869_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp869_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp869_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp869_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp869_page00[32] = { @@ -112,25 +120,28 @@ static const unsigned char cp869_page25[168] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -cp869_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp869_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = cp869_page00[wc-0x00a0]; - else if (wc >= 0x0380 && wc < 0x03d0) - c = cp869_page03[wc-0x0380]; - else if (wc >= 0x2010 && wc < 0x2020) - c = cp869_page20[wc-0x2010]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = cp869_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = cp869_page00[wc - 0x00a0]; + else if (wc >= 0x0380 && wc < 0x03d0) + c = cp869_page03[wc - 0x0380]; + else if (wc >= 0x2010 && wc < 0x2020) + c = cp869_page20[wc - 0x2010]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = cp869_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP869_H_ */ diff --git a/lib/converters/cp874.h b/lib/converters/cp874.h index 46c46e4b..a4f060f3 100644 --- a/lib/converters/cp874.h +++ b/lib/converters/cp874.h @@ -1,5 +1,10 @@ +/** + * @file cp874.h + * @brief CP874 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP874 - */ +#ifndef _CP874_H_ +#define _CP874_H_ + +#include "reiconv_defines.h" static const unsigned short cp874_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short cp874_2uni[128] = { 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; -static int -cp874_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp874_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = cp874_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = cp874_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char cp874_page0e[96] = { @@ -86,25 +94,28 @@ static const unsigned char cp874_page20[24] = { 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ }; -static int -cp874_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp874_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc == 0x00a0) - c = 0xa0; - else if (wc >= 0x0e00 && wc < 0x0e60) - c = cp874_page0e[wc-0x0e00]; - else if (wc >= 0x2010 && wc < 0x2028) - c = cp874_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x80; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc == 0x00a0) + c = 0xa0; + else if (wc >= 0x0e00 && wc < 0x0e60) + c = cp874_page0e[wc - 0x0e00]; + else if (wc >= 0x2010 && wc < 0x2028) + c = cp874_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x80; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP874_H_ */ diff --git a/lib/converters/cp922.h b/lib/converters/cp922.h index 14e483a7..6d86317e 100644 --- a/lib/converters/cp922.h +++ b/lib/converters/cp922.h @@ -1,5 +1,10 @@ +/** + * @file cp922.h + * @brief CP922 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP922 - */ +#ifndef _CP922_H_ +#define _CP922_H_ + +#include "reiconv_defines.h" static const unsigned short cp922_2uni_1[16] = { /* 0xa0 */ @@ -37,23 +43,22 @@ static const unsigned short cp922_2uni_3[16] = { 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x017e, 0x00ff, }; -static int -cp922_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp922_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else if (c < 0xb0) - *pwc = (ucs4_t) cp922_2uni_1[c-0xa0]; - else if (c < 0xd0) - *pwc = (ucs4_t) c; - else if (c < 0xe0) - *pwc = (ucs4_t) cp922_2uni_2[c-0xd0]; - else if (c < 0xf0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) cp922_2uni_3[c-0xf0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else if (c < 0xb0) + *pwc = (ucs4_t)cp922_2uni_1[c - 0xa0]; + else if (c < 0xd0) + *pwc = (ucs4_t)c; + else if (c < 0xe0) + *pwc = (ucs4_t)cp922_2uni_2[c - 0xd0]; + else if (c < 0xf0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)cp922_2uni_3[c - 0xf0]; + return 1; } static const unsigned char cp922_page00[88] = { @@ -76,23 +81,26 @@ static const unsigned char cp922_page01[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0x00, /* 0x78-0x7f */ }; -static int -cp922_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp922_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a8) { - *r = wc; - return 1; - } - else if (wc >= 0x00a8 && wc < 0x0100) - c = cp922_page00[wc-0x00a8]; - else if (wc >= 0x0160 && wc < 0x0180) - c = cp922_page01[wc-0x0160]; - else if (wc == 0x203e) - c = 0xaf; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a8) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a8 && wc < 0x0100) + c = cp922_page00[wc - 0x00a8]; + else if (wc >= 0x0160 && wc < 0x0180) + c = cp922_page01[wc - 0x0160]; + else if (wc == 0x203e) + c = 0xaf; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _CP922_H_ */ diff --git a/lib/converters/cp932.h b/lib/converters/cp932.h index a20bf419..da8168ae 100644 --- a/lib/converters/cp932.h +++ b/lib/converters/cp932.h @@ -1,5 +1,10 @@ +/** + * @file cp932.h + * @brief CP932 + * @copyright Copyright (C) 1999-2002, 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * CP932 - */ - /* * Microsoft CP932 is a slightly extended version of SHIFT_JIS. * The differences between the EASTASIA/JIS/SHIFTJIS.TXT and the @@ -61,7 +62,16 @@ * point, they are useful for some people in practice. */ +#ifndef _CP932_H_ +#define _CP932_H_ + +#include "converters/ascii.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "reiconv_defines.h" + #include "cp932ext.h" +#include /* Conversion between SJIS codes (s1,s2) and JISX0208 codes (c1,c2): @@ -84,156 +94,181 @@ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x41) */ -static int -cp932_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp932_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - else if (c >= 0xa1 && c <= 0xdf) - return jisx0201_mbtowc(conv,pwc,s,n); - else { - unsigned char s1, s2; - s1 = c; - if ((s1 >= 0x81 && s1 <= 0x9f && s1 != 0x87) || (s1 >= 0xe0 && s1 <= 0xea)) { - if (n < 2) - return RET_TOOFEW(0); - s2 = s[1]; - if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { - unsigned char t1 = (s1 < 0xe0 ? s1-0x81 : s1-0xc1); - unsigned char t2 = (s2 < 0x80 ? s2-0x40 : s2-0x41); - unsigned char buf[2]; - buf[0] = 2*t1 + (t2 < 0x5e ? 0 : 1) + 0x21; - buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; - return jisx0208_mbtowc(conv,pwc,buf,2); - } - } else if ((s1 == 0x87) || (s1 >= 0xed && s1 <= 0xee) || (s1 >= 0xfa)) { - if (n < 2) - return RET_TOOFEW(0); - return cp932ext_mbtowc(conv,pwc,s,2); - } else if (s1 >= 0xf0 && s1 <= 0xf9) { - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - if (n < 2) - return RET_TOOFEW(0); - s2 = s[1]; - if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { - *pwc = 0xe000 + 188*(s1 - 0xf0) + (s2 < 0x80 ? s2-0x40 : s2-0x41); - return 2; - } + unsigned char c = *s; + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + else if (c >= 0xa1 && c <= 0xdf) + return jisx0201_mbtowc(conv, pwc, s, n); + else + { + unsigned char s1, s2; + s1 = c; + if ((s1 >= 0x81 && s1 <= 0x9f && s1 != 0x87) || (s1 >= 0xe0 && s1 <= 0xea)) + { + if (n < 2) + return RET_TOOFEW(0); + s2 = s[1]; + if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) + { + unsigned char t1 = (s1 < 0xe0 ? s1 - 0x81 : s1 - 0xc1); + unsigned char t2 = (s2 < 0x80 ? s2 - 0x40 : s2 - 0x41); + unsigned char buf[2]; + buf[0] = 2 * t1 + (t2 < 0x5e ? 0 : 1) + 0x21; + buf[1] = (t2 < 0x5e ? t2 : t2 - 0x5e) + 0x21; + return jisx0208_mbtowc(conv, pwc, buf, 2); + } + } + else if ((s1 == 0x87) || (s1 >= 0xed && s1 <= 0xee) || (s1 >= 0xfa)) + { + if (n < 2) + return RET_TOOFEW(0); + return cp932ext_mbtowc(conv, pwc, s, 2); + } + else if (s1 >= 0xf0 && s1 <= 0xf9) + { + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + if (n < 2) + return RET_TOOFEW(0); + s2 = s[1]; + if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) + { + *pwc = 0xe000 + 188 * (s1 - 0xf0) + (s2 < 0x80 ? s2 - 0x40 : s2 - 0x41); + return 2; + } + } + return RET_ILSEQ; } - return RET_ILSEQ; - } } -static int -cp932_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp932_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - unsigned char c; - if (ret != 1) abort(); - c = buf[0]; - if (c < 0x80) { - r[0] = c; - return 1; + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + unsigned char c; + if (ret != 1) + abort(); + c = buf[0]; + if (c < 0x80) + { + r[0] = c; + return 1; + } } - } - /* Try JIS X 0201-1976 Katakana. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - unsigned char c; - if (ret != 1) abort(); - c = buf[0]; - if (c >= 0xa1 && c <= 0xdf) { - r[0] = c; - return 1; + /* Try JIS X 0201-1976 Katakana. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + unsigned char c; + if (ret != 1) + abort(); + c = buf[0]; + if (c >= 0xa1 && c <= 0xdf) + { + r[0] = c; + return 1; + } } - } - /* Try JIS X 0208-1990. */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - unsigned char c1, c2; - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - c1 = buf[0]; - c2 = buf[1]; - if ((c1 >= 0x21 && c1 <= 0x74) && (c2 >= 0x21 && c2 <= 0x7e)) { - unsigned char t1 = (c1 - 0x21) >> 1; - unsigned char t2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21); - r[0] = (t1 < 0x1f ? t1+0x81 : t1+0xc1); - r[1] = (t2 < 0x3f ? t2+0x40 : t2+0x41); - return 2; + /* Try JIS X 0208-1990. */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + unsigned char c1, c2; + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + c1 = buf[0]; + c2 = buf[1]; + if ((c1 >= 0x21 && c1 <= 0x74) && (c2 >= 0x21 && c2 <= 0x7e)) + { + unsigned char t1 = (c1 - 0x21) >> 1; + unsigned char t2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21); + r[0] = (t1 < 0x1f ? t1 + 0x81 : t1 + 0xc1); + r[1] = (t2 < 0x3f ? t2 + 0x40 : t2 + 0x41); + return 2; + } } - } - /* Try CP932 extensions. */ - ret = cp932ext_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } + /* Try CP932 extensions. */ + ret = cp932ext_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - if (wc >= 0xe000 && wc < 0xe758) { - unsigned char c1, c2; - if (n < 2) - return RET_TOOSMALL; - c1 = (unsigned int) (wc - 0xe000) / 188; - c2 = (unsigned int) (wc - 0xe000) % 188; - r[0] = c1+0xf0; - r[1] = (c2 < 0x3f ? c2+0x40 : c2+0x41); - return 2; - } + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + if (wc >= 0xe000 && wc < 0xe758) + { + unsigned char c1, c2; + if (n < 2) + return RET_TOOSMALL; + c1 = (unsigned int)(wc - 0xe000) / 188; + c2 = (unsigned int)(wc - 0xe000) % 188; + r[0] = c1 + 0xf0; + r[1] = (c2 < 0x3f ? c2 + 0x40 : c2 + 0x41); + return 2; + } - /* Irreversible mappings. */ - if (wc == 0xff5e) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x81; - r[1] = 0x60; - return 2; - } - if (wc == 0x2225) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x81; - r[1] = 0x61; - return 2; - } - if (wc == 0xff0d) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x81; - r[1] = 0x7c; - return 2; - } - if (wc == 0xffe0) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x81; - r[1] = 0x91; - return 2; - } - if (wc == 0xffe1) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x81; - r[1] = 0x92; - return 2; - } + /* Irreversible mappings. */ + if (wc == 0xff5e) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x81; + r[1] = 0x60; + return 2; + } + if (wc == 0x2225) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x81; + r[1] = 0x61; + return 2; + } + if (wc == 0xff0d) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x81; + r[1] = 0x7c; + return 2; + } + if (wc == 0xffe0) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x81; + r[1] = 0x91; + return 2; + } + if (wc == 0xffe1) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x81; + r[1] = 0x92; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CP932_H_ */ diff --git a/lib/converters/cp932ext.h b/lib/converters/cp932ext.h index a23419a8..4b0cef34 100644 --- a/lib/converters/cp932ext.h +++ b/lib/converters/cp932ext.h @@ -1,5 +1,10 @@ +/** + * @file cp932ext.h + * @brief CP932 extensions + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP932 extensions - */ +#ifndef _CP932EXT_H_ +#define _CP932EXT_H_ + +#include "reiconv_defines.h" static const unsigned short cp932ext_2uni_page87[92] = { /* 0x87 */ @@ -144,36 +150,44 @@ static const unsigned short cp932ext_2uni_pagefa[388] = { 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, }; -static int -cp932ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp932ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 == 0x87) || (c1 >= 0xed && c1 <= 0xee) || (c1 >= 0xfa && c1 <= 0xfc)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xfd)) { - unsigned int i = 188 * (c1 - (c1 >= 0xe0 ? 0xc1 : 0x81)) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - unsigned short wc = 0xfffd; - if (i < 8272) { - if (i < 1220) - wc = cp932ext_2uni_page87[i-1128]; - } else if (i < 10716) { - if (i < 8648) - wc = cp932ext_2uni_pageed[i-8272]; - } else { - if (i < 11104) - wc = cp932ext_2uni_pagefa[i-10716]; + unsigned char c1 = s[0]; + if ((c1 == 0x87) || (c1 >= 0xed && c1 <= 0xee) || (c1 >= 0xfa && c1 <= 0xfc)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xfd)) + { + unsigned int i = 188 * (c1 - (c1 >= 0xe0 ? 0xc1 : 0x81)) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + unsigned short wc = 0xfffd; + if (i < 8272) + { + if (i < 1220) + wc = cp932ext_2uni_page87[i - 1128]; + } + else if (i < 10716) + { + if (i < 8648) + wc = cp932ext_2uni_pageed[i - 8272]; + } + else + { + if (i < 11104) + wc = cp932ext_2uni_pagefa[i - 10716]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short cp932ext_2charset[457] = { @@ -652,57 +666,62 @@ static const Summary16 cp932ext_uni2indx_pageff[15] = { { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0014 }, }; -static int -cp932ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp932ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x2100 && wc < 0x22c0) - summary = &cp932ext_uni2indx_page21[(wc>>4)-0x210]; - else if (wc >= 0x2400 && wc < 0x2480) - summary = &cp932ext_uni2indx_page24[(wc>>4)-0x240]; - else if (wc >= 0x3000 && wc < 0x3020) - summary = &cp932ext_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x3200 && wc < 0x33d0) - summary = &cp932ext_uni2indx_page32[(wc>>4)-0x320]; - else if (wc >= 0x4e00 && wc < 0x5590) - summary = &cp932ext_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0x5700 && wc < 0x59c0) - summary = &cp932ext_uni2indx_page57[(wc>>4)-0x570]; - else if (wc >= 0x5b00 && wc < 0x5de0) - summary = &cp932ext_uni2indx_page5b[(wc>>4)-0x5b0]; - else if (wc >= 0x5f00 && wc < 0x7ba0) - summary = &cp932ext_uni2indx_page5f[(wc>>4)-0x5f0]; - else if (wc >= 0x7d00 && wc < 0x7fb0) - summary = &cp932ext_uni2indx_page7d[(wc>>4)-0x7d0]; - else if (wc >= 0x8300 && wc < 0x85c0) - summary = &cp932ext_uni2indx_page83[(wc>>4)-0x830]; - else if (wc >= 0x8800 && wc < 0x8ed0) - summary = &cp932ext_uni2indx_page88[(wc>>4)-0x880]; - else if (wc >= 0x9000 && wc < 0x9ee0) - summary = &cp932ext_uni2indx_page90[(wc>>4)-0x900]; - else if (wc >= 0xf900 && wc < 0xfa30) - summary = &cp932ext_uni2indx_pagef9[(wc>>4)-0xf90]; - else if (wc >= 0xff00 && wc < 0xfff0) - summary = &cp932ext_uni2indx_pageff[(wc>>4)-0xff0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = cp932ext_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x2100 && wc < 0x22c0) + summary = &cp932ext_uni2indx_page21[(wc >> 4) - 0x210]; + else if (wc >= 0x2400 && wc < 0x2480) + summary = &cp932ext_uni2indx_page24[(wc >> 4) - 0x240]; + else if (wc >= 0x3000 && wc < 0x3020) + summary = &cp932ext_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x3200 && wc < 0x33d0) + summary = &cp932ext_uni2indx_page32[(wc >> 4) - 0x320]; + else if (wc >= 0x4e00 && wc < 0x5590) + summary = &cp932ext_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0x5700 && wc < 0x59c0) + summary = &cp932ext_uni2indx_page57[(wc >> 4) - 0x570]; + else if (wc >= 0x5b00 && wc < 0x5de0) + summary = &cp932ext_uni2indx_page5b[(wc >> 4) - 0x5b0]; + else if (wc >= 0x5f00 && wc < 0x7ba0) + summary = &cp932ext_uni2indx_page5f[(wc >> 4) - 0x5f0]; + else if (wc >= 0x7d00 && wc < 0x7fb0) + summary = &cp932ext_uni2indx_page7d[(wc >> 4) - 0x7d0]; + else if (wc >= 0x8300 && wc < 0x85c0) + summary = &cp932ext_uni2indx_page83[(wc >> 4) - 0x830]; + else if (wc >= 0x8800 && wc < 0x8ed0) + summary = &cp932ext_uni2indx_page88[(wc >> 4) - 0x880]; + else if (wc >= 0x9000 && wc < 0x9ee0) + summary = &cp932ext_uni2indx_page90[(wc >> 4) - 0x900]; + else if (wc >= 0xf900 && wc < 0xfa30) + summary = &cp932ext_uni2indx_pagef9[(wc >> 4) - 0xf90]; + else if (wc >= 0xff00 && wc < 0xfff0) + summary = &cp932ext_uni2indx_pageff[(wc >> 4) - 0xff0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = cp932ext_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _CP932EXT_H_ */ diff --git a/lib/converters/cp936.h b/lib/converters/cp936.h index f3595237..b7dc9fa8 100644 --- a/lib/converters/cp936.h +++ b/lib/converters/cp936.h @@ -1,5 +1,10 @@ +/** + * @file cp936.h + * @brief CP936 + * @copyright Copyright (C) 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * CP936 - */ - /* * The IANA has CP936 as an alias of GBK. But GBK is an official Chinese * specification, whereas CP936 is de-facto maintained by Microsoft. And, @@ -46,80 +47,98 @@ * point, they are useful for some people in practice. */ -static int -cp936_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#ifndef _CP936_H_ +#define _CP936_H_ + +#include "converters/ces_gbk.h" +#include "reiconv_defines.h" + +static int cp936_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - /* Try GBK first. */ - { - int ret = ces_gbk_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - } - /* Then handle the additional mappings. */ - { - unsigned char c = *s; - if (c == 0x80) { - *pwc = 0x20ac; - return 1; + /* Try GBK first. */ + { + int ret = ces_gbk_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; } - /* User-defined characters */ - if (c >= 0xa1 && c <= 0xa2) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xa1)) { - *pwc = 0xe4c6 + 96 * (c - 0xa1) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - return 2; + /* Then handle the additional mappings. */ + { + unsigned char c = *s; + if (c == 0x80) + { + *pwc = 0x20ac; + return 1; } - } - } else if ((c >= 0xaa && c < 0xb0) || (c >= 0xf8 && c < 0xff)) { - if (n < 2) - return RET_TOOFEW(0); - { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - *pwc = 0xe000 + 94 * (c - (c >= 0xf8 ? 0xf2 : 0xaa)) + (c2 - 0xa1); - return 2; + /* User-defined characters */ + if (c >= 0xa1 && c <= 0xa2) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xa1)) + { + *pwc = 0xe4c6 + 96 * (c - 0xa1) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + return 2; + } + } + } + else if ((c >= 0xaa && c < 0xb0) || (c >= 0xf8 && c < 0xff)) + { + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + *pwc = 0xe000 + 94 * (c - (c >= 0xf8 ? 0xf2 : 0xaa)) + (c2 - 0xa1); + return 2; + } + } } - } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -cp936_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp936_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - /* Try GBK first. */ - { - int ret = ces_gbk_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; - } - /* Then handle the additional mappings. */ - if (wc >= 0xe000 && wc < 0xe586) { - /* User-defined characters */ - if (n < 2) - return RET_TOOFEW(0); - if (wc < 0xe4c6) { - unsigned int i = wc - 0xe000; - unsigned int c1 = i / 94; - unsigned int c2 = i % 94; - r[0] = c1 + (c1 < 6 ? 0xaa : 0xf2); - r[1] = c2 + 0xa1; - return 2; - } else { - unsigned int i = wc - 0xe4c6; - unsigned int c1 = i / 96; - unsigned int c2 = i % 96; - r[0] = c1 + 0xa1; - r[1] = c2 + (c2 < 0x3f ? 0x40 : 0x41); - return 2; + /* Try GBK first. */ + { + int ret = ces_gbk_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; + } + /* Then handle the additional mappings. */ + if (wc >= 0xe000 && wc < 0xe586) + { + /* User-defined characters */ + if (n < 2) + return RET_TOOFEW(0); + if (wc < 0xe4c6) + { + unsigned int i = wc - 0xe000; + unsigned int c1 = i / 94; + unsigned int c2 = i % 94; + r[0] = c1 + (c1 < 6 ? 0xaa : 0xf2); + r[1] = c2 + 0xa1; + return 2; + } + else + { + unsigned int i = wc - 0xe4c6; + unsigned int c1 = i / 96; + unsigned int c2 = i % 96; + r[0] = c1 + 0xa1; + r[1] = c2 + (c2 < 0x3f ? 0x40 : 0x41); + return 2; + } + } + else if (wc == 0x20ac) + { + r[0] = 0x80; + return 1; } - } else if (wc == 0x20ac) { - r[0] = 0x80; - return 1; - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CP936_H_ */ diff --git a/lib/converters/cp936ext.h b/lib/converters/cp936ext.h index 439a4883..629240f3 100644 --- a/lib/converters/cp936ext.h +++ b/lib/converters/cp936ext.h @@ -1,5 +1,10 @@ +/** + * @file cp936ext.h + * @brief CP936 extensions + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP936 extensions - */ +#ifndef _CP936EXT_H_ +#define _CP936EXT_H_ + +#include "reiconv_defines.h" static const unsigned short cp936ext_2uni_pagea6[181-159] = { /* 0xa6 */ @@ -33,33 +39,39 @@ static const unsigned short cp936ext_2uni_pagea8[128-122] = { 0x0251, 0xfffd, 0x0144, 0x0148, 0xfffd, 0x0261, }; -static int -cp936ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp936ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 == 0xa6) || (c1 == 0xa8)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { - unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - unsigned short wc = 0xfffd; - if (i < 7410) { - if (i >= 7189 && i < 7211) - wc = cp936ext_2uni_pagea6[i-7189]; - } else { - if (i >= 7532 && i < 7538) - wc = cp936ext_2uni_pagea8[i-7532]; + unsigned char c1 = s[0]; + if ((c1 == 0xa6) || (c1 == 0xa8)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) + { + unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + unsigned short wc = 0xfffd; + if (i < 7410) + { + if (i >= 7189 && i < 7211) + wc = cp936ext_2uni_pagea6[i - 7189]; + } + else + { + if (i >= 7532 && i < 7538) + wc = cp936ext_2uni_pagea8[i - 7532]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short cp936ext_page01[16] = { @@ -77,22 +89,26 @@ static const unsigned short cp936ext_pagefe[24] = { 0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/ }; -static int -cp936ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp936ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - unsigned short c = 0; - if (wc >= 0x0140 && wc < 0x0150) - c = cp936ext_page01[wc-0x0140]; - else if (wc >= 0x0250 && wc < 0x0268) - c = cp936ext_page02[wc-0x0250]; - else if (wc >= 0xfe30 && wc < 0xfe48) - c = cp936ext_pagefe[wc-0xfe30]; - if (c != 0) { - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; + if (n >= 2) + { + unsigned short c = 0; + if (wc >= 0x0140 && wc < 0x0150) + c = cp936ext_page01[wc - 0x0140]; + else if (wc >= 0x0250 && wc < 0x0268) + c = cp936ext_page02[wc - 0x0250]; + else if (wc >= 0xfe30 && wc < 0xfe48) + c = cp936ext_pagefe[wc - 0xfe30]; + if (c != 0) + { + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _CP936EXT_H_ */ diff --git a/lib/converters/cp943.h b/lib/converters/cp943.h index 2f966b00..55fc6d84 100644 --- a/lib/converters/cp943.h +++ b/lib/converters/cp943.h @@ -1,5 +1,10 @@ +/** + * @file cp943.h + * @brief IBM CP943 + * @copyright Copyright (C) 1999-2001 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,12 +22,15 @@ * If not, see . */ -/* - * IBM CP943 - */ +#ifndef _CP943_H_ +#define _CP943_H_ + +#include "reiconv_defines.h" // IWYU pragma: keep /* This is essentially CP932, with many mappings missing in the AIX conversion table. We just pretend it were the same as CP932. */ #define cp943_mbtowc cp932_mbtowc #define cp943_wctomb cp932_wctomb + +#endif /* _CP943_H_ */ diff --git a/lib/converters/cp949.h b/lib/converters/cp949.h index 7a420bcc..9eec2f7c 100644 --- a/lib/converters/cp949.h +++ b/lib/converters/cp949.h @@ -1,5 +1,10 @@ +/** + * @file cp949.h + * @brief CP949 is EUC-KR, extended with UHC (Unified Hangul Code). + * @copyright Copyright (C) 1999-2001, 2005, 2007, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2007, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,7 +23,6 @@ */ /* - * CP949 is EUC-KR, extended with UHC (Unified Hangul Code). * * Some variants of CP949 (in JDK, Windows-2000, ICU) also add: * @@ -33,95 +37,116 @@ * point, they are useful for some people in practice. */ -#include "uhc_1.h" -#include "uhc_2.h" +#ifndef _CP949_H_ +#define _CP949_H_ + +#include "converters/ascii.h" +#include "converters/ksc5601.h" +#include "converters/uhc_1.h" +#include "converters/uhc_2.h" +#include "reiconv_defines.h" + +#include -static int -cp949_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp949_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* UHC part 1 */ - if (c >= 0x81 && c <= 0xa0) - return uhc_1_mbtowc(conv,pwc,s,n); - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* UHC part 1 */ + if (c >= 0x81 && c <= 0xa0) + return uhc_1_mbtowc(conv, pwc, s, n); + if (c >= 0xa1 && c < 0xff) { - unsigned char c2 = s[1]; - if (c2 < 0xa1) - /* UHC part 2 */ - return uhc_2_mbtowc(conv,pwc,s,n); - else if (c2 < 0xff && !(c == 0xa2 && c2 == 0xe8)) { - /* Code set 1 (KS C 5601-1992, now KS X 1001:1998) */ - unsigned char buf[2]; - int ret; - buf[0] = c-0x80; buf[1] = c2-0x80; - ret = ksc5601_mbtowc(conv,pwc,buf,2); - if (ret != RET_ILSEQ) - return ret; - /* User-defined characters */ - if (c == 0xc9) { - *pwc = 0xe000 + (c2 - 0xa1); - return 2; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 < 0xa1) + /* UHC part 2 */ + return uhc_2_mbtowc(conv, pwc, s, n); + else if (c2 < 0xff && !(c == 0xa2 && c2 == 0xe8)) + { + /* Code set 1 (KS C 5601-1992, now KS X 1001:1998) */ + unsigned char buf[2]; + int ret; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + ret = ksc5601_mbtowc(conv, pwc, buf, 2); + if (ret != RET_ILSEQ) + return ret; + /* User-defined characters */ + if (c == 0xc9) + { + *pwc = 0xe000 + (c2 - 0xa1); + return 2; + } + if (c == 0xfe) + { + *pwc = 0xe05e + (c2 - 0xa1); + return 2; + } + } } - if (c == 0xfe) { - *pwc = 0xe05e + (c2 - 0xa1); - return 2; - } - } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -cp949_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp949_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (KS C 5601-1992, now KS X 1001:1998) */ - if (wc != 0x327e) { - ret = ksc5601_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]+0x80; - r[1] = buf[1]+0x80; - return 2; + /* Code set 1 (KS C 5601-1992, now KS X 1001:1998) */ + if (wc != 0x327e) + { + ret = ksc5601_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0] + 0x80; + r[1] = buf[1] + 0x80; + return 2; + } } - } - /* UHC */ - if (wc >= 0xac00 && wc < 0xd7a4) { - if (wc < 0xc8a5) - return uhc_1_wctomb(conv,r,wc,n); - else - return uhc_2_wctomb(conv,r,wc,n); - } + /* UHC */ + if (wc >= 0xac00 && wc < 0xd7a4) + { + if (wc < 0xc8a5) + return uhc_1_wctomb(conv, r, wc, n); + else + return uhc_2_wctomb(conv, r, wc, n); + } - /* User-defined characters */ - if (wc >= 0xe000 && wc < 0xe0bc) { - if (n < 2) - return RET_TOOSMALL; - if (wc < 0xe05e) { - r[0] = 0xc9; - r[1] = wc - 0xe000 + 0xa1; - } else { - r[0] = 0xfe; - r[1] = wc - 0xe05e + 0xa1; + /* User-defined characters */ + if (wc >= 0xe000 && wc < 0xe0bc) + { + if (n < 2) + return RET_TOOSMALL; + if (wc < 0xe05e) + { + r[0] = 0xc9; + r[1] = wc - 0xe000 + 0xa1; + } + else + { + r[0] = 0xfe; + r[1] = wc - 0xe05e + 0xa1; + } + return 2; } - return 2; - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CP949_H_ */ diff --git a/lib/converters/cp950.h b/lib/converters/cp950.h index f842b30a..06eac404 100644 --- a/lib/converters/cp950.h +++ b/lib/converters/cp950.h @@ -1,5 +1,10 @@ +/** + * @file cp950.h + * @brief CP950 + * @copyright Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * CP950 - */ - /* * Microsoft CP950 is a slightly extended and slightly modified version of * BIG5. The differences between the EASTASIA/OTHER/BIG5.TXT and @@ -81,6 +82,15 @@ * point, they are useful for some people in practice. */ +#ifndef _CP950_H_ +#define _CP950_H_ + +#include "converters/ascii.h" +#include "converters/big5.h" +#include "converters/cp950ext.h" +#include "reiconv_defines.h" +#include + static const unsigned short cp950_2uni_pagea1[314] = { /* 0xa1 */ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a, @@ -126,158 +136,293 @@ static const unsigned short cp950_2uni_pagea1[314] = { 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, }; -#include "cp950ext.h" - -static int -cp950_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp950_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (BIG5 extended) */ - if (c >= 0x81 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (BIG5 extended) */ + if (c >= 0x81 && c < 0xff) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - if (c >= 0xa1) { - if (c < 0xa3) { - unsigned int i = 157 * (c - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - unsigned short wc = cp950_2uni_pagea1[i]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + if (c >= 0xa1) + { + if (c < 0xa3) + { + unsigned int i = 157 * (c - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + unsigned short wc = cp950_2uni_pagea1[i]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) + { + int ret = big5_mbtowc(conv, pwc, s, 2); + if (ret != RET_ILSEQ) + return ret; + } + if (c == 0xa3 && c2 == 0xe1) + { + *pwc = 0x20ac; + return 2; + } + if (c >= 0xfa) + { + /* User-defined characters */ + *pwc = 0xe000 + 157 * (c - 0xfa) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + return 2; + } + } + else + { + /* 0x81 <= c < 0xa1. */ + /* User-defined characters */ + *pwc = (c >= 0x8e ? 0xdb18 : 0xeeb8) + 157 * (c - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + return 2; + } } - } - if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { - int ret = big5_mbtowc(conv,pwc,s,2); + } + if (c == 0xf9) + { + int ret = cp950ext_mbtowc(conv, pwc, s, 2); if (ret != RET_ILSEQ) - return ret; - } - if (c == 0xa3 && c2 == 0xe1) { - *pwc = 0x20ac; - return 2; - } - if (c >= 0xfa) { - /* User-defined characters */ - *pwc = 0xe000 + 157 * (c - 0xfa) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - return 2; - } - } else { - /* 0x81 <= c < 0xa1. */ - /* User-defined characters */ - *pwc = (c >= 0x8e ? 0xdb18 : 0xeeb8) + 157 * (c - 0x81) - + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - return 2; + return ret; } - } } - if (c == 0xf9) { - int ret = cp950ext_mbtowc(conv,pwc,s,2); - if (ret != RET_ILSEQ) - return ret; - } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -cp950_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp950_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (BIG5 extended) */ - switch (wc >> 8) { + /* Code set 1 (BIG5 extended) */ + switch (wc >> 8) + { case 0x00: - if (wc == 0x00af) { buf[0] = 0xa1; buf[1] = 0xc2; ret = 2; break; } - if (wc == 0x00a2 || wc == 0x00a3 || wc == 0x00a4) - return RET_ILUNI; - break; + if (wc == 0x00af) + { + buf[0] = 0xa1; + buf[1] = 0xc2; + ret = 2; + break; + } + if (wc == 0x00a2 || wc == 0x00a3 || wc == 0x00a4) + return RET_ILUNI; + break; case 0x02: - if (wc == 0x02cd) { buf[0] = 0xa1; buf[1] = 0xc5; ret = 2; break; } - break; + if (wc == 0x02cd) + { + buf[0] = 0xa1; + buf[1] = 0xc5; + ret = 2; + break; + } + break; case 0x20: - if (wc == 0x2027) { buf[0] = 0xa1; buf[1] = 0x45; ret = 2; break; } - if (wc == 0x20ac) { buf[0] = 0xa3; buf[1] = 0xe1; ret = 2; break; } - if (wc == 0x2022 || wc == 0x203e) - return RET_ILUNI; - break; + if (wc == 0x2027) + { + buf[0] = 0xa1; + buf[1] = 0x45; + ret = 2; + break; + } + if (wc == 0x20ac) + { + buf[0] = 0xa3; + buf[1] = 0xe1; + ret = 2; + break; + } + if (wc == 0x2022 || wc == 0x203e) + return RET_ILUNI; + break; case 0x22: - if (wc == 0x2215) { buf[0] = 0xa2; buf[1] = 0x41; ret = 2; break; } - if (wc == 0x2295) { buf[0] = 0xa1; buf[1] = 0xf2; ret = 2; break; } - if (wc == 0x2299) { buf[0] = 0xa1; buf[1] = 0xf3; ret = 2; break; } - if (wc == 0x223c) - return RET_ILUNI; - break; + if (wc == 0x2215) + { + buf[0] = 0xa2; + buf[1] = 0x41; + ret = 2; + break; + } + if (wc == 0x2295) + { + buf[0] = 0xa1; + buf[1] = 0xf2; + ret = 2; + break; + } + if (wc == 0x2299) + { + buf[0] = 0xa1; + buf[1] = 0xf3; + ret = 2; + break; + } + if (wc == 0x223c) + return RET_ILUNI; + break; case 0x25: - if (wc == 0x2574) { buf[0] = 0xa1; buf[1] = 0x5a; ret = 2; break; } - break; + if (wc == 0x2574) + { + buf[0] = 0xa1; + buf[1] = 0x5a; + ret = 2; + break; + } + break; case 0x26: - if (wc == 0x2609 || wc == 0x2641) - return RET_ILUNI; - break; - case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: - case 0xe6: case 0xe7: case 0xe8: case 0xe9: case 0xea: case 0xeb: - case 0xec: case 0xed: case 0xee: case 0xef: case 0xf0: case 0xf1: - case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: - { + if (wc == 0x2609 || wc == 0x2641) + return RET_ILUNI; + break; + case 0xe0: + case 0xe1: + case 0xe2: + case 0xe3: + case 0xe4: + case 0xe5: + case 0xe6: + case 0xe7: + case 0xe8: + case 0xe9: + case 0xea: + case 0xeb: + case 0xec: + case 0xed: + case 0xee: + case 0xef: + case 0xf0: + case 0xf1: + case 0xf2: + case 0xf3: + case 0xf4: + case 0xf5: + case 0xf6: { /* User-defined characters */ unsigned int i = wc - 0xe000; - if (i < 5809) { - unsigned int c1 = i / 157; - unsigned int c2 = i % 157; - buf[0] = c1 + (c1 < 5 ? 0xfa : c1 < 24 ? 0x89 : 0x69); - buf[1] = c2 + (c2 < 0x3f ? 0x40 : 0x62); - ret = 2; - break; + if (i < 5809) + { + unsigned int c1 = i / 157; + unsigned int c2 = i % 157; + buf[0] = c1 + (c1 < 5 ? 0xfa : c1 < 24 ? 0x89 : 0x69); + buf[1] = c2 + (c2 < 0x3f ? 0x40 : 0x62); + ret = 2; + break; } - } - break; + } + break; case 0xfe: - if (wc == 0xfe51) { buf[0] = 0xa1; buf[1] = 0x4e; ret = 2; break; } - if (wc == 0xfe68) { buf[0] = 0xa2; buf[1] = 0x42; ret = 2; break; } - break; + if (wc == 0xfe51) + { + buf[0] = 0xa1; + buf[1] = 0x4e; + ret = 2; + break; + } + if (wc == 0xfe68) + { + buf[0] = 0xa2; + buf[1] = 0x42; + ret = 2; + break; + } + break; case 0xff: - if (wc == 0xff0f) { buf[0] = 0xa1; buf[1] = 0xfe; ret = 2; break; } - if (wc == 0xff3c) { buf[0] = 0xa2; buf[1] = 0x40; ret = 2; break; } - if (wc == 0xff5e) { buf[0] = 0xa1; buf[1] = 0xe3; ret = 2; break; } - if (wc == 0xffe0) { buf[0] = 0xa2; buf[1] = 0x46; ret = 2; break; } - if (wc == 0xffe1) { buf[0] = 0xa2; buf[1] = 0x47; ret = 2; break; } - if (wc == 0xffe3) { buf[0] = 0xa1; buf[1] = 0xc3; ret = 2; break; } - if (wc == 0xffe5) { buf[0] = 0xa2; buf[1] = 0x44; ret = 2; break; } - if (wc == 0xff64) - return RET_ILUNI; - break; - } - if (ret == RET_ILUNI) - ret = big5_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; + if (wc == 0xff0f) + { + buf[0] = 0xa1; + buf[1] = 0xfe; + ret = 2; + break; + } + if (wc == 0xff3c) + { + buf[0] = 0xa2; + buf[1] = 0x40; + ret = 2; + break; + } + if (wc == 0xff5e) + { + buf[0] = 0xa1; + buf[1] = 0xe3; + ret = 2; + break; + } + if (wc == 0xffe0) + { + buf[0] = 0xa2; + buf[1] = 0x46; + ret = 2; + break; + } + if (wc == 0xffe1) + { + buf[0] = 0xa2; + buf[1] = 0x47; + ret = 2; + break; + } + if (wc == 0xffe3) + { + buf[0] = 0xa1; + buf[1] = 0xc3; + ret = 2; + break; + } + if (wc == 0xffe5) + { + buf[0] = 0xa2; + buf[1] = 0x44; + ret = 2; + break; + } + if (wc == 0xff64) + return RET_ILUNI; + break; + } + if (ret == RET_ILUNI) + ret = big5_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } + } + ret = cp950ext_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; } - } - ret = cp950ext_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _CP950_H_ */ diff --git a/lib/converters/cp950ext.h b/lib/converters/cp950ext.h index 5cc59e23..bf1e508b 100644 --- a/lib/converters/cp950ext.h +++ b/lib/converters/cp950ext.h @@ -1,5 +1,10 @@ +/** + * @file cp950ext.h + * @brief CP950 extensions + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * CP950 extensions - */ +#ifndef _CP950EXT_H_ +#define _CP950EXT_H_ + +#include "reiconv_defines.h" static const unsigned short cp950ext_2uni_pagef9[157-116] = { /* 0xf9 */ @@ -31,30 +37,33 @@ static const unsigned short cp950ext_2uni_pagef9[157-116] = { 0x256d, 0x256e, 0x2570, 0x256f, 0x2593, }; -static int -cp950ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int cp950ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if (c1 == (unsigned char)0xf9) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - unsigned short wc = 0xfffd; + unsigned char c1 = s[0]; + if (c1 == (unsigned char)0xf9) + { + if (n >= 2) { - if (i >= 13932 && i < 13973) - wc = cp950ext_2uni_pagef9[i-13932]; + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + unsigned short wc = 0xfffd; + { + if (i >= 13932 && i < 13973) + wc = cp950ext_2uni_pagef9[i - 13932]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short cp950ext_2charset[41] = { @@ -116,45 +125,50 @@ static const Summary16 cp950ext_uni2indx_page92[12] = { { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0200 }, }; -static int -cp950ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int cp950ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x2500 && wc < 0x25a0) - summary = &cp950ext_uni2indx_page25[(wc>>4)-0x250]; - else if (wc >= 0x5800 && wc < 0x58c0) - summary = &cp950ext_uni2indx_page58[(wc>>4)-0x580]; - else if (wc >= 0x5a00 && wc < 0x5b00) - summary = &cp950ext_uni2indx_page5a[(wc>>4)-0x5a0]; - else if (wc >= 0x6000 && wc < 0x6060) - summary = &cp950ext_uni2indx_page60[(wc>>4)-0x600]; - else if (wc >= 0x7800 && wc < 0x7890) - summary = &cp950ext_uni2indx_page78[(wc>>4)-0x780]; - else if (wc >= 0x7c00 && wc < 0x7cb0) - summary = &cp950ext_uni2indx_page7c[(wc>>4)-0x7c0]; - else if (wc >= 0x8800 && wc < 0x88d0) - summary = &cp950ext_uni2indx_page88[(wc>>4)-0x880]; - else if (wc >= 0x9200 && wc < 0x92c0) - summary = &cp950ext_uni2indx_page92[(wc>>4)-0x920]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = cp950ext_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x2500 && wc < 0x25a0) + summary = &cp950ext_uni2indx_page25[(wc >> 4) - 0x250]; + else if (wc >= 0x5800 && wc < 0x58c0) + summary = &cp950ext_uni2indx_page58[(wc >> 4) - 0x580]; + else if (wc >= 0x5a00 && wc < 0x5b00) + summary = &cp950ext_uni2indx_page5a[(wc >> 4) - 0x5a0]; + else if (wc >= 0x6000 && wc < 0x6060) + summary = &cp950ext_uni2indx_page60[(wc >> 4) - 0x600]; + else if (wc >= 0x7800 && wc < 0x7890) + summary = &cp950ext_uni2indx_page78[(wc >> 4) - 0x780]; + else if (wc >= 0x7c00 && wc < 0x7cb0) + summary = &cp950ext_uni2indx_page7c[(wc >> 4) - 0x7c0]; + else if (wc >= 0x8800 && wc < 0x88d0) + summary = &cp950ext_uni2indx_page88[(wc >> 4) - 0x880]; + else if (wc >= 0x9200 && wc < 0x92c0) + summary = &cp950ext_uni2indx_page92[(wc >> 4) - 0x920]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = cp950ext_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _CP950EXT_H_ */ diff --git a/lib/converters/dec_hanyu.h b/lib/converters/dec_hanyu.h index cfea7141..de8c5c80 100644 --- a/lib/converters/dec_hanyu.h +++ b/lib/converters/dec_hanyu.h @@ -1,5 +1,10 @@ +/** + * @file dec_hanyu.h + * @brief DEC-HANYU + * @copyright Copyright (C) 2001, 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2001, 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,98 +22,123 @@ * If not, see . */ -/* - * DEC-HANYU - */ +#ifndef _DEC_HANYU_H_ +#define _DEC_HANYU_H_ + +#include "converters/ascii.h" +#include "converters/cns11643.h" +#include "converters/cns11643_1.h" +#include "converters/cns11643_2.h" +#include "converters/cns11643_3.h" +#include "reiconv_defines.h" +#include -static int -dec_hanyu_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int dec_hanyu_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (CNS 11643-1992 Plane 1), - Code set 2 (CNS 11643-1992 Plane 2), - Code set 3 (CNS 11643-1992 Plane 3) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (CNS 11643-1992 Plane 1), + Code set 2 (CNS 11643-1992 Plane 2), + Code set 3 (CNS 11643-1992 Plane 3) */ + if (c >= 0xa1 && c < 0xff) { - unsigned char c2 = s[1]; - if (c == 0xc2 && c2 == 0xcb) { - if (n < 4) - return RET_TOOFEW(0); - if (s[2] >= 0xa1 && s[2] < 0xff && s[3] >= 0xa1 && s[3] < 0xff) { - unsigned char buf[2]; - int ret; - buf[0] = s[2]-0x80; buf[1] = s[3]-0x80; - ret = cns11643_3_mbtowc(conv,pwc,buf,2); - if (ret != RET_ILSEQ) { - if (ret != 2) abort(); - return 4; - } - } - } else if (c2 >= 0xa1 && c2 < 0xff) { - if (c != 0xc2 || c2 < 0xc2) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2-0x80; - return cns11643_1_mbtowc(conv,pwc,buf,2); + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c == 0xc2 && c2 == 0xcb) + { + if (n < 4) + return RET_TOOFEW(0); + if (s[2] >= 0xa1 && s[2] < 0xff && s[3] >= 0xa1 && s[3] < 0xff) + { + unsigned char buf[2]; + int ret; + buf[0] = s[2] - 0x80; + buf[1] = s[3] - 0x80; + ret = cns11643_3_mbtowc(conv, pwc, buf, 2); + if (ret != RET_ILSEQ) + { + if (ret != 2) + abort(); + return 4; + } + } + } + else if (c2 >= 0xa1 && c2 < 0xff) + { + if (c != 0xc2 || c2 < 0xc2) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + return cns11643_1_mbtowc(conv, pwc, buf, 2); + } + } + else if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2; + return cns11643_2_mbtowc(conv, pwc, buf, 2); + } } - } else if (c2 >= 0x21 && c2 < 0x7f) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2; - return cns11643_2_mbtowc(conv,pwc,buf,2); - } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -dec_hanyu_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int dec_hanyu_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[3]; - int ret; + unsigned char buf[3]; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - ret = cns11643_wctomb(conv,buf,wc,3); - if (ret != RET_ILUNI) { - if (ret != 3) abort(); + ret = cns11643_wctomb(conv, buf, wc, 3); + if (ret != RET_ILUNI) + { + if (ret != 3) + abort(); - /* Code set 1 (CNS 11643-1992 Plane 1) */ - if (buf[0] == 1 && (buf[1] != 0x42 || buf[2] < 0x42)) { - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[1]+0x80; - r[1] = buf[2]+0x80; - return 2; - } + /* Code set 1 (CNS 11643-1992 Plane 1) */ + if (buf[0] == 1 && (buf[1] != 0x42 || buf[2] < 0x42)) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[1] + 0x80; + r[1] = buf[2] + 0x80; + return 2; + } - /* Code set 2 (CNS 11643-1992 Plane 2) */ - if (buf[0] == 2) { - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[1]+0x80; - r[1] = buf[2]; - return 2; - } + /* Code set 2 (CNS 11643-1992 Plane 2) */ + if (buf[0] == 2) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[1] + 0x80; + r[1] = buf[2]; + return 2; + } - /* Code set 3 (CNS 11643-1992 Plane 3) */ - if (buf[0] == 3) { - if (n < 4) - return RET_TOOSMALL; - r[0] = 0xc2; - r[1] = 0xcb; - r[2] = buf[1]+0x80; - r[3] = buf[2]+0x80; - return 4; + /* Code set 3 (CNS 11643-1992 Plane 3) */ + if (buf[0] == 3) + { + if (n < 4) + return RET_TOOSMALL; + r[0] = 0xc2; + r[1] = 0xcb; + r[2] = buf[1] + 0x80; + r[3] = buf[2] + 0x80; + return 4; + } } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _DEC_HANYU_H_ */ diff --git a/lib/converters/dec_kanji.h b/lib/converters/dec_kanji.h index 817921e2..0462a382 100644 --- a/lib/converters/dec_kanji.h +++ b/lib/converters/dec_kanji.h @@ -1,5 +1,10 @@ +/** + * @file dec_kanji.h + * @brief DEC-KANJI + * @copyright Copyright (C) 2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,54 +22,64 @@ * If not, see . */ -/* - * DEC-KANJI - */ +#ifndef _DEC_KANJI_H_ +#define _DEC_KANJI_H_ + +#include "converters/ascii.h" +#include "converters/jisx0208.h" +#include "reiconv_defines.h" -static int -dec_kanji_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int dec_kanji_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (JIS X 0208) */ - if (c >= 0xa1 && c < 0xf5) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (JIS X 0208) */ + if (c >= 0xa1 && c < 0xf5) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2-0x80; - return jisx0208_mbtowc(conv,pwc,buf,2); - } + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + return jisx0208_mbtowc(conv, pwc, buf, 2); + } + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -dec_kanji_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int dec_kanji_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (JIS X 0208) */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]+0x80; - r[1] = buf[1]+0x80; - return 2; - } + /* Code set 1 (JIS X 0208) */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0] + 0x80; + r[1] = buf[1] + 0x80; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _DEC_KANJI_H_ */ diff --git a/lib/converters/ebcdic037.h b/lib/converters/ebcdic037.h index b12943f6..db81d6ad 100644 --- a/lib/converters/ebcdic037.h +++ b/lib/converters/ebcdic037.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic037.h + * @brief IBM-037 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-037 - */ +#ifndef _EBCDIC037_H_ +#define _EBCDIC037_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic037_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic037_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic037_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic037_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic037_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic037_2uni[c]; + return 1; } static const unsigned char ebcdic037_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic037_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic037_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic037_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic037_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic037_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC037_H_ */ diff --git a/lib/converters/ebcdic1025.h b/lib/converters/ebcdic1025.h index 55e4b15e..be4fef70 100644 --- a/lib/converters/ebcdic1025.h +++ b/lib/converters/ebcdic1025.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1025.h + * @brief IBM-1025 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1025 - */ +#ifndef _EBCDIC1025_H_ +#define _EBCDIC1025_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1025_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1025_2uni[256] = { 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, }; -static int -ebcdic1025_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1025_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1025_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1025_2uni[c]; + return 1; } static const unsigned char ebcdic1025_page00[176] = { @@ -123,19 +128,21 @@ static const unsigned char ebcdic1025_page04[96] = { }; #endif -static int -ebcdic1025_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1025_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1025_page00[wc]; - else if (wc >= 0x0400 && wc < 0x0460) - c = ebcdic1025_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0x58; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1025_page00[wc]; + else if (wc >= 0x0400 && wc < 0x0460) + c = ebcdic1025_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0x58; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1025_H_ */ diff --git a/lib/converters/ebcdic1026.h b/lib/converters/ebcdic1026.h index dfb7e363..e1bcb7ed 100644 --- a/lib/converters/ebcdic1026.h +++ b/lib/converters/ebcdic1026.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1026.h + * @brief IBM-1026 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1026 - */ +#ifndef _EBCDIC1026_H_ +#define _EBCDIC1026_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1026_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1026_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1026_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1026_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1026_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1026_2uni[c]; + return 1; } static const unsigned char ebcdic1026_page00[256] = { @@ -126,17 +131,19 @@ static const unsigned char ebcdic1026_page01[72] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x6a, /* 0x58-0x5f */ }; -static int -ebcdic1026_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1026_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1026_page00[wc]; - else if (wc >= 0x0118 && wc < 0x0160) - c = ebcdic1026_page01[wc-0x0118]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1026_page00[wc]; + else if (wc >= 0x0118 && wc < 0x0160) + c = ebcdic1026_page01[wc - 0x0118]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1026_H_ */ diff --git a/lib/converters/ebcdic1047.h b/lib/converters/ebcdic1047.h index c811359f..70b3b86f 100644 --- a/lib/converters/ebcdic1047.h +++ b/lib/converters/ebcdic1047.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1047.h + * @brief IBM-1047 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1047 - */ +#ifndef _EBCDIC1047_H_ +#define _EBCDIC1047_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1047_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1047_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1047_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1047_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1047_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1047_2uni[c]; + return 1; } static const unsigned char ebcdic1047_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic1047_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1047_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1047_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1047_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1047_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1047_H_ */ diff --git a/lib/converters/ebcdic1097.h b/lib/converters/ebcdic1097.h index 2cbd6ee0..e5e0abd6 100644 --- a/lib/converters/ebcdic1097.h +++ b/lib/converters/ebcdic1097.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1097.h + * @brief IBM-1097 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1097 - */ +#ifndef _EBCDIC1097_H_ +#define _EBCDIC1097_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1097_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1097_2uni[256] = { 0x0038, 0x0039, 0x06f5, 0x06f6, 0x06f7, 0x06f8, 0x06f9, 0x009f, }; -static int -ebcdic1097_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1097_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1097_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1097_2uni[c]; + return 1; } static const unsigned char ebcdic1097_page00[216] = { @@ -160,27 +165,29 @@ static const unsigned char ebcdic1097_pagefe[112] = { 0x00, 0xcf, 0x00, 0xda, 0xdb, 0xce, 0x00, 0x00, /* 0xe8-0xef */ }; -static int -ebcdic1097_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1097_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00d8) - c = ebcdic1097_page00[wc]; - else if (wc >= 0x0608 && wc < 0x0650) - c = ebcdic1097_page06[wc-0x0608]; - else if (wc >= 0x06f0 && wc < 0x0700) - c = ebcdic1097_page06_1[wc-0x06f0]; - else if (wc >= 0xf8f8 && wc < 0xf900) - c = ebcdic1097_pagef8[wc-0xf8f8]; - else if (wc >= 0xfb50 && wc < 0xfba8) - c = ebcdic1097_pagefb[wc-0xfb50]; - else if (wc >= 0xfbf8 && wc < 0xfc00) - c = ebcdic1097_pagefb_2[wc-0xfbf8]; - else if (wc >= 0xfe80 && wc < 0xfef0) - c = ebcdic1097_pagefe[wc-0xfe80]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00d8) + c = ebcdic1097_page00[wc]; + else if (wc >= 0x0608 && wc < 0x0650) + c = ebcdic1097_page06[wc - 0x0608]; + else if (wc >= 0x06f0 && wc < 0x0700) + c = ebcdic1097_page06_1[wc - 0x06f0]; + else if (wc >= 0xf8f8 && wc < 0xf900) + c = ebcdic1097_pagef8[wc - 0xf8f8]; + else if (wc >= 0xfb50 && wc < 0xfba8) + c = ebcdic1097_pagefb[wc - 0xfb50]; + else if (wc >= 0xfbf8 && wc < 0xfc00) + c = ebcdic1097_pagefb_2[wc - 0xfbf8]; + else if (wc >= 0xfe80 && wc < 0xfef0) + c = ebcdic1097_pagefe[wc - 0xfe80]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1097_H_ */ diff --git a/lib/converters/ebcdic1112.h b/lib/converters/ebcdic1112.h index 0d46fbd2..c9913c5e 100644 --- a/lib/converters/ebcdic1112.h +++ b/lib/converters/ebcdic1112.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1112.h + * @brief IBM-1112 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1112 - */ +#ifndef _EBCDIC1112_H_ +#define _EBCDIC1112_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1112_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1112_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x0106, 0x00dc, 0x0141, 0x015a, 0x009f, }; -static int -ebcdic1112_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1112_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1112_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1112_2uni[c]; + return 1; } static const unsigned char ebcdic1112_page00[384] = { @@ -135,17 +140,19 @@ static const unsigned char ebcdic1112_page20[8] = { 0x00, 0xdf, 0x00, 0x00, 0x57, 0xaa, 0x56, 0x00, /* 0x18-0x1f */ }; -static int -ebcdic1112_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1112_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0180) - c = ebcdic1112_page00[wc]; - else if (wc >= 0x2018 && wc < 0x2020) - c = ebcdic1112_page20[wc-0x2018]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0180) + c = ebcdic1112_page00[wc]; + else if (wc >= 0x2018 && wc < 0x2020) + c = ebcdic1112_page20[wc - 0x2018]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1112_H_ */ diff --git a/lib/converters/ebcdic1122.h b/lib/converters/ebcdic1122.h index 608538d6..fd3375c2 100644 --- a/lib/converters/ebcdic1122.h +++ b/lib/converters/ebcdic1122.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1122.h + * @brief IBM-1122 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1122 - */ +#ifndef _EBCDIC1122_H_ +#define _EBCDIC1122_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1122_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1122_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1122_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1122_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1122_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1122_2uni[c]; + return 1; } static const unsigned char ebcdic1122_page00[256] = { @@ -121,17 +126,19 @@ static const unsigned char ebcdic1122_page01[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x8e, 0x00, /* 0x78-0x7f */ }; -static int -ebcdic1122_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1122_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1122_page00[wc]; - else if (wc >= 0x0160 && wc < 0x0180) - c = ebcdic1122_page01[wc-0x0160]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1122_page00[wc]; + else if (wc >= 0x0160 && wc < 0x0180) + c = ebcdic1122_page01[wc - 0x0160]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1122_H_ */ diff --git a/lib/converters/ebcdic1123.h b/lib/converters/ebcdic1123.h index ea3f66c2..f0d56187 100644 --- a/lib/converters/ebcdic1123.h +++ b/lib/converters/ebcdic1123.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1123.h + * @brief IBM-1123 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1123 - */ +#ifndef _EBCDIC1123_H_ +#define _EBCDIC1123_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1123_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1123_2uni[256] = { 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, }; -static int -ebcdic1123_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1123_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1123_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1123_2uni[c]; + return 1; } #if DEDUPLICATE_TABLES @@ -130,19 +135,21 @@ static const unsigned char ebcdic1123_page04[152] = { 0x62, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; -static int -ebcdic1123_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1123_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1123_page00[wc]; - else if (wc >= 0x0400 && wc < 0x0498) - c = ebcdic1123_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0x58; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1123_page00[wc]; + else if (wc >= 0x0400 && wc < 0x0498) + c = ebcdic1123_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0x58; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1123_H_ */ diff --git a/lib/converters/ebcdic1130.h b/lib/converters/ebcdic1130.h index ef522974..52f2d95c 100644 --- a/lib/converters/ebcdic1130.h +++ b/lib/converters/ebcdic1130.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1130.h + * @brief IBM-1130 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1130 - */ +#ifndef _EBCDIC1130_H_ +#define _EBCDIC1130_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1130_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1130_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1130_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1130_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1130_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1130_2uni[c]; + return 1; } static const unsigned char ebcdic1130_page00[440] = { @@ -146,19 +151,21 @@ static const unsigned char ebcdic1130_page03[40] = { 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; -static int -ebcdic1130_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1130_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x01b8) - c = ebcdic1130_page00[wc]; - else if (wc >= 0x0300 && wc < 0x0328) - c = ebcdic1130_page03[wc-0x0300]; - else if (wc == 0x20ab) - c = 0x78; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x01b8) + c = ebcdic1130_page00[wc]; + else if (wc >= 0x0300 && wc < 0x0328) + c = ebcdic1130_page03[wc - 0x0300]; + else if (wc == 0x20ab) + c = 0x78; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1130_H_ */ diff --git a/lib/converters/ebcdic1132.h b/lib/converters/ebcdic1132.h index 5481b42f..1b3bf3d2 100644 --- a/lib/converters/ebcdic1132.h +++ b/lib/converters/ebcdic1132.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1132.h + * @brief IBM-1132 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1132 - */ +#ifndef _EBCDIC1132_H_ +#define _EBCDIC1132_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1132_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic1132_2uni[256] = { 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, }; -static int -ebcdic1132_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1132_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic1132_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic1132_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } #if DEDUPLICATE_TABLES @@ -127,19 +133,21 @@ static const unsigned char ebcdic1132_page0e[96] = { 0xb8, 0xb9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -ebcdic1132_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1132_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1132_page00[wc]; - else if (wc >= 0x0e80 && wc < 0x0ee0) - c = ebcdic1132_page0e[wc-0x0e80]; - else if (wc == 0x20ad) - c = 0x70; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1132_page00[wc]; + else if (wc >= 0x0e80 && wc < 0x0ee0) + c = ebcdic1132_page0e[wc - 0x0e80]; + else if (wc == 0x20ad) + c = 0x70; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1132_H_ */ diff --git a/lib/converters/ebcdic1137.h b/lib/converters/ebcdic1137.h index cebfcf3d..576d4d31 100644 --- a/lib/converters/ebcdic1137.h +++ b/lib/converters/ebcdic1137.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1137.h + * @brief IBM-1137 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1137 - */ +#ifndef _EBCDIC1137_H_ +#define _EBCDIC1137_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1137_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic1137_2uni[256] = { 0x0038, 0x0039, 0x096c, 0x096d, 0x096e, 0x096f, 0x0970, 0x009f, }; -static int -ebcdic1137_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1137_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic1137_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic1137_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic1137_page00[168] = { @@ -128,19 +134,21 @@ static const unsigned char ebcdic1137_page20[8] = { 0x00, 0x00, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, /* 0x08-0x0f */ }; -static int -ebcdic1137_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1137_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a8) - c = ebcdic1137_page00[wc]; - else if (wc >= 0x0900 && wc < 0x0978) - c = ebcdic1137_page09[wc-0x0900]; - else if (wc >= 0x2008 && wc < 0x2010) - c = ebcdic1137_page20[wc-0x2008]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a8) + c = ebcdic1137_page00[wc]; + else if (wc >= 0x0900 && wc < 0x0978) + c = ebcdic1137_page09[wc - 0x0900]; + else if (wc >= 0x2008 && wc < 0x2010) + c = ebcdic1137_page20[wc - 0x2008]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1137_H_ */ diff --git a/lib/converters/ebcdic1140.h b/lib/converters/ebcdic1140.h index 9e285f4e..95d29ed1 100644 --- a/lib/converters/ebcdic1140.h +++ b/lib/converters/ebcdic1140.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1140.h + * @brief IBM-1140 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1140 - */ +#ifndef _EBCDIC1140_H_ +#define _EBCDIC1140_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1140_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1140_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1140_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1140_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1140_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1140_2uni[c]; + return 1; } static const unsigned char ebcdic1140_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1140_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1140_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1140_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1140_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1140_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1140_H_ */ diff --git a/lib/converters/ebcdic1141.h b/lib/converters/ebcdic1141.h index 4702dbf1..d197c6e0 100644 --- a/lib/converters/ebcdic1141.h +++ b/lib/converters/ebcdic1141.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1141.h + * @brief IBM-1141 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1141 - */ +#ifndef _EBCDIC1141_H_ +#define _EBCDIC1141_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1141_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1141_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1141_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1141_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1141_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1141_2uni[c]; + return 1; } static const unsigned char ebcdic1141_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1141_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xd0, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1141_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1141_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1141_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1141_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1141_H_ */ diff --git a/lib/converters/ebcdic1142.h b/lib/converters/ebcdic1142.h index 970af113..17ee8506 100644 --- a/lib/converters/ebcdic1142.h +++ b/lib/converters/ebcdic1142.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1142.h + * @brief IBM-1142 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1142 - */ +#ifndef _EBCDIC1142_H_ +#define _EBCDIC1142_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1142_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1142_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1142_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1142_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1142_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1142_2uni[c]; + return 1; } static const unsigned char ebcdic1142_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1142_page00[256] = { 0x6a, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1142_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1142_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1142_page00[wc]; - else if (wc == 0x20ac) - c = 0x5a; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1142_page00[wc]; + else if (wc == 0x20ac) + c = 0x5a; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1142_H_ */ diff --git a/lib/converters/ebcdic1143.h b/lib/converters/ebcdic1143.h index 5e20b344..f2807b9f 100644 --- a/lib/converters/ebcdic1143.h +++ b/lib/converters/ebcdic1143.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1143.h + * @brief IBM-1143 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1143 - */ +#ifndef _EBCDIC1143_H_ +#define _EBCDIC1143_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1143_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1143_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1143_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1143_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1143_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1143_2uni[c]; + return 1; } static const unsigned char ebcdic1143_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1143_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1143_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1143_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1143_page00[wc]; - else if (wc == 0x20ac) - c = 0x5a; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1143_page00[wc]; + else if (wc == 0x20ac) + c = 0x5a; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1143_H_ */ diff --git a/lib/converters/ebcdic1144.h b/lib/converters/ebcdic1144.h index b6ff6d48..13ecbd73 100644 --- a/lib/converters/ebcdic1144.h +++ b/lib/converters/ebcdic1144.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1144.h + * @brief IBM-1144 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1144 - */ +#ifndef _EBCDIC1144_H_ +#define _EBCDIC1144_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1144_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1144_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1144_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1144_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1144_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1144_2uni[c]; + return 1; } static const unsigned char ebcdic1144_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1144_page00[256] = { 0x70, 0x79, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1144_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1144_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1144_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1144_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1144_H_ */ diff --git a/lib/converters/ebcdic1145.h b/lib/converters/ebcdic1145.h index fd4058c3..d3ed1d93 100644 --- a/lib/converters/ebcdic1145.h +++ b/lib/converters/ebcdic1145.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1145.h + * @brief IBM-1145 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1145 - */ +#ifndef _EBCDIC1145_H_ +#define _EBCDIC1145_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1145_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1145_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1145_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1145_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1145_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1145_2uni[c]; + return 1; } static const unsigned char ebcdic1145_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1145_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1145_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1145_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1145_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1145_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1145_H_ */ diff --git a/lib/converters/ebcdic1146.h b/lib/converters/ebcdic1146.h index 2e3b1bf2..88530af7 100644 --- a/lib/converters/ebcdic1146.h +++ b/lib/converters/ebcdic1146.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1146.h + * @brief IBM-1146 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1146 - */ +#ifndef _EBCDIC1146_H_ +#define _EBCDIC1146_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1146_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1146_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1146_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1146_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1146_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1146_2uni[c]; + return 1; } static const unsigned char ebcdic1146_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1146_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1146_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1146_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1146_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1146_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1146_H_ */ diff --git a/lib/converters/ebcdic1147.h b/lib/converters/ebcdic1147.h index 4fc84a32..bbfc0afa 100644 --- a/lib/converters/ebcdic1147.h +++ b/lib/converters/ebcdic1147.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1147.h + * @brief IBM-1147 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1147 - */ +#ifndef _EBCDIC1147_H_ +#define _EBCDIC1147_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1147_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1147_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1147_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1147_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1147_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1147_2uni[c]; + return 1; } static const unsigned char ebcdic1147_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1147_page00[256] = { 0x70, 0x6a, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1147_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1147_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1147_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1147_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1147_H_ */ diff --git a/lib/converters/ebcdic1148.h b/lib/converters/ebcdic1148.h index b923727e..99d3ef86 100644 --- a/lib/converters/ebcdic1148.h +++ b/lib/converters/ebcdic1148.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1148.h + * @brief IBM-1148 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1148 - */ +#ifndef _EBCDIC1148_H_ +#define _EBCDIC1148_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1148_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1148_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1148_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1148_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1148_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1148_2uni[c]; + return 1; } static const unsigned char ebcdic1148_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1148_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1148_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1148_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1148_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1148_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1148_H_ */ diff --git a/lib/converters/ebcdic1149.h b/lib/converters/ebcdic1149.h index 9cebc999..f294a840 100644 --- a/lib/converters/ebcdic1149.h +++ b/lib/converters/ebcdic1149.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1149.h + * @brief IBM-1149 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1149 - */ +#ifndef _EBCDIC1149_H_ +#define _EBCDIC1149_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1149_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1149_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1149_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1149_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1149_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1149_2uni[c]; + return 1; } static const unsigned char ebcdic1149_page00[256] = { @@ -115,17 +120,19 @@ static const unsigned char ebcdic1149_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0xc0, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic1149_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1149_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1149_page00[wc]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1149_page00[wc]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1149_H_ */ diff --git a/lib/converters/ebcdic1153.h b/lib/converters/ebcdic1153.h index 00a4313b..b186c2b3 100644 --- a/lib/converters/ebcdic1153.h +++ b/lib/converters/ebcdic1153.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1153.h + * @brief IBM-1153 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1153 - */ +#ifndef _EBCDIC1153_H_ +#define _EBCDIC1153_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1153_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1153_2uni[256] = { 0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f, }; -static int -ebcdic1153_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1153_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1153_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1153_2uni[c]; + return 1; } static const unsigned char ebcdic1153_page00[384] = { @@ -142,19 +147,21 @@ static const unsigned char ebcdic1153_page02[32] = { }; #endif -static int -ebcdic1153_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1153_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0180) - c = ebcdic1153_page00[wc]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = ebcdic1153_page02[wc-0x02c0]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0180) + c = ebcdic1153_page00[wc]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = ebcdic1153_page02[wc - 0x02c0]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1153_H_ */ diff --git a/lib/converters/ebcdic1154.h b/lib/converters/ebcdic1154.h index 20ea188e..ab2d9450 100644 --- a/lib/converters/ebcdic1154.h +++ b/lib/converters/ebcdic1154.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1154.h + * @brief IBM-1154 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1154 - */ +#ifndef _EBCDIC1154_H_ +#define _EBCDIC1154_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1154_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1154_2uni[256] = { 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, }; -static int -ebcdic1154_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1154_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1154_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1154_2uni[c]; + return 1; } static const unsigned char ebcdic1154_page00[176] = { @@ -123,21 +128,23 @@ static const unsigned char ebcdic1154_page04[96] = { }; #endif -static int -ebcdic1154_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1154_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1154_page00[wc]; - else if (wc >= 0x0400 && wc < 0x0460) - c = ebcdic1154_page04[wc-0x0400]; - else if (wc == 0x20ac) - c = 0xe1; - else if (wc == 0x2116) - c = 0x58; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1154_page00[wc]; + else if (wc >= 0x0400 && wc < 0x0460) + c = ebcdic1154_page04[wc - 0x0400]; + else if (wc == 0x20ac) + c = 0xe1; + else if (wc == 0x2116) + c = 0x58; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1154_H_ */ diff --git a/lib/converters/ebcdic1155.h b/lib/converters/ebcdic1155.h index 8aa2638f..396fff50 100644 --- a/lib/converters/ebcdic1155.h +++ b/lib/converters/ebcdic1155.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1155.h + * @brief IBM-1155 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1155 - */ +#ifndef _EBCDIC1155_H_ +#define _EBCDIC1155_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1155_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1155_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1155_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1155_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1155_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1155_2uni[c]; + return 1; } static const unsigned char ebcdic1155_page00[256] = { @@ -130,19 +135,21 @@ static const unsigned char ebcdic1155_page01[72] = { }; #endif -static int -ebcdic1155_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1155_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1155_page00[wc]; - else if (wc >= 0x0118 && wc < 0x0160) - c = ebcdic1155_page01[wc-0x0118]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1155_page00[wc]; + else if (wc >= 0x0118 && wc < 0x0160) + c = ebcdic1155_page01[wc - 0x0118]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1155_H_ */ diff --git a/lib/converters/ebcdic1156.h b/lib/converters/ebcdic1156.h index a5d55457..ad804c13 100644 --- a/lib/converters/ebcdic1156.h +++ b/lib/converters/ebcdic1156.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1156.h + * @brief IBM-1156 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1156 - */ +#ifndef _EBCDIC1156_H_ +#define _EBCDIC1156_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1156_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1156_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x0106, 0x00dc, 0x0141, 0x015a, 0x009f, }; -static int -ebcdic1156_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1156_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1156_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1156_2uni[c]; + return 1; } static const unsigned char ebcdic1156_page00[384] = { @@ -139,19 +144,21 @@ static const unsigned char ebcdic1156_page20[8] = { }; #endif -static int -ebcdic1156_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1156_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0180) - c = ebcdic1156_page00[wc]; - else if (wc >= 0x2018 && wc < 0x2020) - c = ebcdic1156_page20[wc-0x2018]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0180) + c = ebcdic1156_page00[wc]; + else if (wc >= 0x2018 && wc < 0x2020) + c = ebcdic1156_page20[wc - 0x2018]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1156_H_ */ diff --git a/lib/converters/ebcdic1157.h b/lib/converters/ebcdic1157.h index 9f7ed470..3efb930c 100644 --- a/lib/converters/ebcdic1157.h +++ b/lib/converters/ebcdic1157.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1157.h + * @brief IBM-1157 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1157 - */ +#ifndef _EBCDIC1157_H_ +#define _EBCDIC1157_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1157_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1157_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1157_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1157_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1157_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1157_2uni[c]; + return 1; } static const unsigned char ebcdic1157_page00[256] = { @@ -125,19 +130,21 @@ static const unsigned char ebcdic1157_page01[32] = { }; #endif -static int -ebcdic1157_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1157_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic1157_page00[wc]; - else if (wc >= 0x0160 && wc < 0x0180) - c = ebcdic1157_page01[wc-0x0160]; - else if (wc == 0x20ac) - c = 0x5a; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic1157_page00[wc]; + else if (wc >= 0x0160 && wc < 0x0180) + c = ebcdic1157_page01[wc - 0x0160]; + else if (wc == 0x20ac) + c = 0x5a; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1157_H_ */ diff --git a/lib/converters/ebcdic1158.h b/lib/converters/ebcdic1158.h index bacf9264..d58d3899 100644 --- a/lib/converters/ebcdic1158.h +++ b/lib/converters/ebcdic1158.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1158.h + * @brief IBM-1158 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1158 - */ +#ifndef _EBCDIC1158_H_ +#define _EBCDIC1158_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1158_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1158_2uni[256] = { 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, }; -static int -ebcdic1158_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1158_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1158_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1158_2uni[c]; + return 1; } #if DEDUPLICATE_TABLES @@ -134,21 +139,23 @@ static const unsigned char ebcdic1158_page04[152] = { }; #endif -static int -ebcdic1158_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1158_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1158_page00[wc]; - else if (wc >= 0x0400 && wc < 0x0498) - c = ebcdic1158_page04[wc-0x0400]; - else if (wc == 0x20ac) - c = 0xe1; - else if (wc == 0x2116) - c = 0x58; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1158_page00[wc]; + else if (wc >= 0x0400 && wc < 0x0498) + c = ebcdic1158_page04[wc - 0x0400]; + else if (wc == 0x20ac) + c = 0xe1; + else if (wc == 0x2116) + c = 0x58; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1158_H_ */ diff --git a/lib/converters/ebcdic1160.h b/lib/converters/ebcdic1160.h index ed3b9702..b98b24cb 100644 --- a/lib/converters/ebcdic1160.h +++ b/lib/converters/ebcdic1160.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1160.h + * @brief IBM-1160 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1160 - */ +#ifndef _EBCDIC1160_H_ +#define _EBCDIC1160_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1160_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1160_2uni[256] = { 0x0038, 0x0039, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4b, 0x20ac, 0x009f, }; -static int -ebcdic1160_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1160_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1160_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1160_2uni[c]; + return 1; } #if DEDUPLICATE_TABLES @@ -127,19 +132,21 @@ static const unsigned char ebcdic1160_page0e[96] = { }; #endif -static int -ebcdic1160_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1160_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1160_page00[wc]; - else if (wc >= 0x0e00 && wc < 0x0e60) - c = ebcdic1160_page0e[wc-0x0e00]; - else if (wc == 0x20ac) - c = 0xfe; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1160_page00[wc]; + else if (wc >= 0x0e00 && wc < 0x0e60) + c = ebcdic1160_page0e[wc - 0x0e00]; + else if (wc == 0x20ac) + c = 0xfe; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1160_H_ */ diff --git a/lib/converters/ebcdic1164.h b/lib/converters/ebcdic1164.h index 692850c7..a143cf51 100644 --- a/lib/converters/ebcdic1164.h +++ b/lib/converters/ebcdic1164.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1164.h + * @brief IBM-1164 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1164 - */ +#ifndef _EBCDIC1164_H_ +#define _EBCDIC1164_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1164_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1164_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic1164_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1164_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1164_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1164_2uni[c]; + return 1; } static const unsigned char ebcdic1164_page00[440] = { @@ -153,19 +158,21 @@ static const unsigned char ebcdic1164_page20[8] = { 0x00, 0x00, 0x00, 0x78, 0x9f, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ }; -static int -ebcdic1164_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1164_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x01b8) - c = ebcdic1164_page00[wc]; - else if (wc >= 0x0300 && wc < 0x0328) - c = ebcdic1164_page03[wc-0x0300]; - else if (wc >= 0x20a8 && wc < 0x20b0) - c = ebcdic1164_page20[wc-0x20a8]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x01b8) + c = ebcdic1164_page00[wc]; + else if (wc >= 0x0300 && wc < 0x0328) + c = ebcdic1164_page03[wc - 0x0300]; + else if (wc >= 0x20a8 && wc < 0x20b0) + c = ebcdic1164_page20[wc - 0x20a8]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1164_H_ */ diff --git a/lib/converters/ebcdic1165.h b/lib/converters/ebcdic1165.h index 6431c940..b7534ad3 100644 --- a/lib/converters/ebcdic1165.h +++ b/lib/converters/ebcdic1165.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1165.h + * @brief IBM-1165 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1165 - */ +#ifndef _EBCDIC1165_H_ +#define _EBCDIC1165_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1165_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1165_2uni[256] = { 0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f, }; -static int -ebcdic1165_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1165_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1165_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1165_2uni[c]; + return 1; } static const unsigned char ebcdic1165_page00[384] = { @@ -142,19 +147,21 @@ static const unsigned char ebcdic1165_page02[32] = { }; #endif -static int -ebcdic1165_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1165_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0180) - c = ebcdic1165_page00[wc]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = ebcdic1165_page02[wc-0x02c0]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0180) + c = ebcdic1165_page00[wc]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = ebcdic1165_page02[wc - 0x02c0]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1165_H_ */ diff --git a/lib/converters/ebcdic1166.h b/lib/converters/ebcdic1166.h index 407e57a3..314b84c0 100644 --- a/lib/converters/ebcdic1166.h +++ b/lib/converters/ebcdic1166.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic1166.h + * @brief IBM-1166 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-1166 - */ +#ifndef _EBCDIC1166_H_ +#define _EBCDIC1166_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic1166_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic1166_2uni[256] = { 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, }; -static int -ebcdic1166_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic1166_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic1166_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic1166_2uni[c]; + return 1; } #if DEDUPLICATE_TABLES @@ -141,21 +146,23 @@ static const unsigned char ebcdic1166_page04[240] = { 0x70, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ }; -static int -ebcdic1166_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic1166_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic1166_page00[wc]; - else if (wc >= 0x0400 && wc < 0x04f0) - c = ebcdic1166_page04[wc-0x0400]; - else if (wc == 0x20ac) - c = 0xe1; - else if (wc == 0x2116) - c = 0x58; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic1166_page00[wc]; + else if (wc >= 0x0400 && wc < 0x04f0) + c = ebcdic1166_page04[wc - 0x0400]; + else if (wc == 0x20ac) + c = 0xe1; + else if (wc == 0x2116) + c = 0x58; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC1166_H_ */ diff --git a/lib/converters/ebcdic12712.h b/lib/converters/ebcdic12712.h index 29f97fcd..c2e78c86 100644 --- a/lib/converters/ebcdic12712.h +++ b/lib/converters/ebcdic12712.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic12712.h + * @brief IBM-12712 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-12712 - */ +#ifndef _EBCDIC12712_H_ +#define _EBCDIC12712_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic12712_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic12712_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x202a, 0x202b, 0x200e, 0x200f, 0x009f, }; -static int -ebcdic12712_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic12712_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic12712_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic12712_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } #if DEDUPLICATE_TABLES @@ -144,21 +150,23 @@ static const unsigned char ebcdic12712_page20_1[8] = { 0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ }; -static int -ebcdic12712_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic12712_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00f8) - c = ebcdic12712_page00[wc]; - else if (wc >= 0x05d0 && wc < 0x05f0) - c = ebcdic12712_page05[wc-0x05d0]; - else if (wc >= 0x2008 && wc < 0x2040) - c = ebcdic12712_page20[wc-0x2008]; - else if (wc >= 0x20a8 && wc < 0x20b0) - c = ebcdic12712_page20_1[wc-0x20a8]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00f8) + c = ebcdic12712_page00[wc]; + else if (wc >= 0x05d0 && wc < 0x05f0) + c = ebcdic12712_page05[wc - 0x05d0]; + else if (wc >= 0x2008 && wc < 0x2040) + c = ebcdic12712_page20[wc - 0x2008]; + else if (wc >= 0x20a8 && wc < 0x20b0) + c = ebcdic12712_page20_1[wc - 0x20a8]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC12712_H_ */ diff --git a/lib/converters/ebcdic16804.h b/lib/converters/ebcdic16804.h index f8415341..0dcf9b73 100644 --- a/lib/converters/ebcdic16804.h +++ b/lib/converters/ebcdic16804.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic16804.h + * @brief IBM-16804 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-16804 - */ +#ifndef _EBCDIC16804_H_ +#define _EBCDIC16804_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic16804_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic16804_2uni[256] = { 0x0038, 0x0039, 0x20ac, 0x0666, 0x0667, 0x0668, 0x0669, 0x009f, }; -static int -ebcdic16804_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic16804_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic16804_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic16804_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic16804_page00[248] = { @@ -156,23 +162,25 @@ static const unsigned char ebcdic16804_pagefe[136] = { 0xb5, 0x00, 0x00, 0xb8, 0xb9, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; -static int -ebcdic16804_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic16804_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00f8) - c = ebcdic16804_page00[wc]; - else if (wc >= 0x0608 && wc < 0x0670) - c = ebcdic16804_page06[wc-0x0608]; - else if (wc >= 0x2000 && wc < 0x2010) - c = ebcdic16804_page20[wc-0x2000]; - else if (wc == 0x20ac) - c = 0xfa; - else if (wc >= 0xfe78 && wc < 0xff00) - c = ebcdic16804_pagefe[wc-0xfe78]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00f8) + c = ebcdic16804_page00[wc]; + else if (wc >= 0x0608 && wc < 0x0670) + c = ebcdic16804_page06[wc - 0x0608]; + else if (wc >= 0x2000 && wc < 0x2010) + c = ebcdic16804_page20[wc - 0x2000]; + else if (wc == 0x20ac) + c = 0xfa; + else if (wc >= 0xfe78 && wc < 0xff00) + c = ebcdic16804_pagefe[wc - 0xfe78]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC16804_H_ */ diff --git a/lib/converters/ebcdic273.h b/lib/converters/ebcdic273.h index f183e707..43430ee6 100644 --- a/lib/converters/ebcdic273.h +++ b/lib/converters/ebcdic273.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic273.h + * @brief IBM-273 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-273 - */ +#ifndef _EBCDIC273_H_ +#define _EBCDIC273_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic273_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic273_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic273_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic273_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic273_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic273_2uni[c]; + return 1; } static const unsigned char ebcdic273_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic273_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xd0, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic273_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic273_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic273_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic273_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC273_H_ */ diff --git a/lib/converters/ebcdic277.h b/lib/converters/ebcdic277.h index 77818e9c..a20e99e7 100644 --- a/lib/converters/ebcdic277.h +++ b/lib/converters/ebcdic277.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic277.h + * @brief IBM-277 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-277 - */ +#ifndef _EBCDIC277_H_ +#define _EBCDIC277_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic277_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic277_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic277_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic277_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic277_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic277_2uni[c]; + return 1; } static const unsigned char ebcdic277_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic277_page00[256] = { 0x6a, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic277_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic277_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic277_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic277_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC277_H_ */ diff --git a/lib/converters/ebcdic278.h b/lib/converters/ebcdic278.h index 8b0229ad..7dcd9920 100644 --- a/lib/converters/ebcdic278.h +++ b/lib/converters/ebcdic278.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic278.h + * @brief IBM-278 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-278 - */ +#ifndef _EBCDIC278_H_ +#define _EBCDIC278_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic278_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic278_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic278_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic278_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic278_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic278_2uni[c]; + return 1; } static const unsigned char ebcdic278_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic278_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic278_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic278_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic278_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic278_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC278_H_ */ diff --git a/lib/converters/ebcdic280.h b/lib/converters/ebcdic280.h index 5e843d00..261e863d 100644 --- a/lib/converters/ebcdic280.h +++ b/lib/converters/ebcdic280.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic280.h + * @brief IBM-280 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-280 - */ +#ifndef _EBCDIC280_H_ +#define _EBCDIC280_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic280_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic280_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic280_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic280_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic280_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic280_2uni[c]; + return 1; } static const unsigned char ebcdic280_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic280_page00[256] = { 0x70, 0x79, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic280_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic280_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic280_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic280_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC280_H_ */ diff --git a/lib/converters/ebcdic282.h b/lib/converters/ebcdic282.h index 42ece938..8746007e 100644 --- a/lib/converters/ebcdic282.h +++ b/lib/converters/ebcdic282.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic282.h + * @brief IBM-282 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-282 - */ +#ifndef _EBCDIC282_H_ +#define _EBCDIC282_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic282_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic282_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic282_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic282_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic282_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic282_2uni[c]; + return 1; } static const unsigned char ebcdic282_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic282_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic282_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic282_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic282_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic282_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC282_H_ */ diff --git a/lib/converters/ebcdic284.h b/lib/converters/ebcdic284.h index 7e9c4cbb..d78c0530 100644 --- a/lib/converters/ebcdic284.h +++ b/lib/converters/ebcdic284.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic284.h + * @brief IBM-284 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-284 - */ +#ifndef _EBCDIC284_H_ +#define _EBCDIC284_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic284_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic284_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic284_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic284_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic284_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic284_2uni[c]; + return 1; } static const unsigned char ebcdic284_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic284_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic284_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic284_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic284_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic284_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC284_H_ */ diff --git a/lib/converters/ebcdic285.h b/lib/converters/ebcdic285.h index ab43e797..bd188660 100644 --- a/lib/converters/ebcdic285.h +++ b/lib/converters/ebcdic285.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic285.h + * @brief IBM-285 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-285 - */ +#ifndef _EBCDIC285_H_ +#define _EBCDIC285_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic285_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic285_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic285_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic285_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic285_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic285_2uni[c]; + return 1; } static const unsigned char ebcdic285_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic285_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic285_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic285_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic285_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic285_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC285_H_ */ diff --git a/lib/converters/ebcdic297.h b/lib/converters/ebcdic297.h index aa833e69..d0b4cdfc 100644 --- a/lib/converters/ebcdic297.h +++ b/lib/converters/ebcdic297.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic297.h + * @brief IBM-297 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-297 - */ +#ifndef _EBCDIC297_H_ +#define _EBCDIC297_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic297_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic297_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic297_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic297_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic297_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic297_2uni[c]; + return 1; } static const unsigned char ebcdic297_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic297_page00[256] = { 0x70, 0x6a, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic297_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic297_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic297_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic297_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC297_H_ */ diff --git a/lib/converters/ebcdic423.h b/lib/converters/ebcdic423.h index 1dcb3cb0..06bc6802 100644 --- a/lib/converters/ebcdic423.h +++ b/lib/converters/ebcdic423.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic423.h + * @brief IBM-423 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-423 - */ +#ifndef _EBCDIC423_H_ +#define _EBCDIC423_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic423_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic423_2uni[256] = { 0x0038, 0x0039, 0x00ff, 0x00e7, 0x00c7, 0xfffd, 0xfffd, 0x009f, }; -static int -ebcdic423_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic423_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic423_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic423_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic423_page00[256] = { @@ -131,17 +137,19 @@ static const unsigned char ebcdic423_page03[80] = { 0xbf, 0xcb, 0xb4, 0xb8, 0xb6, 0xb7, 0xb9, 0x00, /* 0xc8-0xcf */ }; -static int -ebcdic423_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic423_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic423_page00[wc]; - else if (wc >= 0x0380 && wc < 0x03d0) - c = ebcdic423_page03[wc-0x0380]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic423_page00[wc]; + else if (wc >= 0x0380 && wc < 0x03d0) + c = ebcdic423_page03[wc - 0x0380]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC423_H_ */ diff --git a/lib/converters/ebcdic424.h b/lib/converters/ebcdic424.h index 6aaeb7bb..61db7e2b 100644 --- a/lib/converters/ebcdic424.h +++ b/lib/converters/ebcdic424.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic424.h + * @brief IBM-424 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-424 - */ +#ifndef _EBCDIC424_H_ +#define _EBCDIC424_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic424_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic424_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, }; -static int -ebcdic424_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic424_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic424_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic424_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic424_page00[248] = { @@ -132,19 +138,21 @@ static const unsigned char ebcdic424_page20[48] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, /* 0x38-0x3f */ }; -static int -ebcdic424_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic424_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00f8) - c = ebcdic424_page00[wc]; - else if (wc >= 0x05d0 && wc < 0x05f0) - c = ebcdic424_page05[wc-0x05d0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = ebcdic424_page20[wc-0x2010]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00f8) + c = ebcdic424_page00[wc]; + else if (wc >= 0x05d0 && wc < 0x05f0) + c = ebcdic424_page05[wc - 0x05d0]; + else if (wc >= 0x2010 && wc < 0x2040) + c = ebcdic424_page20[wc - 0x2010]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC424_H_ */ diff --git a/lib/converters/ebcdic425.h b/lib/converters/ebcdic425.h index 4af5c4c3..46e7d6d8 100644 --- a/lib/converters/ebcdic425.h +++ b/lib/converters/ebcdic425.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic425.h + * @brief IBM-425 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-425 - */ +#ifndef _EBCDIC425_H_ +#define _EBCDIC425_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic425_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic425_2uni[256] = { 0x0038, 0x0039, 0xfffd, 0x00db, 0x00dc, 0x00d9, 0x00a4, 0x009f, }; -static int -ebcdic425_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic425_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic425_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic425_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic425_page00[256] = { @@ -142,23 +148,25 @@ static const unsigned char ebcdic425_page20[8] = { 0x00, 0x00, 0x00, 0x00, 0xec, 0xed, 0xee, 0xef, /* 0x08-0x0f */ }; -static int -ebcdic425_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic425_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic425_page00[wc]; - else if (wc >= 0x0150 && wc < 0x0180) - c = ebcdic425_page01[wc-0x0150]; - else if (wc >= 0x0608 && wc < 0x0658) - c = ebcdic425_page06[wc-0x0608]; - else if (wc >= 0x2008 && wc < 0x2010) - c = ebcdic425_page20[wc-0x2008]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic425_page00[wc]; + else if (wc >= 0x0150 && wc < 0x0180) + c = ebcdic425_page01[wc - 0x0150]; + else if (wc >= 0x0608 && wc < 0x0658) + c = ebcdic425_page06[wc - 0x0608]; + else if (wc >= 0x2008 && wc < 0x2010) + c = ebcdic425_page20[wc - 0x2008]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC425_H_ */ diff --git a/lib/converters/ebcdic4971.h b/lib/converters/ebcdic4971.h index 953b7e7a..80159d83 100644 --- a/lib/converters/ebcdic4971.h +++ b/lib/converters/ebcdic4971.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic4971.h + * @brief IBM-4971 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-4971 - */ +#ifndef _EBCDIC4971_H_ +#define _EBCDIC4971_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic4971_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic4971_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00a9, 0x20ac, 0xfffd, 0x00bb, 0x009f, }; -static int -ebcdic4971_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic4971_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic4971_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic4971_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } #if DEDUPLICATE_TABLES @@ -139,21 +145,23 @@ static const unsigned char ebcdic4971_page20[16] = { }; #endif -static int -ebcdic4971_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic4971_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00c0) - c = ebcdic4971_page00[wc]; - else if (wc >= 0x0380 && wc < 0x03d0) - c = ebcdic4971_page03[wc-0x0380]; - else if (wc >= 0x2010 && wc < 0x2020) - c = ebcdic4971_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0xfc; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00c0) + c = ebcdic4971_page00[wc]; + else if (wc >= 0x0380 && wc < 0x03d0) + c = ebcdic4971_page03[wc - 0x0380]; + else if (wc >= 0x2010 && wc < 0x2020) + c = ebcdic4971_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0xfc; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC4971_H_ */ diff --git a/lib/converters/ebcdic500.h b/lib/converters/ebcdic500.h index 247fa463..1b51dd96 100644 --- a/lib/converters/ebcdic500.h +++ b/lib/converters/ebcdic500.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic500.h + * @brief IBM-500 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-500 - */ +#ifndef _EBCDIC500_H_ +#define _EBCDIC500_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic500_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic500_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic500_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic500_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic500_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic500_2uni[c]; + return 1; } static const unsigned char ebcdic500_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic500_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic500_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic500_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic500_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic500_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC500_H_ */ diff --git a/lib/converters/ebcdic838.h b/lib/converters/ebcdic838.h index 5ac8cc61..02841513 100644 --- a/lib/converters/ebcdic838.h +++ b/lib/converters/ebcdic838.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic838.h + * @brief IBM-838 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-838 - */ +#ifndef _EBCDIC838_H_ +#define _EBCDIC838_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic838_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic838_2uni[256] = { 0x0038, 0x0039, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4b, 0x0e4c, 0x009f, }; -static int -ebcdic838_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic838_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic838_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic838_2uni[c]; + return 1; } static const unsigned char ebcdic838_page00[176] = { @@ -119,17 +124,19 @@ static const unsigned char ebcdic838_page0e[96] = { 0xb8, 0xb9, 0x90, 0xa0, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ }; -static int -ebcdic838_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic838_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic838_page00[wc]; - else if (wc >= 0x0e00 && wc < 0x0e60) - c = ebcdic838_page0e[wc-0x0e00]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic838_page00[wc]; + else if (wc >= 0x0e00 && wc < 0x0e60) + c = ebcdic838_page0e[wc - 0x0e00]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC838_H_ */ diff --git a/lib/converters/ebcdic870.h b/lib/converters/ebcdic870.h index 42e3c903..bec18a3f 100644 --- a/lib/converters/ebcdic870.h +++ b/lib/converters/ebcdic870.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic870.h + * @brief IBM-870 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-870 - */ +#ifndef _EBCDIC870_H_ +#define _EBCDIC870_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic870_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic870_2uni[256] = { 0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f, }; -static int -ebcdic870_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic870_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic870_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic870_2uni[c]; + return 1; } static const unsigned char ebcdic870_page00[384] = { @@ -138,17 +143,19 @@ static const unsigned char ebcdic870_page02[32] = { 0x80, 0xb0, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -ebcdic870_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic870_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0180) - c = ebcdic870_page00[wc]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = ebcdic870_page02[wc-0x02c0]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0180) + c = ebcdic870_page00[wc]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = ebcdic870_page02[wc - 0x02c0]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC870_H_ */ diff --git a/lib/converters/ebcdic871.h b/lib/converters/ebcdic871.h index 8563759c..585316f6 100644 --- a/lib/converters/ebcdic871.h +++ b/lib/converters/ebcdic871.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic871.h + * @brief IBM-871 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-871 - */ +#ifndef _EBCDIC871_H_ +#define _EBCDIC871_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic871_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic871_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic871_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic871_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic871_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic871_2uni[c]; + return 1; } static const unsigned char ebcdic871_page00[256] = { @@ -115,15 +120,17 @@ static const unsigned char ebcdic871_page00[256] = { 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0xc0, 0xdf, /* 0xf8-0xff */ }; -static int -ebcdic871_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic871_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic871_page00[wc]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic871_page00[wc]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC871_H_ */ diff --git a/lib/converters/ebcdic875.h b/lib/converters/ebcdic875.h index 817235bb..8eb6da65 100644 --- a/lib/converters/ebcdic875.h +++ b/lib/converters/ebcdic875.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic875.h + * @brief IBM-875 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-875 - */ +#ifndef _EBCDIC875_H_ +#define _EBCDIC875_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic875_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic875_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00a9, 0xfffd, 0xfffd, 0x00bb, 0x009f, }; -static int -ebcdic875_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic875_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic875_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic875_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic875_page00[192] = { @@ -127,19 +133,21 @@ static const unsigned char ebcdic875_page20[16] = { 0xce, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; -static int -ebcdic875_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic875_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00c0) - c = ebcdic875_page00[wc]; - else if (wc >= 0x0380 && wc < 0x03d0) - c = ebcdic875_page03[wc-0x0380]; - else if (wc >= 0x2010 && wc < 0x2020) - c = ebcdic875_page20[wc-0x2010]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00c0) + c = ebcdic875_page00[wc]; + else if (wc >= 0x0380 && wc < 0x03d0) + c = ebcdic875_page03[wc - 0x0380]; + else if (wc >= 0x2010 && wc < 0x2020) + c = ebcdic875_page20[wc - 0x2010]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC875_H_ */ diff --git a/lib/converters/ebcdic880.h b/lib/converters/ebcdic880.h index 45ffd52c..05be75bd 100644 --- a/lib/converters/ebcdic880.h +++ b/lib/converters/ebcdic880.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic880.h + * @brief IBM-880 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-880 - */ +#ifndef _EBCDIC880_H_ +#define _EBCDIC880_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic880_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic880_2uni[256] = { 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, }; -static int -ebcdic880_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic880_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic880_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic880_2uni[c]; + return 1; } static const unsigned char ebcdic880_page00[176] = { @@ -119,19 +124,21 @@ static const unsigned char ebcdic880_page04[96] = { 0x49, 0x51, 0x52, 0x53, 0x54, 0x00, 0x55, 0x56, /* 0x58-0x5f */ }; -static int -ebcdic880_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic880_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00b0) - c = ebcdic880_page00[wc]; - else if (wc >= 0x0400 && wc < 0x0460) - c = ebcdic880_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0x58; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00b0) + c = ebcdic880_page00[wc]; + else if (wc >= 0x0400 && wc < 0x0460) + c = ebcdic880_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0x58; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC880_H_ */ diff --git a/lib/converters/ebcdic905.h b/lib/converters/ebcdic905.h index 0433df70..2747cf75 100644 --- a/lib/converters/ebcdic905.h +++ b/lib/converters/ebcdic905.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic905.h + * @brief IBM-905 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-905 - */ +#ifndef _EBCDIC905_H_ +#define _EBCDIC905_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic905_2uni[256] = { /* 0x00 */ @@ -72,16 +78,16 @@ static const unsigned short ebcdic905_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic905_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic905_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - unsigned short wc = ebcdic905_2uni[c]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + unsigned short wc = ebcdic905_2uni[c]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + return RET_ILSEQ; } static const unsigned char ebcdic905_page00[256] = { @@ -139,19 +145,21 @@ static const unsigned char ebcdic905_page02[8] = { 0x80, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -ebcdic905_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic905_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic905_page00[wc]; - else if (wc >= 0x0108 && wc < 0x0180) - c = ebcdic905_page01[wc-0x0108]; - else if (wc >= 0x02d8 && wc < 0x02e0) - c = ebcdic905_page02[wc-0x02d8]; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic905_page00[wc]; + else if (wc >= 0x0108 && wc < 0x0180) + c = ebcdic905_page01[wc - 0x0108]; + else if (wc >= 0x02d8 && wc < 0x02e0) + c = ebcdic905_page02[wc - 0x02d8]; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC905_H_ */ diff --git a/lib/converters/ebcdic924.h b/lib/converters/ebcdic924.h index c03eac4b..c2bc1494 100644 --- a/lib/converters/ebcdic924.h +++ b/lib/converters/ebcdic924.h @@ -1,5 +1,10 @@ +/** + * @file ebcdic924.h + * @brief IBM-924 + * @copyright Copyright (C) 1999-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * IBM-924 - */ +#ifndef _EBCDIC924_H_ +#define _EBCDIC924_H_ + +#include "reiconv_defines.h" static const unsigned short ebcdic924_2uni[256] = { /* 0x00 */ @@ -72,12 +78,11 @@ static const unsigned short ebcdic924_2uni[256] = { 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, }; -static int -ebcdic924_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ebcdic924_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) ebcdic924_2uni[c]; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)ebcdic924_2uni[c]; + return 1; } static const unsigned char ebcdic924_page00[256] = { @@ -123,19 +128,21 @@ static const unsigned char ebcdic924_page01[48] = { 0xb9, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x9d, 0x00, /* 0x78-0x7f */ }; -static int -ebcdic924_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ebcdic924_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0100) - c = ebcdic924_page00[wc]; - else if (wc >= 0x0150 && wc < 0x0180) - c = ebcdic924_page01[wc-0x0150]; - else if (wc == 0x20ac) - c = 0x9f; - if (c != 0 || wc == 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0100) + c = ebcdic924_page00[wc]; + else if (wc >= 0x0150 && wc < 0x0180) + c = ebcdic924_page01[wc - 0x0150]; + else if (wc == 0x20ac) + c = 0x9f; + if (c != 0 || wc == 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _EBCDIC924_H_ */ diff --git a/lib/converters/euc_cn.h b/lib/converters/euc_cn.h index 51a9f35a..74ef8778 100644 --- a/lib/converters/euc_cn.h +++ b/lib/converters/euc_cn.h @@ -1,5 +1,10 @@ +/** + * @file euc_cn.h + * @brief EUC-CN + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,55 +22,66 @@ * If not, see . */ -/* - * EUC-CN - */ +#ifndef _EUC_CN_H_ +#define _EUC_CN_H_ + +#include "converters/ascii.h" +#include "converters/gb2312.h" +#include "reiconv_defines.h" -static int -euc_cn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int euc_cn_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII or GB 1988-89) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (GB 2312-1980) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII or GB 1988-89) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (GB 2312-1980) */ + if (c >= 0xa1 && c < 0xff) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2-0x80; - return gb2312_mbtowc(conv,pwc,buf,2); - } else - return RET_ILSEQ; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + return gb2312_mbtowc(conv, pwc, buf, 2); + } + else + return RET_ILSEQ; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -euc_cn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int euc_cn_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII or GB 1988-89) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII or GB 1988-89) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (GB 2312-1980) */ - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]+0x80; - r[1] = buf[1]+0x80; - return 2; - } + /* Code set 1 (GB 2312-1980) */ + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0] + 0x80; + r[1] = buf[1] + 0x80; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _EUC_CN_H_ */ diff --git a/lib/converters/euc_jisx0213.h b/lib/converters/euc_jisx0213.h index 74dce3a0..9b07b403 100644 --- a/lib/converters/euc_jisx0213.h +++ b/lib/converters/euc_jisx0213.h @@ -1,5 +1,10 @@ +/** + * @file euc_jisx0213.h + * @brief EUC-JISX0213 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,14 @@ * If not, see . */ -/* - * EUC-JISX0213 - */ +#ifndef _EUC_JISX0213_H_ +#define _EUC_JISX0213_H_ + +#include "converters/flushwc.h" // IWYU pragma: keep +#include "converters/jisx0213.h" +#include "reiconv_defines.h" + +#include /* The structure of EUC-JISX0213 is as follows: @@ -35,233 +45,275 @@ and are therefore best represented as sequences of Unicode characters. */ -#include "jisx0213.h" -#include "flushwc.h" - -static int -euc_jisx0213_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int euc_jisx0213_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - ucs4_t last_wc = conv->istate; - if (last_wc) { - /* Output the buffered character. */ - conv->istate = 0; - *pwc = last_wc; - return 0; /* Don't advance the input pointer. */ - } else { - unsigned char c = *s; - if (c < 0x80) { - /* Plain ASCII character. */ - *pwc = (ucs4_t) c; - return 1; - } else { - if ((c >= 0xa1 && c <= 0xfe) || c == 0x8e || c == 0x8f) { - /* Two or three byte character. */ - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 <= 0xfe) { - if (c == 0x8e) { - /* Half-width katakana. */ - if (c2 <= 0xdf) { - *pwc = c2 + 0xfec0; - return 2; - } - } else { - ucs4_t wc; - if (c == 0x8f) { - /* JISX 0213 plane 2. */ - if (n >= 3) { - unsigned char c3 = s[2]; - wc = jisx0213_to_ucs4(0x200-0x80+c2,c3^0x80); - } else - return RET_TOOFEW(0); - } else { - /* JISX 0213 plane 1. */ - wc = jisx0213_to_ucs4(0x100-0x80+c,c2^0x80); - } - if (wc) { - if (wc < 0x80) { - /* It's a combining character. */ - ucs4_t wc1 = jisx0213_to_ucs_combining[wc - 1][0]; - ucs4_t wc2 = jisx0213_to_ucs_combining[wc - 1][1]; - /* We cannot output two Unicode characters at once. So, - output the first character and buffer the second one. */ - *pwc = wc1; - conv->istate = wc2; - } else - *pwc = wc; - return (c == 0x8f ? 3 : 2); - } + ucs4_t last_wc = conv->istate; + if (last_wc) + { + /* Output the buffered character. */ + conv->istate = 0; + *pwc = last_wc; + return 0; /* Don't advance the input pointer. */ + } + else + { + unsigned char c = *s; + if (c < 0x80) + { + /* Plain ASCII character. */ + *pwc = (ucs4_t)c; + return 1; + } + else + { + if ((c >= 0xa1 && c <= 0xfe) || c == 0x8e || c == 0x8f) + { + /* Two or three byte character. */ + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 <= 0xfe) + { + if (c == 0x8e) + { + /* Half-width katakana. */ + if (c2 <= 0xdf) + { + *pwc = c2 + 0xfec0; + return 2; + } + } + else + { + ucs4_t wc; + if (c == 0x8f) + { + /* JISX 0213 plane 2. */ + if (n >= 3) + { + unsigned char c3 = s[2]; + wc = jisx0213_to_ucs4(0x200 - 0x80 + c2, c3 ^ 0x80); + } + else + return RET_TOOFEW(0); + } + else + { + /* JISX 0213 plane 1. */ + wc = jisx0213_to_ucs4(0x100 - 0x80 + c, c2 ^ 0x80); + } + if (wc) + { + if (wc < 0x80) + { + /* It's a combining character. */ + ucs4_t wc1 = jisx0213_to_ucs_combining[wc - 1][0]; + ucs4_t wc2 = jisx0213_to_ucs_combining[wc - 1][1]; + /* We cannot output two Unicode characters at once. So, + output the first character and buffer the second one. */ + *pwc = wc1; + conv->istate = wc2; + } + else + *pwc = wc; + return (c == 0x8f ? 3 : 2); + } + } + } + } + else + return RET_TOOFEW(0); } - } - } else - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; + } } - } } #define euc_jisx0213_flushwc normal_flushwc /* Composition tables for each of the relevant combining characters. */ -static const struct { unsigned short base; unsigned short composed; } euc_jisx0213_comp_table_data[] = { +static const struct +{ + unsigned short base; + unsigned short composed; +} euc_jisx0213_comp_table_data[] = { #define euc_jisx0213_comp_table02e5_idx 0 #define euc_jisx0213_comp_table02e5_len 1 - { 0xabe4, 0xabe5 }, /* 0x12B65 = 0x12B64 U+02E5 */ -#define euc_jisx0213_comp_table02e9_idx (euc_jisx0213_comp_table02e5_idx+euc_jisx0213_comp_table02e5_len) + {0xabe4, 0xabe5}, /* 0x12B65 = 0x12B64 U+02E5 */ +#define euc_jisx0213_comp_table02e9_idx (euc_jisx0213_comp_table02e5_idx + euc_jisx0213_comp_table02e5_len) #define euc_jisx0213_comp_table02e9_len 1 - { 0xabe0, 0xabe6 }, /* 0x12B66 = 0x12B60 U+02E9 */ -#define euc_jisx0213_comp_table0300_idx (euc_jisx0213_comp_table02e9_idx+euc_jisx0213_comp_table02e9_len) + {0xabe0, 0xabe6}, /* 0x12B66 = 0x12B60 U+02E9 */ +#define euc_jisx0213_comp_table0300_idx (euc_jisx0213_comp_table02e9_idx + euc_jisx0213_comp_table02e9_len) #define euc_jisx0213_comp_table0300_len 5 - { 0xa9dc, 0xabc4 }, /* 0x12B44 = 0x1295C U+0300 */ - { 0xabb8, 0xabc8 }, /* 0x12B48 = 0x12B38 U+0300 */ - { 0xabb7, 0xabca }, /* 0x12B4A = 0x12B37 U+0300 */ - { 0xabb0, 0xabcc }, /* 0x12B4C = 0x12B30 U+0300 */ - { 0xabc3, 0xabce }, /* 0x12B4E = 0x12B43 U+0300 */ -#define euc_jisx0213_comp_table0301_idx (euc_jisx0213_comp_table0300_idx+euc_jisx0213_comp_table0300_len) + {0xa9dc, 0xabc4}, /* 0x12B44 = 0x1295C U+0300 */ + {0xabb8, 0xabc8}, /* 0x12B48 = 0x12B38 U+0300 */ + {0xabb7, 0xabca}, /* 0x12B4A = 0x12B37 U+0300 */ + {0xabb0, 0xabcc}, /* 0x12B4C = 0x12B30 U+0300 */ + {0xabc3, 0xabce}, /* 0x12B4E = 0x12B43 U+0300 */ +#define euc_jisx0213_comp_table0301_idx (euc_jisx0213_comp_table0300_idx + euc_jisx0213_comp_table0300_len) #define euc_jisx0213_comp_table0301_len 4 - { 0xabb8, 0xabc9 }, /* 0x12B49 = 0x12B38 U+0301 */ - { 0xabb7, 0xabcb }, /* 0x12B4B = 0x12B37 U+0301 */ - { 0xabb0, 0xabcd }, /* 0x12B4D = 0x12B30 U+0301 */ - { 0xabc3, 0xabcf }, /* 0x12B4F = 0x12B43 U+0301 */ -#define euc_jisx0213_comp_table309a_idx (euc_jisx0213_comp_table0301_idx+euc_jisx0213_comp_table0301_len) + {0xabb8, 0xabc9}, /* 0x12B49 = 0x12B38 U+0301 */ + {0xabb7, 0xabcb}, /* 0x12B4B = 0x12B37 U+0301 */ + {0xabb0, 0xabcd}, /* 0x12B4D = 0x12B30 U+0301 */ + {0xabc3, 0xabcf}, /* 0x12B4F = 0x12B43 U+0301 */ +#define euc_jisx0213_comp_table309a_idx (euc_jisx0213_comp_table0301_idx + euc_jisx0213_comp_table0301_len) #define euc_jisx0213_comp_table309a_len 14 - { 0xa4ab, 0xa4f7 }, /* 0x12477 = 0x1242B U+309A */ - { 0xa4ad, 0xa4f8 }, /* 0x12478 = 0x1242D U+309A */ - { 0xa4af, 0xa4f9 }, /* 0x12479 = 0x1242F U+309A */ - { 0xa4b1, 0xa4fa }, /* 0x1247A = 0x12431 U+309A */ - { 0xa4b3, 0xa4fb }, /* 0x1247B = 0x12433 U+309A */ - { 0xa5ab, 0xa5f7 }, /* 0x12577 = 0x1252B U+309A */ - { 0xa5ad, 0xa5f8 }, /* 0x12578 = 0x1252D U+309A */ - { 0xa5af, 0xa5f9 }, /* 0x12579 = 0x1252F U+309A */ - { 0xa5b1, 0xa5fa }, /* 0x1257A = 0x12531 U+309A */ - { 0xa5b3, 0xa5fb }, /* 0x1257B = 0x12533 U+309A */ - { 0xa5bb, 0xa5fc }, /* 0x1257C = 0x1253B U+309A */ - { 0xa5c4, 0xa5fd }, /* 0x1257D = 0x12544 U+309A */ - { 0xa5c8, 0xa5fe }, /* 0x1257E = 0x12548 U+309A */ - { 0xa6f5, 0xa6f8 }, /* 0x12678 = 0x12675 U+309A */ + {0xa4ab, 0xa4f7}, /* 0x12477 = 0x1242B U+309A */ + {0xa4ad, 0xa4f8}, /* 0x12478 = 0x1242D U+309A */ + {0xa4af, 0xa4f9}, /* 0x12479 = 0x1242F U+309A */ + {0xa4b1, 0xa4fa}, /* 0x1247A = 0x12431 U+309A */ + {0xa4b3, 0xa4fb}, /* 0x1247B = 0x12433 U+309A */ + {0xa5ab, 0xa5f7}, /* 0x12577 = 0x1252B U+309A */ + {0xa5ad, 0xa5f8}, /* 0x12578 = 0x1252D U+309A */ + {0xa5af, 0xa5f9}, /* 0x12579 = 0x1252F U+309A */ + {0xa5b1, 0xa5fa}, /* 0x1257A = 0x12531 U+309A */ + {0xa5b3, 0xa5fb}, /* 0x1257B = 0x12533 U+309A */ + {0xa5bb, 0xa5fc}, /* 0x1257C = 0x1253B U+309A */ + {0xa5c4, 0xa5fd}, /* 0x1257D = 0x12544 U+309A */ + {0xa5c8, 0xa5fe}, /* 0x1257E = 0x12548 U+309A */ + {0xa6f5, 0xa6f8}, /* 0x12678 = 0x12675 U+309A */ }; -static int -euc_jisx0213_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int euc_jisx0213_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int count = 0; - unsigned short lasttwo = conv->ostate; + int count = 0; + unsigned short lasttwo = conv->ostate; - if (lasttwo) { - /* Attempt to combine the last character with this one. */ - unsigned int idx; - unsigned int len; + if (lasttwo) + { + /* Attempt to combine the last character with this one. */ + unsigned int idx; + unsigned int len; - if (wc == 0x02e5) - idx = euc_jisx0213_comp_table02e5_idx, - len = euc_jisx0213_comp_table02e5_len; - else if (wc == 0x02e9) - idx = euc_jisx0213_comp_table02e9_idx, - len = euc_jisx0213_comp_table02e9_len; - else if (wc == 0x0300) - idx = euc_jisx0213_comp_table0300_idx, - len = euc_jisx0213_comp_table0300_len; - else if (wc == 0x0301) - idx = euc_jisx0213_comp_table0301_idx, - len = euc_jisx0213_comp_table0301_len; - else if (wc == 0x309a) - idx = euc_jisx0213_comp_table309a_idx, - len = euc_jisx0213_comp_table309a_len; - else - goto not_combining; + if (wc == 0x02e5) + idx = euc_jisx0213_comp_table02e5_idx, len = euc_jisx0213_comp_table02e5_len; + else if (wc == 0x02e9) + idx = euc_jisx0213_comp_table02e9_idx, len = euc_jisx0213_comp_table02e9_len; + else if (wc == 0x0300) + idx = euc_jisx0213_comp_table0300_idx, len = euc_jisx0213_comp_table0300_len; + else if (wc == 0x0301) + idx = euc_jisx0213_comp_table0301_idx, len = euc_jisx0213_comp_table0301_len; + else if (wc == 0x309a) + idx = euc_jisx0213_comp_table309a_idx, len = euc_jisx0213_comp_table309a_len; + else + goto not_combining; + + do + if (euc_jisx0213_comp_table_data[idx].base == lasttwo) + break; + while (++idx, --len > 0); - do - if (euc_jisx0213_comp_table_data[idx].base == lasttwo) - break; - while (++idx, --len > 0); + if (len > 0) + { + /* Output the combined character. */ + if (n >= 2) + { + lasttwo = euc_jisx0213_comp_table_data[idx].composed; + r[0] = (lasttwo >> 8) & 0xff; + r[1] = lasttwo & 0xff; + conv->ostate = 0; + return 2; + } + else + return RET_TOOSMALL; + } - if (len > 0) { - /* Output the combined character. */ - if (n >= 2) { - lasttwo = euc_jisx0213_comp_table_data[idx].composed; + not_combining: + /* Output the buffered character. */ + if (n < 2) + return RET_TOOSMALL; r[0] = (lasttwo >> 8) & 0xff; r[1] = lasttwo & 0xff; - conv->ostate = 0; - return 2; - } else - return RET_TOOSMALL; + r += 2; + count = 2; } - not_combining: - /* Output the buffered character. */ - if (n < 2) - return RET_TOOSMALL; - r[0] = (lasttwo >> 8) & 0xff; - r[1] = lasttwo & 0xff; - r += 2; - count = 2; - } - - if (wc < 0x80) { - /* Plain ASCII character. */ - if (n > count) { - r[0] = (unsigned char) wc; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else if (wc >= 0xff61 && wc <= 0xff9f) { - /* Half-width katakana. */ - if (n >= count+2) { - r[0] = 0x8e; - r[1] = wc - 0xfec0; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } else { - unsigned short jch = ucs4_to_jisx0213(wc); - if (jch != 0) { - if (jch & 0x0080) { - /* A possible match in comp_table_data. We have to buffer it. */ - /* We know it's a JISX 0213 plane 1 character. */ - if (jch & 0x8000) abort(); - conv->ostate = jch | 0x8080; - return count+0; - } - if (jch & 0x8000) { - /* JISX 0213 plane 2. */ - if (n >= count+3) { - r[0] = 0x8f; - r[1] = (jch >> 8) | 0x80; - r[2] = (jch & 0xff) | 0x80; - conv->ostate = 0; - return count+3; - } else - return RET_TOOSMALL; - } else { - /* JISX 0213 plane 1. */ - if (n >= count+2) { - r[0] = (jch >> 8) | 0x80; - r[1] = (jch & 0xff) | 0x80; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; - } + if (wc < 0x80) + { + /* Plain ASCII character. */ + if (n > count) + { + r[0] = (unsigned char)wc; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; + } + else if (wc >= 0xff61 && wc <= 0xff9f) + { + /* Half-width katakana. */ + if (n >= count + 2) + { + r[0] = 0x8e; + r[1] = wc - 0xfec0; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + else + { + unsigned short jch = ucs4_to_jisx0213(wc); + if (jch != 0) + { + if (jch & 0x0080) + { + /* A possible match in comp_table_data. We have to buffer it. */ + /* We know it's a JISX 0213 plane 1 character. */ + if (jch & 0x8000) + abort(); + conv->ostate = jch | 0x8080; + return count + 0; + } + if (jch & 0x8000) + { + /* JISX 0213 plane 2. */ + if (n >= count + 3) + { + r[0] = 0x8f; + r[1] = (jch >> 8) | 0x80; + r[2] = (jch & 0xff) | 0x80; + conv->ostate = 0; + return count + 3; + } + else + return RET_TOOSMALL; + } + else + { + /* JISX 0213 plane 1. */ + if (n >= count + 2) + { + r[0] = (jch >> 8) | 0x80; + r[1] = (jch & 0xff) | 0x80; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } } -static int -euc_jisx0213_reset (conv_t conv, unsigned char *r, size_t n) +static int euc_jisx0213_reset(conv_t conv, unsigned char *r, size_t n) { - state_t lasttwo = conv->ostate; + state_t lasttwo = conv->ostate; - if (lasttwo) { - if (n < 2) - return RET_TOOSMALL; - r[0] = (lasttwo >> 8) & 0xff; - r[1] = lasttwo & 0xff; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + if (lasttwo) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = (lasttwo >> 8) & 0xff; + r[1] = lasttwo & 0xff; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _EUC_JISX0213_H_ */ diff --git a/lib/converters/euc_jp.h b/lib/converters/euc_jp.h index 985c4c53..f1a84a4c 100644 --- a/lib/converters/euc_jp.h +++ b/lib/converters/euc_jp.h @@ -1,5 +1,10 @@ +/** + * @file euc_jp.h + * @brief EUC-JP + * @copyright Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,174 +22,217 @@ * If not, see . */ -/* - * EUC-JP - */ +#ifndef _EUC_JP_H_ +#define _EUC_JP_H_ + +#include "converters/ascii.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "converters/jisx0212.h" +#include "reiconv_defines.h" +#include -static int -euc_jp_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int euc_jp_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (JIS X 0208) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - if (c < 0xf5) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2-0x80; - return jisx0208_mbtowc(conv,pwc,buf,2); - } else - return RET_ILSEQ; - } else { - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - *pwc = 0xe000 + 94*(c-0xf5) + (c2-0xa1); - return 2; - } else - return RET_ILSEQ; + unsigned char c = *s; + /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (JIS X 0208) */ + if (c >= 0xa1 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + if (c < 0xf5) + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + return jisx0208_mbtowc(conv, pwc, buf, 2); + } + else + return RET_ILSEQ; + } + else + { + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + *pwc = 0xe000 + 94 * (c - 0xf5) + (c2 - 0xa1); + return 2; + } + else + return RET_ILSEQ; + } } - } - /* Code set 2 (half-width katakana) */ - if (c == 0x8e) { - if (n < 2) - return RET_TOOFEW(0); + /* Code set 2 (half-width katakana) */ + if (c == 0x8e) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xe0) { - int ret = jisx0201_mbtowc(conv,pwc,s+1,n-1); - if (ret == RET_ILSEQ) - return RET_ILSEQ; - if (ret != 1) abort(); - return 2; - } else - return RET_ILSEQ; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xe0) + { + int ret = jisx0201_mbtowc(conv, pwc, s + 1, n - 1); + if (ret == RET_ILSEQ) + return RET_ILSEQ; + if (ret != 1) + abort(); + return 2; + } + else + return RET_ILSEQ; + } } - } - /* Code set 3 (JIS X 0212-1990) */ - if (c == 0x8f) { - if (n < 2) - return RET_TOOFEW(0); + /* Code set 3 (JIS X 0212-1990) */ + if (c == 0x8f) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - if (n < 3) - return RET_TOOFEW(0); - if (c2 < 0xf5) { - unsigned char c3 = s[2]; - if (c3 >= 0xa1 && c3 < 0xff) { - unsigned char buf[2]; - int ret; - buf[0] = c2-0x80; buf[1] = c3-0x80; - ret = jisx0212_mbtowc(conv,pwc,buf,2); - if (ret == RET_ILSEQ) - return RET_ILSEQ; - if (ret != 2) abort(); - return 3; - } else - return RET_ILSEQ; - } else { - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - unsigned char c3 = s[2]; - if (c3 >= 0xa1 && c3 < 0xff) { - *pwc = 0xe3ac + 94*(c2-0xf5) + (c3-0xa1); - return 3; - } else - return RET_ILSEQ; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + if (n < 3) + return RET_TOOFEW(0); + if (c2 < 0xf5) + { + unsigned char c3 = s[2]; + if (c3 >= 0xa1 && c3 < 0xff) + { + unsigned char buf[2]; + int ret; + buf[0] = c2 - 0x80; + buf[1] = c3 - 0x80; + ret = jisx0212_mbtowc(conv, pwc, buf, 2); + if (ret == RET_ILSEQ) + return RET_ILSEQ; + if (ret != 2) + abort(); + return 3; + } + else + return RET_ILSEQ; + } + else + { + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + unsigned char c3 = s[2]; + if (c3 >= 0xa1 && c3 < 0xff) + { + *pwc = 0xe3ac + 94 * (c2 - 0xf5) + (c3 - 0xa1); + return 3; + } + else + return RET_ILSEQ; + } + } + else + return RET_ILSEQ; } - } else - return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -euc_jp_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int euc_jp_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (JIS X 0208) */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]+0x80; - r[1] = buf[1]+0x80; - return 2; - } + /* Code set 1 (JIS X 0208) */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0] + 0x80; + r[1] = buf[1] + 0x80; + return 2; + } - /* Code set 2 (half-width katakana) */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI && buf[0] >= 0x80) { - if (ret != 1) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = 0x8e; - r[1] = buf[0]; - return 2; - } + /* Code set 2 (half-width katakana) */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI && buf[0] >= 0x80) + { + if (ret != 1) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = 0x8e; + r[1] = buf[0]; + return 2; + } - /* Code set 3 (JIS X 0212-1990) */ - ret = jisx0212_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 3) - return RET_TOOSMALL; - r[0] = 0x8f; - r[1] = buf[0]+0x80; - r[2] = buf[1]+0x80; - return 3; - } + /* Code set 3 (JIS X 0212-1990) */ + ret = jisx0212_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 3) + return RET_TOOSMALL; + r[0] = 0x8f; + r[1] = buf[0] + 0x80; + r[2] = buf[1] + 0x80; + return 3; + } - /* Extra compatibility with Shift_JIS. */ - if (wc == 0x00a5) { - r[0] = 0x5c; - return 1; - } - if (wc == 0x203e) { - r[0] = 0x7e; - return 1; - } + /* Extra compatibility with Shift_JIS. */ + if (wc == 0x00a5) + { + r[0] = 0x5c; + return 1; + } + if (wc == 0x203e) + { + r[0] = 0x7e; + return 1; + } - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - if (wc >= 0xe000 && wc < 0xe758) { - if (wc < 0xe3ac) { - unsigned char c1, c2; - if (n < 2) - return RET_TOOSMALL; - c1 = (unsigned int) (wc - 0xe000) / 94; - c2 = (unsigned int) (wc - 0xe000) % 94; - r[0] = c1+0xf5; - r[1] = c2+0xa1; - return 2; - } else { - unsigned char c1, c2; - if (n < 3) - return RET_TOOSMALL; - c1 = (unsigned int) (wc - 0xe3ac) / 94; - c2 = (unsigned int) (wc - 0xe3ac) % 94; - r[0] = 0x8f; - r[1] = c1+0xf5; - r[2] = c2+0xa1; - return 3; + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + if (wc >= 0xe000 && wc < 0xe758) + { + if (wc < 0xe3ac) + { + unsigned char c1, c2; + if (n < 2) + return RET_TOOSMALL; + c1 = (unsigned int)(wc - 0xe000) / 94; + c2 = (unsigned int)(wc - 0xe000) % 94; + r[0] = c1 + 0xf5; + r[1] = c2 + 0xa1; + return 2; + } + else + { + unsigned char c1, c2; + if (n < 3) + return RET_TOOSMALL; + c1 = (unsigned int)(wc - 0xe3ac) / 94; + c2 = (unsigned int)(wc - 0xe3ac) % 94; + r[0] = 0x8f; + r[1] = c1 + 0xf5; + r[2] = c2 + 0xa1; + return 3; + } } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _EUC_JP_H_ */ diff --git a/lib/converters/euc_kr.h b/lib/converters/euc_kr.h index a4480eb2..b7330934 100644 --- a/lib/converters/euc_kr.h +++ b/lib/converters/euc_kr.h @@ -1,5 +1,10 @@ +/** + * @file euc_kr.h + * @brief EUC-KR + * @copyright Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,57 +22,67 @@ * If not, see . */ -/* - * EUC-KR - */ +#ifndef _EUC_KR_H_ +#define _EUC_KR_H_ + +#include "converters/ascii.h" +#include "converters/ksc5601.h" +#include "reiconv_defines.h" +#include /* Specification: RFC 1557 */ -static int -euc_kr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int euc_kr_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII or KS C 5636-1993) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (KS C 5601-1992, now KS X 1001:2002) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII or KS C 5636-1993) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (KS C 5601-1992, now KS X 1001:2002) */ + if (c >= 0xa1 && c < 0xff) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2-0x80; - return ksc5601_mbtowc(conv,pwc,buf,2); - } else - return RET_ILSEQ; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + return ksc5601_mbtowc(conv, pwc, buf, 2); + } + else + return RET_ILSEQ; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -euc_kr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int euc_kr_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII or KS C 5636-1993) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII or KS C 5636-1993) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (KS C 5601-1992, now KS X 1001:2002) */ - ret = ksc5601_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]+0x80; - r[1] = buf[1]+0x80; - return 2; - } + /* Code set 1 (KS C 5601-1992, now KS X 1001:2002) */ + ret = ksc5601_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0] + 0x80; + r[1] = buf[1] + 0x80; + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _EUC_KR_H_ */ diff --git a/lib/converters/euc_tw.h b/lib/converters/euc_tw.h index 671cb9d6..fe4db390 100644 --- a/lib/converters/euc_tw.h +++ b/lib/converters/euc_tw.h @@ -1,5 +1,10 @@ +/** + * @file euc_tw.h + * @brief EUC-TW + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,99 +22,142 @@ * If not, see . */ -/* - * EUC-TW - */ +#ifndef _EUC_TW_H_ +#define _EUC_TW_H_ + +#include "converters/ascii.h" +#include "converters/cns11643.h" +#include "converters/cns11643_1.h" +#include "converters/cns11643_15.h" +#include "converters/cns11643_2.h" +#include "converters/cns11643_3.h" +#include "converters/cns11643_4.h" +#include "converters/cns11643_5.h" +#include "converters/cns11643_6.h" +#include "converters/cns11643_7.h" +#include "reiconv_defines.h" -static int -euc_tw_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int euc_tw_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - /* Code set 0 (ASCII) */ - if (c < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - /* Code set 1 (CNS 11643-1992 Plane 1) */ - if (c >= 0xa1 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); + unsigned char c = *s; + /* Code set 0 (ASCII) */ + if (c < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + /* Code set 1 (CNS 11643-1992 Plane 1) */ + if (c >= 0xa1 && c < 0xff) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 < 0xff) { - unsigned char buf[2]; - buf[0] = c-0x80; buf[1] = c2-0x80; - return cns11643_1_mbtowc(conv,pwc,buf,2); - } else - return RET_ILSEQ; + if (n < 2) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 < 0xff) + { + unsigned char buf[2]; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + return cns11643_1_mbtowc(conv, pwc, buf, 2); + } + else + return RET_ILSEQ; + } } - } - /* Code set 2 (CNS 11643-1992 Planes 1-16) */ - if (c == 0x8e) { - if (n < 4) - return RET_TOOFEW(0); + /* Code set 2 (CNS 11643-1992 Planes 1-16) */ + if (c == 0x8e) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 <= 0xb0) { - unsigned char c3 = s[2]; - unsigned char c4 = s[3]; - if (c3 >= 0xa1 && c3 < 0xff && c4 >= 0xa1 && c4 < 0xff) { - unsigned char buf[2]; - int ret; - buf[0] = c3-0x80; buf[1] = c4-0x80; - switch (c2-0xa0) { - case 1: ret = cns11643_1_mbtowc(conv,pwc,buf,2); break; - case 2: ret = cns11643_2_mbtowc(conv,pwc,buf,2); break; - case 3: ret = cns11643_3_mbtowc(conv,pwc,buf,2); break; - case 4: ret = cns11643_4_mbtowc(conv,pwc,buf,2); break; - case 5: ret = cns11643_5_mbtowc(conv,pwc,buf,2); break; - case 6: ret = cns11643_6_mbtowc(conv,pwc,buf,2); break; - case 7: ret = cns11643_7_mbtowc(conv,pwc,buf,2); break; - case 15: ret = cns11643_15_mbtowc(conv,pwc,buf,2); break; - default: return RET_ILSEQ; - } - if (ret == RET_ILSEQ) - return RET_ILSEQ; - if (ret != 2) abort(); - return 4; + if (n < 4) + return RET_TOOFEW(0); + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 <= 0xb0) + { + unsigned char c3 = s[2]; + unsigned char c4 = s[3]; + if (c3 >= 0xa1 && c3 < 0xff && c4 >= 0xa1 && c4 < 0xff) + { + unsigned char buf[2]; + int ret; + buf[0] = c3 - 0x80; + buf[1] = c4 - 0x80; + switch (c2 - 0xa0) + { + case 1: + ret = cns11643_1_mbtowc(conv, pwc, buf, 2); + break; + case 2: + ret = cns11643_2_mbtowc(conv, pwc, buf, 2); + break; + case 3: + ret = cns11643_3_mbtowc(conv, pwc, buf, 2); + break; + case 4: + ret = cns11643_4_mbtowc(conv, pwc, buf, 2); + break; + case 5: + ret = cns11643_5_mbtowc(conv, pwc, buf, 2); + break; + case 6: + ret = cns11643_6_mbtowc(conv, pwc, buf, 2); + break; + case 7: + ret = cns11643_7_mbtowc(conv, pwc, buf, 2); + break; + case 15: + ret = cns11643_15_mbtowc(conv, pwc, buf, 2); + break; + default: + return RET_ILSEQ; + } + if (ret == RET_ILSEQ) + return RET_ILSEQ; + if (ret != 2) + abort(); + return 4; + } + } } - } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -euc_tw_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int euc_tw_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[3]; - int ret; + unsigned char buf[3]; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - ret = cns11643_wctomb(conv,buf,wc,3); - if (ret != RET_ILUNI) { - if (ret != 3) abort(); + ret = cns11643_wctomb(conv, buf, wc, 3); + if (ret != RET_ILUNI) + { + if (ret != 3) + abort(); - /* Code set 1 (CNS 11643-1992 Plane 1) */ - if (buf[0] == 1) { - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[1]+0x80; - r[1] = buf[2]+0x80; - return 2; - } + /* Code set 1 (CNS 11643-1992 Plane 1) */ + if (buf[0] == 1) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[1] + 0x80; + r[1] = buf[2] + 0x80; + return 2; + } - /* Code set 2 (CNS 11643-1992 Planes 1-16) */ - if (n < 4) - return RET_TOOSMALL; - r[0] = 0x8e; - r[1] = buf[0]+0xa0; - r[2] = buf[1]+0x80; - r[3] = buf[2]+0x80; - return 4; - } + /* Code set 2 (CNS 11643-1992 Planes 1-16) */ + if (n < 4) + return RET_TOOSMALL; + r[0] = 0x8e; + r[1] = buf[0] + 0xa0; + r[2] = buf[1] + 0x80; + r[3] = buf[2] + 0x80; + return 4; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _EUC_TW_H_ */ diff --git a/lib/converters/flushwc.h b/lib/converters/flushwc.h index ef3b3565..54876a0f 100644 --- a/lib/converters/flushwc.h +++ b/lib/converters/flushwc.h @@ -1,5 +1,10 @@ +/** + * @file flushwc.h + * @brief tput the buffered character. + * @copyright Copyright (C) 2001 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2001 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,8 +22,10 @@ * If not, see . */ -#ifndef _FLUSHWC_H -#define _FLUSHWC_H +#ifndef _FLUSHWC_H_ +#define _FLUSHWC_H_ + +#include "reiconv_defines.h" static int normal_flushwc (conv_t conv, ucs4_t *pwc) @@ -33,4 +40,4 @@ normal_flushwc (conv_t conv, ucs4_t *pwc) return 0; } -#endif /* _FLUSHWC_H */ +#endif /* _FLUSHWC_H_ */ diff --git a/lib/converters/gb12345.h b/lib/converters/gb12345.h index 7c3c3f38..06a07ac4 100644 --- a/lib/converters/gb12345.h +++ b/lib/converters/gb12345.h @@ -1,5 +1,10 @@ +/** + * @file gb12345.h + * @brief GB/T 12345-1990 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * GB/T 12345-1990 - */ - /* * GB/T 12345-1990 is a traditional chinese counterpart of GB 2312-1986. * According to the unicode.org tables: @@ -29,38 +30,44 @@ * Therefore we use an auxiliary table, which contains only the changes. */ +#ifndef _GB12345_H_ +#define _GB12345_H_ + +#include "converters/gb2312.h" +#include "reiconv_defines.h" + #include "gb12345ext.h" -static int -gb12345_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb12345_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - int ret; + int ret; - /* The gb12345ext table overrides some entries in the gb2312 table. */ - /* Try the GB12345 extensions -> Unicode table. */ - ret = gb12345ext_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) + /* The gb12345ext table overrides some entries in the gb2312 table. */ + /* Try the GB12345 extensions -> Unicode table. */ + ret = gb12345ext_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + /* Try the GB2312 -> Unicode table. */ + ret = gb2312_mbtowc(conv, pwc, s, n); return ret; - /* Try the GB2312 -> Unicode table. */ - ret = gb2312_mbtowc(conv,pwc,s,n); - return ret; } -static int -gb12345_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb12345_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int ret; + int ret; - /* The gb12345ext table overrides some entries in the gb2312 table. */ - /* Try the Unicode -> GB12345 extensions table. */ - ret = gb12345ext_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; - /* Try the Unicode -> GB2312 table, and check that the resulting GB2312 - byte sequence is not overridden by the GB12345 extensions table. */ - ret = gb2312_wctomb(conv,r,wc,n); - if (ret == 2 && gb12345ext_mbtowc(conv,&wc,r,2) == 2) - return RET_ILUNI; - else - return ret; + /* The gb12345ext table overrides some entries in the gb2312 table. */ + /* Try the Unicode -> GB12345 extensions table. */ + ret = gb12345ext_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; + /* Try the Unicode -> GB2312 table, and check that the resulting GB2312 + byte sequence is not overridden by the GB12345 extensions table. */ + ret = gb2312_wctomb(conv, r, wc, n); + if (ret == 2 && gb12345ext_mbtowc(conv, &wc, r, 2) == 2) + return RET_ILUNI; + else + return ret; } + +#endif /* _GB12345_H_ */ diff --git a/lib/converters/gb12345ext.h b/lib/converters/gb12345ext.h index c3dafcc5..7b536ecd 100644 --- a/lib/converters/gb12345ext.h +++ b/lib/converters/gb12345ext.h @@ -1,5 +1,10 @@ +/** + * @file gb12345ext.h + * @brief GB/T 12345.1990-0 extensions + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GB/T 12345.1990-0 extensions - */ +#ifndef _GB12345EXT_H_ +#define _GB12345EXT_H_ + +#include "reiconv_defines.h" static const unsigned short gb12345ext_2uni_page21[12] = { /* 0x21 */ @@ -1757,39 +1763,44 @@ static const Summary16 gb12345ext_uni2indx_pagefe[5] = { { 2247, 0x001f }, }; -static int -gb12345ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb12345ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0100 && wc < 0x0270) - summary = &gb12345ext_uni2indx_page01[(wc>>4)-0x010]; - else if (wc >= 0x1e00 && wc < 0x1e40) - summary = &gb12345ext_uni2indx_page1e[(wc>>4)-0x1e0]; - else if (wc >= 0x2200 && wc < 0x2230) - summary = &gb12345ext_uni2indx_page22[(wc>>4)-0x220]; - else if (wc >= 0x4e00 && wc < 0x9fa0) - summary = &gb12345ext_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0xfe00 && wc < 0xfe50) - summary = &gb12345ext_uni2indx_pagefe[(wc>>4)-0xfe0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = gb12345ext_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0100 && wc < 0x0270) + summary = &gb12345ext_uni2indx_page01[(wc >> 4) - 0x010]; + else if (wc >= 0x1e00 && wc < 0x1e40) + summary = &gb12345ext_uni2indx_page1e[(wc >> 4) - 0x1e0]; + else if (wc >= 0x2200 && wc < 0x2230) + summary = &gb12345ext_uni2indx_page22[(wc >> 4) - 0x220]; + else if (wc >= 0x4e00 && wc < 0x9fa0) + summary = &gb12345ext_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0xfe00 && wc < 0xfe50) + summary = &gb12345ext_uni2indx_pagefe[(wc >> 4) - 0xfe0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = gb12345ext_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GB12345EXT_H_ */ diff --git a/lib/converters/gb18030_2005.h b/lib/converters/gb18030_2005.h index 7fe108eb..649b3ea1 100644 --- a/lib/converters/gb18030_2005.h +++ b/lib/converters/gb18030_2005.h @@ -1,5 +1,10 @@ +/** + * @file gb18030_2005.h + * @brief GB18030:2005 + * @copyright Copyright (C) 1999-2001, 2005, 2012, 2016, 2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2012, 2016, 2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,14 @@ * If not, see . */ -/* - * GB18030:2005 - */ +#ifndef _GB18030_2005_H_ +#define _GB18030_2005_H_ + +#include "converters/ascii.h" +#include "converters/gb18030ext.h" +#include "converters/gb18030uni.h" +#include "converters/gbk.h" +#include "reiconv_defines.h" /* * GB18030, as specified in the GB18030 standard, is an extension of GBK. @@ -181,89 +191,103 @@ * */ -#include "gb18030ext.h" -#include "gb18030uni.h" - -static int -gb18030_2005_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb18030_2005_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - int ret; + int ret; - /* Code set 0 (ASCII) */ - if (*s < 0x80) - return ascii_mbtowc(conv,pwc,s,n); + /* Code set 0 (ASCII) */ + if (*s < 0x80) + return ascii_mbtowc(conv, pwc, s, n); - /* Code set 1 (GBK extended) */ - ret = gbk_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; + /* Code set 1 (GBK extended) */ + ret = gbk_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; - ret = gb18030_2005_ext_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; + ret = gb18030_2005_ext_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; - /* Code set 2 (remainder of Unicode U+0000..U+FFFF), including - User-defined characters, two-byte part of range U+E766..U+E864 */ - ret = gb18030_2005_uni_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - /* User-defined characters range U+E000..U+E765 */ - { - unsigned char c1 = s[0]; - if ((c1 >= 0xaa && c1 <= 0xaf) || (c1 >= 0xf8 && c1 <= 0xfe)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 <= 0xfe) { - *pwc = 0xe000 + 94 * (c1 >= 0xf8 ? c1 - 0xf2 : c1 - 0xaa) + (c2 - 0xa1); - return 2; + /* Code set 2 (remainder of Unicode U+0000..U+FFFF), including + User-defined characters, two-byte part of range U+E766..U+E864 */ + ret = gb18030_2005_uni_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + /* User-defined characters range U+E000..U+E765 */ + { + unsigned char c1 = s[0]; + if ((c1 >= 0xaa && c1 <= 0xaf) || (c1 >= 0xf8 && c1 <= 0xfe)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 <= 0xfe) + { + *pwc = 0xe000 + 94 * (c1 >= 0xf8 ? c1 - 0xf2 : c1 - 0xaa) + (c2 - 0xa1); + return 2; + } + } + else + return RET_TOOFEW(0); } - } else - return RET_TOOFEW(0); - } else if (c1 >= 0xa1 && c1 <= 0xa7) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x40 && c2 <= 0xa1 && c2 != 0x7f) { - *pwc = 0xe4c6 + 96 * (c1 - 0xa1) + c2 - (c2 >= 0x80 ? 0x41 : 0x40); - return 2; + else if (c1 >= 0xa1 && c1 <= 0xa7) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x40 && c2 <= 0xa1 && c2 != 0x7f) + { + *pwc = 0xe4c6 + 96 * (c1 - 0xa1) + c2 - (c2 >= 0x80 ? 0x41 : 0x40); + return 2; + } + } + else + return RET_TOOFEW(0); } - } else - return RET_TOOFEW(0); } - } - /* Code set 3 (Unicode U+10000..U+10FFFF) */ - { - unsigned char c1 = s[0]; - if (c1 >= 0x90 && c1 <= 0xe3) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x30 && c2 <= 0x39) { - if (n >= 3) { - unsigned char c3 = s[2]; - if (c3 >= 0x81 && c3 <= 0xfe) { - if (n >= 4) { - unsigned char c4 = s[3]; - if (c4 >= 0x30 && c4 <= 0x39) { - unsigned int i = (((c1 - 0x90) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); - if (i >= 0 && i < 0x100000) { - *pwc = (ucs4_t) (0x10000 + i); - return 4; - } + /* Code set 3 (Unicode U+10000..U+10FFFF) */ + { + unsigned char c1 = s[0]; + if (c1 >= 0x90 && c1 <= 0xe3) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x30 && c2 <= 0x39) + { + if (n >= 3) + { + unsigned char c3 = s[2]; + if (c3 >= 0x81 && c3 <= 0xfe) + { + if (n >= 4) + { + unsigned char c4 = s[3]; + if (c4 >= 0x30 && c4 <= 0x39) + { + unsigned int i = + (((c1 - 0x90) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); + if (i >= 0 && i < 0x100000) + { + *pwc = (ucs4_t)(0x10000 + i); + return 4; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); } return RET_ILSEQ; - } - return RET_TOOFEW(0); } - return RET_ILSEQ; - } - return RET_TOOFEW(0); + return RET_TOOFEW(0); } return RET_ILSEQ; - } - return RET_TOOFEW(0); } - return RET_ILSEQ; - } } static const struct { unsigned short uni[2]; unsigned int charset; } gb18030_2005_pua2charset[35] = { @@ -305,89 +329,111 @@ static const struct { unsigned short uni[2]; unsigned int charset; } gb18030_200 { { 0xe864, 0xe864 }, 0xfea0 }, }; -static int -gb18030_2005_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb18030_2005_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int ret; + int ret; - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 1 (GBK extended) */ - ret = gbk_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + /* Code set 1 (GBK extended) */ + ret = gbk_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - ret = gb18030ext_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + ret = gb18030ext_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 2 (remainder of Unicode U+0000..U+FFFF) */ - if (wc >= 0xe000 && wc <= 0xe864) { - if (n >= 2) { - if (wc < 0xe766) { - /* User-defined characters range U+E000..U+E765 */ - if (wc < 0xe4c6) { - unsigned int i = wc - 0xe000; - r[1] = (i % 94) + 0xa1; i = i / 94; - r[0] = (i < 6 ? i + 0xaa : i + 0xf2); - return 2; - } else { - unsigned int i = wc - 0xe4c6; - r[0] = (i / 96) + 0xa1; i = i % 96; - r[1] = i + (i >= 0x3f ? 0x41 : 0x40); - return 2; - } - } else { - /* User-defined characters, two-byte part and 6 four-byte mappings in - range U+E766..U+E864 */ - unsigned int k1 = 0; - unsigned int k2 = 35; - /* Invariant: We know that if wc occurs in Unicode interval in - gb18030_2005_pua2charset, it does so at a k with k1 <= k < k2. */ - while (k1 < k2) { - unsigned int k = (k1 + k2) / 2; - if (wc < gb18030_2005_pua2charset[k].uni[0]) - k2 = k; - else if (wc > gb18030_2005_pua2charset[k].uni[1]) - k1 = k + 1; - else { - unsigned int c = - gb18030_2005_pua2charset[k].charset + (wc - gb18030_2005_pua2charset[k].uni[0]); - if (c < 0x10000) { - r[0] = (c >> 8); - r[1] = c & 0xff; - return 2; - } else { - r[0] = (c >> 24); - r[1] = (c >> 16) & 0xff; - r[2] = (c >> 8) & 0xff; - r[3] = c & 0xff; - return 4; + /* Code set 2 (remainder of Unicode U+0000..U+FFFF) */ + if (wc >= 0xe000 && wc <= 0xe864) + { + if (n >= 2) + { + if (wc < 0xe766) + { + /* User-defined characters range U+E000..U+E765 */ + if (wc < 0xe4c6) + { + unsigned int i = wc - 0xe000; + r[1] = (i % 94) + 0xa1; + i = i / 94; + r[0] = (i < 6 ? i + 0xaa : i + 0xf2); + return 2; + } + else + { + unsigned int i = wc - 0xe4c6; + r[0] = (i / 96) + 0xa1; + i = i % 96; + r[1] = i + (i >= 0x3f ? 0x41 : 0x40); + return 2; + } + } + else + { + /* User-defined characters, two-byte part and 6 four-byte mappings in + range U+E766..U+E864 */ + unsigned int k1 = 0; + unsigned int k2 = 35; + /* Invariant: We know that if wc occurs in Unicode interval in + gb18030_2005_pua2charset, it does so at a k with k1 <= k < k2. */ + while (k1 < k2) + { + unsigned int k = (k1 + k2) / 2; + if (wc < gb18030_2005_pua2charset[k].uni[0]) + k2 = k; + else if (wc > gb18030_2005_pua2charset[k].uni[1]) + k1 = k + 1; + else + { + unsigned int c = + gb18030_2005_pua2charset[k].charset + (wc - gb18030_2005_pua2charset[k].uni[0]); + if (c < 0x10000) + { + r[0] = (c >> 8); + r[1] = c & 0xff; + return 2; + } + else + { + r[0] = (c >> 24); + r[1] = (c >> 16) & 0xff; + r[2] = (c >> 8) & 0xff; + r[3] = c & 0xff; + return 4; + } + } + } } - } } - } - } else - return RET_TOOSMALL; - } - ret = gb18030_2005_uni_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; + else + return RET_TOOSMALL; + } + ret = gb18030_2005_uni_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; - /* Code set 3 (Unicode U+10000..U+10FFFF) */ - if (n >= 4) { - if (wc >= 0x10000 && wc < 0x110000) { - unsigned int i = wc - 0x10000; - r[3] = (i % 10) + 0x30; i = i / 10; - r[2] = (i % 126) + 0x81; i = i / 126; - r[1] = (i % 10) + 0x30; i = i / 10; - r[0] = i + 0x90; - return 4; + /* Code set 3 (Unicode U+10000..U+10FFFF) */ + if (n >= 4) + { + if (wc >= 0x10000 && wc < 0x110000) + { + unsigned int i = wc - 0x10000; + r[3] = (i % 10) + 0x30; + i = i / 10; + r[2] = (i % 126) + 0x81; + i = i / 126; + r[1] = (i % 10) + 0x30; + i = i / 10; + r[0] = i + 0x90; + return 4; + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GB18030_2005_H_ */ diff --git a/lib/converters/gb18030_2022.h b/lib/converters/gb18030_2022.h index 3a84e4e0..6e321c27 100644 --- a/lib/converters/gb18030_2022.h +++ b/lib/converters/gb18030_2022.h @@ -1,5 +1,10 @@ +/** + * @file gb18030_2022.h + * @brief GB18030:2022 + * @copyright Copyright (C) 1999-2001, 2005, 2012, 2016, 2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2012, 2016, 2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,96 +22,118 @@ * If not, see . */ -/* - * GB18030:2022 - */ - /* * GB18030, in the version from 2022, is like the version from 2005, * except that a few mappings to the Unicode PUA have been replaced with * mappings to assigned Unicode characters. */ -static int -gb18030_2022_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#ifndef _GB18030_2022_H_ +#define _GB18030_2022_H_ + +#include "converters/ascii.h" +#include "converters/gb18030ext.h" +#include "converters/gb18030uni.h" +#include "converters/gbk.h" +#include "reiconv_defines.h" + +static int gb18030_2022_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - int ret; - - /* Code set 0 (ASCII) */ - if (*s < 0x80) - return ascii_mbtowc(conv,pwc,s,n); - - /* Code set 1 (GBK extended) */ - ret = gbk_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - - ret = gb18030_2022_ext_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - - /* Code set 2 (remainder of Unicode U+0000..U+FFFF), including - User-defined characters, two-byte part of range U+E766..U+E864 */ - ret = gb18030_2022_uni_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - /* User-defined characters range U+E000..U+E765 */ - { - unsigned char c1 = s[0]; - if ((c1 >= 0xaa && c1 <= 0xaf) || (c1 >= 0xf8 && c1 <= 0xfe)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 <= 0xfe) { - *pwc = 0xe000 + 94 * (c1 >= 0xf8 ? c1 - 0xf2 : c1 - 0xaa) + (c2 - 0xa1); - return 2; + int ret; + + /* Code set 0 (ASCII) */ + if (*s < 0x80) + return ascii_mbtowc(conv, pwc, s, n); + + /* Code set 1 (GBK extended) */ + ret = gbk_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + + ret = gb18030_2022_ext_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + + /* Code set 2 (remainder of Unicode U+0000..U+FFFF), including + User-defined characters, two-byte part of range U+E766..U+E864 */ + ret = gb18030_2022_uni_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + /* User-defined characters range U+E000..U+E765 */ + { + unsigned char c1 = s[0]; + if ((c1 >= 0xaa && c1 <= 0xaf) || (c1 >= 0xf8 && c1 <= 0xfe)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 <= 0xfe) + { + *pwc = 0xe000 + 94 * (c1 >= 0xf8 ? c1 - 0xf2 : c1 - 0xaa) + (c2 - 0xa1); + return 2; + } + } + else + return RET_TOOFEW(0); } - } else - return RET_TOOFEW(0); - } else if (c1 >= 0xa1 && c1 <= 0xa7) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x40 && c2 <= 0xa1 && c2 != 0x7f) { - *pwc = 0xe4c6 + 96 * (c1 - 0xa1) + c2 - (c2 >= 0x80 ? 0x41 : 0x40); - return 2; + else if (c1 >= 0xa1 && c1 <= 0xa7) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x40 && c2 <= 0xa1 && c2 != 0x7f) + { + *pwc = 0xe4c6 + 96 * (c1 - 0xa1) + c2 - (c2 >= 0x80 ? 0x41 : 0x40); + return 2; + } + } + else + return RET_TOOFEW(0); } - } else - return RET_TOOFEW(0); } - } - - /* Code set 3 (Unicode U+10000..U+10FFFF) */ - { - unsigned char c1 = s[0]; - if (c1 >= 0x90 && c1 <= 0xe3) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x30 && c2 <= 0x39) { - if (n >= 3) { - unsigned char c3 = s[2]; - if (c3 >= 0x81 && c3 <= 0xfe) { - if (n >= 4) { - unsigned char c4 = s[3]; - if (c4 >= 0x30 && c4 <= 0x39) { - unsigned int i = (((c1 - 0x90) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); - if (i >= 0 && i < 0x100000) { - *pwc = (ucs4_t) (0x10000 + i); - return 4; - } + + /* Code set 3 (Unicode U+10000..U+10FFFF) */ + { + unsigned char c1 = s[0]; + if (c1 >= 0x90 && c1 <= 0xe3) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x30 && c2 <= 0x39) + { + if (n >= 3) + { + unsigned char c3 = s[2]; + if (c3 >= 0x81 && c3 <= 0xfe) + { + if (n >= 4) + { + unsigned char c4 = s[3]; + if (c4 >= 0x30 && c4 <= 0x39) + { + unsigned int i = + (((c1 - 0x90) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); + if (i >= 0 && i < 0x100000) + { + *pwc = (ucs4_t)(0x10000 + i); + return 4; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); } return RET_ILSEQ; - } - return RET_TOOFEW(0); } - return RET_ILSEQ; - } - return RET_TOOFEW(0); + return RET_TOOFEW(0); } return RET_ILSEQ; - } - return RET_TOOFEW(0); } - return RET_ILSEQ; - } } static const unsigned short gb18030_2022_pua2charset[23*3] = { @@ -136,80 +163,99 @@ static const unsigned short gb18030_2022_pua2charset[23*3] = { 0xe855, 0xe855, 0xfe91, }; -static int -gb18030_2022_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb18030_2022_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int ret; - - /* Code set 0 (ASCII) */ - ret = ascii_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; - - /* Code set 1 (GBK extended) */ - ret = gbk_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; - - ret = gb18030ext_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; - - /* Code set 2 (remainder of Unicode U+0000..U+FFFF) */ - if (wc >= 0xe000 && wc <= 0xe864) { - if (n >= 2) { - if (wc < 0xe766) { - /* User-defined characters range U+E000..U+E765 */ - if (wc < 0xe4c6) { - unsigned int i = wc - 0xe000; - r[1] = (i % 94) + 0xa1; i = i / 94; - r[0] = (i < 6 ? i + 0xaa : i + 0xf2); - return 2; - } else { - unsigned int i = wc - 0xe4c6; - r[0] = (i / 96) + 0xa1; i = i % 96; - r[1] = i + (i >= 0x3f ? 0x41 : 0x40); - return 2; + int ret; + + /* Code set 0 (ASCII) */ + ret = ascii_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; + + /* Code set 1 (GBK extended) */ + ret = gbk_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; + + ret = gb18030ext_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; + + /* Code set 2 (remainder of Unicode U+0000..U+FFFF) */ + if (wc >= 0xe000 && wc <= 0xe864) + { + if (n >= 2) + { + if (wc < 0xe766) + { + /* User-defined characters range U+E000..U+E765 */ + if (wc < 0xe4c6) + { + unsigned int i = wc - 0xe000; + r[1] = (i % 94) + 0xa1; + i = i / 94; + r[0] = (i < 6 ? i + 0xaa : i + 0xf2); + return 2; + } + else + { + unsigned int i = wc - 0xe4c6; + r[0] = (i / 96) + 0xa1; + i = i % 96; + r[1] = i + (i >= 0x3f ? 0x41 : 0x40); + return 2; + } + } + else + { + /* User-defined characters, two-byte part of range U+E766..U+E864 */ + unsigned int k1 = 0; + unsigned int k2 = 23; + /* Invariant: We know that if wc occurs in Unicode interval in + gb18030_2022_pua2charset, it does so at a k with k1 <= k < k2. */ + while (k1 < k2) + { + unsigned int k = (k1 + k2) / 2; + if (wc < gb18030_2022_pua2charset[k * 3 + 0]) + k2 = k; + else if (wc > gb18030_2022_pua2charset[k * 3 + 1]) + k1 = k + 1; + else + { + unsigned short c = + gb18030_2022_pua2charset[k * 3 + 2] + (wc - gb18030_2022_pua2charset[k * 3 + 0]); + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + } } - } else { - /* User-defined characters, two-byte part of range U+E766..U+E864 */ - unsigned int k1 = 0; - unsigned int k2 = 23; - /* Invariant: We know that if wc occurs in Unicode interval in - gb18030_2022_pua2charset, it does so at a k with k1 <= k < k2. */ - while (k1 < k2) { - unsigned int k = (k1 + k2) / 2; - if (wc < gb18030_2022_pua2charset[k*3+0]) - k2 = k; - else if (wc > gb18030_2022_pua2charset[k*3+1]) - k1 = k + 1; - else { - unsigned short c = - gb18030_2022_pua2charset[k*3+2] + (wc - gb18030_2022_pua2charset[k*3+0]); - r[0] = (c >> 8); - r[1] = (c & 0xff); - return 2; - } + else + return RET_TOOSMALL; + } + ret = gb18030_2022_uni_wctomb(conv, r, wc, n); + if (ret != RET_ILUNI) + return ret; + + /* Code set 3 (Unicode U+10000..U+10FFFF) */ + if (n >= 4) + { + if (wc >= 0x10000 && wc < 0x110000) + { + unsigned int i = wc - 0x10000; + r[3] = (i % 10) + 0x30; + i = i / 10; + r[2] = (i % 126) + 0x81; + i = i / 126; + r[1] = (i % 10) + 0x30; + i = i / 10; + r[0] = i + 0x90; + return 4; } - } - } else - return RET_TOOSMALL; - } - ret = gb18030_2022_uni_wctomb(conv,r,wc,n); - if (ret != RET_ILUNI) - return ret; - - /* Code set 3 (Unicode U+10000..U+10FFFF) */ - if (n >= 4) { - if (wc >= 0x10000 && wc < 0x110000) { - unsigned int i = wc - 0x10000; - r[3] = (i % 10) + 0x30; i = i / 10; - r[2] = (i % 126) + 0x81; i = i / 126; - r[1] = (i % 10) + 0x30; i = i / 10; - r[0] = i + 0x90; - return 4; + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GB18030_2022_H_ */ diff --git a/lib/converters/gb18030ext.h b/lib/converters/gb18030ext.h index 3d1e15f8..0aa93e9a 100644 --- a/lib/converters/gb18030ext.h +++ b/lib/converters/gb18030ext.h @@ -1,5 +1,10 @@ +/** + * @file gb18030ext.h + * @brief GB18030 two-byte extension + * @copyright Copyright (C) 1999-2001, 2005, 2011, 2016, 2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2011, 2016, 2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GB18030 two-byte extension - */ +#ifndef _GB18030EXT_H_ +#define _GB18030EXT_H_ + +#include "reiconv_defines.h" static const unsigned short gb18030ext_2uni_pagea9[13] = { /* 0xa9 */ @@ -58,204 +64,212 @@ static const unsigned short gb18030_2022_ext_2uni_pagefe[96] = { 0x4d14, 0x4d15, 0x4d16, 0x4d17, 0x4d18, 0x4d19, 0x4dae, 0x9fbb, }; -static int -gb18030_2005_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb18030_2005_ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 == 0xa2) || (c1 >= 0xa4 && c1 <= 0xa9) || (c1 == 0xd7) || (c1 == 0xfe)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { - unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - unsigned int wc = 0xfffd; - switch (c1) { - case 0xa2: - if (i >= 6376 && i <= 6381) /* 0xA2AB..0xA2B0 */ - wc = 0xe766 + (i - 6376); - else if (i == 6432) /* 0xA2E3 */ - wc = 0x20ac; - else if (i == 6433) /* 0xA2E4 */ - wc = 0xe76d; - else if (i >= 6444 && i <= 6445) /* 0xA2EF..0xA2F0 */ - wc = 0xe76e + (i - 6444); - else if (i >= 6458 && i <= 6459) /* 0xA2FD..0xA2FE */ - wc = 0xe770 + (i - 6458); - break; - case 0xa4: - if (i >= 6829 && i <= 6839) /* 0xA4F4..0xA4FE */ - wc = 0xe772 + (i - 6829); - break; - case 0xa5: - if (i >= 7022 && i <= 7029) /* 0xA5F7..0xA5FE */ - wc = 0xe77d + (i - 7022); - break; - case 0xa6: - if (i >= 7150 && i <= 7157) /* 0xA6B9..0xA6C0 */ - wc = 0xe785 + (i - 7150); - else if (i >= 7183 && i <= 7184) /* 0xA6DA..0xA6DB */ - wc = 0xfe12 - (i - 7183); - else if (i >= 7182 && i <= 7190) /* 0xA6D9..0xA6DF */ - wc = 0xfe10 + (i - 7182); - else if (i >= 7201 && i <= 7202) /* 0xA6EC..0xA6ED */ - wc = 0xfe17 + (i - 7201); - else if (i == 7208) /* 0xA6F3 */ - wc = 0xfe19; - else if (i >= 7211 && i <= 7219) /* 0xA6F6..0xA6FE */ - wc = 0xe797 + (i - 7211); - break; - case 0xa7: - if (i >= 7349 && i <= 7363) /* 0xA7C2..0xA7D0 */ - wc = 0xe7a0 + (i - 7349); - else if (i >= 7397 && i <= 7409) /* 0xA7F2..0xA7FE */ - wc = 0xe7af + (i - 7397); - break; - case 0xa8: - if (i >= 7495 && i <= 7505) /* 0xA896..0xA8A0 */ - wc = 0xe7bc + (i - 7495); - else if (i == 7533) /* 0xA8BC */ - wc = 0x1e3f; - else if (i == 7536) /* 0xA8BF */ - wc = 0x01f9; - else if (i >= 7538 && i <= 7541) /* 0xA8C1..0xA8C4 */ - wc = 0xe7c9 + (i - 7538); - else if (i >= 7579 && i <= 7599) /* 0xA8EA..0xA8FE */ - wc = 0xe7cd + (i - 7579); - break; - case 0xa9: - if (i == 7624) /* 0xA958 */ - wc = 0xe7e2; - else if (i == 7627) /* 0xA95B */ - wc = 0xe7e3; - else if (i >= 7629 && i <= 7631) /* 0xA95D..0xA95F */ - wc = 0xe7e4 + (i - 7629); - else if (i >= 7672 && i < 7685) /* 0xA989..0xA995 */ - wc = gb18030ext_2uni_pagea9[i-7672]; - else if (i >= 7686 && i <= 7698) /* 0xA997..0xA9A3 */ - wc = 0xe7f4 + (i - 7686); - else if (i >= 7775 && i <= 7789) /* 0xA9F0..0xA9FE */ - wc = 0xe801 + (i - 7775); - break; - case 0xd7: - if (i >= 16525 && i <= 16529) /* 0xD7FA..0xD7FE */ - wc = 0xe810 + (i - 16525); - break; - case 0xfe: - if (i < 23846) - wc = gb18030_2005_ext_2uni_pagefe[i-23750]; - break; - default: - break; + unsigned char c1 = s[0]; + if ((c1 == 0xa2) || (c1 >= 0xa4 && c1 <= 0xa9) || (c1 == 0xd7) || (c1 == 0xfe)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) + { + unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + unsigned int wc = 0xfffd; + switch (c1) + { + case 0xa2: + if (i >= 6376 && i <= 6381) /* 0xA2AB..0xA2B0 */ + wc = 0xe766 + (i - 6376); + else if (i == 6432) /* 0xA2E3 */ + wc = 0x20ac; + else if (i == 6433) /* 0xA2E4 */ + wc = 0xe76d; + else if (i >= 6444 && i <= 6445) /* 0xA2EF..0xA2F0 */ + wc = 0xe76e + (i - 6444); + else if (i >= 6458 && i <= 6459) /* 0xA2FD..0xA2FE */ + wc = 0xe770 + (i - 6458); + break; + case 0xa4: + if (i >= 6829 && i <= 6839) /* 0xA4F4..0xA4FE */ + wc = 0xe772 + (i - 6829); + break; + case 0xa5: + if (i >= 7022 && i <= 7029) /* 0xA5F7..0xA5FE */ + wc = 0xe77d + (i - 7022); + break; + case 0xa6: + if (i >= 7150 && i <= 7157) /* 0xA6B9..0xA6C0 */ + wc = 0xe785 + (i - 7150); + else if (i >= 7183 && i <= 7184) /* 0xA6DA..0xA6DB */ + wc = 0xfe12 - (i - 7183); + else if (i >= 7182 && i <= 7190) /* 0xA6D9..0xA6DF */ + wc = 0xfe10 + (i - 7182); + else if (i >= 7201 && i <= 7202) /* 0xA6EC..0xA6ED */ + wc = 0xfe17 + (i - 7201); + else if (i == 7208) /* 0xA6F3 */ + wc = 0xfe19; + else if (i >= 7211 && i <= 7219) /* 0xA6F6..0xA6FE */ + wc = 0xe797 + (i - 7211); + break; + case 0xa7: + if (i >= 7349 && i <= 7363) /* 0xA7C2..0xA7D0 */ + wc = 0xe7a0 + (i - 7349); + else if (i >= 7397 && i <= 7409) /* 0xA7F2..0xA7FE */ + wc = 0xe7af + (i - 7397); + break; + case 0xa8: + if (i >= 7495 && i <= 7505) /* 0xA896..0xA8A0 */ + wc = 0xe7bc + (i - 7495); + else if (i == 7533) /* 0xA8BC */ + wc = 0x1e3f; + else if (i == 7536) /* 0xA8BF */ + wc = 0x01f9; + else if (i >= 7538 && i <= 7541) /* 0xA8C1..0xA8C4 */ + wc = 0xe7c9 + (i - 7538); + else if (i >= 7579 && i <= 7599) /* 0xA8EA..0xA8FE */ + wc = 0xe7cd + (i - 7579); + break; + case 0xa9: + if (i == 7624) /* 0xA958 */ + wc = 0xe7e2; + else if (i == 7627) /* 0xA95B */ + wc = 0xe7e3; + else if (i >= 7629 && i <= 7631) /* 0xA95D..0xA95F */ + wc = 0xe7e4 + (i - 7629); + else if (i >= 7672 && i < 7685) /* 0xA989..0xA995 */ + wc = gb18030ext_2uni_pagea9[i - 7672]; + else if (i >= 7686 && i <= 7698) /* 0xA997..0xA9A3 */ + wc = 0xe7f4 + (i - 7686); + else if (i >= 7775 && i <= 7789) /* 0xA9F0..0xA9FE */ + wc = 0xe801 + (i - 7775); + break; + case 0xd7: + if (i >= 16525 && i <= 16529) /* 0xD7FA..0xD7FE */ + wc = 0xe810 + (i - 16525); + break; + case 0xfe: + if (i < 23846) + wc = gb18030_2005_ext_2uni_pagefe[i - 23750]; + break; + default: + break; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -gb18030_2022_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb18030_2022_ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 == 0xa2) || (c1 >= 0xa4 && c1 <= 0xa9) || (c1 == 0xd7) || (c1 == 0xfe)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { - unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - unsigned int wc = 0xfffd; - switch (c1) { - case 0xa2: - if (i >= 6376 && i <= 6381) /* 0xA2AB..0xA2B0 */ - wc = 0xe766 + (i - 6376); - else if (i == 6432) /* 0xA2E3 */ - wc = 0x20ac; - else if (i == 6433) /* 0xA2E4 */ - wc = 0xe76d; - else if (i >= 6444 && i <= 6445) /* 0xA2EF..0xA2F0 */ - wc = 0xe76e + (i - 6444); - else if (i >= 6458 && i <= 6459) /* 0xA2FD..0xA2FE */ - wc = 0xe770 + (i - 6458); - break; - case 0xa4: - if (i >= 6829 && i <= 6839) /* 0xA4F4..0xA4FE */ - wc = 0xe772 + (i - 6829); - break; - case 0xa5: - if (i >= 7022 && i <= 7029) /* 0xA5F7..0xA5FE */ - wc = 0xe77d + (i - 7022); - break; - case 0xa6: - if (i >= 7150 && i <= 7157) /* 0xA6B9..0xA6C0 */ - wc = 0xe785 + (i - 7150); - else if (i >= 7183 && i <= 7184) /* 0xA6DA..0xA6DB */ - wc = 0xfe12 - (i - 7183); - else if (i >= 7182 && i <= 7190) /* 0xA6D9..0xA6DF */ - wc = 0xfe10 + (i - 7182); - else if (i >= 7201 && i <= 7202) /* 0xA6EC..0xA6ED */ - wc = 0xfe17 + (i - 7201); - else if (i == 7208) /* 0xA6F3 */ - wc = 0xfe19; - else if (i >= 7211 && i <= 7219) /* 0xA6F6..0xA6FE */ - wc = 0xe797 + (i - 7211); - break; - case 0xa7: - if (i >= 7349 && i <= 7363) /* 0xA7C2..0xA7D0 */ - wc = 0xe7a0 + (i - 7349); - else if (i >= 7397 && i <= 7409) /* 0xA7F2..0xA7FE */ - wc = 0xe7af + (i - 7397); - break; - case 0xa8: - if (i >= 7495 && i <= 7505) /* 0xA896..0xA8A0 */ - wc = 0xe7bc + (i - 7495); - else if (i == 7533) /* 0xA8BC */ - wc = 0x1e3f; - else if (i == 7536) /* 0xA8BF */ - wc = 0x01f9; - else if (i >= 7538 && i <= 7541) /* 0xA8C1..0xA8C4 */ - wc = 0xe7c9 + (i - 7538); - else if (i >= 7579 && i <= 7599) /* 0xA8EA..0xA8FE */ - wc = 0xe7cd + (i - 7579); - break; - case 0xa9: - if (i == 7624) /* 0xA958 */ - wc = 0xe7e2; - else if (i == 7627) /* 0xA95B */ - wc = 0xe7e3; - else if (i >= 7629 && i <= 7631) /* 0xA95D..0xA95F */ - wc = 0xe7e4 + (i - 7629); - else if (i >= 7672 && i < 7685) /* 0xA989..0xA995 */ - wc = gb18030ext_2uni_pagea9[i-7672]; - else if (i >= 7686 && i <= 7698) /* 0xA997..0xA9A3 */ - wc = 0xe7f4 + (i - 7686); - else if (i >= 7775 && i <= 7789) /* 0xA9F0..0xA9FE */ - wc = 0xe801 + (i - 7775); - break; - case 0xd7: - if (i >= 16525 && i <= 16529) /* 0xD7FA..0xD7FE */ - wc = 0xe810 + (i - 16525); - break; - case 0xfe: - if (i < 23846) - wc = gb18030_2022_ext_2uni_pagefe[i-23750]; - break; - default: - break; - } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + unsigned char c1 = s[0]; + if ((c1 == 0xa2) || (c1 >= 0xa4 && c1 <= 0xa9) || (c1 == 0xd7) || (c1 == 0xfe)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) + { + unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + unsigned int wc = 0xfffd; + switch (c1) + { + case 0xa2: + if (i >= 6376 && i <= 6381) /* 0xA2AB..0xA2B0 */ + wc = 0xe766 + (i - 6376); + else if (i == 6432) /* 0xA2E3 */ + wc = 0x20ac; + else if (i == 6433) /* 0xA2E4 */ + wc = 0xe76d; + else if (i >= 6444 && i <= 6445) /* 0xA2EF..0xA2F0 */ + wc = 0xe76e + (i - 6444); + else if (i >= 6458 && i <= 6459) /* 0xA2FD..0xA2FE */ + wc = 0xe770 + (i - 6458); + break; + case 0xa4: + if (i >= 6829 && i <= 6839) /* 0xA4F4..0xA4FE */ + wc = 0xe772 + (i - 6829); + break; + case 0xa5: + if (i >= 7022 && i <= 7029) /* 0xA5F7..0xA5FE */ + wc = 0xe77d + (i - 7022); + break; + case 0xa6: + if (i >= 7150 && i <= 7157) /* 0xA6B9..0xA6C0 */ + wc = 0xe785 + (i - 7150); + else if (i >= 7183 && i <= 7184) /* 0xA6DA..0xA6DB */ + wc = 0xfe12 - (i - 7183); + else if (i >= 7182 && i <= 7190) /* 0xA6D9..0xA6DF */ + wc = 0xfe10 + (i - 7182); + else if (i >= 7201 && i <= 7202) /* 0xA6EC..0xA6ED */ + wc = 0xfe17 + (i - 7201); + else if (i == 7208) /* 0xA6F3 */ + wc = 0xfe19; + else if (i >= 7211 && i <= 7219) /* 0xA6F6..0xA6FE */ + wc = 0xe797 + (i - 7211); + break; + case 0xa7: + if (i >= 7349 && i <= 7363) /* 0xA7C2..0xA7D0 */ + wc = 0xe7a0 + (i - 7349); + else if (i >= 7397 && i <= 7409) /* 0xA7F2..0xA7FE */ + wc = 0xe7af + (i - 7397); + break; + case 0xa8: + if (i >= 7495 && i <= 7505) /* 0xA896..0xA8A0 */ + wc = 0xe7bc + (i - 7495); + else if (i == 7533) /* 0xA8BC */ + wc = 0x1e3f; + else if (i == 7536) /* 0xA8BF */ + wc = 0x01f9; + else if (i >= 7538 && i <= 7541) /* 0xA8C1..0xA8C4 */ + wc = 0xe7c9 + (i - 7538); + else if (i >= 7579 && i <= 7599) /* 0xA8EA..0xA8FE */ + wc = 0xe7cd + (i - 7579); + break; + case 0xa9: + if (i == 7624) /* 0xA958 */ + wc = 0xe7e2; + else if (i == 7627) /* 0xA95B */ + wc = 0xe7e3; + else if (i >= 7629 && i <= 7631) /* 0xA95D..0xA95F */ + wc = 0xe7e4 + (i - 7629); + else if (i >= 7672 && i < 7685) /* 0xA989..0xA995 */ + wc = gb18030ext_2uni_pagea9[i - 7672]; + else if (i >= 7686 && i <= 7698) /* 0xA997..0xA9A3 */ + wc = 0xe7f4 + (i - 7686); + else if (i >= 7775 && i <= 7789) /* 0xA9F0..0xA9FE */ + wc = 0xe801 + (i - 7775); + break; + case 0xd7: + if (i >= 16525 && i <= 16529) /* 0xD7FA..0xD7FE */ + wc = 0xe810 + (i - 16525); + break; + case 0xfe: + if (i < 23846) + wc = gb18030_2022_ext_2uni_pagefe[i - 23750]; + break; + default: + break; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short gb18030ext_page2e[80] = { @@ -356,76 +370,80 @@ static const unsigned short gb18030ext_pagefe[16] = { 0xa6ed, 0xa6f3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/ }; -static int -gb18030ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb18030ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - unsigned short c = 0; - if (wc == 0x01f9) - c = 0xa8bf; - else if (wc == 0x1e3f) - c = 0xa8bc; - else if (wc == 0x20ac) - c = 0xa2e3; - else if (wc >= 0x2e80 && wc < 0x2ed0) - c = gb18030ext_page2e[wc-0x2e80]; - else if (wc >= 0x2ff0 && wc < 0x3000) - c = gb18030ext_page2f[wc-0x2ff0]; - else if (wc == 0x303e) - c = 0xa989; - else if (wc >= 0x3440 && wc < 0x3478) - c = gb18030ext_page34[wc-0x3440]; - else if (wc == 0x359e) - c = 0xfe5a; - else if (wc >= 0x3608 && wc < 0x3620) - c = gb18030ext_page36[wc-0x3608]; - else if (wc == 0x3918) - c = 0xfe60; - else if (wc == 0x396e) - c = 0xfe5f; - else if (wc >= 0x39c8 && wc < 0x39e0) - c = gb18030ext_page39[wc-0x39c8]; - else if (wc == 0x3a73) - c = 0xfe64; - else if (wc == 0x3b4e) - c = 0xfe68; - else if (wc == 0x3c6e) - c = 0xfe69; - else if (wc == 0x3ce0) - c = 0xfe6a; - else if (wc == 0x4056) - c = 0xfe6f; - else if (wc == 0x415f) - c = 0xfe70; - else if (wc == 0x4337) - c = 0xfe72; - else if (wc >= 0x43a8 && wc < 0x43e0) - c = gb18030ext_page43[wc-0x43a8]; - else if (wc == 0x44d6) - c = 0xfe7b; - else if (wc >= 0x4648 && wc < 0x4668) - c = gb18030ext_page46[wc-0x4648]; - else if (wc >= 0x4720 && wc < 0x4730) - c = gb18030ext_page47_1[wc-0x4720]; - else if (wc >= 0x4778 && wc < 0x4790) - c = gb18030ext_page47_2[wc-0x4778]; - else if (wc >= 0x4940 && wc < 0x49b8) - c = gb18030ext_page49[wc-0x4940]; - else if (wc >= 0x4c70 && wc < 0x4ca8) - c = gb18030ext_page4c[wc-0x4c70]; - else if (wc >= 0x4d10 && wc < 0x4d20) - c = gb18030ext_page4d[wc-0x4d10]; - else if (wc == 0x4dae) - c = 0xfe9f; - else if (wc >= 0x9fb4 && wc < 0x9fbc) - c = gb18030ext_page9f[wc-0x9fb0]; - else if (wc >= 0xfe10 && wc < 0xfe1a) - c = gb18030ext_pagefe[wc-0xfe10]; - if (c != 0) { - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; + if (n >= 2) + { + unsigned short c = 0; + if (wc == 0x01f9) + c = 0xa8bf; + else if (wc == 0x1e3f) + c = 0xa8bc; + else if (wc == 0x20ac) + c = 0xa2e3; + else if (wc >= 0x2e80 && wc < 0x2ed0) + c = gb18030ext_page2e[wc - 0x2e80]; + else if (wc >= 0x2ff0 && wc < 0x3000) + c = gb18030ext_page2f[wc - 0x2ff0]; + else if (wc == 0x303e) + c = 0xa989; + else if (wc >= 0x3440 && wc < 0x3478) + c = gb18030ext_page34[wc - 0x3440]; + else if (wc == 0x359e) + c = 0xfe5a; + else if (wc >= 0x3608 && wc < 0x3620) + c = gb18030ext_page36[wc - 0x3608]; + else if (wc == 0x3918) + c = 0xfe60; + else if (wc == 0x396e) + c = 0xfe5f; + else if (wc >= 0x39c8 && wc < 0x39e0) + c = gb18030ext_page39[wc - 0x39c8]; + else if (wc == 0x3a73) + c = 0xfe64; + else if (wc == 0x3b4e) + c = 0xfe68; + else if (wc == 0x3c6e) + c = 0xfe69; + else if (wc == 0x3ce0) + c = 0xfe6a; + else if (wc == 0x4056) + c = 0xfe6f; + else if (wc == 0x415f) + c = 0xfe70; + else if (wc == 0x4337) + c = 0xfe72; + else if (wc >= 0x43a8 && wc < 0x43e0) + c = gb18030ext_page43[wc - 0x43a8]; + else if (wc == 0x44d6) + c = 0xfe7b; + else if (wc >= 0x4648 && wc < 0x4668) + c = gb18030ext_page46[wc - 0x4648]; + else if (wc >= 0x4720 && wc < 0x4730) + c = gb18030ext_page47_1[wc - 0x4720]; + else if (wc >= 0x4778 && wc < 0x4790) + c = gb18030ext_page47_2[wc - 0x4778]; + else if (wc >= 0x4940 && wc < 0x49b8) + c = gb18030ext_page49[wc - 0x4940]; + else if (wc >= 0x4c70 && wc < 0x4ca8) + c = gb18030ext_page4c[wc - 0x4c70]; + else if (wc >= 0x4d10 && wc < 0x4d20) + c = gb18030ext_page4d[wc - 0x4d10]; + else if (wc == 0x4dae) + c = 0xfe9f; + else if (wc >= 0x9fb4 && wc < 0x9fbc) + c = gb18030ext_page9f[wc - 0x9fb0]; + else if (wc >= 0xfe10 && wc < 0xfe1a) + c = gb18030ext_pagefe[wc - 0xfe10]; + if (c != 0) + { + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GB18030EXT_H_ */ diff --git a/lib/converters/gb18030uni.h b/lib/converters/gb18030uni.h index e99b6932..517364c6 100644 --- a/lib/converters/gb18030uni.h +++ b/lib/converters/gb18030uni.h @@ -1,5 +1,10 @@ +/** + * @file gb18030uni.h + * @brief GB18030 four-byte extension + * @copyright Copyright (C) 1999-2001, 2005, 2012, 2016, 2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2012, 2016, 2023 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GB18030 four-byte extension - */ +#ifndef _GB18030UNI_H_ +#define _GB18030UNI_H_ + +#include "reiconv_defines.h" static const unsigned short gb18030uni_charset2uni_ranges[412] = { 0x0000, 0x0023, 0x0024, 0x0025, 0x0026, 0x002c, 0x002d, 0x0031, @@ -174,114 +180,142 @@ static const unsigned short gb18030_2022_charset2uni_pua2[10] = { 0xe78d, 0xe78f, 0xe78e, 0xe790, 0xe791, 0xe792, 0xe793, 0xe794, 0xe795, 0xe796 }; -static int -gb18030_2005_uni_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb18030_2005_uni_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if (c1 >= 0x81 && c1 <= 0x84) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x30 && c2 <= 0x39) { - if (n >= 3) { - unsigned char c3 = s[2]; - if (c3 >= 0x81 && c3 <= 0xfe) { - if (n >= 4) { - unsigned char c4 = s[3]; - if (c4 >= 0x30 && c4 <= 0x39) { - unsigned int i = (((c1 - 0x81) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); - if (i >= 0 && i <= 39419) { - if (i == 7457) { - *pwc = 0xe7c7; - } else { - unsigned int k1 = 0; - unsigned int k2 = 205; - while (k1 < k2) { - unsigned int k = (k1 + k2) / 2; - if (i <= gb18030uni_charset2uni_ranges[2*k+1]) - k2 = k; - else if (i >= gb18030uni_charset2uni_ranges[2*k+2]) - k1 = k + 1; - else - return RET_ILSEQ; - } + unsigned char c1 = s[0]; + if (c1 >= 0x81 && c1 <= 0x84) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x30 && c2 <= 0x39) + { + if (n >= 3) + { + unsigned char c3 = s[2]; + if (c3 >= 0x81 && c3 <= 0xfe) { - unsigned int diff = gb18030uni_ranges[k1]; - *pwc = (ucs4_t) (i + diff); + if (n >= 4) + { + unsigned char c4 = s[3]; + if (c4 >= 0x30 && c4 <= 0x39) + { + unsigned int i = + (((c1 - 0x81) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); + if (i >= 0 && i <= 39419) + { + if (i == 7457) + { + *pwc = 0xe7c7; + } + else + { + unsigned int k1 = 0; + unsigned int k2 = 205; + while (k1 < k2) + { + unsigned int k = (k1 + k2) / 2; + if (i <= gb18030uni_charset2uni_ranges[2 * k + 1]) + k2 = k; + else if (i >= gb18030uni_charset2uni_ranges[2 * k + 2]) + k1 = k + 1; + else + return RET_ILSEQ; + } + { + unsigned int diff = gb18030uni_ranges[k1]; + *pwc = (ucs4_t)(i + diff); + } + } + return 4; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); } - } - return 4; + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } return RET_TOOFEW(0); - } - return RET_ILSEQ; } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -gb18030_2022_uni_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb18030_2022_uni_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if (c1 >= 0x81 && c1 <= 0x84) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x30 && c2 <= 0x39) { - if (n >= 3) { - unsigned char c3 = s[2]; - if (c3 >= 0x81 && c3 <= 0xfe) { - if (n >= 4) { - unsigned char c4 = s[3]; - if (c4 >= 0x30 && c4 <= 0x39) { - unsigned int i = (((c1 - 0x81) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); - if (i >= 0 && i <= 39419) { - if (i == 7457) { - *pwc = 0xe7c7; - } else if (i >= 19057 && i <= 19064) { - *pwc = gb18030_2022_charset2uni_pua1[i-19057]; - } else if (i >= 39076 && i <= 39085) { - *pwc = gb18030_2022_charset2uni_pua2[i-39076]; - } else { - unsigned int k1 = 0; - unsigned int k2 = 205; - while (k1 < k2) { - unsigned int k = (k1 + k2) / 2; - if (i <= gb18030uni_charset2uni_ranges[2*k+1]) - k2 = k; - else if (i >= gb18030uni_charset2uni_ranges[2*k+2]) - k1 = k + 1; - else - return RET_ILSEQ; - } + unsigned char c1 = s[0]; + if (c1 >= 0x81 && c1 <= 0x84) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x30 && c2 <= 0x39) + { + if (n >= 3) + { + unsigned char c3 = s[2]; + if (c3 >= 0x81 && c3 <= 0xfe) { - unsigned int diff = gb18030uni_ranges[k1]; - *pwc = (ucs4_t) (i + diff); + if (n >= 4) + { + unsigned char c4 = s[3]; + if (c4 >= 0x30 && c4 <= 0x39) + { + unsigned int i = + (((c1 - 0x81) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); + if (i >= 0 && i <= 39419) + { + if (i == 7457) + { + *pwc = 0xe7c7; + } + else if (i >= 19057 && i <= 19064) + { + *pwc = gb18030_2022_charset2uni_pua1[i - 19057]; + } + else if (i >= 39076 && i <= 39085) + { + *pwc = gb18030_2022_charset2uni_pua2[i - 39076]; + } + else + { + unsigned int k1 = 0; + unsigned int k2 = 205; + while (k1 < k2) + { + unsigned int k = (k1 + k2) / 2; + if (i <= gb18030uni_charset2uni_ranges[2 * k + 1]) + k2 = k; + else if (i >= gb18030uni_charset2uni_ranges[2 * k + 2]) + k1 = k + 1; + else + return RET_ILSEQ; + } + { + unsigned int diff = gb18030uni_ranges[k1]; + *pwc = (ucs4_t)(i + diff); + } + } + return 4; + } + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); } - } - return 4; + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } return RET_TOOFEW(0); - } - return RET_ILSEQ; } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned char gb18030_2022_uni2charset_pua1[71] = { @@ -297,95 +331,120 @@ static const unsigned char gb18030_2022_uni2charset_pua2[10] = { 0, 2, 1, 3, 4, 5, 6, 7, 8, 9 }; -static int -gb18030_2005_uni_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb18030_2005_uni_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 4) { - unsigned int i; - if (wc >= 0x0080 && wc <= 0xffff) { - if (wc == 0xe7c7) { - i = 7457; - } else { - unsigned int k1 = 0; - unsigned int k2 = 205; - i = wc; - while (k1 < k2) { - unsigned int k = (k1 + k2) / 2; - if (i <= gb18030uni_uni2charset_ranges[2*k+1]) - k2 = k; - else if (i >= gb18030uni_uni2charset_ranges[2*k+2]) - k1 = k + 1; - else - return RET_ILUNI; + if (n >= 4) + { + unsigned int i; + if (wc >= 0x0080 && wc <= 0xffff) + { + if (wc == 0xe7c7) + { + i = 7457; + } + else + { + unsigned int k1 = 0; + unsigned int k2 = 205; + i = wc; + while (k1 < k2) + { + unsigned int k = (k1 + k2) / 2; + if (i <= gb18030uni_uni2charset_ranges[2 * k + 1]) + k2 = k; + else if (i >= gb18030uni_uni2charset_ranges[2 * k + 2]) + k1 = k + 1; + else + return RET_ILUNI; + } + { + unsigned int diff = gb18030uni_ranges[k1]; + i -= diff; + } + } } + else if (wc >= 0x20087 && wc <= 0x241fe) { - unsigned int diff = gb18030uni_ranges[k1]; - i -= diff; + if (wc == 0x20087) + i = 0x3e2cf; + else if (wc == 0x20089) + i = 0x3e2d1; + else if (wc == 0x200cc) + i = 0x3e314; + else if (wc == 0x215d7) + i = 0x3f81f; + else if (wc == 0x2298f) + i = 0x40bd7; + else if (wc == 0x241fe) + i = 0x42446; + else + return RET_ILUNI; } - } - } else if (wc >= 0x20087 && wc <= 0x241fe) { - if (wc == 0x20087) - i = 0x3e2cf; - else if (wc == 0x20089) - i = 0x3e2d1; - else if (wc == 0x200cc) - i = 0x3e314; - else if (wc == 0x215d7) - i = 0x3f81f; - else if (wc == 0x2298f) - i = 0x40bd7; - else if (wc == 0x241fe) - i = 0x42446; - else - return RET_ILUNI; - } else - return RET_ILUNI; - r[3] = (i % 10) + 0x30; i = i / 10; - r[2] = (i % 126) + 0x81; i = i / 126; - r[1] = (i % 10) + 0x30; i = i / 10; - r[0] = i + 0x81; - return 4; - } - return RET_TOOSMALL; + else + return RET_ILUNI; + r[3] = (i % 10) + 0x30; + i = i / 10; + r[2] = (i % 126) + 0x81; + i = i / 126; + r[1] = (i % 10) + 0x30; + i = i / 10; + r[0] = i + 0x81; + return 4; + } + return RET_TOOSMALL; } -static int -gb18030_2022_uni_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb18030_2022_uni_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 4) { - if (wc >= 0x0080 && wc <= 0xffff) { - unsigned int i; - if (wc == 0xe7c7) { - i = 7457; - } else if (wc >= 0xe78d && wc <= 0xe796) { - i = 39076 + gb18030_2022_uni2charset_pua2[wc-0xe78d]; - } else if (wc >= 0xe81e && wc <= 0xe864 && gb18030_2022_uni2charset_pua1[wc-0xe81e]) { - i = 19056 + gb18030_2022_uni2charset_pua1[wc-0xe81e]; - } else { - unsigned int k1 = 0; - unsigned int k2 = 205; - i = wc; - while (k1 < k2) { - unsigned int k = (k1 + k2) / 2; - if (i <= gb18030uni_uni2charset_ranges[2*k+1]) - k2 = k; - else if (i >= gb18030uni_uni2charset_ranges[2*k+2]) - k1 = k + 1; - else - return RET_ILUNI; - } + if (n >= 4) + { + if (wc >= 0x0080 && wc <= 0xffff) { - unsigned int diff = gb18030uni_ranges[k1]; - i -= diff; + unsigned int i; + if (wc == 0xe7c7) + { + i = 7457; + } + else if (wc >= 0xe78d && wc <= 0xe796) + { + i = 39076 + gb18030_2022_uni2charset_pua2[wc - 0xe78d]; + } + else if (wc >= 0xe81e && wc <= 0xe864 && gb18030_2022_uni2charset_pua1[wc - 0xe81e]) + { + i = 19056 + gb18030_2022_uni2charset_pua1[wc - 0xe81e]; + } + else + { + unsigned int k1 = 0; + unsigned int k2 = 205; + i = wc; + while (k1 < k2) + { + unsigned int k = (k1 + k2) / 2; + if (i <= gb18030uni_uni2charset_ranges[2 * k + 1]) + k2 = k; + else if (i >= gb18030uni_uni2charset_ranges[2 * k + 2]) + k1 = k + 1; + else + return RET_ILUNI; + } + { + unsigned int diff = gb18030uni_ranges[k1]; + i -= diff; + } + } + r[3] = (i % 10) + 0x30; + i = i / 10; + r[2] = (i % 126) + 0x81; + i = i / 126; + r[1] = (i % 10) + 0x30; + i = i / 10; + r[0] = i + 0x81; + return 4; } - } - r[3] = (i % 10) + 0x30; i = i / 10; - r[2] = (i % 126) + 0x81; i = i / 126; - r[1] = (i % 10) + 0x30; i = i / 10; - r[0] = i + 0x81; - return 4; + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GB18030UNI_H_ */ diff --git a/lib/converters/gb2312.h b/lib/converters/gb2312.h index 3e5078b6..fdd67eaa 100644 --- a/lib/converters/gb2312.h +++ b/lib/converters/gb2312.h @@ -1,5 +1,10 @@ +/** + * @file gb2312.h + * @brief GB2312.1980-0 + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GB2312.1980-0 - */ +#ifndef _GB2312_H_ +#define _GB2312_H_ + +#include "reiconv_defines.h" static const unsigned short gb2312_2uni_page21[831] = { /* 0x21 */ @@ -1077,33 +1083,39 @@ static const unsigned short gb2312_2uni_page30[6768] = { 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44, }; -static int -gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gb2312_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - unsigned short wc = 0xfffd; - if (i < 1410) { - if (i < 831) - wc = gb2312_2uni_page21[i]; - } else { - if (i < 8178) - wc = gb2312_2uni_page30[i-1410]; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + if (i < 1410) + { + if (i < 831) + wc = gb2312_2uni_page21[i]; + } + else + { + if (i < 8178) + wc = gb2312_2uni_page30[i - 1410]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short gb2312_2charset[7445] = { @@ -2530,41 +2542,46 @@ static const Summary16 gb2312_uni2indx_pageff[15] = { { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b }, }; -static int -gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gb2312_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0460) - summary = &gb2312_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x2000 && wc < 0x2650) - summary = &gb2312_uni2indx_page20[(wc>>4)-0x200]; - else if (wc >= 0x3000 && wc < 0x3230) - summary = &gb2312_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x4e00 && wc < 0x9cf0) - summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0x9e00 && wc < 0x9fb0) - summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0]; - else if (wc >= 0xff00 && wc < 0xfff0) - summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = gb2312_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0460) + summary = &gb2312_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x2000 && wc < 0x2650) + summary = &gb2312_uni2indx_page20[(wc >> 4) - 0x200]; + else if (wc >= 0x3000 && wc < 0x3230) + summary = &gb2312_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x4e00 && wc < 0x9cf0) + summary = &gb2312_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0x9e00 && wc < 0x9fb0) + summary = &gb2312_uni2indx_page9e[(wc >> 4) - 0x9e0]; + else if (wc >= 0xff00 && wc < 0xfff0) + summary = &gb2312_uni2indx_pageff[(wc >> 4) - 0xff0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = gb2312_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GB2312_H_ */ diff --git a/lib/converters/gbk.h b/lib/converters/gbk.h index 544793b0..788c8954 100644 --- a/lib/converters/gbk.h +++ b/lib/converters/gbk.h @@ -1,5 +1,10 @@ +/** + * @file gbk.h + * @brief GBK + * @copyright Copyright (C) 1999-2001, 2005, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * GBK - */ - /* * GBK, as described in Ken Lunde's book, is an extension of GB 2312-1980 * (shifted by adding 0x8080 to the range 0xA1A1..0xFEFE, as used in EUC-CN). @@ -54,115 +55,143 @@ * added new mappings to CP936... */ +#ifndef _GBK_H_ +#define _GBK_H_ + +#include "converters/gb2312.h" +#include "reiconv_defines.h" + +#include "cp936ext.h" #include "gbkext1.h" #include "gbkext2.h" #include "gbkext_inv.h" -#include "cp936ext.h" -static int -gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int gbk_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; + unsigned char c = *s; - if (c >= 0x81 && c < 0xff) { - if (n < 2) - return RET_TOOFEW(0); - if (c >= 0xa1 && c <= 0xf7) { - unsigned char c2 = s[1]; - if (c == 0xa1) { - if (c2 == 0xa4) { - *pwc = 0x00b7; - return 2; + if (c >= 0x81 && c < 0xff) + { + if (n < 2) + return RET_TOOFEW(0); + if (c >= 0xa1 && c <= 0xf7) + { + unsigned char c2 = s[1]; + if (c == 0xa1) + { + if (c2 == 0xa4) + { + *pwc = 0x00b7; + return 2; + } + if (c2 == 0xaa) + { + *pwc = 0x2014; + return 2; + } + } + if (c2 >= 0xa1 && c2 < 0xff) + { + unsigned char buf[2]; + int ret; + buf[0] = c - 0x80; + buf[1] = c2 - 0x80; + ret = gb2312_mbtowc(conv, pwc, buf, 2); + if (ret != RET_ILSEQ) + return ret; + buf[0] = c; + buf[1] = c2; + ret = cp936ext_mbtowc(conv, pwc, buf, 2); + if (ret != RET_ILSEQ) + return ret; + } } - if (c2 == 0xaa) { - *pwc = 0x2014; - return 2; + if (c >= 0x81 && c <= 0xa0) + return gbkext1_mbtowc(conv, pwc, s, 2); + if (c >= 0xa8 && c <= 0xfe) + return gbkext2_mbtowc(conv, pwc, s, 2); + if (c == 0xa2) + { + unsigned char c2 = s[1]; + if (c2 >= 0xa1 && c2 <= 0xaa) + { + *pwc = 0x2170 + (c2 - 0xa1); + return 2; + } } - } - if (c2 >= 0xa1 && c2 < 0xff) { - unsigned char buf[2]; - int ret; - buf[0] = c-0x80; buf[1] = c2-0x80; - ret = gb2312_mbtowc(conv,pwc,buf,2); - if (ret != RET_ILSEQ) - return ret; - buf[0] = c; buf[1] = c2; - ret = cp936ext_mbtowc(conv,pwc,buf,2); - if (ret != RET_ILSEQ) - return ret; - } } - if (c >= 0x81 && c <= 0xa0) - return gbkext1_mbtowc(conv,pwc,s,2); - if (c >= 0xa8 && c <= 0xfe) - return gbkext2_mbtowc(conv,pwc,s,2); - if (c == 0xa2) { - unsigned char c2 = s[1]; - if (c2 >= 0xa1 && c2 <= 0xaa) { - *pwc = 0x2170+(c2-0xa1); - return 2; - } - } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gbk_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - if (wc != 0x30fb && wc != 0x2015) { - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]+0x80; - r[1] = buf[1]+0x80; - return 2; + if (wc != 0x30fb && wc != 0x2015) + { + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0] + 0x80; + r[1] = buf[1] + 0x80; + return 2; + } + } + ret = gbkext_inv_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } + if (wc >= 0x2170 && wc <= 0x2179) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0xa2; + r[1] = 0xa1 + (wc - 0x2170); + return 2; + } + ret = cp936ext_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } + if (wc == 0x00b7) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0xa1; + r[1] = 0xa4; + return 2; + } + if (wc == 0x2014) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = 0xa1; + r[1] = 0xaa; + return 2; } - } - ret = gbkext_inv_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } - if (wc >= 0x2170 && wc <= 0x2179) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0xa2; - r[1] = 0xa1 + (wc-0x2170); - return 2; - } - ret = cp936ext_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } - if (wc == 0x00b7) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0xa1; - r[1] = 0xa4; - return 2; - } - if (wc == 0x2014) { - if (n < 2) - return RET_TOOSMALL; - r[0] = 0xa1; - r[1] = 0xaa; - return 2; - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _GBK_H_ */ diff --git a/lib/converters/gbkext1.h b/lib/converters/gbkext1.h index da4bf699..ca30378b 100644 --- a/lib/converters/gbkext1.h +++ b/lib/converters/gbkext1.h @@ -1,5 +1,10 @@ +/** + * @file gbkext1.h + * @brief GBK/3 extensions + * @copyright Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GBK/3 extensions - */ +#ifndef _GBKEXT1_H_ +#define _GBKEXT1_H_ + +#include "reiconv_defines.h" static const unsigned short gbkext1_2uni_page81[6080] = { /* 0x81 */ @@ -824,29 +830,33 @@ static const unsigned short gbkext1_2uni_page81[6080] = { 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db, }; -static int -gbkext1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gbkext1_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x81 && c1 <= 0xa0)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { - unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - unsigned short wc = 0xfffd; + unsigned char c1 = s[0]; + if ((c1 >= 0x81 && c1 <= 0xa0)) + { + if (n >= 2) { - if (i < 6080) - wc = gbkext1_2uni_page81[i]; - } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) + { + unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + unsigned short wc = 0xfffd; + { + if (i < 6080) + wc = gbkext1_2uni_page81[i]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _GBKEXT1_H_ */ diff --git a/lib/converters/gbkext2.h b/lib/converters/gbkext2.h index 0d3308fd..5a023530 100644 --- a/lib/converters/gbkext2.h +++ b/lib/converters/gbkext2.h @@ -1,5 +1,10 @@ +/** + * @file gbkext2.h + * @brief GBK/4 and GBK/5 extensions + * @copyright Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GBK/4 and GBK/5 extensions - */ +#ifndef _GBKEXT2_H_ +#define _GBKEXT2_H_ + +#include "reiconv_defines.h" static const unsigned short gbkext2_2uni_pagea8[8272] = { /* 0xa8 */ @@ -1145,29 +1151,33 @@ static const unsigned short gbkext2_2uni_pagea8[8272] = { 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29, }; -static int -gbkext2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int gbkext2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0xa8 && c1 <= 0xfe)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xa1)) { - unsigned int i = 96 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); - unsigned short wc = 0xfffd; + unsigned char c1 = s[0]; + if ((c1 >= 0xa8 && c1 <= 0xfe)) + { + if (n >= 2) { - if (i < 12016) - wc = gbkext2_2uni_pagea8[i-3744]; - } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xa1)) + { + unsigned int i = 96 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); + unsigned short wc = 0xfffd; + { + if (i < 12016) + wc = gbkext2_2uni_pagea8[i - 3744]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } +#endif /* _GBKEXT2_H_ */ diff --git a/lib/converters/gbkext_inv.h b/lib/converters/gbkext_inv.h index 072ce506..90298c7f 100644 --- a/lib/converters/gbkext_inv.h +++ b/lib/converters/gbkext_inv.h @@ -1,5 +1,10 @@ +/** + * @file gbkext_inv.h + * @brief GBK extensions + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GBK extensions - */ +#ifndef _GBKEXT_INV_H_ +#define _GBKEXT_INV_H_ + +#include "reiconv_defines.h" static const unsigned short gbkext_inv_2charset[14313] = { 0xa840, 0xa841, 0xa842, 0xa95c, 0xa843, 0xa844, 0xa845, 0xa846, @@ -2298,45 +2304,50 @@ static const Summary16 gbkext_inv_uni2indx_pagefe[31] = { { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0014 }, }; -static int -gbkext_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int gbkext_inv_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0200 && wc < 0x02e0) - summary = &gbkext_inv_uni2indx_page02[(wc>>4)-0x020]; - else if (wc >= 0x2000 && wc < 0x22c0) - summary = &gbkext_inv_uni2indx_page20[(wc>>4)-0x200]; - else if (wc >= 0x2500 && wc < 0x2610) - summary = &gbkext_inv_uni2indx_page25[(wc>>4)-0x250]; - else if (wc >= 0x3000 && wc < 0x3100) - summary = &gbkext_inv_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x3200 && wc < 0x33e0) - summary = &gbkext_inv_uni2indx_page32[(wc>>4)-0x320]; - else if (wc >= 0x4e00 && wc < 0x9fb0) - summary = &gbkext_inv_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0xf900 && wc < 0xfa30) - summary = &gbkext_inv_uni2indx_pagef9[(wc>>4)-0xf90]; - else if (wc >= 0xfe00 && wc < 0xfff0) - summary = &gbkext_inv_uni2indx_pagefe[(wc>>4)-0xfe0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = gbkext_inv_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0200 && wc < 0x02e0) + summary = &gbkext_inv_uni2indx_page02[(wc >> 4) - 0x020]; + else if (wc >= 0x2000 && wc < 0x22c0) + summary = &gbkext_inv_uni2indx_page20[(wc >> 4) - 0x200]; + else if (wc >= 0x2500 && wc < 0x2610) + summary = &gbkext_inv_uni2indx_page25[(wc >> 4) - 0x250]; + else if (wc >= 0x3000 && wc < 0x3100) + summary = &gbkext_inv_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x3200 && wc < 0x33e0) + summary = &gbkext_inv_uni2indx_page32[(wc >> 4) - 0x320]; + else if (wc >= 0x4e00 && wc < 0x9fb0) + summary = &gbkext_inv_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0xf900 && wc < 0xfa30) + summary = &gbkext_inv_uni2indx_pagef9[(wc >> 4) - 0xf90]; + else if (wc >= 0xfe00 && wc < 0xfff0) + summary = &gbkext_inv_uni2indx_pagefe[(wc >> 4) - 0xfe0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = gbkext_inv_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _GBKEXT_INV_H_ */ diff --git a/lib/converters/georgian_academy.h b/lib/converters/georgian_academy.h index 0089a620..8421d462 100644 --- a/lib/converters/georgian_academy.h +++ b/lib/converters/georgian_academy.h @@ -1,5 +1,10 @@ +/** + * @file georgian_academy.h + * @brief GEORGIAN-ACADEMY + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GEORGIAN-ACADEMY - */ +#ifndef _GEORGIAN_ACADEMY_H_ +#define _GEORGIAN_ACADEMY_H_ + +#include "reiconv_defines.h" static const unsigned short georgian_academy_2uni[32] = { /* 0x80 */ @@ -30,17 +36,16 @@ static const unsigned short georgian_academy_2uni[32] = { 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, }; -static int -georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int georgian_academy_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0x80 && c < 0xa0) - *pwc = (ucs4_t) georgian_academy_2uni[c-0x80]; - else if (c >= 0xc0 && c < 0xe7) - *pwc = (ucs4_t) c + 0x1010; - else - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + if (c >= 0x80 && c < 0xa0) + *pwc = (ucs4_t)georgian_academy_2uni[c - 0x80]; + else if (c >= 0xc0 && c < 0xe7) + *pwc = (ucs4_t)c + 0x1010; + else + *pwc = (ucs4_t)c; + return 1; } static const unsigned char georgian_academy_page00[32] = { @@ -75,31 +80,34 @@ static const unsigned char georgian_academy_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int georgian_academy_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x0080 && wc < 0x00a0) - c = georgian_academy_page00[wc-0x0080]; - else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100)) - c = wc; - else if (wc >= 0x0150 && wc < 0x0198) - c = georgian_academy_page01[wc-0x0150]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = georgian_academy_page02[wc-0x02c0]; - else if (wc >= 0x10d0 && wc < 0x10f7) - c = wc-0x1010; - else if (wc >= 0x2010 && wc < 0x2040) - c = georgian_academy_page20[wc-0x2010]; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x0080 && wc < 0x00a0) + c = georgian_academy_page00[wc - 0x0080]; + else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100)) + c = wc; + else if (wc >= 0x0150 && wc < 0x0198) + c = georgian_academy_page01[wc - 0x0150]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = georgian_academy_page02[wc - 0x02c0]; + else if (wc >= 0x10d0 && wc < 0x10f7) + c = wc - 0x1010; + else if (wc >= 0x2010 && wc < 0x2040) + c = georgian_academy_page20[wc - 0x2010]; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _GEORGIAN_ACADEMY_H_ */ diff --git a/lib/converters/georgian_ps.h b/lib/converters/georgian_ps.h index 898fee1e..7c115027 100644 --- a/lib/converters/georgian_ps.h +++ b/lib/converters/georgian_ps.h @@ -1,5 +1,10 @@ +/** + * @file georgian_ps.h + * @brief GEORGIAN-PS + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * GEORGIAN-PS - */ +#ifndef _GEORGIAN_PS_H_ +#define _GEORGIAN_PS_H_ + +#include "reiconv_defines.h" static const unsigned short georgian_ps_2uni_1[32] = { /* 0x80 */ @@ -40,17 +46,16 @@ static const unsigned short georgian_ps_2uni_2[39] = { 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5, }; -static int -georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int georgian_ps_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0x80 && c < 0xa0) - *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80]; - else if (c >= 0xc0 && c < 0xe6) - *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0]; - else - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + if (c >= 0x80 && c < 0xa0) + *pwc = (ucs4_t)georgian_ps_2uni_1[c - 0x80]; + else if (c >= 0xc0 && c < 0xe6) + *pwc = (ucs4_t)georgian_ps_2uni_2[c - 0xc0]; + else + *pwc = (ucs4_t)c; + return 1; } static const unsigned char georgian_ps_page00[32] = { @@ -92,31 +97,34 @@ static const unsigned char georgian_ps_page20[48] = { 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; -static int -georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int georgian_ps_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x0080 && wc < 0x00a0) - c = georgian_ps_page00[wc-0x0080]; - else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100)) - c = wc; - else if (wc >= 0x0150 && wc < 0x0198) - c = georgian_ps_page01[wc-0x0150]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = georgian_ps_page02[wc-0x02c0]; - else if (wc >= 0x10d0 && wc < 0x10f8) - c = georgian_ps_page10[wc-0x10d0]; - else if (wc >= 0x2010 && wc < 0x2040) - c = georgian_ps_page20[wc-0x2010]; - else if (wc == 0x2122) - c = 0x99; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x0080 && wc < 0x00a0) + c = georgian_ps_page00[wc - 0x0080]; + else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100)) + c = wc; + else if (wc >= 0x0150 && wc < 0x0198) + c = georgian_ps_page01[wc - 0x0150]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = georgian_ps_page02[wc - 0x02c0]; + else if (wc >= 0x10d0 && wc < 0x10f8) + c = georgian_ps_page10[wc - 0x10d0]; + else if (wc >= 0x2010 && wc < 0x2040) + c = georgian_ps_page20[wc - 0x2010]; + else if (wc == 0x2122) + c = 0x99; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _GEORGIAN_PS_H_ */ diff --git a/lib/converters/hkscs1999.h b/lib/converters/hkscs1999.h index 74f70eb0..16ac8e5c 100644 --- a/lib/converters/hkscs1999.h +++ b/lib/converters/hkscs1999.h @@ -1,5 +1,10 @@ +/** + * @file hkscs1999.h + * @brief HKSCS:1999 + * @copyright Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * HKSCS:1999 - */ +#ifndef _HKSCS1999_H_ +#define _HKSCS1999_H_ + +#include "reiconv_defines.h" static const unsigned short hkscs1999_2uni_page88[627] = { /* 0x88 */ @@ -848,44 +854,51 @@ static const ucs4_t hkscs1999_2uni_upages[973] = { 0x2f840, 0x2f880, 0x2f8c0, 0x2f980, 0x2f9c0, }; -static int -hkscs1999_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int hkscs1999_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x88 && c1 <= 0x8b) || (c1 >= 0x8d && c1 <= 0xa0) || (c1 >= 0xc6 && c1 <= 0xc8) || (c1 >= 0xf9 && c1 <= 0xfe)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - ucs4_t wc = 0xfffd; - unsigned short swc; - if (i < 2041) { - if (i < 1883) - swc = hkscs1999_2uni_page88[i-1256], - wc = hkscs1999_2uni_upages[swc>>6] | (swc & 0x3f); - } else if (i < 10990) { - if (i < 5181) - swc = hkscs1999_2uni_page8d[i-2041], - wc = hkscs1999_2uni_upages[swc>>6] | (swc & 0x3f); - } else if (i < 18997) { - if (i < 11461) - swc = hkscs1999_2uni_pagec6[i-10990], - wc = hkscs1999_2uni_upages[swc>>6] | (swc & 0x3f); - } else { - if (i < 19939) - swc = hkscs1999_2uni_pagef9[i-18997], - wc = hkscs1999_2uni_upages[swc>>6] | (swc & 0x3f); + unsigned char c1 = s[0]; + if ((c1 >= 0x88 && c1 <= 0x8b) || (c1 >= 0x8d && c1 <= 0xa0) || (c1 >= 0xc6 && c1 <= 0xc8) || + (c1 >= 0xf9 && c1 <= 0xfe)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + ucs4_t wc = 0xfffd; + unsigned short swc; + if (i < 2041) + { + if (i < 1883) + swc = hkscs1999_2uni_page88[i - 1256], wc = hkscs1999_2uni_upages[swc >> 6] | (swc & 0x3f); + } + else if (i < 10990) + { + if (i < 5181) + swc = hkscs1999_2uni_page8d[i - 2041], wc = hkscs1999_2uni_upages[swc >> 6] | (swc & 0x3f); + } + else if (i < 18997) + { + if (i < 11461) + swc = hkscs1999_2uni_pagec6[i - 10990], wc = hkscs1999_2uni_upages[swc >> 6] | (swc & 0x3f); + } + else + { + if (i < 19939) + swc = hkscs1999_2uni_pagef9[i - 18997], wc = hkscs1999_2uni_upages[swc >> 6] | (swc & 0x3f); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short hkscs1999_2charset[4698] = { @@ -2948,57 +2961,62 @@ static const Summary16 hkscs1999_uni2indx_page2f8[30] = { { 4697, 0x0000 }, { 4697, 0x0010 }, }; -static int -hkscs1999_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int hkscs1999_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x02d0) - summary = &hkscs1999_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x0400 && wc < 0x0460) - summary = &hkscs1999_uni2indx_page04[(wc>>4)-0x040]; - else if (wc >= 0x1e00 && wc < 0x1ed0) - summary = &hkscs1999_uni2indx_page1e[(wc>>4)-0x1e0]; - else if (wc >= 0x2100 && wc < 0x21f0) - summary = &hkscs1999_uni2indx_page21[(wc>>4)-0x210]; - else if (wc >= 0x2300 && wc < 0x2580) - summary = &hkscs1999_uni2indx_page23[(wc>>4)-0x230]; - else if (wc >= 0x2700 && wc < 0x2740) - summary = &hkscs1999_uni2indx_page27[(wc>>4)-0x270]; - else if (wc >= 0x2e00 && wc < 0x3240) - summary = &hkscs1999_uni2indx_page2e[(wc>>4)-0x2e0]; - else if (wc >= 0x3400 && wc < 0x9fc0) - summary = &hkscs1999_uni2indx_page34[(wc>>4)-0x340]; - else if (wc >= 0xf900 && wc < 0xf910) - summary = &hkscs1999_uni2indx_pagef9[(wc>>4)-0xf90]; - else if (wc >= 0xff00 && wc < 0xfff0) - summary = &hkscs1999_uni2indx_pageff[(wc>>4)-0xff0]; - else if (wc >= 0x20000 && wc < 0x291f0) - summary = &hkscs1999_uni2indx_page200[(wc>>4)-0x2000]; - else if (wc >= 0x29400 && wc < 0x29600) - summary = &hkscs1999_uni2indx_page294[(wc>>4)-0x2940]; - else if (wc >= 0x29700 && wc < 0x2a6b0) - summary = &hkscs1999_uni2indx_page297[(wc>>4)-0x2970]; - else if (wc >= 0x2f800 && wc < 0x2f9e0) - summary = &hkscs1999_uni2indx_page2f8[(wc>>4)-0x2f80]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = hkscs1999_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x02d0) + summary = &hkscs1999_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x0400 && wc < 0x0460) + summary = &hkscs1999_uni2indx_page04[(wc >> 4) - 0x040]; + else if (wc >= 0x1e00 && wc < 0x1ed0) + summary = &hkscs1999_uni2indx_page1e[(wc >> 4) - 0x1e0]; + else if (wc >= 0x2100 && wc < 0x21f0) + summary = &hkscs1999_uni2indx_page21[(wc >> 4) - 0x210]; + else if (wc >= 0x2300 && wc < 0x2580) + summary = &hkscs1999_uni2indx_page23[(wc >> 4) - 0x230]; + else if (wc >= 0x2700 && wc < 0x2740) + summary = &hkscs1999_uni2indx_page27[(wc >> 4) - 0x270]; + else if (wc >= 0x2e00 && wc < 0x3240) + summary = &hkscs1999_uni2indx_page2e[(wc >> 4) - 0x2e0]; + else if (wc >= 0x3400 && wc < 0x9fc0) + summary = &hkscs1999_uni2indx_page34[(wc >> 4) - 0x340]; + else if (wc >= 0xf900 && wc < 0xf910) + summary = &hkscs1999_uni2indx_pagef9[(wc >> 4) - 0xf90]; + else if (wc >= 0xff00 && wc < 0xfff0) + summary = &hkscs1999_uni2indx_pageff[(wc >> 4) - 0xff0]; + else if (wc >= 0x20000 && wc < 0x291f0) + summary = &hkscs1999_uni2indx_page200[(wc >> 4) - 0x2000]; + else if (wc >= 0x29400 && wc < 0x29600) + summary = &hkscs1999_uni2indx_page294[(wc >> 4) - 0x2940]; + else if (wc >= 0x29700 && wc < 0x2a6b0) + summary = &hkscs1999_uni2indx_page297[(wc >> 4) - 0x2970]; + else if (wc >= 0x2f800 && wc < 0x2f9e0) + summary = &hkscs1999_uni2indx_page2f8[(wc >> 4) - 0x2f80]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = hkscs1999_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _HKSCS1999_H_ */ diff --git a/lib/converters/hkscs2001.h b/lib/converters/hkscs2001.h index ba2a8373..db62aa8e 100644 --- a/lib/converters/hkscs2001.h +++ b/lib/converters/hkscs2001.h @@ -1,5 +1,10 @@ +/** + * @file hkscs2001.h + * @brief HKSCS:2001 + * @copyright Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * HKSCS:2001 - */ +#ifndef _HKSCS2001_H_ +#define _HKSCS2001_H_ + +#include "reiconv_defines.h" static const unsigned short hkscs2001_2uni_page8c[123] = { /* 0x8c */ @@ -55,32 +61,34 @@ static const ucs4_t hkscs2001_2uni_upages[85] = { 0x28d00, 0x29900, 0x29c00, 0x2a100, 0x2a200, }; -static int -hkscs2001_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int hkscs2001_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if (c1 == (unsigned char)0x8c) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if (c1 == (unsigned char)0x8c) + { + if (n >= 2) { - if (i < 2007) - swc = hkscs2001_2uni_page8c[i-1884], - wc = hkscs2001_2uni_upages[swc>>8] | (swc & 0xff); + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 2007) + swc = hkscs2001_2uni_page8c[i - 1884], wc = hkscs2001_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short hkscs2001_2charset[116] = { @@ -549,134 +557,148 @@ static const Summary16 hkscs2001_uni2indx_page2a1[28] = { { 115, 0x0000 }, { 115, 0x0000 }, { 115, 0x0000 }, { 115, 0x0400 }, }; -static int -hkscs2001_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int hkscs2001_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc < 0x9f00) { - if (wc < 0x6900) { - if (wc >= 0x3500 && wc < 0x3560) - summary = &hkscs2001_uni2indx_page35[(wc>>4)-0x350]; - else if (wc >= 0x3c00 && wc < 0x3ee0) - summary = &hkscs2001_uni2indx_page3c[(wc>>4)-0x3c0]; - else if (wc >= 0x4000 && wc < 0x4080) - summary = &hkscs2001_uni2indx_page40[(wc>>4)-0x400]; - else if (wc >= 0x4200 && wc < 0x42b0) - summary = &hkscs2001_uni2indx_page42[(wc>>4)-0x420]; - else if (wc >= 0x4b00 && wc < 0x4c90) - summary = &hkscs2001_uni2indx_page4b[(wc>>4)-0x4b0]; - else if (wc >= 0x4e00 && wc < 0x51b0) - summary = &hkscs2001_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0x5300 && wc < 0x5440) - summary = &hkscs2001_uni2indx_page53[(wc>>4)-0x530]; - else if (wc >= 0x5700 && wc < 0x58e0) - summary = &hkscs2001_uni2indx_page57[(wc>>4)-0x570]; - else if (wc >= 0x5a00 && wc < 0x5fd0) - summary = &hkscs2001_uni2indx_page5a[(wc>>4)-0x5a0]; - else if (wc >= 0x6100 && wc < 0x6130) - summary = &hkscs2001_uni2indx_page61[(wc>>4)-0x610]; - else if (wc >= 0x6500 && wc < 0x6590) - summary = &hkscs2001_uni2indx_page65[(wc>>4)-0x650]; - else if (wc >= 0x6700 && wc < 0x6770) - summary = &hkscs2001_uni2indx_page67[(wc>>4)-0x670]; - } else { - if (wc >= 0x6900 && wc < 0x6a70) - summary = &hkscs2001_uni2indx_page69[(wc>>4)-0x690]; - else if (wc >= 0x6c00 && wc < 0x6e00) - summary = &hkscs2001_uni2indx_page6c[(wc>>4)-0x6c0]; - else if (wc >= 0x7000 && wc < 0x74c0) - summary = &hkscs2001_uni2indx_page70[(wc>>4)-0x700]; - else if (wc >= 0x7600 && wc < 0x78f0) - summary = &hkscs2001_uni2indx_page76[(wc>>4)-0x760]; - else if (wc >= 0x7a00 && wc < 0x7e70) - summary = &hkscs2001_uni2indx_page7a[(wc>>4)-0x7a0]; - else if (wc >= 0x8200 && wc < 0x8300) - summary = &hkscs2001_uni2indx_page82[(wc>>4)-0x820]; - else if (wc >= 0x8500 && wc < 0x8610) - summary = &hkscs2001_uni2indx_page85[(wc>>4)-0x850]; - else if (wc >= 0x8800 && wc < 0x88a0) - summary = &hkscs2001_uni2indx_page88[(wc>>4)-0x880]; - else if (wc >= 0x8b00 && wc < 0x8b90) - summary = &hkscs2001_uni2indx_page8b[(wc>>4)-0x8b0]; - else if (wc >= 0x8e00 && wc < 0x8fd0) - summary = &hkscs2001_uni2indx_page8e[(wc>>4)-0x8e0]; - else if (wc >= 0x9100 && wc < 0x9400) - summary = &hkscs2001_uni2indx_page91[(wc>>4)-0x910]; - else if (wc >= 0x9700 && wc < 0x99f0) - summary = &hkscs2001_uni2indx_page97[(wc>>4)-0x970]; - } - } else { - if (wc < 0x25600) { - if (wc >= 0x9f00 && wc < 0x9fb0) - summary = &hkscs2001_uni2indx_page9f[(wc>>4)-0x9f0]; - else if (wc >= 0x21400 && wc < 0x21440) - summary = &hkscs2001_uni2indx_page214[(wc>>4)-0x2140]; - else if (wc >= 0x21900 && wc < 0x21990) - summary = &hkscs2001_uni2indx_page219[(wc>>4)-0x2190]; - else if (wc >= 0x21d00 && wc < 0x21dc0) - summary = &hkscs2001_uni2indx_page21d[(wc>>4)-0x21d0]; - else if (wc >= 0x22000 && wc < 0x22080) - summary = &hkscs2001_uni2indx_page220[(wc>>4)-0x2200]; - else if (wc >= 0x22700 && wc < 0x22720) - summary = &hkscs2001_uni2indx_page227[(wc>>4)-0x2270]; - else if (wc >= 0x23200 && wc < 0x23400) - summary = &hkscs2001_uni2indx_page232[(wc>>4)-0x2320]; - else if (wc >= 0x23c00 && wc < 0x23c70) - summary = &hkscs2001_uni2indx_page23c[(wc>>4)-0x23c0]; - else if (wc >= 0x24100 && wc < 0x24150) - summary = &hkscs2001_uni2indx_page241[(wc>>4)-0x2410]; - else if (wc >= 0x24500 && wc < 0x24510) - summary = &hkscs2001_uni2indx_page245[(wc>>4)-0x2450]; - else if (wc >= 0x24900 && wc < 0x24a20) - summary = &hkscs2001_uni2indx_page249[(wc>>4)-0x2490]; - else if (wc >= 0x25100 && wc < 0x251d0) - summary = &hkscs2001_uni2indx_page251[(wc>>4)-0x2510]; - } else { - if (wc >= 0x25600 && wc < 0x256a0) - summary = &hkscs2001_uni2indx_page256[(wc>>4)-0x2560]; - else if (wc >= 0x25c00 && wc < 0x25d40) - summary = &hkscs2001_uni2indx_page25c[(wc>>4)-0x25c0]; - else if (wc >= 0x26b00 && wc < 0x26b20) - summary = &hkscs2001_uni2indx_page26b[(wc>>4)-0x26b0]; - else if (wc >= 0x26d00 && wc < 0x26d80) - summary = &hkscs2001_uni2indx_page26d[(wc>>4)-0x26d0]; - else if (wc >= 0x26f00 && wc < 0x26fc0) - summary = &hkscs2001_uni2indx_page26f[(wc>>4)-0x26f0]; - else if (wc >= 0x27100 && wc < 0x27110) - summary = &hkscs2001_uni2indx_page271[(wc>>4)-0x2710]; - else if (wc >= 0x28700 && wc < 0x28710) - summary = &hkscs2001_uni2indx_page287[(wc>>4)-0x2870]; - else if (wc >= 0x28900 && wc < 0x28af0) - summary = &hkscs2001_uni2indx_page289[(wc>>4)-0x2890]; - else if (wc >= 0x28d00 && wc < 0x28dc0) - summary = &hkscs2001_uni2indx_page28d[(wc>>4)-0x28d0]; - else if (wc >= 0x29900 && wc < 0x29950) - summary = &hkscs2001_uni2indx_page299[(wc>>4)-0x2990]; - else if (wc >= 0x29c00 && wc < 0x29c80) - summary = &hkscs2001_uni2indx_page29c[(wc>>4)-0x29c0]; - else if (wc >= 0x2a100 && wc < 0x2a2c0) - summary = &hkscs2001_uni2indx_page2a1[(wc>>4)-0x2a10]; - } - } - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = hkscs2001_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc < 0x9f00) + { + if (wc < 0x6900) + { + if (wc >= 0x3500 && wc < 0x3560) + summary = &hkscs2001_uni2indx_page35[(wc >> 4) - 0x350]; + else if (wc >= 0x3c00 && wc < 0x3ee0) + summary = &hkscs2001_uni2indx_page3c[(wc >> 4) - 0x3c0]; + else if (wc >= 0x4000 && wc < 0x4080) + summary = &hkscs2001_uni2indx_page40[(wc >> 4) - 0x400]; + else if (wc >= 0x4200 && wc < 0x42b0) + summary = &hkscs2001_uni2indx_page42[(wc >> 4) - 0x420]; + else if (wc >= 0x4b00 && wc < 0x4c90) + summary = &hkscs2001_uni2indx_page4b[(wc >> 4) - 0x4b0]; + else if (wc >= 0x4e00 && wc < 0x51b0) + summary = &hkscs2001_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0x5300 && wc < 0x5440) + summary = &hkscs2001_uni2indx_page53[(wc >> 4) - 0x530]; + else if (wc >= 0x5700 && wc < 0x58e0) + summary = &hkscs2001_uni2indx_page57[(wc >> 4) - 0x570]; + else if (wc >= 0x5a00 && wc < 0x5fd0) + summary = &hkscs2001_uni2indx_page5a[(wc >> 4) - 0x5a0]; + else if (wc >= 0x6100 && wc < 0x6130) + summary = &hkscs2001_uni2indx_page61[(wc >> 4) - 0x610]; + else if (wc >= 0x6500 && wc < 0x6590) + summary = &hkscs2001_uni2indx_page65[(wc >> 4) - 0x650]; + else if (wc >= 0x6700 && wc < 0x6770) + summary = &hkscs2001_uni2indx_page67[(wc >> 4) - 0x670]; + } + else + { + if (wc >= 0x6900 && wc < 0x6a70) + summary = &hkscs2001_uni2indx_page69[(wc >> 4) - 0x690]; + else if (wc >= 0x6c00 && wc < 0x6e00) + summary = &hkscs2001_uni2indx_page6c[(wc >> 4) - 0x6c0]; + else if (wc >= 0x7000 && wc < 0x74c0) + summary = &hkscs2001_uni2indx_page70[(wc >> 4) - 0x700]; + else if (wc >= 0x7600 && wc < 0x78f0) + summary = &hkscs2001_uni2indx_page76[(wc >> 4) - 0x760]; + else if (wc >= 0x7a00 && wc < 0x7e70) + summary = &hkscs2001_uni2indx_page7a[(wc >> 4) - 0x7a0]; + else if (wc >= 0x8200 && wc < 0x8300) + summary = &hkscs2001_uni2indx_page82[(wc >> 4) - 0x820]; + else if (wc >= 0x8500 && wc < 0x8610) + summary = &hkscs2001_uni2indx_page85[(wc >> 4) - 0x850]; + else if (wc >= 0x8800 && wc < 0x88a0) + summary = &hkscs2001_uni2indx_page88[(wc >> 4) - 0x880]; + else if (wc >= 0x8b00 && wc < 0x8b90) + summary = &hkscs2001_uni2indx_page8b[(wc >> 4) - 0x8b0]; + else if (wc >= 0x8e00 && wc < 0x8fd0) + summary = &hkscs2001_uni2indx_page8e[(wc >> 4) - 0x8e0]; + else if (wc >= 0x9100 && wc < 0x9400) + summary = &hkscs2001_uni2indx_page91[(wc >> 4) - 0x910]; + else if (wc >= 0x9700 && wc < 0x99f0) + summary = &hkscs2001_uni2indx_page97[(wc >> 4) - 0x970]; + } + } + else + { + if (wc < 0x25600) + { + if (wc >= 0x9f00 && wc < 0x9fb0) + summary = &hkscs2001_uni2indx_page9f[(wc >> 4) - 0x9f0]; + else if (wc >= 0x21400 && wc < 0x21440) + summary = &hkscs2001_uni2indx_page214[(wc >> 4) - 0x2140]; + else if (wc >= 0x21900 && wc < 0x21990) + summary = &hkscs2001_uni2indx_page219[(wc >> 4) - 0x2190]; + else if (wc >= 0x21d00 && wc < 0x21dc0) + summary = &hkscs2001_uni2indx_page21d[(wc >> 4) - 0x21d0]; + else if (wc >= 0x22000 && wc < 0x22080) + summary = &hkscs2001_uni2indx_page220[(wc >> 4) - 0x2200]; + else if (wc >= 0x22700 && wc < 0x22720) + summary = &hkscs2001_uni2indx_page227[(wc >> 4) - 0x2270]; + else if (wc >= 0x23200 && wc < 0x23400) + summary = &hkscs2001_uni2indx_page232[(wc >> 4) - 0x2320]; + else if (wc >= 0x23c00 && wc < 0x23c70) + summary = &hkscs2001_uni2indx_page23c[(wc >> 4) - 0x23c0]; + else if (wc >= 0x24100 && wc < 0x24150) + summary = &hkscs2001_uni2indx_page241[(wc >> 4) - 0x2410]; + else if (wc >= 0x24500 && wc < 0x24510) + summary = &hkscs2001_uni2indx_page245[(wc >> 4) - 0x2450]; + else if (wc >= 0x24900 && wc < 0x24a20) + summary = &hkscs2001_uni2indx_page249[(wc >> 4) - 0x2490]; + else if (wc >= 0x25100 && wc < 0x251d0) + summary = &hkscs2001_uni2indx_page251[(wc >> 4) - 0x2510]; + } + else + { + if (wc >= 0x25600 && wc < 0x256a0) + summary = &hkscs2001_uni2indx_page256[(wc >> 4) - 0x2560]; + else if (wc >= 0x25c00 && wc < 0x25d40) + summary = &hkscs2001_uni2indx_page25c[(wc >> 4) - 0x25c0]; + else if (wc >= 0x26b00 && wc < 0x26b20) + summary = &hkscs2001_uni2indx_page26b[(wc >> 4) - 0x26b0]; + else if (wc >= 0x26d00 && wc < 0x26d80) + summary = &hkscs2001_uni2indx_page26d[(wc >> 4) - 0x26d0]; + else if (wc >= 0x26f00 && wc < 0x26fc0) + summary = &hkscs2001_uni2indx_page26f[(wc >> 4) - 0x26f0]; + else if (wc >= 0x27100 && wc < 0x27110) + summary = &hkscs2001_uni2indx_page271[(wc >> 4) - 0x2710]; + else if (wc >= 0x28700 && wc < 0x28710) + summary = &hkscs2001_uni2indx_page287[(wc >> 4) - 0x2870]; + else if (wc >= 0x28900 && wc < 0x28af0) + summary = &hkscs2001_uni2indx_page289[(wc >> 4) - 0x2890]; + else if (wc >= 0x28d00 && wc < 0x28dc0) + summary = &hkscs2001_uni2indx_page28d[(wc >> 4) - 0x28d0]; + else if (wc >= 0x29900 && wc < 0x29950) + summary = &hkscs2001_uni2indx_page299[(wc >> 4) - 0x2990]; + else if (wc >= 0x29c00 && wc < 0x29c80) + summary = &hkscs2001_uni2indx_page29c[(wc >> 4) - 0x29c0]; + else if (wc >= 0x2a100 && wc < 0x2a2c0) + summary = &hkscs2001_uni2indx_page2a1[(wc >> 4) - 0x2a10]; + } + } + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = hkscs2001_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _HKSCS2001_H_ */ diff --git a/lib/converters/hkscs2004.h b/lib/converters/hkscs2004.h index a2a87ad1..53f464eb 100644 --- a/lib/converters/hkscs2004.h +++ b/lib/converters/hkscs2004.h @@ -1,5 +1,10 @@ +/** + * @file hkscs2004.h + * @brief HKSCS:2004 + * @copyright Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * HKSCS:2004 - */ +#ifndef _HKSCS2004_H_ +#define _HKSCS2004_H_ + +#include "reiconv_defines.h" static const unsigned short hkscs2004_2uni_page87[58] = { /* 0x87 */ @@ -74,36 +80,40 @@ static const ucs4_t hkscs2004_2uni_upages[78] = { 0x29000, 0x29800, 0x29900, 0x29e00, 0x2a100, 0x2a300, }; -static int -hkscs2004_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int hkscs2004_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 == 0x87) || (c1 >= 0x8c && c1 <= 0x8d)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - ucs4_t wc = 0xfffd; - unsigned short swc; - if (i < 1884) { - if (i < 1157) - swc = hkscs2004_2uni_page87[i-1099], - wc = hkscs2004_2uni_upages[swc>>8] | (swc & 0xff); - } else { - if (i < 2073) - swc = hkscs2004_2uni_page8c[i-1884], - wc = hkscs2004_2uni_upages[swc>>8] | (swc & 0xff); - } - if (wc != 0xfffd) { - *pwc = wc; - return 2; + unsigned char c1 = s[0]; + if ((c1 == 0x87) || (c1 >= 0x8c && c1 <= 0x8d)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + ucs4_t wc = 0xfffd; + unsigned short swc; + if (i < 1884) + { + if (i < 1157) + swc = hkscs2004_2uni_page87[i - 1099], wc = hkscs2004_2uni_upages[swc >> 8] | (swc & 0xff); + } + else + { + if (i < 2073) + swc = hkscs2004_2uni_page8c[i - 1884], wc = hkscs2004_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short hkscs2004_2charset[123] = { @@ -541,138 +551,152 @@ static const Summary16 hkscs2004_uni2indx_page2a3[6] = { { 122, 0x0000 }, { 122, 0x0002 }, }; -static int -hkscs2004_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int hkscs2004_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc < 0x21a00) { - if (wc < 0x6e00) { - if (wc >= 0x3400 && wc < 0x3450) - summary = &hkscs2004_uni2indx_page34[(wc>>4)-0x340]; - else if (wc >= 0x3600 && wc < 0x3980) - summary = &hkscs2004_uni2indx_page36[(wc>>4)-0x360]; - else if (wc >= 0x3b00 && wc < 0x3ba0) - summary = &hkscs2004_uni2indx_page3b[(wc>>4)-0x3b0]; - else if (wc >= 0x3d00 && wc < 0x3e00) - summary = &hkscs2004_uni2indx_page3d[(wc>>4)-0x3d0]; - else if (wc >= 0x3f00 && wc < 0x41f0) - summary = &hkscs2004_uni2indx_page3f[(wc>>4)-0x3f0]; - else if (wc >= 0x4300 && wc < 0x4750) - summary = &hkscs2004_uni2indx_page43[(wc>>4)-0x430]; - else if (wc >= 0x4a00 && wc < 0x4ab0) - summary = &hkscs2004_uni2indx_page4a[(wc>>4)-0x4a0]; - else if (wc >= 0x4c00 && wc < 0x4d90) - summary = &hkscs2004_uni2indx_page4c[(wc>>4)-0x4c0]; - else if (wc >= 0x4f00 && wc < 0x4fc0) - summary = &hkscs2004_uni2indx_page4f[(wc>>4)-0x4f0]; - else if (wc >= 0x5600 && wc < 0x5700) - summary = &hkscs2004_uni2indx_page56[(wc>>4)-0x560]; - else if (wc >= 0x5900 && wc < 0x5d80) - summary = &hkscs2004_uni2indx_page59[(wc>>4)-0x590]; - else if (wc >= 0x5f00 && wc < 0x5f40) - summary = &hkscs2004_uni2indx_page5f[(wc>>4)-0x5f0]; - else if (wc >= 0x6600 && wc < 0x6770) - summary = &hkscs2004_uni2indx_page66[(wc>>4)-0x660]; - } else { - if (wc >= 0x6e00 && wc < 0x6e60) - summary = &hkscs2004_uni2indx_page6e[(wc>>4)-0x6e0]; - else if (wc >= 0x7100 && wc < 0x7230) - summary = &hkscs2004_uni2indx_page71[(wc>>4)-0x710]; - else if (wc >= 0x7400 && wc < 0x74a0) - summary = &hkscs2004_uni2indx_page74[(wc>>4)-0x740]; - else if (wc >= 0x7900 && wc < 0x79d0) - summary = &hkscs2004_uni2indx_page79[(wc>>4)-0x790]; - else if (wc >= 0x7d00 && wc < 0x7da0) - summary = &hkscs2004_uni2indx_page7d[(wc>>4)-0x7d0]; - else if (wc >= 0x8100 && wc < 0x8170) - summary = &hkscs2004_uni2indx_page81[(wc>>4)-0x810]; - else if (wc >= 0x8500 && wc < 0x85a0) - summary = &hkscs2004_uni2indx_page85[(wc>>4)-0x850]; - else if (wc >= 0x8a00 && wc < 0x8b00) - summary = &hkscs2004_uni2indx_page8a[(wc>>4)-0x8a0]; - else if (wc >= 0x9700 && wc < 0x9860) - summary = &hkscs2004_uni2indx_page97[(wc>>4)-0x970]; - else if (wc >= 0x9f00 && wc < 0x9fc0) - summary = &hkscs2004_uni2indx_page9f[(wc>>4)-0x9f0]; - else if (wc >= 0x20100 && wc < 0x20240) - summary = &hkscs2004_uni2indx_page201[(wc>>4)-0x2010]; - else if (wc >= 0x20a00 && wc < 0x20ba0) - summary = &hkscs2004_uni2indx_page20a[(wc>>4)-0x20a0]; - } - } else { - if (wc < 0x26b00) { - if (wc >= 0x21a00 && wc < 0x21a70) - summary = &hkscs2004_uni2indx_page21a[(wc>>4)-0x21a0]; - else if (wc >= 0x21d00 && wc < 0x21e30) - summary = &hkscs2004_uni2indx_page21d[(wc>>4)-0x21d0]; - else if (wc >= 0x22100 && wc < 0x221d0) - summary = &hkscs2004_uni2indx_page221[(wc>>4)-0x2210]; - else if (wc >= 0x22700 && wc < 0x227a0) - summary = &hkscs2004_uni2indx_page227[(wc>>4)-0x2270]; - else if (wc >= 0x23200 && wc < 0x23260) - summary = &hkscs2004_uni2indx_page232[(wc>>4)-0x2320]; - else if (wc >= 0x23500 && wc < 0x23620) - summary = &hkscs2004_uni2indx_page235[(wc>>4)-0x2350]; - else if (wc >= 0x23b00 && wc < 0x23b20) - summary = &hkscs2004_uni2indx_page23b[(wc>>4)-0x23b0]; - else if (wc >= 0x23e00 && wc < 0x240f0) - summary = &hkscs2004_uni2indx_page23e[(wc>>4)-0x23e0]; - else if (wc >= 0x24200 && wc < 0x242c0) - summary = &hkscs2004_uni2indx_page242[(wc>>4)-0x2420]; - else if (wc >= 0x24b00 && wc < 0x24b10) - summary = &hkscs2004_uni2indx_page24b[(wc>>4)-0x24b0]; - else if (wc >= 0x25400 && wc < 0x254a0) - summary = &hkscs2004_uni2indx_page254[(wc>>4)-0x2540]; - else if (wc >= 0x25a00 && wc < 0x25a60) - summary = &hkscs2004_uni2indx_page25a[(wc>>4)-0x25a0]; - } else { - if (wc >= 0x26b00 && wc < 0x26c50) - summary = &hkscs2004_uni2indx_page26b[(wc>>4)-0x26b0]; - else if (wc >= 0x26e00 && wc < 0x26e90) - summary = &hkscs2004_uni2indx_page26e[(wc>>4)-0x26e0]; - else if (wc >= 0x27000 && wc < 0x270e0) - summary = &hkscs2004_uni2indx_page270[(wc>>4)-0x2700]; - else if (wc >= 0x27200 && wc < 0x27400) - summary = &hkscs2004_uni2indx_page272[(wc>>4)-0x2720]; - else if (wc >= 0x27b00 && wc < 0x27cd0) - summary = &hkscs2004_uni2indx_page27b[(wc>>4)-0x27b0]; - else if (wc >= 0x28600 && wc < 0x286c0) - summary = &hkscs2004_uni2indx_page286[(wc>>4)-0x2860]; - else if (wc >= 0x28900 && wc < 0x28970) - summary = &hkscs2004_uni2indx_page289[(wc>>4)-0x2890]; - else if (wc >= 0x28b00 && wc < 0x28bc0) - summary = &hkscs2004_uni2indx_page28b[(wc>>4)-0x28b0]; - else if (wc >= 0x29000 && wc < 0x29080) - summary = &hkscs2004_uni2indx_page290[(wc>>4)-0x2900]; - else if (wc >= 0x29800 && wc < 0x29950) - summary = &hkscs2004_uni2indx_page298[(wc>>4)-0x2980]; - else if (wc >= 0x29e00 && wc < 0x29ec0) - summary = &hkscs2004_uni2indx_page29e[(wc>>4)-0x29e0]; - else if (wc >= 0x2a100 && wc < 0x2a1c0) - summary = &hkscs2004_uni2indx_page2a1[(wc>>4)-0x2a10]; - else if (wc >= 0x2a300 && wc < 0x2a360) - summary = &hkscs2004_uni2indx_page2a3[(wc>>4)-0x2a30]; - } - } - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = hkscs2004_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc < 0x21a00) + { + if (wc < 0x6e00) + { + if (wc >= 0x3400 && wc < 0x3450) + summary = &hkscs2004_uni2indx_page34[(wc >> 4) - 0x340]; + else if (wc >= 0x3600 && wc < 0x3980) + summary = &hkscs2004_uni2indx_page36[(wc >> 4) - 0x360]; + else if (wc >= 0x3b00 && wc < 0x3ba0) + summary = &hkscs2004_uni2indx_page3b[(wc >> 4) - 0x3b0]; + else if (wc >= 0x3d00 && wc < 0x3e00) + summary = &hkscs2004_uni2indx_page3d[(wc >> 4) - 0x3d0]; + else if (wc >= 0x3f00 && wc < 0x41f0) + summary = &hkscs2004_uni2indx_page3f[(wc >> 4) - 0x3f0]; + else if (wc >= 0x4300 && wc < 0x4750) + summary = &hkscs2004_uni2indx_page43[(wc >> 4) - 0x430]; + else if (wc >= 0x4a00 && wc < 0x4ab0) + summary = &hkscs2004_uni2indx_page4a[(wc >> 4) - 0x4a0]; + else if (wc >= 0x4c00 && wc < 0x4d90) + summary = &hkscs2004_uni2indx_page4c[(wc >> 4) - 0x4c0]; + else if (wc >= 0x4f00 && wc < 0x4fc0) + summary = &hkscs2004_uni2indx_page4f[(wc >> 4) - 0x4f0]; + else if (wc >= 0x5600 && wc < 0x5700) + summary = &hkscs2004_uni2indx_page56[(wc >> 4) - 0x560]; + else if (wc >= 0x5900 && wc < 0x5d80) + summary = &hkscs2004_uni2indx_page59[(wc >> 4) - 0x590]; + else if (wc >= 0x5f00 && wc < 0x5f40) + summary = &hkscs2004_uni2indx_page5f[(wc >> 4) - 0x5f0]; + else if (wc >= 0x6600 && wc < 0x6770) + summary = &hkscs2004_uni2indx_page66[(wc >> 4) - 0x660]; + } + else + { + if (wc >= 0x6e00 && wc < 0x6e60) + summary = &hkscs2004_uni2indx_page6e[(wc >> 4) - 0x6e0]; + else if (wc >= 0x7100 && wc < 0x7230) + summary = &hkscs2004_uni2indx_page71[(wc >> 4) - 0x710]; + else if (wc >= 0x7400 && wc < 0x74a0) + summary = &hkscs2004_uni2indx_page74[(wc >> 4) - 0x740]; + else if (wc >= 0x7900 && wc < 0x79d0) + summary = &hkscs2004_uni2indx_page79[(wc >> 4) - 0x790]; + else if (wc >= 0x7d00 && wc < 0x7da0) + summary = &hkscs2004_uni2indx_page7d[(wc >> 4) - 0x7d0]; + else if (wc >= 0x8100 && wc < 0x8170) + summary = &hkscs2004_uni2indx_page81[(wc >> 4) - 0x810]; + else if (wc >= 0x8500 && wc < 0x85a0) + summary = &hkscs2004_uni2indx_page85[(wc >> 4) - 0x850]; + else if (wc >= 0x8a00 && wc < 0x8b00) + summary = &hkscs2004_uni2indx_page8a[(wc >> 4) - 0x8a0]; + else if (wc >= 0x9700 && wc < 0x9860) + summary = &hkscs2004_uni2indx_page97[(wc >> 4) - 0x970]; + else if (wc >= 0x9f00 && wc < 0x9fc0) + summary = &hkscs2004_uni2indx_page9f[(wc >> 4) - 0x9f0]; + else if (wc >= 0x20100 && wc < 0x20240) + summary = &hkscs2004_uni2indx_page201[(wc >> 4) - 0x2010]; + else if (wc >= 0x20a00 && wc < 0x20ba0) + summary = &hkscs2004_uni2indx_page20a[(wc >> 4) - 0x20a0]; + } + } + else + { + if (wc < 0x26b00) + { + if (wc >= 0x21a00 && wc < 0x21a70) + summary = &hkscs2004_uni2indx_page21a[(wc >> 4) - 0x21a0]; + else if (wc >= 0x21d00 && wc < 0x21e30) + summary = &hkscs2004_uni2indx_page21d[(wc >> 4) - 0x21d0]; + else if (wc >= 0x22100 && wc < 0x221d0) + summary = &hkscs2004_uni2indx_page221[(wc >> 4) - 0x2210]; + else if (wc >= 0x22700 && wc < 0x227a0) + summary = &hkscs2004_uni2indx_page227[(wc >> 4) - 0x2270]; + else if (wc >= 0x23200 && wc < 0x23260) + summary = &hkscs2004_uni2indx_page232[(wc >> 4) - 0x2320]; + else if (wc >= 0x23500 && wc < 0x23620) + summary = &hkscs2004_uni2indx_page235[(wc >> 4) - 0x2350]; + else if (wc >= 0x23b00 && wc < 0x23b20) + summary = &hkscs2004_uni2indx_page23b[(wc >> 4) - 0x23b0]; + else if (wc >= 0x23e00 && wc < 0x240f0) + summary = &hkscs2004_uni2indx_page23e[(wc >> 4) - 0x23e0]; + else if (wc >= 0x24200 && wc < 0x242c0) + summary = &hkscs2004_uni2indx_page242[(wc >> 4) - 0x2420]; + else if (wc >= 0x24b00 && wc < 0x24b10) + summary = &hkscs2004_uni2indx_page24b[(wc >> 4) - 0x24b0]; + else if (wc >= 0x25400 && wc < 0x254a0) + summary = &hkscs2004_uni2indx_page254[(wc >> 4) - 0x2540]; + else if (wc >= 0x25a00 && wc < 0x25a60) + summary = &hkscs2004_uni2indx_page25a[(wc >> 4) - 0x25a0]; + } + else + { + if (wc >= 0x26b00 && wc < 0x26c50) + summary = &hkscs2004_uni2indx_page26b[(wc >> 4) - 0x26b0]; + else if (wc >= 0x26e00 && wc < 0x26e90) + summary = &hkscs2004_uni2indx_page26e[(wc >> 4) - 0x26e0]; + else if (wc >= 0x27000 && wc < 0x270e0) + summary = &hkscs2004_uni2indx_page270[(wc >> 4) - 0x2700]; + else if (wc >= 0x27200 && wc < 0x27400) + summary = &hkscs2004_uni2indx_page272[(wc >> 4) - 0x2720]; + else if (wc >= 0x27b00 && wc < 0x27cd0) + summary = &hkscs2004_uni2indx_page27b[(wc >> 4) - 0x27b0]; + else if (wc >= 0x28600 && wc < 0x286c0) + summary = &hkscs2004_uni2indx_page286[(wc >> 4) - 0x2860]; + else if (wc >= 0x28900 && wc < 0x28970) + summary = &hkscs2004_uni2indx_page289[(wc >> 4) - 0x2890]; + else if (wc >= 0x28b00 && wc < 0x28bc0) + summary = &hkscs2004_uni2indx_page28b[(wc >> 4) - 0x28b0]; + else if (wc >= 0x29000 && wc < 0x29080) + summary = &hkscs2004_uni2indx_page290[(wc >> 4) - 0x2900]; + else if (wc >= 0x29800 && wc < 0x29950) + summary = &hkscs2004_uni2indx_page298[(wc >> 4) - 0x2980]; + else if (wc >= 0x29e00 && wc < 0x29ec0) + summary = &hkscs2004_uni2indx_page29e[(wc >> 4) - 0x29e0]; + else if (wc >= 0x2a100 && wc < 0x2a1c0) + summary = &hkscs2004_uni2indx_page2a1[(wc >> 4) - 0x2a10]; + else if (wc >= 0x2a300 && wc < 0x2a360) + summary = &hkscs2004_uni2indx_page2a3[(wc >> 4) - 0x2a30]; + } + } + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = hkscs2004_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _HKSCS2004_H_ */ diff --git a/lib/converters/hkscs2008.h b/lib/converters/hkscs2008.h index b25229f1..d6bd22a0 100644 --- a/lib/converters/hkscs2008.h +++ b/lib/converters/hkscs2008.h @@ -1,5 +1,10 @@ +/** + * @file hkscs2008.h + * @brief HKSCS:2008 + * @copyright Copyright (C) 1999-2010, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2010, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * HKSCS:2008 - */ +#ifndef _HKSCS2008_H_ +#define _HKSCS2008_H_ + +#include "reiconv_defines.h" static const unsigned short hkscs2008_2uni_page87[126] = { /* 0x87 */ @@ -51,32 +57,34 @@ static const ucs4_t hkscs2008_2uni_upages[50] = { 0x28900, 0x2ad00, }; -static int -hkscs2008_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int hkscs2008_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if (c1 == (unsigned char)0x87) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { - unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); - ucs4_t wc = 0xfffd; - unsigned short swc; + unsigned char c1 = s[0]; + if (c1 == (unsigned char)0x87) + { + if (n >= 2) { - if (i < 1225) - swc = hkscs2008_2uni_page87[i-1099], - wc = hkscs2008_2uni_upages[swc>>8] | (swc & 0xff); + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) + { + unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); + ucs4_t wc = 0xfffd; + unsigned short swc; + { + if (i < 1225) + swc = hkscs2008_2uni_page87[i - 1099], wc = hkscs2008_2uni_upages[swc >> 8] | (swc & 0xff); + } + if (wc != 0xfffd) + { + *pwc = wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short hkscs2008_2charset[68] = { @@ -362,105 +370,110 @@ static const Summary16 hkscs2008_uni2indx_page2ad[16] = { { 67, 0x0000 }, { 67, 0x0000 }, { 67, 0x0000 }, { 67, 0x8000 }, }; -static int -hkscs2008_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int hkscs2008_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x3400 && wc < 0x34f0) - summary = &hkscs2008_uni2indx_page34[(wc>>4)-0x340]; - else if (wc >= 0x3800 && wc < 0x3880) - summary = &hkscs2008_uni2indx_page38[(wc>>4)-0x380]; - else if (wc >= 0x3a00 && wc < 0x3b00) - summary = &hkscs2008_uni2indx_page3a[(wc>>4)-0x3a0]; - else if (wc >= 0x3e00 && wc < 0x3ef0) - summary = &hkscs2008_uni2indx_page3e[(wc>>4)-0x3e0]; - else if (wc >= 0x4000 && wc < 0x4190) - summary = &hkscs2008_uni2indx_page40[(wc>>4)-0x400]; - else if (wc >= 0x4300 && wc < 0x44f0) - summary = &hkscs2008_uni2indx_page43[(wc>>4)-0x430]; - else if (wc >= 0x4600 && wc < 0x46b0) - summary = &hkscs2008_uni2indx_page46[(wc>>4)-0x460]; - else if (wc >= 0x4900 && wc < 0x4940) - summary = &hkscs2008_uni2indx_page49[(wc>>4)-0x490]; - else if (wc >= 0x5200 && wc < 0x5250) - summary = &hkscs2008_uni2indx_page52[(wc>>4)-0x520]; - else if (wc >= 0x5400 && wc < 0x5450) - summary = &hkscs2008_uni2indx_page54[(wc>>4)-0x540]; - else if (wc >= 0x5700 && wc < 0x58a0) - summary = &hkscs2008_uni2indx_page57[(wc>>4)-0x570]; - else if (wc >= 0x6200 && wc < 0x62d0) - summary = &hkscs2008_uni2indx_page62[(wc>>4)-0x620]; - else if (wc >= 0x6600 && wc < 0x6790) - summary = &hkscs2008_uni2indx_page66[(wc>>4)-0x660]; - else if (wc >= 0x6a00 && wc < 0x6a30) - summary = &hkscs2008_uni2indx_page6a[(wc>>4)-0x6a0]; - else if (wc >= 0x7000 && wc < 0x7070) - summary = &hkscs2008_uni2indx_page70[(wc>>4)-0x700]; - else if (wc >= 0x7300 && wc < 0x74d0) - summary = &hkscs2008_uni2indx_page73[(wc>>4)-0x730]; - else if (wc >= 0x7900 && wc < 0x7bd0) - summary = &hkscs2008_uni2indx_page79[(wc>>4)-0x790]; - else if (wc >= 0x8400 && wc < 0x8620) - summary = &hkscs2008_uni2indx_page84[(wc>>4)-0x840]; - else if (wc >= 0x8800 && wc < 0x88a0) - summary = &hkscs2008_uni2indx_page88[(wc>>4)-0x880]; - else if (wc >= 0x8b00 && wc < 0x8b90) - summary = &hkscs2008_uni2indx_page8b[(wc>>4)-0x8b0]; - else if (wc >= 0x9000 && wc < 0x9050) - summary = &hkscs2008_uni2indx_page90[(wc>>4)-0x900]; - else if (wc >= 0x9200 && wc < 0x9220) - summary = &hkscs2008_uni2indx_page92[(wc>>4)-0x920]; - else if (wc >= 0x9400 && wc < 0x9430) - summary = &hkscs2008_uni2indx_page94[(wc>>4)-0x940]; - else if (wc >= 0x9700 && wc < 0x9750) - summary = &hkscs2008_uni2indx_page97[(wc>>4)-0x970]; - else if (wc >= 0x9f00 && wc < 0x9fd0) - summary = &hkscs2008_uni2indx_page9f[(wc>>4)-0x9f0]; - else if (wc >= 0x20a00 && wc < 0x20a90) - summary = &hkscs2008_uni2indx_page20a[(wc>>4)-0x20a0]; - else if (wc >= 0x21d00 && wc < 0x21d60) - summary = &hkscs2008_uni2indx_page21d[(wc>>4)-0x21d0]; - else if (wc >= 0x22400 && wc < 0x224d0) - summary = &hkscs2008_uni2indx_page224[(wc>>4)-0x2240]; - else if (wc >= 0x23100 && wc < 0x23260) - summary = &hkscs2008_uni2indx_page231[(wc>>4)-0x2310]; - else if (wc >= 0x23500 && wc < 0x236a0) - summary = &hkscs2008_uni2indx_page235[(wc>>4)-0x2350]; - else if (wc >= 0x24100 && wc < 0x24170) - summary = &hkscs2008_uni2indx_page241[(wc>>4)-0x2410]; - else if (wc >= 0x25800 && wc < 0x258e0) - summary = &hkscs2008_uni2indx_page258[(wc>>4)-0x2580]; - else if (wc >= 0x25d00 && wc < 0x25dc0) - summary = &hkscs2008_uni2indx_page25d[(wc>>4)-0x25d0]; - else if (wc >= 0x26000 && wc < 0x26030) - summary = &hkscs2008_uni2indx_page260[(wc>>4)-0x2600]; - else if (wc >= 0x26e00 && wc < 0x26e90) - summary = &hkscs2008_uni2indx_page26e[(wc>>4)-0x26e0]; - else if (wc >= 0x27b00 && wc < 0x27b70) - summary = &hkscs2008_uni2indx_page27b[(wc>>4)-0x27b0]; - else if (wc >= 0x28900 && wc < 0x28910) - summary = &hkscs2008_uni2indx_page289[(wc>>4)-0x2890]; - else if (wc >= 0x2ad00 && wc < 0x2ae00) - summary = &hkscs2008_uni2indx_page2ad[(wc>>4)-0x2ad0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = hkscs2008_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x3400 && wc < 0x34f0) + summary = &hkscs2008_uni2indx_page34[(wc >> 4) - 0x340]; + else if (wc >= 0x3800 && wc < 0x3880) + summary = &hkscs2008_uni2indx_page38[(wc >> 4) - 0x380]; + else if (wc >= 0x3a00 && wc < 0x3b00) + summary = &hkscs2008_uni2indx_page3a[(wc >> 4) - 0x3a0]; + else if (wc >= 0x3e00 && wc < 0x3ef0) + summary = &hkscs2008_uni2indx_page3e[(wc >> 4) - 0x3e0]; + else if (wc >= 0x4000 && wc < 0x4190) + summary = &hkscs2008_uni2indx_page40[(wc >> 4) - 0x400]; + else if (wc >= 0x4300 && wc < 0x44f0) + summary = &hkscs2008_uni2indx_page43[(wc >> 4) - 0x430]; + else if (wc >= 0x4600 && wc < 0x46b0) + summary = &hkscs2008_uni2indx_page46[(wc >> 4) - 0x460]; + else if (wc >= 0x4900 && wc < 0x4940) + summary = &hkscs2008_uni2indx_page49[(wc >> 4) - 0x490]; + else if (wc >= 0x5200 && wc < 0x5250) + summary = &hkscs2008_uni2indx_page52[(wc >> 4) - 0x520]; + else if (wc >= 0x5400 && wc < 0x5450) + summary = &hkscs2008_uni2indx_page54[(wc >> 4) - 0x540]; + else if (wc >= 0x5700 && wc < 0x58a0) + summary = &hkscs2008_uni2indx_page57[(wc >> 4) - 0x570]; + else if (wc >= 0x6200 && wc < 0x62d0) + summary = &hkscs2008_uni2indx_page62[(wc >> 4) - 0x620]; + else if (wc >= 0x6600 && wc < 0x6790) + summary = &hkscs2008_uni2indx_page66[(wc >> 4) - 0x660]; + else if (wc >= 0x6a00 && wc < 0x6a30) + summary = &hkscs2008_uni2indx_page6a[(wc >> 4) - 0x6a0]; + else if (wc >= 0x7000 && wc < 0x7070) + summary = &hkscs2008_uni2indx_page70[(wc >> 4) - 0x700]; + else if (wc >= 0x7300 && wc < 0x74d0) + summary = &hkscs2008_uni2indx_page73[(wc >> 4) - 0x730]; + else if (wc >= 0x7900 && wc < 0x7bd0) + summary = &hkscs2008_uni2indx_page79[(wc >> 4) - 0x790]; + else if (wc >= 0x8400 && wc < 0x8620) + summary = &hkscs2008_uni2indx_page84[(wc >> 4) - 0x840]; + else if (wc >= 0x8800 && wc < 0x88a0) + summary = &hkscs2008_uni2indx_page88[(wc >> 4) - 0x880]; + else if (wc >= 0x8b00 && wc < 0x8b90) + summary = &hkscs2008_uni2indx_page8b[(wc >> 4) - 0x8b0]; + else if (wc >= 0x9000 && wc < 0x9050) + summary = &hkscs2008_uni2indx_page90[(wc >> 4) - 0x900]; + else if (wc >= 0x9200 && wc < 0x9220) + summary = &hkscs2008_uni2indx_page92[(wc >> 4) - 0x920]; + else if (wc >= 0x9400 && wc < 0x9430) + summary = &hkscs2008_uni2indx_page94[(wc >> 4) - 0x940]; + else if (wc >= 0x9700 && wc < 0x9750) + summary = &hkscs2008_uni2indx_page97[(wc >> 4) - 0x970]; + else if (wc >= 0x9f00 && wc < 0x9fd0) + summary = &hkscs2008_uni2indx_page9f[(wc >> 4) - 0x9f0]; + else if (wc >= 0x20a00 && wc < 0x20a90) + summary = &hkscs2008_uni2indx_page20a[(wc >> 4) - 0x20a0]; + else if (wc >= 0x21d00 && wc < 0x21d60) + summary = &hkscs2008_uni2indx_page21d[(wc >> 4) - 0x21d0]; + else if (wc >= 0x22400 && wc < 0x224d0) + summary = &hkscs2008_uni2indx_page224[(wc >> 4) - 0x2240]; + else if (wc >= 0x23100 && wc < 0x23260) + summary = &hkscs2008_uni2indx_page231[(wc >> 4) - 0x2310]; + else if (wc >= 0x23500 && wc < 0x236a0) + summary = &hkscs2008_uni2indx_page235[(wc >> 4) - 0x2350]; + else if (wc >= 0x24100 && wc < 0x24170) + summary = &hkscs2008_uni2indx_page241[(wc >> 4) - 0x2410]; + else if (wc >= 0x25800 && wc < 0x258e0) + summary = &hkscs2008_uni2indx_page258[(wc >> 4) - 0x2580]; + else if (wc >= 0x25d00 && wc < 0x25dc0) + summary = &hkscs2008_uni2indx_page25d[(wc >> 4) - 0x25d0]; + else if (wc >= 0x26000 && wc < 0x26030) + summary = &hkscs2008_uni2indx_page260[(wc >> 4) - 0x2600]; + else if (wc >= 0x26e00 && wc < 0x26e90) + summary = &hkscs2008_uni2indx_page26e[(wc >> 4) - 0x26e0]; + else if (wc >= 0x27b00 && wc < 0x27b70) + summary = &hkscs2008_uni2indx_page27b[(wc >> 4) - 0x27b0]; + else if (wc >= 0x28900 && wc < 0x28910) + summary = &hkscs2008_uni2indx_page289[(wc >> 4) - 0x2890]; + else if (wc >= 0x2ad00 && wc < 0x2ae00) + summary = &hkscs2008_uni2indx_page2ad[(wc >> 4) - 0x2ad0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = hkscs2008_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _HKSCS2008_H_ */ diff --git a/lib/converters/hp_roman8.h b/lib/converters/hp_roman8.h index 9c13e3f4..9b72760c 100644 --- a/lib/converters/hp_roman8.h +++ b/lib/converters/hp_roman8.h @@ -1,5 +1,10 @@ +/** + * @file hp_roman8.h + * @brief HP-ROMAN8 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * HP-ROMAN8 - */ +#ifndef _HP_ROMAN8_H_ +#define _HP_ROMAN8_H_ + +#include "reiconv_defines.h" static const unsigned short hp_roman8_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short hp_roman8_2uni[96] = { 0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, 0xfffd, }; -static int -hp_roman8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int hp_roman8_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = hp_roman8_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = hp_roman8_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char hp_roman8_page00[96] = { @@ -90,29 +98,32 @@ static const unsigned char hp_roman8_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -hp_roman8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int hp_roman8_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = hp_roman8_page00[wc-0x00a0]; - else if (wc >= 0x0160 && wc < 0x0198) - c = hp_roman8_page01[wc-0x0160]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = hp_roman8_page02[wc-0x02c0]; - else if (wc == 0x2014) - c = 0xf6; - else if (wc == 0x20a4) - c = 0xaf; - else if (wc == 0x25a0) - c = 0xfc; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = hp_roman8_page00[wc - 0x00a0]; + else if (wc >= 0x0160 && wc < 0x0198) + c = hp_roman8_page01[wc - 0x0160]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = hp_roman8_page02[wc - 0x02c0]; + else if (wc == 0x2014) + c = 0xf6; + else if (wc == 0x20a4) + c = 0xaf; + else if (wc == 0x25a0) + c = 0xfc; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _HP_ROMAN8_H_ */ diff --git a/lib/converters/hz.h b/lib/converters/hz.h index bc7fd5d5..583fdf7b 100644 --- a/lib/converters/hz.h +++ b/lib/converters/hz.h @@ -1,5 +1,10 @@ +/** + * @file hz.h + * @brief HZ + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,13 @@ * If not, see . */ -/* - * HZ - */ +#ifndef _HZ_H_ +#define _HZ_H_ + +#include "converters/ascii.h" +#include "converters/gb2312.h" +#include "reiconv_defines.h" +#include /* Specification: RFC 1842, RFC 1843 */ @@ -27,137 +36,162 @@ * The state is 1 in GB mode, 0 in ASCII mode. */ -static int -hz_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int hz_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - unsigned int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == '~') { - if (n < count+2) - goto none; - c = s[1]; - if (state == 0) { - if (c == '~') { - *pwc = (ucs4_t) '~'; - conv->istate = state; - return count+2; + state_t state = conv->istate; + unsigned int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == '~') + { + if (n < count + 2) + goto none; + c = s[1]; + if (state == 0) + { + if (c == '~') + { + *pwc = (ucs4_t)'~'; + conv->istate = state; + return count + 2; + } + if (c == '{') + { + state = 1; + s += 2; + count += 2; + if (n < count + 1) + goto none; + continue; + } + if (c == '\n') + { + s += 2; + count += 2; + if (n < count + 1) + goto none; + continue; + } + } + else + { + if (c == '}') + { + state = 0; + s += 2; + count += 2; + if (n < count + 1) + goto none; + continue; + } + } + goto ilseq; } - if (c == '{') { - state = 1; - s += 2; count += 2; - if (n < count+1) - goto none; - continue; - } - if (c == '\n') { - s += 2; count += 2; - if (n < count+1) - goto none; - continue; - } - } else { - if (c == '}') { - state = 0; - s += 2; count += 2; - if (n < count+1) + break; + } + if (state == 0) + { + *pwc = (ucs4_t)c; + conv->istate = state; + return count + 1; + } + else + { + int ret; + if (n < count + 2) goto none; - continue; - } - } - goto ilseq; + ret = gb2312_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + conv->istate = state; + return count + 2; } - break; - } - if (state == 0) { - *pwc = (ucs4_t) c; - conv->istate = state; - return count+1; - } else { - int ret; - if (n < count+2) - goto none; - ret = gb2312_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - conv->istate = state; - return count+2; - } none: - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); ilseq: - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -hz_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int hz_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - unsigned char buf[2]; - int ret; + state_t state = conv->ostate; + unsigned char buf[2]; + int ret; - /* Code set 0 (ASCII or GB 1988-89) */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state ? 3 : 1); - if (n < count) - return RET_TOOSMALL; - if (state) { - r[0] = '~'; - r[1] = '}'; - r += 2; - state = 0; - } - r[0] = buf[0]; - conv->ostate = state; - return count; + /* Code set 0 (ASCII or GB 1988-89) */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state ? 3 : 1); + if (n < count) + return RET_TOOSMALL; + if (state) + { + r[0] = '~'; + r[1] = '}'; + r += 2; + state = 0; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } } - } - /* Code set 1 (GB 2312-1980) */ - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state ? 2 : 4); - if (n < count) - return RET_TOOSMALL; - if (!state) { - r[0] = '~'; - r[1] = '{'; - r += 2; - state = 1; - } - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = state; - return count; + /* Code set 1 (GB 2312-1980) */ + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state ? 2 : 4); + if (n < count) + return RET_TOOSMALL; + if (!state) + { + r[0] = '~'; + r[1] = '{'; + r += 2; + state = 1; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -hz_reset (conv_t conv, unsigned char *r, size_t n) +static int hz_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - if (state) { - if (n < 2) - return RET_TOOSMALL; - r[0] = '~'; - r[1] = '}'; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + state_t state = conv->ostate; + if (state) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = '~'; + r[1] = '}'; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _HZ_H_ */ diff --git a/lib/converters/iso2022_cn.h b/lib/converters/iso2022_cn.h index dc90d88d..2110bc60 100644 --- a/lib/converters/iso2022_cn.h +++ b/lib/converters/iso2022_cn.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_cn.h + * @brief ISO-2022-CN + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,299 +22,356 @@ * If not, see . */ -/* - * ISO-2022-CN - */ +#ifndef _ISO2022_CN_H_ +#define _ISO2022_CN_H_ + +#include "converters/ascii.h" +#include "converters/cns11643.h" +#include "converters/cns11643_1.h" +#include "converters/cns11643_2.h" +#include "converters/gb2312.h" +#include "reiconv_defines.h" +#include /* Specification: RFC 1922 */ #define ESC 0x1b -#define SO 0x0e -#define SI 0x0f +#define SO 0x0e +#define SI 0x0f /* * The state is composed of one of the following values */ -#define STATE_ASCII 0 -#define STATE_TWOBYTE 1 +#define STATE_ASCII 0 +#define STATE_TWOBYTE 1 /* * and one of the following values, << 8 */ -#define STATE2_NONE 0 -#define STATE2_DESIGNATED_GB2312 1 -#define STATE2_DESIGNATED_CNS11643_1 2 +#define STATE2_NONE 0 +#define STATE2_DESIGNATED_GB2312 1 +#define STATE2_DESIGNATED_CNS11643_1 2 /* * and one of the following values, << 16 */ -#define STATE3_NONE 0 -#define STATE3_DESIGNATED_CNS11643_2 1 +#define STATE3_NONE 0 +#define STATE3_DESIGNATED_CNS11643_2 1 -#define SPLIT_STATE \ - unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = state >> 16 -#define COMBINE_STATE \ - state = (state3 << 16) | (state2 << 8) | state1 +#define SPLIT_STATE unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = state >> 16 +#define COMBINE_STATE state = (state3 << 16) | (state2 << 8) | state1 -static int -iso2022_cn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_cn_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - SPLIT_STATE; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+4) - goto none; - if (s[1] == '$') { - if (s[2] == ')') { - if (s[3] == 'A') { - state2 = STATE2_DESIGNATED_GB2312; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'G') { - state2 = STATE2_DESIGNATED_CNS11643_1; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } + state_t state = conv->istate; + SPLIT_STATE; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 4) + goto none; + if (s[1] == '$') + { + if (s[2] == ')') + { + if (s[3] == 'A') + { + state2 = STATE2_DESIGNATED_GB2312; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'G') + { + state2 = STATE2_DESIGNATED_CNS11643_1; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + if (s[2] == '*') + { + if (s[3] == 'H') + { + state3 = STATE3_DESIGNATED_CNS11643_2; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + } + if (s[1] == 'N') + { + switch (state3) + { + case STATE3_NONE: + goto ilseq; + case STATE3_DESIGNATED_CNS11643_2: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_2_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + default: + abort(); + } + } + goto ilseq; } - if (s[2] == '*') { - if (s[3] == 'H') { - state3 = STATE3_DESIGNATED_CNS11643_2; - s += 4; count += 4; - if (n < count+1) - goto none; + if (c == SO) + { + if (state2 != STATE2_DESIGNATED_GB2312 && state2 != STATE2_DESIGNATED_CNS11643_1) + goto ilseq; + state1 = STATE_TWOBYTE; + s++; + count++; + if (n < count + 1) + goto none; continue; - } } - } - if (s[1] == 'N') { - switch (state3) { - case STATE3_NONE: - goto ilseq; - case STATE3_DESIGNATED_CNS11643_2: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_2_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - default: abort(); + if (c == SI) + { + state1 = STATE_ASCII; + s++; + count++; + if (n < count + 1) + goto none; + continue; } - } - goto ilseq; - } - if (c == SO) { - if (state2 != STATE2_DESIGNATED_GB2312 && state2 != STATE2_DESIGNATED_CNS11643_1) - goto ilseq; - state1 = STATE_TWOBYTE; - s++; count++; - if (n < count+1) - goto none; - continue; + break; } - if (c == SI) { - state1 = STATE_ASCII; - s++; count++; - if (n < count+1) - goto none; - continue; - } - break; - } - switch (state1) { + switch (state1) + { case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - if (*pwc == 0x000a || *pwc == 0x000d) { - state2 = STATE2_NONE; state3 = STATE3_NONE; + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + if (*pwc == 0x000a || *pwc == 0x000d) + { + state2 = STATE2_NONE; + state3 = STATE3_NONE; + } + COMBINE_STATE; + conv->istate = state; + return count + 1; } - COMBINE_STATE; - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_TWOBYTE: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret; - switch (state2) { - case STATE2_NONE: + else goto ilseq; - case STATE2_DESIGNATED_GB2312: - ret = gb2312_mbtowc(conv,pwc,s,2); break; - case STATE2_DESIGNATED_CNS11643_1: - ret = cns11643_1_mbtowc(conv,pwc,s,2); break; - default: abort(); + case STATE_TWOBYTE: + if (n < count + 2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret; + switch (state2) + { + case STATE2_NONE: + goto ilseq; + case STATE2_DESIGNATED_GB2312: + ret = gb2312_mbtowc(conv, pwc, s, 2); + break; + case STATE2_DESIGNATED_CNS11643_1: + ret = cns11643_1_mbtowc(conv, pwc, s, 2); + break; + default: + abort(); + } + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; } - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } + else + goto ilseq; + default: + abort(); + } none: - COMBINE_STATE; - conv->istate = state; - return RET_TOOFEW(count); + COMBINE_STATE; + conv->istate = state; + return RET_TOOFEW(count); ilseq: - COMBINE_STATE; - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + COMBINE_STATE; + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -iso2022_cn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso2022_cn_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - unsigned char buf[3]; - int ret; + state_t state = conv->ostate; + SPLIT_STATE; + unsigned char buf[3]; + int ret; - /* There is no need to handle Unicode 3.1 tag characters and to look for - "zh-CN" or "zh-TW" tags, because GB2312 and CNS11643 are disjoint. */ + /* There is no need to handle Unicode 3.1 tag characters and to look for + "zh-CN" or "zh-TW" tags, because GB2312 and CNS11643 are disjoint. */ - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state1 == STATE_ASCII ? 1 : 2); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_ASCII) { - r[0] = SI; - r += 1; - state1 = STATE_ASCII; - } - r[0] = buf[0]; - if (wc == 0x000a || wc == 0x000d) { - state2 = STATE2_NONE; state3 = STATE3_NONE; - } - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state1 == STATE_ASCII ? 1 : 2); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_ASCII) + { + r[0] = SI; + r += 1; + state1 = STATE_ASCII; + } + r[0] = buf[0]; + if (wc == 0x000a || wc == 0x000d) + { + state2 = STATE2_NONE; + state3 = STATE3_NONE; + } + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - /* Try GB 2312-1980. */ - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state2 == STATE2_DESIGNATED_GB2312 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_GB2312) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'A'; - r += 4; - state2 = STATE2_DESIGNATED_GB2312; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try GB 2312-1980. */ + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state2 == STATE2_DESIGNATED_GB2312 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_GB2312) + { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'A'; + r += 4; + state2 = STATE2_DESIGNATED_GB2312; + } + if (state1 != STATE_TWOBYTE) + { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - ret = cns11643_wctomb(conv,buf,wc,3); - if (ret != RET_ILUNI) { - if (ret != 3) abort(); + ret = cns11643_wctomb(conv, buf, wc, 3); + if (ret != RET_ILUNI) + { + if (ret != 3) + abort(); - /* Try CNS 11643-1992 Plane 1. */ - if (buf[0] == 1 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state2 == STATE2_DESIGNATED_CNS11643_1 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_CNS11643_1) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'G'; - r += 4; - state2 = STATE2_DESIGNATED_CNS11643_1; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - r[0] = buf[1]; - r[1] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 1. */ + if (buf[0] == 1 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state2 == STATE2_DESIGNATED_CNS11643_1 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_CNS11643_1) + { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'G'; + r += 4; + state2 = STATE2_DESIGNATED_CNS11643_1; + } + if (state1 != STATE_TWOBYTE) + { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[1]; + r[1] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 2. */ - if (buf[0] == 2 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state3 == STATE3_DESIGNATED_CNS11643_2 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state3 != STATE3_DESIGNATED_CNS11643_2) { - r[0] = ESC; - r[1] = '$'; - r[2] = '*'; - r[3] = 'H'; - r += 4; - state3 = STATE3_DESIGNATED_CNS11643_2; - } - r[0] = ESC; - r[1] = 'N'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try CNS 11643-1992 Plane 2. */ + if (buf[0] == 2 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state3 == STATE3_DESIGNATED_CNS11643_2 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state3 != STATE3_DESIGNATED_CNS11643_2) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '*'; + r[3] = 'H'; + r += 4; + state3 = STATE3_DESIGNATED_CNS11643_2; + } + r[0] = ESC; + r[1] = 'N'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_cn_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_cn_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - (void)state2; - (void)state3; - if (state1 != STATE_ASCII) { - if (n < 1) - return RET_TOOSMALL; - r[0] = SI; - /* conv->ostate = 0; will be done by the caller */ - return 1; - } else - return 0; + state_t state = conv->ostate; + SPLIT_STATE; + (void)state2; + (void)state3; + if (state1 != STATE_ASCII) + { + if (n < 1) + return RET_TOOSMALL; + r[0] = SI; + /* conv->ostate = 0; will be done by the caller */ + return 1; + } + else + return 0; } #undef COMBINE_STATE @@ -321,3 +383,5 @@ iso2022_cn_reset (conv_t conv, unsigned char *r, size_t n) #undef STATE2_NONE #undef STATE_TWOBYTE #undef STATE_ASCII + +#endif /* _ISO2022_CN_H_ */ diff --git a/lib/converters/iso2022_cnext.h b/lib/converters/iso2022_cnext.h index 282cc314..a4fcb360 100644 --- a/lib/converters/iso2022_cnext.h +++ b/lib/converters/iso2022_cnext.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_cnext.h + * @brief ISO-2022-CN-EXT + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,558 +22,672 @@ * If not, see . */ -/* - * ISO-2022-CN-EXT - */ +#ifndef _ISO2022_CNEXT_H_ +#define _ISO2022_CNEXT_H_ + +#include "converters/ascii.h" +#include "converters/cns11643.h" +#include "converters/cns11643_1.h" +#include "converters/cns11643_2.h" +#include "converters/cns11643_3.h" +#include "converters/cns11643_4.h" +#include "converters/cns11643_5.h" +#include "converters/cns11643_6.h" +#include "converters/cns11643_7.h" +#include "converters/gb2312.h" +#include "converters/isoir165.h" +#include "reiconv_defines.h" +#include /* Specification: RFC 1922 */ #define ESC 0x1b -#define SO 0x0e -#define SI 0x0f +#define SO 0x0e +#define SI 0x0f /* * The state is composed of one of the following values */ -#define STATE_ASCII 0 -#define STATE_TWOBYTE 1 +#define STATE_ASCII 0 +#define STATE_TWOBYTE 1 /* * and one of the following values, << 8 */ -#define STATE2_NONE 0 -#define STATE2_DESIGNATED_GB2312 1 -#define STATE2_DESIGNATED_CNS11643_1 2 -#define STATE2_DESIGNATED_ISO_IR_165 3 +#define STATE2_NONE 0 +#define STATE2_DESIGNATED_GB2312 1 +#define STATE2_DESIGNATED_CNS11643_1 2 +#define STATE2_DESIGNATED_ISO_IR_165 3 /* * and one of the following values, << 16 */ -#define STATE3_NONE 0 -#define STATE3_DESIGNATED_CNS11643_2 1 +#define STATE3_NONE 0 +#define STATE3_DESIGNATED_CNS11643_2 1 /* * and one of the following values, << 24 */ -#define STATE4_NONE 0 -#define STATE4_DESIGNATED_CNS11643_3 1 -#define STATE4_DESIGNATED_CNS11643_4 2 -#define STATE4_DESIGNATED_CNS11643_5 3 -#define STATE4_DESIGNATED_CNS11643_6 4 -#define STATE4_DESIGNATED_CNS11643_7 5 +#define STATE4_NONE 0 +#define STATE4_DESIGNATED_CNS11643_3 1 +#define STATE4_DESIGNATED_CNS11643_4 2 +#define STATE4_DESIGNATED_CNS11643_5 3 +#define STATE4_DESIGNATED_CNS11643_6 4 +#define STATE4_DESIGNATED_CNS11643_7 5 -#define SPLIT_STATE \ - unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = (state >> 16) & 0xff, state4 = state >> 24 -#define COMBINE_STATE \ - state = (state4 << 24) | (state3 << 16) | (state2 << 8) | state1 +#define SPLIT_STATE \ + unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = (state >> 16) & 0xff, \ + state4 = state >> 24 +#define COMBINE_STATE state = (state4 << 24) | (state3 << 16) | (state2 << 8) | state1 -static int -iso2022_cn_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_cn_ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - SPLIT_STATE; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+4) - goto none; - if (s[1] == '$') { - if (s[2] == ')') { - if (s[3] == 'A') { - state2 = STATE2_DESIGNATED_GB2312; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'G') { - state2 = STATE2_DESIGNATED_CNS11643_1; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'E') { - state2 = STATE2_DESIGNATED_ISO_IR_165; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } + state_t state = conv->istate; + SPLIT_STATE; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 4) + goto none; + if (s[1] == '$') + { + if (s[2] == ')') + { + if (s[3] == 'A') + { + state2 = STATE2_DESIGNATED_GB2312; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'G') + { + state2 = STATE2_DESIGNATED_CNS11643_1; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'E') + { + state2 = STATE2_DESIGNATED_ISO_IR_165; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + if (s[2] == '*') + { + if (s[3] == 'H') + { + state3 = STATE3_DESIGNATED_CNS11643_2; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + if (s[2] == '+') + { + if (s[3] == 'I') + { + state4 = STATE4_DESIGNATED_CNS11643_3; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'J') + { + state4 = STATE4_DESIGNATED_CNS11643_4; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'K') + { + state4 = STATE4_DESIGNATED_CNS11643_5; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'L') + { + state4 = STATE4_DESIGNATED_CNS11643_6; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'M') + { + state4 = STATE4_DESIGNATED_CNS11643_7; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + } + if (s[1] == 'N') + { + switch (state3) + { + case STATE3_NONE: + goto ilseq; + case STATE3_DESIGNATED_CNS11643_2: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_2_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + default: + abort(); + } + } + if (s[1] == 'O') + { + switch (state4) + { + case STATE4_NONE: + goto ilseq; + case STATE4_DESIGNATED_CNS11643_3: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_3_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + case STATE4_DESIGNATED_CNS11643_4: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_4_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + case STATE4_DESIGNATED_CNS11643_5: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_5_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + case STATE4_DESIGNATED_CNS11643_6: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_6_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + case STATE4_DESIGNATED_CNS11643_7: + if (s[2] < 0x80 && s[3] < 0x80) + { + int ret = cns11643_7_mbtowc(conv, pwc, s + 2, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 4; + } + else + goto ilseq; + default: + abort(); + } + } + goto ilseq; } - if (s[2] == '*') { - if (s[3] == 'H') { - state3 = STATE3_DESIGNATED_CNS11643_2; - s += 4; count += 4; - if (n < count+1) - goto none; + if (c == SO) + { + if (state2 != STATE2_DESIGNATED_GB2312 && state2 != STATE2_DESIGNATED_CNS11643_1 && + state2 != STATE2_DESIGNATED_ISO_IR_165) + goto ilseq; + state1 = STATE_TWOBYTE; + s++; + count++; + if (n < count + 1) + goto none; continue; - } } - if (s[2] == '+') { - if (s[3] == 'I') { - state4 = STATE4_DESIGNATED_CNS11643_3; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'J') { - state4 = STATE4_DESIGNATED_CNS11643_4; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'K') { - state4 = STATE4_DESIGNATED_CNS11643_5; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'L') { - state4 = STATE4_DESIGNATED_CNS11643_6; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'M') { - state4 = STATE4_DESIGNATED_CNS11643_7; - s += 4; count += 4; - if (n < count+1) - goto none; + if (c == SI) + { + state1 = STATE_ASCII; + s++; + count++; + if (n < count + 1) + goto none; continue; - } } - } - if (s[1] == 'N') { - switch (state3) { - case STATE3_NONE: - goto ilseq; - case STATE3_DESIGNATED_CNS11643_2: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_2_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) + break; + } + switch (state1) + { + case STATE_ASCII: + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - default: abort(); + if (ret != 1) + abort(); + if (*pwc == 0x000a || *pwc == 0x000d) + { + state2 = STATE2_NONE; + state3 = STATE3_NONE; + state4 = STATE3_NONE; + } + COMBINE_STATE; + conv->istate = state; + return count + 1; } - } - if (s[1] == 'O') { - switch (state4) { - case STATE4_NONE: + else goto ilseq; - case STATE4_DESIGNATED_CNS11643_3: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_3_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - case STATE4_DESIGNATED_CNS11643_4: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_4_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - case STATE4_DESIGNATED_CNS11643_5: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_5_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - case STATE4_DESIGNATED_CNS11643_6: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_6_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) + case STATE_TWOBYTE: + if (n < count + 2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret; + switch (state2) + { + case STATE2_NONE: goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - case STATE4_DESIGNATED_CNS11643_7: - if (s[2] < 0x80 && s[3] < 0x80) { - int ret = cns11643_7_mbtowc(conv,pwc,s+2,2); - if (ret == RET_ILSEQ) + case STATE2_DESIGNATED_GB2312: + ret = gb2312_mbtowc(conv, pwc, s, 2); + break; + case STATE2_DESIGNATED_CNS11643_1: + ret = cns11643_1_mbtowc(conv, pwc, s, 2); + break; + case STATE2_DESIGNATED_ISO_IR_165: + ret = isoir165_mbtowc(conv, pwc, s, 2); + break; + default: + abort(); + } + if (ret == RET_ILSEQ) goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+4; - } else - goto ilseq; - default: abort(); - } - } - goto ilseq; - } - if (c == SO) { - if (state2 != STATE2_DESIGNATED_GB2312 && state2 != STATE2_DESIGNATED_CNS11643_1 && state2 != STATE2_DESIGNATED_ISO_IR_165) - goto ilseq; - state1 = STATE_TWOBYTE; - s++; count++; - if (n < count+1) - goto none; - continue; - } - if (c == SI) { - state1 = STATE_ASCII; - s++; count++; - if (n < count+1) - goto none; - continue; - } - break; - } - switch (state1) { - case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - if (*pwc == 0x000a || *pwc == 0x000d) { - state2 = STATE2_NONE; state3 = STATE3_NONE; state4 = STATE3_NONE; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; } - COMBINE_STATE; - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_TWOBYTE: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret; - switch (state2) { - case STATE2_NONE: + else goto ilseq; - case STATE2_DESIGNATED_GB2312: - ret = gb2312_mbtowc(conv,pwc,s,2); break; - case STATE2_DESIGNATED_CNS11643_1: - ret = cns11643_1_mbtowc(conv,pwc,s,2); break; - case STATE2_DESIGNATED_ISO_IR_165: - ret = isoir165_mbtowc(conv,pwc,s,2); break; - default: abort(); - } - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } + default: + abort(); + } none: - COMBINE_STATE; - conv->istate = state; - return RET_TOOFEW(count); + COMBINE_STATE; + conv->istate = state; + return RET_TOOFEW(count); ilseq: - COMBINE_STATE; - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + COMBINE_STATE; + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -iso2022_cn_ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso2022_cn_ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - unsigned char buf[3]; - int ret; + state_t state = conv->ostate; + SPLIT_STATE; + unsigned char buf[3]; + int ret; - /* There is no need to handle Unicode 3.1 tag characters and to look for - "zh-CN" or "zh-TW" tags, because GB2312 and CNS11643 are disjoint. */ + /* There is no need to handle Unicode 3.1 tag characters and to look for + "zh-CN" or "zh-TW" tags, because GB2312 and CNS11643 are disjoint. */ - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state1 == STATE_ASCII ? 1 : 2); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_ASCII) { - r[0] = SI; - r += 1; - state1 = STATE_ASCII; - } - r[0] = buf[0]; - if (wc == 0x000a || wc == 0x000d) { - state2 = STATE2_NONE; state3 = STATE3_NONE; state4 = STATE3_NONE; - } - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state1 == STATE_ASCII ? 1 : 2); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_ASCII) + { + r[0] = SI; + r += 1; + state1 = STATE_ASCII; + } + r[0] = buf[0]; + if (wc == 0x000a || wc == 0x000d) + { + state2 = STATE2_NONE; + state3 = STATE3_NONE; + state4 = STATE3_NONE; + } + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - /* Try GB 2312-1980. */ - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state2 == STATE2_DESIGNATED_GB2312 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_GB2312) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'A'; - r += 4; - state2 = STATE2_DESIGNATED_GB2312; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try GB 2312-1980. */ + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state2 == STATE2_DESIGNATED_GB2312 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_GB2312) + { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'A'; + r += 4; + state2 = STATE2_DESIGNATED_GB2312; + } + if (state1 != STATE_TWOBYTE) + { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - ret = cns11643_wctomb(conv,buf,wc,3); - if (ret != RET_ILUNI) { - if (ret != 3) abort(); + ret = cns11643_wctomb(conv, buf, wc, 3); + if (ret != RET_ILUNI) + { + if (ret != 3) + abort(); - /* Try CNS 11643-1992 Plane 1. */ - if (buf[0] == 1 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state2 == STATE2_DESIGNATED_CNS11643_1 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_CNS11643_1) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'G'; - r += 4; - state2 = STATE2_DESIGNATED_CNS11643_1; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - r[0] = buf[1]; - r[1] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 1. */ + if (buf[0] == 1 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state2 == STATE2_DESIGNATED_CNS11643_1 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_CNS11643_1) + { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'G'; + r += 4; + state2 = STATE2_DESIGNATED_CNS11643_1; + } + if (state1 != STATE_TWOBYTE) + { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[1]; + r[1] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 2. */ - if (buf[0] == 2 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state3 == STATE3_DESIGNATED_CNS11643_2 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state3 != STATE3_DESIGNATED_CNS11643_2) { - r[0] = ESC; - r[1] = '$'; - r[2] = '*'; - r[3] = 'H'; - r += 4; - state3 = STATE3_DESIGNATED_CNS11643_2; - } - r[0] = ESC; - r[1] = 'N'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 2. */ + if (buf[0] == 2 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state3 == STATE3_DESIGNATED_CNS11643_2 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state3 != STATE3_DESIGNATED_CNS11643_2) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '*'; + r[3] = 'H'; + r += 4; + state3 = STATE3_DESIGNATED_CNS11643_2; + } + r[0] = ESC; + r[1] = 'N'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 3. */ - if (buf[0] == 3 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state4 == STATE4_DESIGNATED_CNS11643_3 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state4 != STATE4_DESIGNATED_CNS11643_3) { - r[0] = ESC; - r[1] = '$'; - r[2] = '+'; - r[3] = 'I'; - r += 4; - state4 = STATE4_DESIGNATED_CNS11643_3; - } - r[0] = ESC; - r[1] = 'O'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 3. */ + if (buf[0] == 3 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state4 == STATE4_DESIGNATED_CNS11643_3 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state4 != STATE4_DESIGNATED_CNS11643_3) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '+'; + r[3] = 'I'; + r += 4; + state4 = STATE4_DESIGNATED_CNS11643_3; + } + r[0] = ESC; + r[1] = 'O'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 4. */ - if (buf[0] == 4 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state4 == STATE4_DESIGNATED_CNS11643_4 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state4 != STATE4_DESIGNATED_CNS11643_4) { - r[0] = ESC; - r[1] = '$'; - r[2] = '+'; - r[3] = 'J'; - r += 4; - state4 = STATE4_DESIGNATED_CNS11643_4; - } - r[0] = ESC; - r[1] = 'O'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 4. */ + if (buf[0] == 4 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state4 == STATE4_DESIGNATED_CNS11643_4 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state4 != STATE4_DESIGNATED_CNS11643_4) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '+'; + r[3] = 'J'; + r += 4; + state4 = STATE4_DESIGNATED_CNS11643_4; + } + r[0] = ESC; + r[1] = 'O'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 5. */ - if (buf[0] == 5 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state4 == STATE4_DESIGNATED_CNS11643_5 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state4 != STATE4_DESIGNATED_CNS11643_5) { - r[0] = ESC; - r[1] = '$'; - r[2] = '+'; - r[3] = 'K'; - r += 4; - state4 = STATE4_DESIGNATED_CNS11643_5; - } - r[0] = ESC; - r[1] = 'O'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 5. */ + if (buf[0] == 5 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state4 == STATE4_DESIGNATED_CNS11643_5 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state4 != STATE4_DESIGNATED_CNS11643_5) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '+'; + r[3] = 'K'; + r += 4; + state4 = STATE4_DESIGNATED_CNS11643_5; + } + r[0] = ESC; + r[1] = 'O'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 6. */ - if (buf[0] == 6 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state4 == STATE4_DESIGNATED_CNS11643_6 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state4 != STATE4_DESIGNATED_CNS11643_6) { - r[0] = ESC; - r[1] = '$'; - r[2] = '+'; - r[3] = 'L'; - r += 4; - state4 = STATE4_DESIGNATED_CNS11643_6; - } - r[0] = ESC; - r[1] = 'O'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; - } + /* Try CNS 11643-1992 Plane 6. */ + if (buf[0] == 6 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state4 == STATE4_DESIGNATED_CNS11643_6 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state4 != STATE4_DESIGNATED_CNS11643_6) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '+'; + r[3] = 'L'; + r += 4; + state4 = STATE4_DESIGNATED_CNS11643_6; + } + r[0] = ESC; + r[1] = 'O'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } - /* Try CNS 11643-1992 Plane 7. */ - if (buf[0] == 7 && buf[1] < 0x80 && buf[2] < 0x80) { - int count = (state4 == STATE4_DESIGNATED_CNS11643_7 ? 0 : 4) + 4; - if (n < count) - return RET_TOOSMALL; - if (state4 != STATE4_DESIGNATED_CNS11643_7) { - r[0] = ESC; - r[1] = '$'; - r[2] = '+'; - r[3] = 'M'; - r += 4; - state4 = STATE4_DESIGNATED_CNS11643_7; - } - r[0] = ESC; - r[1] = 'O'; - r[2] = buf[1]; - r[3] = buf[2]; - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try CNS 11643-1992 Plane 7. */ + if (buf[0] == 7 && buf[1] < 0x80 && buf[2] < 0x80) + { + int count = (state4 == STATE4_DESIGNATED_CNS11643_7 ? 0 : 4) + 4; + if (n < count) + return RET_TOOSMALL; + if (state4 != STATE4_DESIGNATED_CNS11643_7) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '+'; + r[3] = 'M'; + r += 4; + state4 = STATE4_DESIGNATED_CNS11643_7; + } + r[0] = ESC; + r[1] = 'O'; + r[2] = buf[1]; + r[3] = buf[2]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - - /* Try ISO-IR-165. */ - ret = isoir165_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state2 == STATE2_DESIGNATED_ISO_IR_165 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_ISO_IR_165) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'E'; - r += 4; - state2 = STATE2_DESIGNATED_ISO_IR_165; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; + /* Try ISO-IR-165. */ + ret = isoir165_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state2 == STATE2_DESIGNATED_ISO_IR_165 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_ISO_IR_165) + { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'E'; + r += 4; + state2 = STATE2_DESIGNATED_ISO_IR_165; + } + if (state1 != STATE_TWOBYTE) + { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_cn_ext_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_cn_ext_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - (void)state2; - (void)state3; - (void)state4; - if (state1 != STATE_ASCII) { - if (n < 1) - return RET_TOOSMALL; - r[0] = SI; - /* conv->ostate = 0; will be done by the caller */ - return 1; - } else - return 0; + state_t state = conv->ostate; + SPLIT_STATE; + (void)state2; + (void)state3; + (void)state4; + if (state1 != STATE_ASCII) + { + if (n < 1) + return RET_TOOSMALL; + r[0] = SI; + /* conv->ostate = 0; will be done by the caller */ + return 1; + } + else + return 0; } #undef COMBINE_STATE @@ -587,3 +706,5 @@ iso2022_cn_ext_reset (conv_t conv, unsigned char *r, size_t n) #undef STATE2_NONE #undef STATE_TWOBYTE #undef STATE_ASCII + +#endif /* _ISO2022_CNEXT_H_ */ diff --git a/lib/converters/iso2022_jp.h b/lib/converters/iso2022_jp.h index 3e4fb263..4048c791 100644 --- a/lib/converters/iso2022_jp.h +++ b/lib/converters/iso2022_jp.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_jp.h + * @brief ISO-2022-JP + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,15 @@ * If not, see . */ -/* - * ISO-2022-JP - */ +#ifndef _ISO2022_JP_H_ +#define _ISO2022_JP_H_ + +#include "converters/ascii.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "reiconv_defines.h" + +#include /* Specification: RFC 1468 */ @@ -28,188 +39,222 @@ /* * The state can be one of the following values. */ -#define STATE_ASCII 0 -#define STATE_JISX0201ROMAN 1 -#define STATE_JISX0208 2 +#define STATE_ASCII 0 +#define STATE_JISX0201ROMAN 1 +#define STATE_JISX0208 2 -static int -iso2022_jp_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_jp_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+3) - goto none; - if (s[1] == '(') { - if (s[2] == 'B') { - state = STATE_ASCII; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; - } - if (s[2] == 'J') { - state = STATE_JISX0201ROMAN; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + state_t state = conv->istate; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 3) + goto none; + if (s[1] == '(') + { + if (s[2] == 'B') + { + state = STATE_ASCII; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'J') + { + state = STATE_JISX0201ROMAN; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + if (s[1] == '$') + { + if (s[2] == '@' || s[2] == 'B') + { + /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ + state = STATE_JISX0208; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + goto ilseq; } - goto ilseq; - } - if (s[1] == '$') { - if (s[2] == '@' || s[2] == 'B') { - /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ - state = STATE_JISX0208; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; - } - goto ilseq; - } - goto ilseq; + break; } - break; - } - switch (state) { + switch (state) + { case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; + } + else + goto ilseq; case STATE_JISX0201ROMAN: - if (c < 0x80) { - int ret = jisx0201_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; + if (c < 0x80) + { + int ret = jisx0201_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; + } + else + goto ilseq; case STATE_JISX0208: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = jisx0208_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } + if (n < count + 2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = jisx0208_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + conv->istate = state; + return count + 2; + } + else + goto ilseq; + default: + abort(); + } none: - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); ilseq: - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -iso2022_jp_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso2022_jp_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - unsigned char buf[2]; - int ret; - - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state == STATE_ASCII ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_ASCII) { - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - r += 3; - state = STATE_ASCII; - } - r[0] = buf[0]; - conv->ostate = state; - return count; + state_t state = conv->ostate; + unsigned char buf[2]; + int ret; + + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state == STATE_ASCII ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_ASCII) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + r += 3; + state = STATE_ASCII; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } } - } - - /* Try JIS X 0201-1976 Roman. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state == STATE_JISX0201ROMAN ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0201ROMAN) { - r[0] = ESC; - r[1] = '('; - r[2] = 'J'; - r += 3; - state = STATE_JISX0201ROMAN; - } - r[0] = buf[0]; - conv->ostate = state; - return count; + + /* Try JIS X 0201-1976 Roman. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state == STATE_JISX0201ROMAN ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0201ROMAN) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'J'; + r += 3; + state = STATE_JISX0201ROMAN; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } } - } - - /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state == STATE_JISX0208 ? 2 : 5); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0208) { - r[0] = ESC; - r[1] = '$'; - r[2] = 'B'; - r += 3; - state = STATE_JISX0208; - } - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = state; - return count; + + /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state == STATE_JISX0208 ? 2 : 5); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0208) + { + r[0] = ESC; + r[1] = '$'; + r[2] = 'B'; + r += 3; + state = STATE_JISX0208; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_jp_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_jp_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - if (state != STATE_ASCII) { - if (n < 3) - return RET_TOOSMALL; - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - /* conv->ostate = 0; will be done by the caller */ - return 3; - } else - return 0; + state_t state = conv->ostate; + if (state != STATE_ASCII) + { + if (n < 3) + return RET_TOOSMALL; + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + /* conv->ostate = 0; will be done by the caller */ + return 3; + } + else + return 0; } #undef STATE_JISX0208 #undef STATE_JISX0201ROMAN #undef STATE_ASCII + +#endif /* _ISO2022_JP_H_ */ diff --git a/lib/converters/iso2022_jp1.h b/lib/converters/iso2022_jp1.h index bb58b471..0c0aba8b 100644 --- a/lib/converters/iso2022_jp1.h +++ b/lib/converters/iso2022_jp1.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_jp1.h + * @brief ISO-2022-JP-1 + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,15 @@ * If not, see . */ -/* - * ISO-2022-JP-1 - */ +#ifndef _ISO2022_JP1_H_ +#define _ISO2022_JP1_H_ + +#include "converters/ascii.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "converters/jisx0212.h" +#include "reiconv_defines.h" +#include /* Specification: RFC 2237 */ @@ -28,236 +39,280 @@ /* * The state can be one of the following values. */ -#define STATE_ASCII 0 -#define STATE_JISX0201ROMAN 1 -#define STATE_JISX0208 2 -#define STATE_JISX0212 3 +#define STATE_ASCII 0 +#define STATE_JISX0201ROMAN 1 +#define STATE_JISX0208 2 +#define STATE_JISX0212 3 -static int -iso2022_jp1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_jp1_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+3) - goto none; - if (s[1] == '(') { - if (s[2] == 'B') { - state = STATE_ASCII; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + state_t state = conv->istate; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 3) + goto none; + if (s[1] == '(') + { + if (s[2] == 'B') + { + state = STATE_ASCII; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'J') + { + state = STATE_JISX0201ROMAN; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + if (s[1] == '$') + { + if (s[2] == '@' || s[2] == 'B') + { + /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ + state = STATE_JISX0208; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == '(') + { + if (n < count + 4) + goto none; + if (s[3] == 'D') + { + state = STATE_JISX0212; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + goto ilseq; + } + goto ilseq; } - if (s[2] == 'J') { - state = STATE_JISX0201ROMAN; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + break; + } + switch (state) + { + case STATE_ASCII: + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; } - goto ilseq; - } - if (s[1] == '$') { - if (s[2] == '@' || s[2] == 'B') { - /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ - state = STATE_JISX0208; - s += 3; count += 3; - if (n < count+1) + else + goto ilseq; + case STATE_JISX0201ROMAN: + if (c < 0x80) + { + int ret = jisx0201_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; + } + else + goto ilseq; + case STATE_JISX0208: + if (n < count + 2) goto none; - continue; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = jisx0208_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + conv->istate = state; + return count + 2; } - if (s[2] == '(') { - if (n < count+4) + else + goto ilseq; + case STATE_JISX0212: + if (n < count + 2) goto none; - if (s[3] == 'D') { - state = STATE_JISX0212; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = jisx0212_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + conv->istate = state; + return count + 2; } - goto ilseq; - } - goto ilseq; + else + goto ilseq; + default: + abort(); } - break; - } - switch (state) { - case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_JISX0201ROMAN: - if (c < 0x80) { - int ret = jisx0201_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_JISX0208: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = jisx0208_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - conv->istate = state; - return count+2; - } else - goto ilseq; - case STATE_JISX0212: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = jisx0212_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } none: - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); ilseq: - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -iso2022_jp1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso2022_jp1_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - unsigned char buf[2]; - int ret; + state_t state = conv->ostate; + unsigned char buf[2]; + int ret; - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state == STATE_ASCII ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_ASCII) { - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - r += 3; - state = STATE_ASCII; - } - r[0] = buf[0]; - conv->ostate = state; - return count; + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state == STATE_ASCII ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_ASCII) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + r += 3; + state = STATE_ASCII; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } } - } - /* Try JIS X 0201-1976 Roman. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state == STATE_JISX0201ROMAN ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0201ROMAN) { - r[0] = ESC; - r[1] = '('; - r[2] = 'J'; - r += 3; - state = STATE_JISX0201ROMAN; - } - r[0] = buf[0]; - conv->ostate = state; - return count; + /* Try JIS X 0201-1976 Roman. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state == STATE_JISX0201ROMAN ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0201ROMAN) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'J'; + r += 3; + state = STATE_JISX0201ROMAN; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } } - } - /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state == STATE_JISX0208 ? 2 : 5); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0208) { - r[0] = ESC; - r[1] = '$'; - r[2] = 'B'; - r += 3; - state = STATE_JISX0208; - } - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = state; - return count; + /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state == STATE_JISX0208 ? 2 : 5); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0208) + { + r[0] = ESC; + r[1] = '$'; + r[2] = 'B'; + r += 3; + state = STATE_JISX0208; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } } - } - /* Try JIS X 0212-1990. */ - ret = jisx0212_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state == STATE_JISX0212 ? 2 : 6); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0212) { - r[0] = ESC; - r[1] = '$'; - r[2] = '('; - r[3] = 'D'; - r += 4; - state = STATE_JISX0212; - } - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = state; - return count; + /* Try JIS X 0212-1990. */ + ret = jisx0212_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state == STATE_JISX0212 ? 2 : 6); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0212) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '('; + r[3] = 'D'; + r += 4; + state = STATE_JISX0212; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_jp1_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_jp1_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - if (state != STATE_ASCII) { - if (n < 3) - return RET_TOOSMALL; - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - /* conv->ostate = 0; will be done by the caller */ - return 3; - } else - return 0; + state_t state = conv->ostate; + if (state != STATE_ASCII) + { + if (n < 3) + return RET_TOOSMALL; + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + /* conv->ostate = 0; will be done by the caller */ + return 3; + } + else + return 0; } #undef STATE_JISX0212 #undef STATE_JISX0208 #undef STATE_JISX0201ROMAN #undef STATE_ASCII + +#endif /* _ISO2022_JP1_H_ */ diff --git a/lib/converters/iso2022_jp2.h b/lib/converters/iso2022_jp2.h index fb275e43..c75c735d 100644 --- a/lib/converters/iso2022_jp2.h +++ b/lib/converters/iso2022_jp2.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_jp2.h + * @brief ISO-2022-JP-2 + * @copyright Copyright (C) 1999-2001, 2008, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,20 @@ * If not, see . */ -/* - * ISO-2022-JP-2 - */ +#ifndef _ISO2022_JP2_H_ +#define _ISO2022_JP2_H_ + +#include "converters/ascii.h" +#include "converters/gb2312.h" +#include "converters/iso8859_1.h" +#include "converters/iso8859_7.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "converters/jisx0212.h" +#include "converters/ksc5601.h" +#include "reiconv_defines.h" + +#include /* Specification: RFC 1554 */ /* ESC '(' 'I' for JISX0201 Katakana is an extension not found in RFC 1554 or @@ -30,255 +46,308 @@ /* * The state is composed of one of the following values */ -#define STATE_ASCII 0 -#define STATE_JISX0201ROMAN 1 -#define STATE_JISX0201KATAKANA 2 -#define STATE_JISX0208 3 -#define STATE_JISX0212 4 -#define STATE_GB2312 5 -#define STATE_KSC5601 6 +#define STATE_ASCII 0 +#define STATE_JISX0201ROMAN 1 +#define STATE_JISX0201KATAKANA 2 +#define STATE_JISX0208 3 +#define STATE_JISX0212 4 +#define STATE_GB2312 5 +#define STATE_KSC5601 6 /* * and one of the following values, << 8 */ -#define STATE_G2_NONE 0 -#define STATE_G2_ISO8859_1 1 -#define STATE_G2_ISO8859_7 2 +#define STATE_G2_NONE 0 +#define STATE_G2_ISO8859_1 1 +#define STATE_G2_ISO8859_7 2 -#define SPLIT_STATE \ - unsigned int state1 = state & 0xff, state2 = state >> 8 -#define COMBINE_STATE \ - state = (state2 << 8) | state1 +#define SPLIT_STATE unsigned int state1 = state & 0xff, state2 = state >> 8 +#define COMBINE_STATE state = (state2 << 8) | state1 -static int -iso2022_jp2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_jp2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - SPLIT_STATE; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+3) - goto none; - if (s[1] == '(') { - if (s[2] == 'B') { - state1 = STATE_ASCII; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; - } - if (s[2] == 'J') { - state1 = STATE_JISX0201ROMAN; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + state_t state = conv->istate; + SPLIT_STATE; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 3) + goto none; + if (s[1] == '(') + { + if (s[2] == 'B') + { + state1 = STATE_ASCII; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'J') + { + state1 = STATE_JISX0201ROMAN; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'I') + { + state1 = STATE_JISX0201KATAKANA; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + if (s[1] == '$') + { + if (s[2] == '@' || s[2] == 'B') + { + /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ + state1 = STATE_JISX0208; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'A') + { + state1 = STATE_GB2312; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == '(') + { + if (n < count + 4) + goto none; + if (s[3] == 'D') + { + state1 = STATE_JISX0212; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + if (s[3] == 'C') + { + state1 = STATE_KSC5601; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + goto ilseq; + } + if (s[1] == '.') + { + if (n < count + 3) + goto none; + if (s[2] == 'A') + { + state2 = STATE_G2_ISO8859_1; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'F') + { + state2 = STATE_G2_ISO8859_7; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + if (s[1] == 'N') + { + switch (state2) + { + case STATE_G2_NONE: + goto ilseq; + case STATE_G2_ISO8859_1: + if (s[2] < 0x80) + { + unsigned char buf = s[2] + 0x80; + int ret = iso8859_1_mbtowc(conv, pwc, &buf, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 3; + } + else + goto ilseq; + case STATE_G2_ISO8859_7: + if (s[2] < 0x80) + { + unsigned char buf = s[2] + 0x80; + int ret = iso8859_7_mbtowc(conv, pwc, &buf, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 3; + } + else + goto ilseq; + default: + abort(); + } + } + goto ilseq; } - if (s[2] == 'I') { - state1 = STATE_JISX0201KATAKANA; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + break; + } + switch (state1) + { + case STATE_ASCII: + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + if (*pwc == 0x000a || *pwc == 0x000d) + state2 = STATE_G2_NONE; + COMBINE_STATE; + conv->istate = state; + return count + 1; } - goto ilseq; - } - if (s[1] == '$') { - if (s[2] == '@' || s[2] == 'B') { - /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ - state1 = STATE_JISX0208; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + else + goto ilseq; + case STATE_JISX0201ROMAN: + if (c < 0x80) + { + int ret = jisx0201_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + if (*pwc == 0x000a || *pwc == 0x000d) + state2 = STATE_G2_NONE; + COMBINE_STATE; + conv->istate = state; + return count + 1; } - if (s[2] == 'A') { - state1 = STATE_GB2312; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + else + goto ilseq; + case STATE_JISX0201KATAKANA: + if (c < 0x80) + { + unsigned char buf = c + 0x80; + int ret = jisx0201_mbtowc(conv, pwc, &buf, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 1; } - if (s[2] == '(') { - if (n < count+4) + else + goto ilseq; + case STATE_JISX0208: + if (n < count + 2) goto none; - if (s[3] == 'D') { - state1 = STATE_JISX0212; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - if (s[3] == 'C') { - state1 = STATE_KSC5601; - s += 4; count += 4; - if (n < count+1) - goto none; - continue; - } - goto ilseq; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = jisx0208_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; } - goto ilseq; - } - if (s[1] == '.') { - if (n < count+3) - goto none; - if (s[2] == 'A') { - state2 = STATE_G2_ISO8859_1; - s += 3; count += 3; - if (n < count+1) + else + goto ilseq; + case STATE_JISX0212: + if (n < count + 2) goto none; - continue; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = jisx0212_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; } - if (s[2] == 'F') { - state2 = STATE_G2_ISO8859_7; - s += 3; count += 3; - if (n < count+1) + else + goto ilseq; + case STATE_GB2312: + if (n < count + 2) goto none; - continue; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = gb2312_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; } - goto ilseq; - } - if (s[1] == 'N') { - switch (state2) { - case STATE_G2_NONE: + else goto ilseq; - case STATE_G2_ISO8859_1: - if (s[2] < 0x80) { - unsigned char buf = s[2]+0x80; - int ret = iso8859_1_mbtowc(conv,pwc,&buf,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - COMBINE_STATE; - conv->istate = state; - return count+3; - } else - goto ilseq; - case STATE_G2_ISO8859_7: - if (s[2] < 0x80) { - unsigned char buf = s[2]+0x80; - int ret = iso8859_7_mbtowc(conv,pwc,&buf,1); - if (ret == RET_ILSEQ) + case STATE_KSC5601: + if (n < count + 2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = ksc5601_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) goto ilseq; - if (ret != 1) abort(); - COMBINE_STATE; - conv->istate = state; - return count+3; - } else - goto ilseq; - default: abort(); + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; } - } - goto ilseq; + else + goto ilseq; + default: + abort(); } - break; - } - switch (state1) { - case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - if (*pwc == 0x000a || *pwc == 0x000d) - state2 = STATE_G2_NONE; - COMBINE_STATE; - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_JISX0201ROMAN: - if (c < 0x80) { - int ret = jisx0201_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - if (*pwc == 0x000a || *pwc == 0x000d) - state2 = STATE_G2_NONE; - COMBINE_STATE; - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_JISX0201KATAKANA: - if (c < 0x80) { - unsigned char buf = c+0x80; - int ret = jisx0201_mbtowc(conv,pwc,&buf,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - COMBINE_STATE; - conv->istate = state; - return count+1; - } else - goto ilseq; - case STATE_JISX0208: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = jisx0208_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - case STATE_JISX0212: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = jisx0212_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - case STATE_GB2312: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = gb2312_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - case STATE_KSC5601: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = ksc5601_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } none: - COMBINE_STATE; - conv->istate = state; - return RET_TOOFEW(count); + COMBINE_STATE; + conv->istate = state; + return RET_TOOFEW(count); ilseq: - COMBINE_STATE; - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + COMBINE_STATE; + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } #undef COMBINE_STATE @@ -288,386 +357,437 @@ iso2022_jp2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) * The state can also contain one of the following values, << 16. * Values >= STATE_TAG_LANGUAGE are temporary tag parsing states. */ -#define STATE_TAG_NONE 0 -#define STATE_TAG_LANGUAGE 4 -#define STATE_TAG_LANGUAGE_j 5 -#define STATE_TAG_LANGUAGE_ja 1 -#define STATE_TAG_LANGUAGE_k 6 -#define STATE_TAG_LANGUAGE_ko 2 -#define STATE_TAG_LANGUAGE_z 7 -#define STATE_TAG_LANGUAGE_zh 3 - -#define SPLIT_STATE \ - unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = state >> 16 -#define COMBINE_STATE \ - state = (state3 << 16) | (state2 << 8) | state1 - -static int -iso2022_jp2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +#define STATE_TAG_NONE 0 +#define STATE_TAG_LANGUAGE 4 +#define STATE_TAG_LANGUAGE_j 5 +#define STATE_TAG_LANGUAGE_ja 1 +#define STATE_TAG_LANGUAGE_k 6 +#define STATE_TAG_LANGUAGE_ko 2 +#define STATE_TAG_LANGUAGE_z 7 +#define STATE_TAG_LANGUAGE_zh 3 + +#define SPLIT_STATE unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = state >> 16 +#define COMBINE_STATE state = (state3 << 16) | (state2 << 8) | state1 + +static int iso2022_jp2_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - unsigned char buf[2]; - int ret; - /* This defines the conversion preferences depending on the current - language tag. */ - enum conversion { none = 0, european, japanese, chinese, korean, other }; - static const unsigned int conversion_lists[STATE_TAG_LANGUAGE] = { - /* STATE_TAG_NONE */ - japanese + (european << 3) + (chinese << 6) + (korean << 9) + (other << 12), - /* STATE_TAG_LANGUAGE_ja */ - japanese + (european << 3) + (chinese << 6) + (korean << 9) + (other << 12), - /* STATE_TAG_LANGUAGE_ko */ - korean + (european << 3) + (japanese << 6) + (chinese << 9) + (other << 12), - /* STATE_TAG_LANGUAGE_zh */ - chinese + (european << 3) + (japanese << 6) + (korean << 9) + (other << 12) - }; - unsigned int conversion_list; - - /* Handle Unicode tag characters (range U+E0000..U+E007F). */ - if ((wc >> 7) == (0xe0000 >> 7)) { - char c = wc & 0x7f; - if (c >= 'A' && c <= 'Z') - c += 'a'-'A'; - switch (c) { - case 0x01: - state3 = STATE_TAG_LANGUAGE; - COMBINE_STATE; - conv->ostate = state; - return 0; - case 'j': - if (state3 == STATE_TAG_LANGUAGE) { - state3 = STATE_TAG_LANGUAGE_j; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - break; - case 'a': - if (state3 == STATE_TAG_LANGUAGE_j) { - state3 = STATE_TAG_LANGUAGE_ja; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - break; - case 'k': - if (state3 == STATE_TAG_LANGUAGE) { - state3 = STATE_TAG_LANGUAGE_k; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - break; - case 'o': - if (state3 == STATE_TAG_LANGUAGE_k) { - state3 = STATE_TAG_LANGUAGE_ko; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - break; - case 'z': - if (state3 == STATE_TAG_LANGUAGE) { - state3 = STATE_TAG_LANGUAGE_z; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - break; - case 'h': - if (state3 == STATE_TAG_LANGUAGE_z) { - state3 = STATE_TAG_LANGUAGE_zh; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - break; - case 0x7f: - state3 = STATE_TAG_NONE; - COMBINE_STATE; - conv->ostate = state; - return 0; - default: - break; - } - /* Other tag characters reset the tag parsing state or are ignored. */ - if (state3 >= STATE_TAG_LANGUAGE) - state3 = STATE_TAG_NONE; - COMBINE_STATE; - conv->ostate = state; - return 0; - } - if (state3 >= STATE_TAG_LANGUAGE) - state3 = STATE_TAG_NONE; - - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state1 == STATE_ASCII ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_ASCII) { - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - r += 3; - state1 = STATE_ASCII; - } - r[0] = buf[0]; - if (wc == 0x000a || wc == 0x000d) - state2 = STATE_G2_NONE; - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - - conversion_list = conversion_lists[state3]; - - do { - switch (conversion_list & ((1 << 3) - 1)) { - - case european: - - /* Try ISO-8859-1. */ - ret = iso8859_1_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] >= 0x80) { - int count = (state2 == STATE_G2_ISO8859_1 ? 3 : 6); - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE_G2_ISO8859_1) { - r[0] = ESC; - r[1] = '.'; - r[2] = 'A'; - r += 3; - state2 = STATE_G2_ISO8859_1; - } - r[0] = ESC; - r[1] = 'N'; - r[2] = buf[0]-0x80; + state_t state = conv->ostate; + SPLIT_STATE; + unsigned char buf[2]; + int ret; + /* This defines the conversion preferences depending on the current + language tag. */ + enum conversion + { + none = 0, + european, + japanese, + chinese, + korean, + other + }; + static const unsigned int conversion_lists[STATE_TAG_LANGUAGE] = { + /* STATE_TAG_NONE */ + japanese + (european << 3) + (chinese << 6) + (korean << 9) + (other << 12), + /* STATE_TAG_LANGUAGE_ja */ + japanese + (european << 3) + (chinese << 6) + (korean << 9) + (other << 12), + /* STATE_TAG_LANGUAGE_ko */ + korean + (european << 3) + (japanese << 6) + (chinese << 9) + (other << 12), + /* STATE_TAG_LANGUAGE_zh */ + chinese + (european << 3) + (japanese << 6) + (korean << 9) + (other << 12)}; + unsigned int conversion_list; + + /* Handle Unicode tag characters (range U+E0000..U+E007F). */ + if ((wc >> 7) == (0xe0000 >> 7)) + { + char c = wc & 0x7f; + if (c >= 'A' && c <= 'Z') + c += 'a' - 'A'; + switch (c) + { + case 0x01: + state3 = STATE_TAG_LANGUAGE; COMBINE_STATE; conv->ostate = state; - return count; - } - } - - /* Try ISO-8859-7. */ - ret = iso8859_7_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] >= 0x80) { - int count = (state2 == STATE_G2_ISO8859_7 ? 3 : 6); - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE_G2_ISO8859_7) { - r[0] = ESC; - r[1] = '.'; - r[2] = 'F'; - r += 3; - state2 = STATE_G2_ISO8859_7; + return 0; + case 'j': + if (state3 == STATE_TAG_LANGUAGE) + { + state3 = STATE_TAG_LANGUAGE_j; + COMBINE_STATE; + conv->ostate = state; + return 0; + } + break; + case 'a': + if (state3 == STATE_TAG_LANGUAGE_j) + { + state3 = STATE_TAG_LANGUAGE_ja; + COMBINE_STATE; + conv->ostate = state; + return 0; + } + break; + case 'k': + if (state3 == STATE_TAG_LANGUAGE) + { + state3 = STATE_TAG_LANGUAGE_k; + COMBINE_STATE; + conv->ostate = state; + return 0; } - r[0] = ESC; - r[1] = 'N'; - r[2] = buf[0]-0x80; + break; + case 'o': + if (state3 == STATE_TAG_LANGUAGE_k) + { + state3 = STATE_TAG_LANGUAGE_ko; + COMBINE_STATE; + conv->ostate = state; + return 0; + } + break; + case 'z': + if (state3 == STATE_TAG_LANGUAGE) + { + state3 = STATE_TAG_LANGUAGE_z; + COMBINE_STATE; + conv->ostate = state; + return 0; + } + break; + case 'h': + if (state3 == STATE_TAG_LANGUAGE_z) + { + state3 = STATE_TAG_LANGUAGE_zh; + COMBINE_STATE; + conv->ostate = state; + return 0; + } + break; + case 0x7f: + state3 = STATE_TAG_NONE; COMBINE_STATE; conv->ostate = state; - return count; - } + return 0; + default: + break; } + /* Other tag characters reset the tag parsing state or are ignored. */ + if (state3 >= STATE_TAG_LANGUAGE) + state3 = STATE_TAG_NONE; + COMBINE_STATE; + conv->ostate = state; + return 0; + } + if (state3 >= STATE_TAG_LANGUAGE) + state3 = STATE_TAG_NONE; - break; - - case japanese: - - /* Try JIS X 0201-1976 Roman. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state1 == STATE_JISX0201ROMAN ? 1 : 4); + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state1 == STATE_ASCII ? 1 : 4); if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_JISX0201ROMAN) { - r[0] = ESC; - r[1] = '('; - r[2] = 'J'; - r += 3; - state1 = STATE_JISX0201ROMAN; + return RET_TOOSMALL; + if (state1 != STATE_ASCII) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + r += 3; + state1 = STATE_ASCII; } r[0] = buf[0]; if (wc == 0x000a || wc == 0x000d) - state2 = STATE_G2_NONE; + state2 = STATE_G2_NONE; COMBINE_STATE; conv->ostate = state; return count; - } } + } - /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and - JIS X 0208-1983. */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state1 == STATE_JISX0208 ? 2 : 5); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_JISX0208) { - r[0] = ESC; - r[1] = '$'; - r[2] = 'B'; - r += 3; - state1 = STATE_JISX0208; + conversion_list = conversion_lists[state3]; + + do + { + switch (conversion_list & ((1 << 3) - 1)) + { + + case european: + + /* Try ISO-8859-1. */ + ret = iso8859_1_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] >= 0x80) + { + int count = (state2 == STATE_G2_ISO8859_1 ? 3 : 6); + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE_G2_ISO8859_1) + { + r[0] = ESC; + r[1] = '.'; + r[2] = 'A'; + r += 3; + state2 = STATE_G2_ISO8859_1; + } + r[0] = ESC; + r[1] = 'N'; + r[2] = buf[0] - 0x80; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - /* Try JIS X 0212-1990. */ - ret = jisx0212_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state1 == STATE_JISX0212 ? 2 : 6); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_JISX0212) { - r[0] = ESC; - r[1] = '$'; - r[2] = '('; - r[3] = 'D'; - r += 4; - state1 = STATE_JISX0212; + /* Try ISO-8859-7. */ + ret = iso8859_7_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] >= 0x80) + { + int count = (state2 == STATE_G2_ISO8859_7 ? 3 : 6); + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE_G2_ISO8859_7) + { + r[0] = ESC; + r[1] = '.'; + r[2] = 'F'; + r += 3; + state2 = STATE_G2_ISO8859_7; + } + r[0] = ESC; + r[1] = 'N'; + r[2] = buf[0] - 0x80; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - break; - - case chinese: - - /* Try GB 2312-1980. */ - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state1 == STATE_GB2312 ? 2 : 5); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_GB2312) { - r[0] = ESC; - r[1] = '$'; - r[2] = 'A'; - r += 3; - state1 = STATE_GB2312; + break; + + case japanese: + + /* Try JIS X 0201-1976 Roman. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state1 == STATE_JISX0201ROMAN ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_JISX0201ROMAN) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'J'; + r += 3; + state1 = STATE_JISX0201ROMAN; + } + r[0] = buf[0]; + if (wc == 0x000a || wc == 0x000d) + state2 = STATE_G2_NONE; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - - break; - case korean: + /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and + JIS X 0208-1983. */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state1 == STATE_JISX0208 ? 2 : 5); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_JISX0208) + { + r[0] = ESC; + r[1] = '$'; + r[2] = 'B'; + r += 3; + state1 = STATE_JISX0208; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } + } - /* Try KS C 5601-1992. */ - ret = ksc5601_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state1 == STATE_KSC5601 ? 2 : 6); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_KSC5601) { - r[0] = ESC; - r[1] = '$'; - r[2] = '('; - r[3] = 'C'; - r += 4; - state1 = STATE_KSC5601; + /* Try JIS X 0212-1990. */ + ret = jisx0212_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state1 == STATE_JISX0212 ? 2 : 6); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_JISX0212) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '('; + r[3] = 'D'; + r += 4; + state1 = STATE_JISX0212; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - break; + break; + + case chinese: + + /* Try GB 2312-1980. */ + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state1 == STATE_GB2312 ? 2 : 5); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_GB2312) + { + r[0] = ESC; + r[1] = '$'; + r[2] = 'A'; + r += 3; + state1 = STATE_GB2312; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } + } - case other: + break; + + case korean: + + /* Try KS C 5601-1992. */ + ret = ksc5601_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state1 == STATE_KSC5601 ? 2 : 6); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_KSC5601) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '('; + r[3] = 'C'; + r += 4; + state1 = STATE_KSC5601; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } + } - /* Try JIS X 0201-1976 Kana. This is not officially part of - ISO-2022-JP-2, according to RFC 1554. Therefore we try this - only after all other attempts. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] >= 0x80) { - int count = (state1 == STATE_JISX0201KATAKANA ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_JISX0201KATAKANA) { - r[0] = ESC; - r[1] = '('; - r[2] = 'I'; - r += 3; - state1 = STATE_JISX0201KATAKANA; + break; + + case other: + + /* Try JIS X 0201-1976 Kana. This is not officially part of + ISO-2022-JP-2, according to RFC 1554. Therefore we try this + only after all other attempts. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] >= 0x80) + { + int count = (state1 == STATE_JISX0201KATAKANA ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_JISX0201KATAKANA) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'I'; + r += 3; + state1 = STATE_JISX0201KATAKANA; + } + r[0] = buf[0] - 0x80; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - r[0] = buf[0]-0x80; - COMBINE_STATE; - conv->ostate = state; - return count; - } - } - break; + break; - default: - abort(); - } + default: + abort(); + } - conversion_list = conversion_list >> 3; - } while (conversion_list != 0); + conversion_list = conversion_list >> 3; + } while (conversion_list != 0); - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_jp2_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_jp2_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - (void)state2; - (void)state3; - if (state1 != STATE_ASCII) { - if (n < 3) - return RET_TOOSMALL; - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - /* conv->ostate = 0; will be done by the caller */ - return 3; - } else - return 0; + state_t state = conv->ostate; + SPLIT_STATE; + (void)state2; + (void)state3; + if (state1 != STATE_ASCII) + { + if (n < 3) + return RET_TOOSMALL; + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + /* conv->ostate = 0; will be done by the caller */ + return 3; + } + else + return 0; } #undef COMBINE_STATE @@ -690,3 +810,5 @@ iso2022_jp2_reset (conv_t conv, unsigned char *r, size_t n) #undef STATE_JISX0201KATAKANA #undef STATE_JISX0201ROMAN #undef STATE_ASCII + +#endif /* _ISO2022_JP2_H_ */ diff --git a/lib/converters/iso2022_jp3.h b/lib/converters/iso2022_jp3.h index 0af21c84..cc171718 100644 --- a/lib/converters/iso2022_jp3.h +++ b/lib/converters/iso2022_jp3.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_jp3.h + * @brief ISO-2022-JP-3 + * @copyright Copyright (C) 1999-2004, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2004, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,16 +23,22 @@ */ /* - * ISO-2022-JP-3 + * The state is composed of one of the following values */ -#include "jisx0213.h" +#ifndef _ISO2022_JP3_H_ +#define _ISO2022_JP3_H_ + +#include "converters/ascii.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "converters/jisx0213.h" +#include "reiconv_defines.h" + +#include #define ESC 0x1b -/* - * The state is composed of one of the following values - */ #define STATE_ASCII 0 /* Esc ( B */ #define STATE_JISX0201ROMAN 1 /* Esc ( J */ #define STATE_JISX0201KATAKANA 2 /* Esc ( I */ @@ -535,3 +546,5 @@ iso2022_jp3_reset (conv_t conv, unsigned char *r, size_t n) #undef STATE_JISX0201KATAKANA #undef STATE_JISX0201ROMAN #undef STATE_ASCII + +#endif /* _ISO2022_JP3_H_ */ diff --git a/lib/converters/iso2022_jpms.h b/lib/converters/iso2022_jpms.h index 15252211..7d0ddb25 100644 --- a/lib/converters/iso2022_jpms.h +++ b/lib/converters/iso2022_jpms.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_jpms.h + * @brief ISO-2022-JP-MS + * @copyright Copyright (C) 1999-2001, 2008, 2011-2012, 2016, 2018, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2011-2012, 2016, 2018, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,7 +23,6 @@ */ /* - * ISO-2022-JP-MS * alias CP50221 * * This is an extension of ISO-2022-JP-1 with larger character sets. @@ -33,6 +37,20 @@ * . */ +#ifndef _ISO2022_JPMS_H_ +#define _ISO2022_JPMS_H_ + +#include "converters/ascii.h" +#include "converters/cp932ext.h" +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "converters/jisx0212.h" +#include "converters/cp50221_0208_ext.h" +#include "converters/cp50221_0212_ext.h" +#include "reiconv_defines.h" + +#include + /* * Windows has three encodings CP50220, CP50221, CP50222. * The common parts are: @@ -64,378 +82,462 @@ * direction, we support also ESC ( J 0x0E, just in case. */ -#include "cp50221_0208_ext.h" -#include "cp50221_0212_ext.h" - #define ESC 0x1b -#define SO 0x0e -#define SI 0x0f +#define SO 0x0e +#define SI 0x0f /* * The state can be one of the following values. */ -#define STATE_ASCII 0 /* Esc ( B */ -#define STATE_JISX0201ROMAN 1 /* Esc ( J */ /* only in mbtowc direction */ -#define STATE_JISX0201KATAKANA 2 /* Esc ( I */ -#define STATE_JISX0208MS 3 /* Esc $ @ or Esc $ B */ -#define STATE_JISX0212MS 4 /* Esc $ ( D */ +#define STATE_ASCII 0 /* Esc ( B */ +#define STATE_JISX0201ROMAN 1 /* Esc ( J */ /* only in mbtowc direction */ +#define STATE_JISX0201KATAKANA 2 /* Esc ( I */ +#define STATE_JISX0208MS 3 /* Esc $ @ or Esc $ B */ +#define STATE_JISX0212MS 4 /* Esc $ ( D */ -static int -iso2022_jpms_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_jpms_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+3) - goto none; - if (s[1] == '(') { - if (s[2] == 'B') { - state = STATE_ASCII; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; - } - if (s[2] == 'I') { - state = STATE_JISX0201KATAKANA; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + state_t state = conv->istate; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 3) + goto none; + if (s[1] == '(') + { + if (s[2] == 'B') + { + state = STATE_ASCII; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'I') + { + state = STATE_JISX0201KATAKANA; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == 'J') + { + state = STATE_JISX0201ROMAN; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + goto ilseq; + } + if (s[1] == '$') + { + if (s[2] == '@' || s[2] == 'B') + { + /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ + state = STATE_JISX0208MS; + s += 3; + count += 3; + if (n < count + 1) + goto none; + continue; + } + if (s[2] == '(') + { + if (n < count + 4) + goto none; + if (s[3] == 'D') + { + state = STATE_JISX0212MS; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + goto ilseq; + } + goto ilseq; } - if (s[2] == 'J') { - state = STATE_JISX0201ROMAN; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; - } - goto ilseq; - } - if (s[1] == '$') { - if (s[2] == '@' || s[2] == 'B') { - /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ - state = STATE_JISX0208MS; - s += 3; count += 3; - if (n < count+1) - goto none; - continue; + if (c == SO) + { + if (state == STATE_JISX0201ROMAN) + state = STATE_JISX0201KATAKANA; + s += 1; + count += 1; + if (n < count + 1) + goto none; + continue; } - if (s[2] == '(') { - if (n < count+4) - goto none; - if (s[3] == 'D') { - state = STATE_JISX0212MS; - s += 4; count += 4; - if (n < count+1) - goto none; + if (c == SI) + { + if (state == STATE_JISX0201KATAKANA) + state = STATE_JISX0201ROMAN; + s += 1; + count += 1; + if (n < count + 1) + goto none; continue; - } } - goto ilseq; - } - goto ilseq; - } - if (c == SO) { - if (state == STATE_JISX0201ROMAN) - state = STATE_JISX0201KATAKANA; - s += 1; count += 1; - if (n < count+1) - goto none; - continue; - } - if (c == SI) { - if (state == STATE_JISX0201KATAKANA) - state = STATE_JISX0201ROMAN; - s += 1; count += 1; - if (n < count+1) - goto none; - continue; + break; } - break; - } - switch (state) { + switch (state) + { case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; + } + else + goto ilseq; case STATE_JISX0201ROMAN: - if (c < 0x80) { - int ret = jisx0201_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; + if (c < 0x80) + { + int ret = jisx0201_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; + } + else + goto ilseq; case STATE_JISX0201KATAKANA: - if (c < 0x80) { - unsigned char buf = c+0x80; - int ret = jisx0201_mbtowc(conv,pwc,&buf,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); - conv->istate = state; - return count+1; - } else - goto ilseq; + if (c < 0x80) + { + unsigned char buf = c + 0x80; + int ret = jisx0201_mbtowc(conv, pwc, &buf, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); + conv->istate = state; + return count + 1; + } + else + goto ilseq; case STATE_JISX0208MS: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret; - if (s[0] < 0x75) { - if (s[0] == 0x2d) { - /* Extension of JIS X 0208. */ - if (s[1] >= 0x21 && s[1] <= 0x79) { - unsigned char i = (s[1] - 0x21) + 1; - ret = cp50221_0208_ext_mbtowc(conv,pwc,&i,1); - if (ret == 1) - ret = 2; - } else - ret = RET_ILSEQ; - } else { - /* JIS X 0208. */ - ret = jisx0208_mbtowc(conv,pwc,s,2); - } - } else { - /* Extension of JIS X 0208. - 0x{75..7E}{21..8E} maps to U+E000..U+E3AB. - But some rows maps to characters present in CP932. */ - if (s[0] <= 0x7e && (s[1] >= 0x21 && s[1] <= 0x7e)) { - unsigned short wc = 0xfffd; - if (s[0] >= 0x79 && s[0] <= 0x7c) - wc = cp932ext_2uni_pageed[(s[0] - 0x79) * 94 + (s[1] - 0x21)]; - if (wc == 0xfffd) - wc = (s[0] - 0x75) * 94 + (s[1] - 0x21) + 0xe000; - *pwc = wc; - ret = 2; - } else - ret = RET_ILSEQ; + if (n < count + 2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret; + if (s[0] < 0x75) + { + if (s[0] == 0x2d) + { + /* Extension of JIS X 0208. */ + if (s[1] >= 0x21 && s[1] <= 0x79) + { + unsigned char i = (s[1] - 0x21) + 1; + ret = cp50221_0208_ext_mbtowc(conv, pwc, &i, 1); + if (ret == 1) + ret = 2; + } + else + ret = RET_ILSEQ; + } + else + { + /* JIS X 0208. */ + ret = jisx0208_mbtowc(conv, pwc, s, 2); + } + } + else + { + /* Extension of JIS X 0208. + 0x{75..7E}{21..8E} maps to U+E000..U+E3AB. + But some rows maps to characters present in CP932. */ + if (s[0] <= 0x7e && (s[1] >= 0x21 && s[1] <= 0x7e)) + { + unsigned short wc = 0xfffd; + if (s[0] >= 0x79 && s[0] <= 0x7c) + wc = cp932ext_2uni_pageed[(s[0] - 0x79) * 94 + (s[1] - 0x21)]; + if (wc == 0xfffd) + wc = (s[0] - 0x75) * 94 + (s[1] - 0x21) + 0xe000; + *pwc = wc; + ret = 2; + } + else + ret = RET_ILSEQ; + } + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + conv->istate = state; + return count + 2; } - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - conv->istate = state; - return count+2; - } else - goto ilseq; + else + goto ilseq; case STATE_JISX0212MS: - if (n < count+2) - goto none; - if (s[0] < 0x80 && s[1] < 0x80) { - int ret; - if (s[0] < 0x73) { - /* JIS X 0212. */ - ret = jisx0212_mbtowc(conv,pwc,s,2); - } else { - if (s[0] < 0x75) { - /* Extension of JIS X 0212. */ - if (s[1] >= 0x21 && s[1] <= 0x7e) { - unsigned char i = (s[0] - 0x73) * 94 + (s[1] - 0x21) + 1; - ret = cp50221_0212_ext_mbtowc(conv,pwc,&i,1); - if (ret == 1) - ret = 2; - } else - ret = RET_ILSEQ; - } else { - /* Extension of JIS X 0208. - 0x{75..7E}{21..8E} maps to U+E3AC..U+E757. */ - if (s[0] <= 0x7e && (s[1] >= 0x21 && s[1] <= 0x7e)) { - *pwc = (s[0] - 0x75) * 94 + (s[1] - 0x21) + 0xe3ac; - ret = 2; - } else - ret = RET_ILSEQ; - } + if (n < count + 2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret; + if (s[0] < 0x73) + { + /* JIS X 0212. */ + ret = jisx0212_mbtowc(conv, pwc, s, 2); + } + else + { + if (s[0] < 0x75) + { + /* Extension of JIS X 0212. */ + if (s[1] >= 0x21 && s[1] <= 0x7e) + { + unsigned char i = (s[0] - 0x73) * 94 + (s[1] - 0x21) + 1; + ret = cp50221_0212_ext_mbtowc(conv, pwc, &i, 1); + if (ret == 1) + ret = 2; + } + else + ret = RET_ILSEQ; + } + else + { + /* Extension of JIS X 0208. + 0x{75..7E}{21..8E} maps to U+E3AC..U+E757. */ + if (s[0] <= 0x7e && (s[1] >= 0x21 && s[1] <= 0x7e)) + { + *pwc = (s[0] - 0x75) * 94 + (s[1] - 0x21) + 0xe3ac; + ret = 2; + } + else + ret = RET_ILSEQ; + } + } + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + conv->istate = state; + return count + 2; } - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } + else + goto ilseq; + default: + abort(); + } none: - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); ilseq: - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -iso2022_jpms_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso2022_jpms_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - unsigned char buf[2]; - int ret; + state_t state = conv->ostate; + unsigned char buf[2]; + int ret; - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state == STATE_ASCII ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_ASCII) { - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - r += 3; - state = STATE_ASCII; - } - r[0] = buf[0]; - conv->ostate = state; - return count; + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state == STATE_ASCII ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_ASCII) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + r += 3; + state = STATE_ASCII; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } } - } - /* Try JIS X 0201-1976 Katakana. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] >= 0x80) { - int count = (state == STATE_JISX0201KATAKANA ? 1 : 4); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0201KATAKANA) { - r[0] = ESC; - r[1] = '('; - r[2] = 'I'; - r += 3; - state = STATE_JISX0201KATAKANA; - } - r[0] = buf[0]-0x80; - conv->ostate = state; - return count; + /* Try JIS X 0201-1976 Katakana. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] >= 0x80) + { + int count = (state == STATE_JISX0201KATAKANA ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0201KATAKANA) + { + r[0] = ESC; + r[1] = '('; + r[2] = 'I'; + r += 3; + state = STATE_JISX0201KATAKANA; + } + r[0] = buf[0] - 0x80; + conv->ostate = state; + return count; + } } - } - /* Try JIS X 0208-1990, in place of JIS X 0208-1978 and JIS X 0208-1983, - and the extensions mentioned above. */ - if (wc >= 0xe000 && wc < 0xe3ac) { - unsigned short i = wc - 0xe000; - buf[0] = (i / 94) + 0x75; - buf[1] = (i % 94) + 0x21; - ret = 2; - } else { - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret == RET_ILUNI) { - /* Extension of JIS X 0208. */ - unsigned char i; - ret = cp50221_0208_ext_wctomb(conv,&i,wc,1); - if (ret == 1) { - buf[0] = 0x2d; - buf[1] = i-1 + 0x21; - ret = 2; - } else if (wc == 0x663B) { - buf[0] = 0x7a; - buf[1] = 0x36; - ret = 2; - } else if (wc == 0xffe2) { - buf[0] = 0x7c; - buf[1] = 0x7b; - ret = 2; - } else if (wc == 0xffe4) { - buf[0] = 0x7c; - buf[1] = 0x7c; + /* Try JIS X 0208-1990, in place of JIS X 0208-1978 and JIS X 0208-1983, + and the extensions mentioned above. */ + if (wc >= 0xe000 && wc < 0xe3ac) + { + unsigned short i = wc - 0xe000; + buf[0] = (i / 94) + 0x75; + buf[1] = (i % 94) + 0x21; ret = 2; - } } - } - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state == STATE_JISX0208MS ? 2 : 5); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0208MS) { - r[0] = ESC; - r[1] = '$'; - r[2] = 'B'; - r += 3; - state = STATE_JISX0208MS; - } - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = state; - return count; + else + { + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret == RET_ILUNI) + { + /* Extension of JIS X 0208. */ + unsigned char i; + ret = cp50221_0208_ext_wctomb(conv, &i, wc, 1); + if (ret == 1) + { + buf[0] = 0x2d; + buf[1] = i - 1 + 0x21; + ret = 2; + } + else if (wc == 0x663B) + { + buf[0] = 0x7a; + buf[1] = 0x36; + ret = 2; + } + else if (wc == 0xffe2) + { + buf[0] = 0x7c; + buf[1] = 0x7b; + ret = 2; + } + else if (wc == 0xffe4) + { + buf[0] = 0x7c; + buf[1] = 0x7c; + ret = 2; + } + } + } + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state == STATE_JISX0208MS ? 2 : 5); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0208MS) + { + r[0] = ESC; + r[1] = '$'; + r[2] = 'B'; + r += 3; + state = STATE_JISX0208MS; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } } - } - /* Try JIS X 0212-1990 and the extensions mentioned above. */ - if (wc >= 0xe3ac && wc < 0xe758) { - unsigned short i = wc - 0xe3ac; - buf[0] = (i / 94) + 0x75; - buf[1] = (i % 94) + 0x21; - ret = 2; - } else { - ret = jisx0212_wctomb(conv,buf,wc,2); - if (ret == RET_ILUNI) { - /* Extension of JIS X 0212. */ - unsigned char i; - ret = cp50221_0212_ext_wctomb(conv,&i,wc,1); - if (ret == 1) { - i -= 1; - buf[0] = (i / 94) + 0x73; + /* Try JIS X 0212-1990 and the extensions mentioned above. */ + if (wc >= 0xe3ac && wc < 0xe758) + { + unsigned short i = wc - 0xe3ac; + buf[0] = (i / 94) + 0x75; buf[1] = (i % 94) + 0x21; ret = 2; - } } - } - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state == STATE_JISX0212MS ? 2 : 6); - if (n < count) - return RET_TOOSMALL; - if (state != STATE_JISX0212MS) { - r[0] = ESC; - r[1] = '$'; - r[2] = '('; - r[3] = 'D'; - r += 4; - state = STATE_JISX0212MS; - } - r[0] = buf[0]; - r[1] = buf[1]; - conv->ostate = state; - return count; + else + { + ret = jisx0212_wctomb(conv, buf, wc, 2); + if (ret == RET_ILUNI) + { + /* Extension of JIS X 0212. */ + unsigned char i; + ret = cp50221_0212_ext_wctomb(conv, &i, wc, 1); + if (ret == 1) + { + i -= 1; + buf[0] = (i / 94) + 0x73; + buf[1] = (i % 94) + 0x21; + ret = 2; + } + } + } + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state == STATE_JISX0212MS ? 2 : 6); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0212MS) + { + r[0] = ESC; + r[1] = '$'; + r[2] = '('; + r[3] = 'D'; + r += 4; + state = STATE_JISX0212MS; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_jpms_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_jpms_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - if (state != STATE_ASCII) { - if (n < 3) - return RET_TOOSMALL; - r[0] = ESC; - r[1] = '('; - r[2] = 'B'; - /* conv->ostate = 0; will be done by the caller */ - return 3; - } else - return 0; + state_t state = conv->ostate; + if (state != STATE_ASCII) + { + if (n < 3) + return RET_TOOSMALL; + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + /* conv->ostate = 0; will be done by the caller */ + return 3; + } + else + return 0; } #undef STATE_JISX0212MS @@ -443,3 +545,5 @@ iso2022_jpms_reset (conv_t conv, unsigned char *r, size_t n) #undef STATE_JISX0201KATAKANA #undef STATE_JISX0201ROMAN #undef STATE_ASCII + +#endif /* _ISO2022_JPMS_H_ */ diff --git a/lib/converters/iso2022_kr.h b/lib/converters/iso2022_kr.h index e8302bfb..ec309891 100644 --- a/lib/converters/iso2022_kr.h +++ b/lib/converters/iso2022_kr.h @@ -1,5 +1,10 @@ +/** + * @file iso2022_kr.h + * @brief ISO-2022-KR + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,14 @@ * If not, see . */ -/* - * ISO-2022-KR - */ +#ifndef _ISO2022_KR_H_ +#define _ISO2022_KR_H_ + +#include "converters/ascii.h" +#include "converters/ksc5601.h" +#include "reiconv_defines.h" + +#include /* Specification: RFC 1557 */ @@ -29,188 +39,213 @@ SO characters. RFC 1557 does not mandate this. */ #define ESC 0x1b -#define SO 0x0e -#define SI 0x0f +#define SO 0x0e +#define SI 0x0f /* * The state is composed of one of the following values */ -#define STATE_ASCII 0 -#define STATE_TWOBYTE 1 +#define STATE_ASCII 0 +#define STATE_TWOBYTE 1 /* * and one of the following values, << 8 */ -#define STATE2_NONE 0 -#define STATE2_DESIGNATED_KSC5601 1 +#define STATE2_NONE 0 +#define STATE2_DESIGNATED_KSC5601 1 -#define SPLIT_STATE \ - unsigned int state1 = state & 0xff, state2 = state >> 8 -#define COMBINE_STATE \ - state = (state2 << 8) | state1 +#define SPLIT_STATE unsigned int state1 = state & 0xff, state2 = state >> 8 +#define COMBINE_STATE state = (state2 << 8) | state1 -static int -iso2022_kr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso2022_kr_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - SPLIT_STATE; - int count = 0; - unsigned char c; - for (;;) { - c = *s; - if (c == ESC) { - if (n < count+4) - goto none; - if (s[1] == '$') { - if (s[2] == ')') { - if (s[3] == 'C') { - state2 = STATE2_DESIGNATED_KSC5601; - s += 4; count += 4; - if (n < count+1) - goto none; + state_t state = conv->istate; + SPLIT_STATE; + int count = 0; + unsigned char c; + for (;;) + { + c = *s; + if (c == ESC) + { + if (n < count + 4) + goto none; + if (s[1] == '$') + { + if (s[2] == ')') + { + if (s[3] == 'C') + { + state2 = STATE2_DESIGNATED_KSC5601; + s += 4; + count += 4; + if (n < count + 1) + goto none; + continue; + } + } + } + goto ilseq; + } + if (c == SO) + { + if (state2 != STATE2_DESIGNATED_KSC5601) + goto ilseq; + state1 = STATE_TWOBYTE; + s++; + count++; + if (n < count + 1) + goto none; continue; - } } - } - goto ilseq; - } - if (c == SO) { - if (state2 != STATE2_DESIGNATED_KSC5601) - goto ilseq; - state1 = STATE_TWOBYTE; - s++; count++; - if (n < count+1) - goto none; - continue; - } - if (c == SI) { - state1 = STATE_ASCII; - s++; count++; - if (n < count+1) - goto none; - continue; + if (c == SI) + { + state1 = STATE_ASCII; + s++; + count++; + if (n < count + 1) + goto none; + continue; + } + break; } - break; - } - switch (state1) { + switch (state1) + { case STATE_ASCII: - if (c < 0x80) { - int ret = ascii_mbtowc(conv,pwc,s,1); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 1) abort(); + if (c < 0x80) + { + int ret = ascii_mbtowc(conv, pwc, s, 1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) + abort(); #if 0 /* Accept ISO-2022-KR according to CJK.INF. */ if (*pwc == 0x000a || *pwc == 0x000d) state2 = STATE2_NONE; #endif - COMBINE_STATE; - conv->istate = state; - return count+1; - } else - goto ilseq; + COMBINE_STATE; + conv->istate = state; + return count + 1; + } + else + goto ilseq; case STATE_TWOBYTE: - if (n < count+2) - goto none; - if (state2 != STATE2_DESIGNATED_KSC5601) abort(); - if (s[0] < 0x80 && s[1] < 0x80) { - int ret = ksc5601_mbtowc(conv,pwc,s,2); - if (ret == RET_ILSEQ) - goto ilseq; - if (ret != 2) abort(); - COMBINE_STATE; - conv->istate = state; - return count+2; - } else - goto ilseq; - default: abort(); - } + if (n < count + 2) + goto none; + if (state2 != STATE2_DESIGNATED_KSC5601) + abort(); + if (s[0] < 0x80 && s[1] < 0x80) + { + int ret = ksc5601_mbtowc(conv, pwc, s, 2); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) + abort(); + COMBINE_STATE; + conv->istate = state; + return count + 2; + } + else + goto ilseq; + default: + abort(); + } none: - COMBINE_STATE; - conv->istate = state; - return RET_TOOFEW(count); + COMBINE_STATE; + conv->istate = state; + return RET_TOOFEW(count); ilseq: - COMBINE_STATE; - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + COMBINE_STATE; + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } -static int -iso2022_kr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso2022_kr_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - unsigned char buf[2]; - int ret; - - /* Try ASCII. */ - ret = ascii_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] < 0x80) { - int count = (state1 == STATE_ASCII ? 1 : 2); - if (n < count) - return RET_TOOSMALL; - if (state1 != STATE_ASCII) { - r[0] = SI; - r += 1; - state1 = STATE_ASCII; - } - r[0] = buf[0]; - if (wc == 0x000a || wc == 0x000d) - state2 = STATE2_NONE; - COMBINE_STATE; - conv->ostate = state; - return count; + state_t state = conv->ostate; + SPLIT_STATE; + unsigned char buf[2]; + int ret; + + /* Try ASCII. */ + ret = ascii_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] < 0x80) + { + int count = (state1 == STATE_ASCII ? 1 : 2); + if (n < count) + return RET_TOOSMALL; + if (state1 != STATE_ASCII) + { + r[0] = SI; + r += 1; + state1 = STATE_ASCII; + } + r[0] = buf[0]; + if (wc == 0x000a || wc == 0x000d) + state2 = STATE2_NONE; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - - /* Try KS C 5601-1992. */ - ret = ksc5601_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (buf[0] < 0x80 && buf[1] < 0x80) { - int count = (state2 == STATE2_DESIGNATED_KSC5601 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; - if (n < count) - return RET_TOOSMALL; - if (state2 != STATE2_DESIGNATED_KSC5601) { - r[0] = ESC; - r[1] = '$'; - r[2] = ')'; - r[3] = 'C'; - r += 4; - state2 = STATE2_DESIGNATED_KSC5601; - } - if (state1 != STATE_TWOBYTE) { - r[0] = SO; - r += 1; - state1 = STATE_TWOBYTE; - } - r[0] = buf[0]; - r[1] = buf[1]; - COMBINE_STATE; - conv->ostate = state; - return count; + + /* Try KS C 5601-1992. */ + ret = ksc5601_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) + { + int count = (state2 == STATE2_DESIGNATED_KSC5601 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; + if (n < count) + return RET_TOOSMALL; + if (state2 != STATE2_DESIGNATED_KSC5601) + { + r[0] = ESC; + r[1] = '$'; + r[2] = ')'; + r[3] = 'C'; + r += 4; + state2 = STATE2_DESIGNATED_KSC5601; + } + if (state1 != STATE_TWOBYTE) + { + r[0] = SO; + r += 1; + state1 = STATE_TWOBYTE; + } + r[0] = buf[0]; + r[1] = buf[1]; + COMBINE_STATE; + conv->ostate = state; + return count; + } } - } - return RET_ILUNI; + return RET_ILUNI; } -static int -iso2022_kr_reset (conv_t conv, unsigned char *r, size_t n) +static int iso2022_kr_reset(conv_t conv, unsigned char *r, size_t n) { - state_t state = conv->ostate; - SPLIT_STATE; - (void)state2; - if (state1 != STATE_ASCII) { - if (n < 1) - return RET_TOOSMALL; - r[0] = SI; - /* conv->ostate = 0; will be done by the caller */ - return 1; - } else - return 0; + state_t state = conv->ostate; + SPLIT_STATE; + (void)state2; + if (state1 != STATE_ASCII) + { + if (n < 1) + return RET_TOOSMALL; + r[0] = SI; + /* conv->ostate = 0; will be done by the caller */ + return 1; + } + else + return 0; } #undef COMBINE_STATE @@ -219,3 +254,5 @@ iso2022_kr_reset (conv_t conv, unsigned char *r, size_t n) #undef STATE2_NONE #undef STATE_TWOBYTE #undef STATE_ASCII + +#endif /* _ISO2022_KR_H_ */ diff --git a/lib/converters/iso646_cn.h b/lib/converters/iso646_cn.h index 3b48aeea..69ff074e 100644 --- a/lib/converters/iso646_cn.h +++ b/lib/converters/iso646_cn.h @@ -1,5 +1,10 @@ +/** + * @file iso646_cn.h + * @brief ISO646-CN + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,40 +23,48 @@ */ /* - * ISO646-CN * also known as GB_1988-80 */ -static int -iso646_cn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#ifndef _ISO646_CN_H_ +#define _ISO646_CN_H_ + +#include "reiconv_defines.h" + +static int iso646_cn_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - if (c == 0x24) - *pwc = (ucs4_t) 0x00a5; - else if (c == 0x7e) - *pwc = (ucs4_t) 0x203e; - else - *pwc = (ucs4_t) c; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + if (c < 0x80) + { + if (c == 0x24) + *pwc = (ucs4_t)0x00a5; + else if (c == 0x7e) + *pwc = (ucs4_t)0x203e; + else + *pwc = (ucs4_t)c; + return 1; + } + return RET_ILSEQ; } -static int -iso646_cn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso646_cn_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x0080 && !(wc == 0x0024 || wc == 0x007e)) { - *r = wc; - return 1; - } - if (wc == 0x00a5) { - *r = 0x24; - return 1; - } - if (wc == 0x203e) { - *r = 0x7e; - return 1; - } - return RET_ILUNI; + if (wc < 0x0080 && !(wc == 0x0024 || wc == 0x007e)) + { + *r = wc; + return 1; + } + if (wc == 0x00a5) + { + *r = 0x24; + return 1; + } + if (wc == 0x203e) + { + *r = 0x7e; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO646_CN_H_ */ diff --git a/lib/converters/iso646_jp.h b/lib/converters/iso646_jp.h index 3519a698..2eabc04d 100644 --- a/lib/converters/iso646_jp.h +++ b/lib/converters/iso646_jp.h @@ -1,5 +1,10 @@ +/** + * @file iso646_jp.h + * @brief ISO646-JP + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,42 +23,50 @@ */ /* - * ISO646-JP * also known as JIS_C6220-1969-RO */ +#ifndef _ISO646_JP_H_ +#define _ISO646_JP_H_ + +#include "reiconv_defines.h" + /* This is the lower half of JIS_X0201. */ -static int -iso646_jp_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso646_jp_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - if (c == 0x5c) - *pwc = (ucs4_t) 0x00a5; - else if (c == 0x7e) - *pwc = (ucs4_t) 0x203e; - else - *pwc = (ucs4_t) c; - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + if (c < 0x80) + { + if (c == 0x5c) + *pwc = (ucs4_t)0x00a5; + else if (c == 0x7e) + *pwc = (ucs4_t)0x203e; + else + *pwc = (ucs4_t)c; + return 1; + } + return RET_ILSEQ; } -static int -iso646_jp_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso646_jp_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) { - *r = wc; - return 1; - } - if (wc == 0x00a5) { - *r = 0x5c; - return 1; - } - if (wc == 0x203e) { - *r = 0x7e; - return 1; - } - return RET_ILUNI; + if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) + { + *r = wc; + return 1; + } + if (wc == 0x00a5) + { + *r = 0x5c; + return 1; + } + if (wc == 0x203e) + { + *r = 0x7e; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO646_JP_H_ */ diff --git a/lib/converters/iso8859_1.h b/lib/converters/iso8859_1.h index f0ad9b5e..a9789cf6 100644 --- a/lib/converters/iso8859_1.h +++ b/lib/converters/iso8859_1.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_1.h + * @brief ISO-8859-1 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,24 +22,26 @@ * If not, see . */ -/* - * ISO-8859-1 - */ +#ifndef _ISO8859_1_H_ +#define _ISO8859_1_H_ + +#include "reiconv_defines.h" -static int -iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_1_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + *pwc = (ucs4_t)c; + return 1; } -static int -iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_1_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x0100) { - *r = wc; - return 1; - } - return RET_ILUNI; + if (wc < 0x0100) + { + *r = wc; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_1_H_ */ diff --git a/lib/converters/iso8859_10.h b/lib/converters/iso8859_10.h index 4fa101fe..4b26e398 100644 --- a/lib/converters/iso8859_10.h +++ b/lib/converters/iso8859_10.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_10.h + * @brief ISO-8859-10 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-10 - */ +#ifndef _ISO8859_10_H_ +#define _ISO8859_10_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_10_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_10_2uni[96] = { 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, }; -static int -iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_10_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)iso8859_10_2uni[c - 0xa0]; + return 1; } static const unsigned char iso8859_10_page00[224] = { @@ -85,21 +90,24 @@ static const unsigned char iso8859_10_page00[224] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */ }; -static int -iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_10_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = iso8859_10_page00[wc-0x00a0]; - else if (wc == 0x2015) - c = 0xbd; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = iso8859_10_page00[wc - 0x00a0]; + else if (wc == 0x2015) + c = 0xbd; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_10_H_ */ diff --git a/lib/converters/iso8859_11.h b/lib/converters/iso8859_11.h index b9222451..476eb8bd 100644 --- a/lib/converters/iso8859_11.h +++ b/lib/converters/iso8859_11.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_11.h + * @brief ISO-8859-11 + * @copyright Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,35 +22,40 @@ * If not, see . */ -/* - * ISO-8859-11 - */ +#ifndef _ISO8859_11_H_ +#define _ISO8859_11_H_ -static int -iso8859_11_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int iso8859_11_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa1) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c <= 0xfb && !(c >= 0xdb && c <= 0xde)) { - *pwc = (ucs4_t) (c + 0x0d60); - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + if (c < 0xa1) + { + *pwc = (ucs4_t)c; + return 1; + } + else if (c <= 0xfb && !(c >= 0xdb && c <= 0xde)) + { + *pwc = (ucs4_t)(c + 0x0d60); + return 1; + } + return RET_ILSEQ; } -static int -iso8859_11_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_11_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x00a1) { - *r = wc; - return 1; - } - else if (wc >= 0x0e01 && wc <= 0x0e5b && !(wc >= 0x0e3b && wc <= 0x0e3e)) { - *r = wc-0x0d60; - return 1; - } - return RET_ILUNI; + if (wc < 0x00a1) + { + *r = wc; + return 1; + } + else if (wc >= 0x0e01 && wc <= 0x0e5b && !(wc >= 0x0e3b && wc <= 0x0e3e)) + { + *r = wc - 0x0d60; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_11_H_ */ diff --git a/lib/converters/iso8859_13.h b/lib/converters/iso8859_13.h index 37ef8901..8b84ea91 100644 --- a/lib/converters/iso8859_13.h +++ b/lib/converters/iso8859_13.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_13.h + * @brief ISO-8859-13 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-13 - */ +#ifndef _ISO8859_13_H_ +#define _ISO8859_13_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_13_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_13_2uni[96] = { 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, }; -static int -iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_13_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)iso8859_13_2uni[c - 0xa0]; + return 1; } static const unsigned char iso8859_13_page00[224] = { @@ -88,21 +93,24 @@ static const unsigned char iso8859_13_page20[8] = { 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */ }; -static int -iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_13_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = iso8859_13_page00[wc-0x00a0]; - else if (wc >= 0x2018 && wc < 0x2020) - c = iso8859_13_page20[wc-0x2018]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = iso8859_13_page00[wc - 0x00a0]; + else if (wc >= 0x2018 && wc < 0x2020) + c = iso8859_13_page20[wc - 0x2018]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_13_H_ */ diff --git a/lib/converters/iso8859_14.h b/lib/converters/iso8859_14.h index bcdad87f..8415346a 100644 --- a/lib/converters/iso8859_14.h +++ b/lib/converters/iso8859_14.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_14.h + * @brief ISO-8859-14 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-14 - */ +#ifndef _ISO8859_14_H_ +#define _ISO8859_14_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_14_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_14_2uni[96] = { 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, }; -static int -iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_14_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0xa0) - *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0]; - else - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + if (c >= 0xa0) + *pwc = (ucs4_t)iso8859_14_2uni[c - 0xa0]; + else + *pwc = (ucs4_t)c; + return 1; } static const unsigned char iso8859_14_page00[96] = { @@ -100,27 +105,30 @@ static const unsigned char iso8859_14_page1e_1[8] = { 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */ }; -static int -iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_14_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = iso8859_14_page00[wc-0x00a0]; - else if (wc >= 0x0108 && wc < 0x0128) - c = iso8859_14_page01_0[wc-0x0108]; - else if (wc >= 0x0170 && wc < 0x0180) - c = iso8859_14_page01_1[wc-0x0170]; - else if (wc >= 0x1e00 && wc < 0x1e88) - c = iso8859_14_page1e_0[wc-0x1e00]; - else if (wc >= 0x1ef0 && wc < 0x1ef8) - c = iso8859_14_page1e_1[wc-0x1ef0]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = iso8859_14_page00[wc - 0x00a0]; + else if (wc >= 0x0108 && wc < 0x0128) + c = iso8859_14_page01_0[wc - 0x0108]; + else if (wc >= 0x0170 && wc < 0x0180) + c = iso8859_14_page01_1[wc - 0x0170]; + else if (wc >= 0x1e00 && wc < 0x1e88) + c = iso8859_14_page1e_0[wc - 0x1e00]; + else if (wc >= 0x1ef0 && wc < 0x1ef8) + c = iso8859_14_page1e_1[wc - 0x1ef0]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_14_H_ */ diff --git a/lib/converters/iso8859_15.h b/lib/converters/iso8859_15.h index dadcbe75..05aff7d1 100644 --- a/lib/converters/iso8859_15.h +++ b/lib/converters/iso8859_15.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_15.h + * @brief ISO-8859-15 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-15 - */ +#ifndef _ISO8859_15_H_ +#define _ISO8859_15_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_15_2uni[32] = { /* 0xa0 */ @@ -30,15 +36,14 @@ static const unsigned short iso8859_15_2uni[32] = { 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, }; -static int -iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_15_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0xa0 && c < 0xc0) - *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0]; - else - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + if (c >= 0xa0 && c < 0xc0) + *pwc = (ucs4_t)iso8859_15_2uni[c - 0xa0]; + else + *pwc = (ucs4_t)c; + return 1; } static const unsigned char iso8859_15_page00[32] = { @@ -56,25 +61,28 @@ static const unsigned char iso8859_15_page01[48] = { 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */ }; -static int -iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_15_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = iso8859_15_page00[wc-0x00a0]; - else if (wc >= 0x00c0 && wc < 0x0100) - c = wc; - else if (wc >= 0x0150 && wc < 0x0180) - c = iso8859_15_page01[wc-0x0150]; - else if (wc == 0x20ac) - c = 0xa4; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = iso8859_15_page00[wc - 0x00a0]; + else if (wc >= 0x00c0 && wc < 0x0100) + c = wc; + else if (wc >= 0x0150 && wc < 0x0180) + c = iso8859_15_page01[wc - 0x0150]; + else if (wc == 0x20ac) + c = 0xa4; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_15_H_ */ diff --git a/lib/converters/iso8859_16.h b/lib/converters/iso8859_16.h index 0f454d4a..3e4c5fcf 100644 --- a/lib/converters/iso8859_16.h +++ b/lib/converters/iso8859_16.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_16.h + * @brief ISO-8859-16 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-16 - */ +#ifndef _ISO8859_16_H_ +#define _ISO8859_16_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_16_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_16_2uni[96] = { 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, }; -static int -iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_16_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)iso8859_16_2uni[c - 0xa0]; + return 1; } static const unsigned char iso8859_16_page00[224] = { @@ -91,25 +96,28 @@ static const unsigned char iso8859_16_page20[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00, /* 0x18-0x1f */ }; -static int -iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_16_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = iso8859_16_page00[wc-0x00a0]; - else if (wc >= 0x0218 && wc < 0x0220) - c = iso8859_16_page02[wc-0x0218]; - else if (wc >= 0x2018 && wc < 0x2020) - c = iso8859_16_page20[wc-0x2018]; - else if (wc == 0x20ac) - c = 0xa4; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = iso8859_16_page00[wc - 0x00a0]; + else if (wc >= 0x0218 && wc < 0x0220) + c = iso8859_16_page02[wc - 0x0218]; + else if (wc >= 0x2018 && wc < 0x2020) + c = iso8859_16_page20[wc - 0x2018]; + else if (wc == 0x20ac) + c = 0xa4; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_16_H_ */ diff --git a/lib/converters/iso8859_2.h b/lib/converters/iso8859_2.h index 1b7232bc..ddb51f72 100644 --- a/lib/converters/iso8859_2.h +++ b/lib/converters/iso8859_2.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_2.h + * @brief ISO-8859-2 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-2 - */ +#ifndef _ISO8859_2_H_ +#define _ISO8859_2_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_2_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_2_2uni[96] = { 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, }; -static int -iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)iso8859_2_2uni[c - 0xa0]; + return 1; } static const unsigned char iso8859_2_page00[224] = { @@ -91,21 +96,24 @@ static const unsigned char iso8859_2_page02[32] = { 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_2_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = iso8859_2_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = iso8859_2_page02[wc-0x02c0]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = iso8859_2_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = iso8859_2_page02[wc - 0x02c0]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_2_H_ */ diff --git a/lib/converters/iso8859_3.h b/lib/converters/iso8859_3.h index 1c25c815..6eb215fd 100644 --- a/lib/converters/iso8859_3.h +++ b/lib/converters/iso8859_3.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_3.h + * @brief ISO-8859-3 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-3 - */ +#ifndef _ISO8859_3_H_ +#define _ISO8859_3_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_3_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short iso8859_3_2uni[96] = { 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, }; -static int -iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_3_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = iso8859_3_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = iso8859_3_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char iso8859_3_page00[96] = { @@ -95,23 +103,26 @@ static const unsigned char iso8859_3_page02[8] = { 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_3_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = iso8859_3_page00[wc-0x00a0]; - else if (wc >= 0x0108 && wc < 0x0180) - c = iso8859_3_page01[wc-0x0108]; - else if (wc >= 0x02d8 && wc < 0x02e0) - c = iso8859_3_page02[wc-0x02d8]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = iso8859_3_page00[wc - 0x00a0]; + else if (wc >= 0x0108 && wc < 0x0180) + c = iso8859_3_page01[wc - 0x0108]; + else if (wc >= 0x02d8 && wc < 0x02e0) + c = iso8859_3_page02[wc - 0x02d8]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_3_H_ */ diff --git a/lib/converters/iso8859_4.h b/lib/converters/iso8859_4.h index c1a947e6..6cb064b7 100644 --- a/lib/converters/iso8859_4.h +++ b/lib/converters/iso8859_4.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_4.h + * @brief ISO-8859-4 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-4 - */ +#ifndef _ISO8859_4_H_ +#define _ISO8859_4_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_4_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_4_2uni[96] = { 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, }; -static int -iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_4_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)iso8859_4_2uni[c - 0xa0]; + return 1; } static const unsigned char iso8859_4_page00[224] = { @@ -91,21 +96,24 @@ static const unsigned char iso8859_4_page02[32] = { 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_4_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = iso8859_4_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = iso8859_4_page02[wc-0x02c0]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = iso8859_4_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = iso8859_4_page02[wc - 0x02c0]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_4_H_ */ diff --git a/lib/converters/iso8859_5.h b/lib/converters/iso8859_5.h index fa975c1a..4c8d1605 100644 --- a/lib/converters/iso8859_5.h +++ b/lib/converters/iso8859_5.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_5.h + * @brief ISO-8859-5 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-5 - */ +#ifndef _ISO8859_5_H_ +#define _ISO8859_5_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_5_2uni[96] = { /* 0xa0 */ @@ -42,15 +48,14 @@ static const unsigned short iso8859_5_2uni[96] = { 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, }; -static int -iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_5_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0]; - return 1; + unsigned char c = *s; + if (c < 0xa0) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)iso8859_5_2uni[c - 0xa0]; + return 1; } static const unsigned char iso8859_5_page00[16] = { @@ -72,23 +77,26 @@ static const unsigned char iso8859_5_page04[96] = { 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */ }; -static int -iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_5_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b0) - c = iso8859_5_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0460) - c = iso8859_5_page04[wc-0x0400]; - else if (wc == 0x2116) - c = 0xf0; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b0) + c = iso8859_5_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0460) + c = iso8859_5_page04[wc - 0x0400]; + else if (wc == 0x2116) + c = 0xf0; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_5_H_ */ diff --git a/lib/converters/iso8859_6.h b/lib/converters/iso8859_6.h index 0b3ac799..68951ed2 100644 --- a/lib/converters/iso8859_6.h +++ b/lib/converters/iso8859_6.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_6.h + * @brief ISO-8859-6 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-6 - */ +#ifndef _ISO8859_6_H_ +#define _ISO8859_6_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_6_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short iso8859_6_2uni[96] = { 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; -static int -iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_6_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = iso8859_6_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = iso8859_6_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char iso8859_6_page00[16] = { @@ -77,21 +85,24 @@ static const unsigned char iso8859_6_page06[80] = { 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ }; -static int -iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_6_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00b0) - c = iso8859_6_page00[wc-0x00a0]; - else if (wc >= 0x0608 && wc < 0x0658) - c = iso8859_6_page06[wc-0x0608]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00b0) + c = iso8859_6_page00[wc - 0x00a0]; + else if (wc >= 0x0608 && wc < 0x0658) + c = iso8859_6_page06[wc - 0x0608]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_6_H_ */ diff --git a/lib/converters/iso8859_7.h b/lib/converters/iso8859_7.h index 05944f4b..4c5d0da0 100644 --- a/lib/converters/iso8859_7.h +++ b/lib/converters/iso8859_7.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_7.h + * @brief ISO-8859-7 + * @copyright Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-7 - */ +#ifndef _ISO8859_7_H_ +#define _ISO8859_7_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_7_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short iso8859_7_2uni[96] = { 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, }; -static int -iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_7_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = iso8859_7_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = iso8859_7_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char iso8859_7_page00[32] = { @@ -84,27 +92,30 @@ static const unsigned char iso8859_7_page20[16] = { 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; -static int -iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_7_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = iso8859_7_page00[wc-0x00a0]; - else if (wc >= 0x0378 && wc < 0x03d0) - c = iso8859_7_page03[wc-0x0378]; - else if (wc >= 0x2010 && wc < 0x2020) - c = iso8859_7_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0xa4; - else if (wc == 0x20af) - c = 0xa5; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = iso8859_7_page00[wc - 0x00a0]; + else if (wc >= 0x0378 && wc < 0x03d0) + c = iso8859_7_page03[wc - 0x0378]; + else if (wc >= 0x2010 && wc < 0x2020) + c = iso8859_7_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0xa4; + else if (wc == 0x20af) + c = 0xa5; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_7_H_ */ diff --git a/lib/converters/iso8859_8.h b/lib/converters/iso8859_8.h index 19631042..022cfb9c 100644 --- a/lib/converters/iso8859_8.h +++ b/lib/converters/iso8859_8.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_8.h + * @brief ISO-8859-8 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-8 - */ +#ifndef _ISO8859_8_H_ +#define _ISO8859_8_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_8_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short iso8859_8_2uni[96] = { 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, }; -static int -iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int iso8859_8_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0xa0) { - unsigned short wc = iso8859_8_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c >= 0xa0) + { + unsigned short wc = iso8859_8_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } } - } - else { - *pwc = (ucs4_t) c; - return 1; - } - return RET_ILSEQ; + else + { + *pwc = (ucs4_t)c; + return 1; + } + return RET_ILSEQ; } static const unsigned char iso8859_8_page00[88] = { @@ -84,23 +92,26 @@ static const unsigned char iso8859_8_page20[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */ }; -static int -iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_8_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00f8) - c = iso8859_8_page00[wc-0x00a0]; - else if (wc >= 0x05d0 && wc < 0x05f0) - c = iso8859_8_page05[wc-0x05d0]; - else if (wc >= 0x2008 && wc < 0x2018) - c = iso8859_8_page20[wc-0x2008]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00f8) + c = iso8859_8_page00[wc - 0x00a0]; + else if (wc >= 0x05d0 && wc < 0x05f0) + c = iso8859_8_page05[wc - 0x05d0]; + else if (wc >= 0x2008 && wc < 0x2018) + c = iso8859_8_page20[wc - 0x2008]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_8_H_ */ diff --git a/lib/converters/iso8859_9.h b/lib/converters/iso8859_9.h index be13b547..6e22eb81 100644 --- a/lib/converters/iso8859_9.h +++ b/lib/converters/iso8859_9.h @@ -1,5 +1,10 @@ +/** + * @file iso8859_9.h + * @brief ISO-8859-9 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-8859-9 - */ +#ifndef _ISO8859_9_H_ +#define _ISO8859_9_H_ + +#include "reiconv_defines.h" static const unsigned short iso8859_9_2uni[48] = { /* 0xd0 */ @@ -64,21 +70,24 @@ static const unsigned char iso8859_9_page01[72] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */ }; -static int -iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int iso8859_9_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00d0) { - *r = wc; - return 1; - } - else if (wc >= 0x00d0 && wc < 0x0100) - c = iso8859_9_page00[wc-0x00d0]; - else if (wc >= 0x0118 && wc < 0x0160) - c = iso8859_9_page01[wc-0x0118]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00d0) + { + *r = wc; + return 1; + } + else if (wc >= 0x00d0 && wc < 0x0100) + c = iso8859_9_page00[wc - 0x00d0]; + else if (wc >= 0x0118 && wc < 0x0160) + c = iso8859_9_page01[wc - 0x0118]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _ISO8859_9_H_ */ diff --git a/lib/converters/isoir165.h b/lib/converters/isoir165.h index 633004a5..d9cfac60 100644 --- a/lib/converters/isoir165.h +++ b/lib/converters/isoir165.h @@ -1,5 +1,10 @@ +/** + * @file isoir165.h + * @brief ISO-IR-165 + * @copyright Copyright (C) 1999-2001, 2005, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2005, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* - * ISO-IR-165 - */ - /* * ISO-IR-165 is an extension of GB 2312, consisting of: * 1. GB 6345.1-86 corrections: @@ -77,84 +78,106 @@ * Row 0x2F: Taken from Koichi Yasuoka's Uni2GB table. */ +#ifndef _ISOIR165_H_ +#define _ISOIR165_H_ + +#include "converters/gb2312.h" +#include "converters/iso646_cn.h" +#include "reiconv_defines.h" + #include "isoir165ext.h" #include -static int -isoir165_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int isoir165_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - int ret; + int ret; - /* Map full-width pinyin (row 0x28) like half-width pinyin (row 0x2B). */ - if (s[0] == 0x28) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 <= 0x40) { - unsigned char buf[2]; - buf[0] = 0x2b; - buf[1] = c2; - ret = isoir165ext_mbtowc(conv,pwc,buf,2); - if (ret != RET_ILSEQ) - return ret; - } + /* Map full-width pinyin (row 0x28) like half-width pinyin (row 0x2B). */ + if (s[0] == 0x28) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 <= 0x40) + { + unsigned char buf[2]; + buf[0] = 0x2b; + buf[1] = c2; + ret = isoir165ext_mbtowc(conv, pwc, buf, 2); + if (ret != RET_ILSEQ) + return ret; + } + } } - } - /* Try the GB2312 -> Unicode table. */ - ret = gb2312_mbtowc(conv,pwc,s,n); - if (ret != RET_ILSEQ) - return ret; - /* Row 0x2A is GB_1988-80. */ - if (s[0] == 0x2a) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - ret = iso646_cn_mbtowc(conv,pwc,s+1,1); - if (ret != 1) abort(); - return 2; - } - return RET_ILSEQ; + /* Try the GB2312 -> Unicode table. */ + ret = gb2312_mbtowc(conv, pwc, s, n); + if (ret != RET_ILSEQ) + return ret; + /* Row 0x2A is GB_1988-80. */ + if (s[0] == 0x2a) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + ret = iso646_cn_mbtowc(conv, pwc, s + 1, 1); + if (ret != 1) + abort(); + return 2; + } + return RET_ILSEQ; + } + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - /* Try the ISO-IR-165 extensions -> Unicode table. */ - ret = isoir165ext_mbtowc(conv,pwc,s,n); - return ret; + /* Try the ISO-IR-165 extensions -> Unicode table. */ + ret = isoir165ext_mbtowc(conv, pwc, s, n); + return ret; } -static int -isoir165_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int isoir165_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Try the Unicode -> GB2312 table. */ - ret = gb2312_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (!(buf[0] == 0x28 && buf[1] >= 0x21 && buf[1] <= 0x40)) { - if (n >= 2) { - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } - return RET_TOOSMALL; + /* Try the Unicode -> GB2312 table. */ + ret = gb2312_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (!(buf[0] == 0x28 && buf[1] >= 0x21 && buf[1] <= 0x40)) + { + if (n >= 2) + { + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } + return RET_TOOSMALL; + } } - } - /* Row 0x2A is GB_1988-80. */ - ret = iso646_cn_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - if (ret != 1) abort(); - if (buf[0] >= 0x21 && buf[0] < 0x7f) { - if (n >= 2) { - r[0] = 0x2a; - r[1] = buf[0]; - return 2; - } - return RET_TOOSMALL; + /* Row 0x2A is GB_1988-80. */ + ret = iso646_cn_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + if (ret != 1) + abort(); + if (buf[0] >= 0x21 && buf[0] < 0x7f) + { + if (n >= 2) + { + r[0] = 0x2a; + r[1] = buf[0]; + return 2; + } + return RET_TOOSMALL; + } } - } - /* Try the Unicode -> ISO-IR-165 extensions table. */ - ret = isoir165ext_wctomb(conv,r,wc,n); - return ret; + /* Try the Unicode -> ISO-IR-165 extensions table. */ + ret = isoir165ext_wctomb(conv, r, wc, n); + return ret; } + +#endif /* _ISOIR165_H_ */ diff --git a/lib/converters/isoir165ext.h b/lib/converters/isoir165ext.h index ef2a978a..5f43dbaf 100644 --- a/lib/converters/isoir165ext.h +++ b/lib/converters/isoir165ext.h @@ -1,5 +1,10 @@ +/** + * @file isoir165ext.h + * @brief ISO-IR-165 extensions + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * ISO-IR-165 extensions - */ +#ifndef _ISOIR165EXT_H_ +#define _ISOIR165EXT_H_ + +#include "reiconv_defines.h" static const unsigned short isoir165ext_2uni_page2b[470] = { /* 0x2b */ @@ -156,33 +162,39 @@ static const unsigned short isoir165ext_2uni_page7a[470] = { 0x68d0, 0x7306, 0x9f81, 0x9f82, 0x92c6, 0x9491, }; -static int -isoir165ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int isoir165ext_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x2b && c1 <= 0x2f) || (c1 >= 0x7a && c1 <= 0x7e)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - unsigned short wc = 0xfffd; - if (i < 8366) { - if (i < 1410) - wc = isoir165ext_2uni_page2b[i-940]; - } else { - if (i < 8836) - wc = isoir165ext_2uni_page7a[i-8366]; + unsigned char c1 = s[0]; + if ((c1 >= 0x2b && c1 <= 0x2f) || (c1 >= 0x7a && c1 <= 0x7e)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + if (i < 8366) + { + if (i < 1410) + wc = isoir165ext_2uni_page2b[i - 940]; + } + else + { + if (i < 8836) + wc = isoir165ext_2uni_page7a[i - 8366]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short isoir165ext_2charset[876] = { @@ -751,49 +763,54 @@ static const Summary16 isoir165ext_uni2indx_pageff[5] = { { 875, 0x0080 }, }; -static int -isoir165ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int isoir165ext_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0200) - summary = &isoir165ext_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x0300 && wc < 0x03c0) - summary = &isoir165ext_uni2indx_page03[(wc>>4)-0x030]; - else if (wc >= 0x1e00 && wc < 0x1fc0) - summary = &isoir165ext_uni2indx_page1e[(wc>>4)-0x1e0]; - else if (wc >= 0x3000 && wc < 0x3040) - summary = &isoir165ext_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x3200 && wc < 0x3400) - summary = &isoir165ext_uni2indx_page32[(wc>>4)-0x320]; - else if (wc >= 0x4e00 && wc < 0x7d00) - summary = &isoir165ext_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0x7e00 && wc < 0x92d0) - summary = &isoir165ext_uni2indx_page7e[(wc>>4)-0x7e0]; - else if (wc >= 0x9400 && wc < 0x9cf0) - summary = &isoir165ext_uni2indx_page94[(wc>>4)-0x940]; - else if (wc >= 0x9e00 && wc < 0x9f90) - summary = &isoir165ext_uni2indx_page9e[(wc>>4)-0x9e0]; - else if (wc >= 0xff00 && wc < 0xff50) - summary = &isoir165ext_uni2indx_pageff[(wc>>4)-0xff0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = isoir165ext_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0200) + summary = &isoir165ext_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x0300 && wc < 0x03c0) + summary = &isoir165ext_uni2indx_page03[(wc >> 4) - 0x030]; + else if (wc >= 0x1e00 && wc < 0x1fc0) + summary = &isoir165ext_uni2indx_page1e[(wc >> 4) - 0x1e0]; + else if (wc >= 0x3000 && wc < 0x3040) + summary = &isoir165ext_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x3200 && wc < 0x3400) + summary = &isoir165ext_uni2indx_page32[(wc >> 4) - 0x320]; + else if (wc >= 0x4e00 && wc < 0x7d00) + summary = &isoir165ext_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0x7e00 && wc < 0x92d0) + summary = &isoir165ext_uni2indx_page7e[(wc >> 4) - 0x7e0]; + else if (wc >= 0x9400 && wc < 0x9cf0) + summary = &isoir165ext_uni2indx_page94[(wc >> 4) - 0x940]; + else if (wc >= 0x9e00 && wc < 0x9f90) + summary = &isoir165ext_uni2indx_page9e[(wc >> 4) - 0x9e0]; + else if (wc >= 0xff00 && wc < 0xff50) + summary = &isoir165ext_uni2indx_pageff[(wc >> 4) - 0xff0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = isoir165ext_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _ISOIR165EXT_H_ */ diff --git a/lib/converters/java.h b/lib/converters/java.h index 037cc744..b93172b1 100644 --- a/lib/converters/java.h +++ b/lib/converters/java.h @@ -1,5 +1,10 @@ +/** + * @file java.h + * @brief JAVA + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,119 +23,148 @@ */ /* - * JAVA * This is ISO 8859-1 with \uXXXX escape sequences, denoting Unicode BMP * characters. Consecutive pairs of \uXXXX escape sequences in the surrogate * range, as in UTF-16, denote Unicode characters outside the BMP. */ -static int -java_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#ifndef _JAVA_H_ +#define _JAVA_H_ + +#include "reiconv_defines.h" + +static int java_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c; - ucs4_t wc, wc2; - int i; + unsigned char c; + ucs4_t wc, wc2; + int i; - c = s[0]; - if (c != '\\') { - *pwc = c; - return 1; - } - if (n < 2) - return RET_TOOFEW(0); - if (s[1] != 'u') - goto simply_backslash; - wc = 0; - for (i = 2; i < 6; i++) { - if (n <= i) - return RET_TOOFEW(0); - c = s[i]; - if (c >= '0' && c <= '9') - c -= '0'; - else if (c >= 'A' && c <= 'Z') - c -= 'A'-10; - else if (c >= 'a' && c <= 'z') - c -= 'a'-10; - else - goto simply_backslash; - wc |= (ucs4_t) c << (4 * (5-i)); - } - if (!(wc >= 0xd800 && wc < 0xe000)) { - *pwc = wc; - return 6; - } - if (wc >= 0xdc00) - goto simply_backslash; - if (n < 7) - return RET_TOOFEW(0); - if (s[6] != '\\') - goto simply_backslash; - if (n < 8) - return RET_TOOFEW(0); - if (s[7] != 'u') - goto simply_backslash; - wc2 = 0; - for (i = 8; i < 12; i++) { - if (n <= i) - return RET_TOOFEW(0); - c = s[i]; - if (c >= '0' && c <= '9') - c -= '0'; - else if (c >= 'A' && c <= 'Z') - c -= 'A'-10; - else if (c >= 'a' && c <= 'z') - c -= 'a'-10; - else - goto simply_backslash; - wc2 |= (ucs4_t) c << (4 * (11-i)); - } - if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) - goto simply_backslash; - *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); - return 12; + c = s[0]; + if (c != '\\') + { + *pwc = c; + return 1; + } + if (n < 2) + return RET_TOOFEW(0); + if (s[1] != 'u') + goto simply_backslash; + wc = 0; + for (i = 2; i < 6; i++) + { + if (n <= i) + return RET_TOOFEW(0); + c = s[i]; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'Z') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'z') + c -= 'a' - 10; + else + goto simply_backslash; + wc |= (ucs4_t)c << (4 * (5 - i)); + } + if (!(wc >= 0xd800 && wc < 0xe000)) + { + *pwc = wc; + return 6; + } + if (wc >= 0xdc00) + goto simply_backslash; + if (n < 7) + return RET_TOOFEW(0); + if (s[6] != '\\') + goto simply_backslash; + if (n < 8) + return RET_TOOFEW(0); + if (s[7] != 'u') + goto simply_backslash; + wc2 = 0; + for (i = 8; i < 12; i++) + { + if (n <= i) + return RET_TOOFEW(0); + c = s[i]; + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'Z') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'z') + c -= 'a' - 10; + else + goto simply_backslash; + wc2 |= (ucs4_t)c << (4 * (11 - i)); + } + if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) + goto simply_backslash; + *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); + return 12; simply_backslash: - *pwc = '\\'; - return 1; + *pwc = '\\'; + return 1; } -static int -java_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int java_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x80) { - *r = wc; - return 1; - } else if (wc < 0x10000) { - if (n >= 6) { - unsigned int i; - r[0] = '\\'; - r[1] = 'u'; - i = (wc >> 12) & 0x0f; r[2] = (i < 10 ? '0'+i : 'a'-10+i); - i = (wc >> 8) & 0x0f; r[3] = (i < 10 ? '0'+i : 'a'-10+i); - i = (wc >> 4) & 0x0f; r[4] = (i < 10 ? '0'+i : 'a'-10+i); - i = wc & 0x0f; r[5] = (i < 10 ? '0'+i : 'a'-10+i); - return 6; - } else - return RET_TOOSMALL; - } else if (wc < 0x110000) { - if (n >= 12) { - ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); - ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); - unsigned int i; - r[0] = '\\'; - r[1] = 'u'; - i = (wc1 >> 12) & 0x0f; r[2] = (i < 10 ? '0'+i : 'a'-10+i); - i = (wc1 >> 8) & 0x0f; r[3] = (i < 10 ? '0'+i : 'a'-10+i); - i = (wc1 >> 4) & 0x0f; r[4] = (i < 10 ? '0'+i : 'a'-10+i); - i = wc1 & 0x0f; r[5] = (i < 10 ? '0'+i : 'a'-10+i); - r[6] = '\\'; - r[7] = 'u'; - i = (wc2 >> 12) & 0x0f; r[8] = (i < 10 ? '0'+i : 'a'-10+i); - i = (wc2 >> 8) & 0x0f; r[9] = (i < 10 ? '0'+i : 'a'-10+i); - i = (wc2 >> 4) & 0x0f; r[10] = (i < 10 ? '0'+i : 'a'-10+i); - i = wc2 & 0x0f; r[11] = (i < 10 ? '0'+i : 'a'-10+i); - return 12; - } else - return RET_TOOSMALL; - } - return RET_ILUNI; + if (wc < 0x80) + { + *r = wc; + return 1; + } + else if (wc < 0x10000) + { + if (n >= 6) + { + unsigned int i; + r[0] = '\\'; + r[1] = 'u'; + i = (wc >> 12) & 0x0f; + r[2] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = (wc >> 8) & 0x0f; + r[3] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = (wc >> 4) & 0x0f; + r[4] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = wc & 0x0f; + r[5] = (i < 10 ? '0' + i : 'a' - 10 + i); + return 6; + } + else + return RET_TOOSMALL; + } + else if (wc < 0x110000) + { + if (n >= 12) + { + ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); + ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); + unsigned int i; + r[0] = '\\'; + r[1] = 'u'; + i = (wc1 >> 12) & 0x0f; + r[2] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = (wc1 >> 8) & 0x0f; + r[3] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = (wc1 >> 4) & 0x0f; + r[4] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = wc1 & 0x0f; + r[5] = (i < 10 ? '0' + i : 'a' - 10 + i); + r[6] = '\\'; + r[7] = 'u'; + i = (wc2 >> 12) & 0x0f; + r[8] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = (wc2 >> 8) & 0x0f; + r[9] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = (wc2 >> 4) & 0x0f; + r[10] = (i < 10 ? '0' + i : 'a' - 10 + i); + i = wc2 & 0x0f; + r[11] = (i < 10 ? '0' + i : 'a' - 10 + i); + return 12; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } + +#endif /* _JAVA_H_ */ diff --git a/lib/converters/jisx0201.h b/lib/converters/jisx0201.h index 0f8464e2..988b6c6c 100644 --- a/lib/converters/jisx0201.h +++ b/lib/converters/jisx0201.h @@ -1,5 +1,10 @@ +/** + * @file jisx0201.h + * @brief JISX0201.1976-0 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,49 +22,58 @@ * If not, see . */ -/* - * JISX0201.1976-0 - */ +#ifndef _JISX0201_H_ +#define _JISX0201_H_ -static int -jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int jisx0201_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - if (c == 0x5c) - *pwc = (ucs4_t) 0x00a5; - else if (c == 0x7e) - *pwc = (ucs4_t) 0x203e; + unsigned char c = *s; + if (c < 0x80) + { + if (c == 0x5c) + *pwc = (ucs4_t)0x00a5; + else if (c == 0x7e) + *pwc = (ucs4_t)0x203e; + else + *pwc = (ucs4_t)c; + return 1; + } else - *pwc = (ucs4_t) c; - return 1; - } else { - if (c >= 0xa1 && c < 0xe0) { - *pwc = (ucs4_t) c + 0xfec0; - return 1; + { + if (c >= 0xa1 && c < 0xe0) + { + *pwc = (ucs4_t)c + 0xfec0; + return 1; + } } - } - return RET_ILSEQ; + return RET_ILSEQ; } -static int -jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int jisx0201_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) { - *r = wc; - return 1; - } - if (wc == 0x00a5) { - *r = 0x5c; - return 1; - } - if (wc == 0x203e) { - *r = 0x7e; - return 1; - } - if (wc >= 0xff61 && wc < 0xffa0) { - *r = wc - 0xfec0; - return 1; - } - return RET_ILUNI; + if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) + { + *r = wc; + return 1; + } + if (wc == 0x00a5) + { + *r = 0x5c; + return 1; + } + if (wc == 0x203e) + { + *r = 0x7e; + return 1; + } + if (wc >= 0xff61 && wc < 0xffa0) + { + *r = wc - 0xfec0; + return 1; + } + return RET_ILUNI; } + +#endif /* _JISX0201_H_ */ diff --git a/lib/converters/jisx0208.h b/lib/converters/jisx0208.h index 6d4ec97d..fd28f9ef 100644 --- a/lib/converters/jisx0208.h +++ b/lib/converters/jisx0208.h @@ -1,5 +1,10 @@ +/** + * @file jisx0208.h + * @brief JISX0208.1990-0 + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * JISX0208.1990-0 - */ +#ifndef _JISX0208_H_ +#define _JISX0208_H_ + +#include "reiconv_defines.h" static const unsigned short jisx0208_2uni_page21[690] = { /* 0x21 */ @@ -2372,43 +2378,48 @@ static const Summary16 jisx0208_uni2indx_pageff[15] = { { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 }, }; -static int -jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int jisx0208_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0100) - summary = &jisx0208_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x0300 && wc < 0x0460) - summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030]; - else if (wc >= 0x2000 && wc < 0x2320) - summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200]; - else if (wc >= 0x2500 && wc < 0x2670) - summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250]; - else if (wc >= 0x3000 && wc < 0x3100) - summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x4e00 && wc < 0x9fb0) - summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0xff00 && wc < 0xfff0) - summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = jisx0208_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0100) + summary = &jisx0208_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x0300 && wc < 0x0460) + summary = &jisx0208_uni2indx_page03[(wc >> 4) - 0x030]; + else if (wc >= 0x2000 && wc < 0x2320) + summary = &jisx0208_uni2indx_page20[(wc >> 4) - 0x200]; + else if (wc >= 0x2500 && wc < 0x2670) + summary = &jisx0208_uni2indx_page25[(wc >> 4) - 0x250]; + else if (wc >= 0x3000 && wc < 0x3100) + summary = &jisx0208_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x4e00 && wc < 0x9fb0) + summary = &jisx0208_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0xff00 && wc < 0xfff0) + summary = &jisx0208_uni2indx_pageff[(wc >> 4) - 0xff0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = jisx0208_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _JISX0208_H_ */ diff --git a/lib/converters/jisx0212.h b/lib/converters/jisx0212.h index 2754e0ff..713edf46 100644 --- a/lib/converters/jisx0212.h +++ b/lib/converters/jisx0212.h @@ -1,5 +1,10 @@ +/** + * @file jisx0212.h + * @brief JISX0212.1990-0 + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * JISX0212.1990-0 - */ +#ifndef _JISX0212_H_ +#define _JISX0212_H_ + +#include "reiconv_defines.h" static const unsigned short jisx0212_2uni_page22[81] = { /* 0x22 */ @@ -909,39 +915,49 @@ static const unsigned short jisx0212_2uni_page30[5801] = { 0x9fa2, 0x9fa3, 0x9fa5, }; -static int -jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int jisx0212_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - unsigned short wc = 0xfffd; - if (i < 470) { - if (i < 175) - wc = jisx0212_2uni_page22[i-94]; - } else if (i < 752) { - if (i < 658) - wc = jisx0212_2uni_page26[i-470]; - } else if (i < 1410) { - if (i < 1027) - wc = jisx0212_2uni_page29[i-752]; - } else { - if (i < 7211) - wc = jisx0212_2uni_page30[i-1410]; + unsigned char c1 = s[0]; + if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + if (i < 470) + { + if (i < 175) + wc = jisx0212_2uni_page22[i - 94]; + } + else if (i < 752) + { + if (i < 658) + wc = jisx0212_2uni_page26[i - 470]; + } + else if (i < 1410) + { + if (i < 1027) + wc = jisx0212_2uni_page29[i - 752]; + } + else + { + if (i < 7211) + wc = jisx0212_2uni_page30[i - 1410]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short jisx0212_2charset[6067] = { @@ -2152,37 +2168,42 @@ static const Summary16 jisx0212_uni2indx_pageff[6] = { { 6066, 0x0000 }, { 6066, 0x4000 }, }; -static int -jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int jisx0212_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0460) - summary = &jisx0212_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x2100 && wc < 0x2130) - summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210]; - else if (wc >= 0x4e00 && wc < 0x9fb0) - summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0xff00 && wc < 0xff60) - summary = &jisx0212_uni2indx_pageff[(wc>>4)-0xff0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = jisx0212_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0460) + summary = &jisx0212_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x2100 && wc < 0x2130) + summary = &jisx0212_uni2indx_page21[(wc >> 4) - 0x210]; + else if (wc >= 0x4e00 && wc < 0x9fb0) + summary = &jisx0212_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0xff00 && wc < 0xff60) + summary = &jisx0212_uni2indx_pageff[(wc >> 4) - 0xff0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = jisx0212_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _JISX0212_H_ */ diff --git a/lib/converters/jisx0213.h b/lib/converters/jisx0213.h index d367b705..4776d19d 100644 --- a/lib/converters/jisx0213.h +++ b/lib/converters/jisx0213.h @@ -1,5 +1,10 @@ +/** + * @file jisx0213.h + * @brief JISX0213:2004 + * @copyright Copyright (C) 1999-2004, 2012 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2004, 2012 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,19 +22,17 @@ * If not, see . */ -/* - * JISX0213:2004 +/* JISX0213 plane 1 (= ISO-IR-233) characters are in the range + * 0x{21..7E}{21..7E}. + * JISX0213 plane 2 (= ISO-IR-229) characters are in the range + * 0x{21,23..25,28,2C..2F,6E..7E}{21..7E}. + * Together this makes 120 rows of 94 characters. */ -#ifndef _JISX0213_H -#define _JISX0213_H +#ifndef _JISX0213_H_ +#define _JISX0213_H_ -/* JISX0213 plane 1 (= ISO-IR-233) characters are in the range - 0x{21..7E}{21..7E}. - JISX0213 plane 2 (= ISO-IR-229) characters are in the range - 0x{21,23..25,28,2C..2F,6E..7E}{21..7E}. - Together this makes 120 rows of 94 characters. -*/ +#include "reiconv_defines.h" static const unsigned short jisx0213_to_ucs_combining[][2] = { { 0x304b, 0x309a }, @@ -5859,35 +5862,36 @@ __inline inline #endif #endif -static ucs4_t jisx0213_to_ucs4 (unsigned int row, unsigned int col) + static ucs4_t + jisx0213_to_ucs4(unsigned int row, unsigned int col) { - ucs4_t val; + ucs4_t val; - if (row >= 0x121 && row <= 0x17e) - row -= 289; - else if (row == 0x221) - row -= 451; - else if (row >= 0x223 && row <= 0x225) - row -= 452; - else if (row == 0x228) - row -= 454; - else if (row >= 0x22c && row <= 0x22f) - row -= 457; - else if (row >= 0x26e && row <= 0x27e) - row -= 519; - else - return 0x0000; + if (row >= 0x121 && row <= 0x17e) + row -= 289; + else if (row == 0x221) + row -= 451; + else if (row >= 0x223 && row <= 0x225) + row -= 452; + else if (row == 0x228) + row -= 454; + else if (row >= 0x22c && row <= 0x22f) + row -= 457; + else if (row >= 0x26e && row <= 0x27e) + row -= 519; + else + return 0x0000; - if (col >= 0x21 && col <= 0x7e) - col -= 0x21; - else - return 0x0000; + if (col >= 0x21 && col <= 0x7e) + col -= 0x21; + else + return 0x0000; - val = jisx0213_to_ucs_main[row * 94 + col]; - val = jisx0213_to_ucs_pagestart[val >> 8] + (val & 0xff); - if (val == 0xfffd) - val = 0x0000; - return val; + val = jisx0213_to_ucs_main[row * 94 + col]; + val = jisx0213_to_ucs_pagestart[val >> 8] + (val & 0xff); + if (val == 0xfffd) + val = 0x0000; + return val; } #ifdef __GNUC__ @@ -5897,27 +5901,31 @@ __inline inline #endif #endif -static unsigned short ucs4_to_jisx0213 (ucs4_t ucs) + static unsigned short + ucs4_to_jisx0213(ucs4_t ucs) { - if (ucs < (sizeof(jisx0213_from_ucs_level1)/sizeof(jisx0213_from_ucs_level1[0])) << 6) { - int index1 = jisx0213_from_ucs_level1[ucs >> 6]; - if (index1 >= 0) { - const Summary16 *summary = &jisx0213_from_ucs_level2_2indx[((index1 << 6) + (ucs & 0x3f)) >> 4]; - unsigned short used = summary->used; - unsigned int i = ucs & 0x0f; - if (used & ((unsigned short) 1 << i)) { - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - return jisx0213_from_ucs_level2_data[summary->indx + used]; - }; - }; - } - return 0x0000; + if (ucs < (sizeof(jisx0213_from_ucs_level1) / sizeof(jisx0213_from_ucs_level1[0])) << 6) + { + int index1 = jisx0213_from_ucs_level1[ucs >> 6]; + if (index1 >= 0) + { + const Summary16 *summary = &jisx0213_from_ucs_level2_2indx[((index1 << 6) + (ucs & 0x3f)) >> 4]; + unsigned short used = summary->used; + unsigned int i = ucs & 0x0f; + if (used & ((unsigned short)1 << i)) + { + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + return jisx0213_from_ucs_level2_data[summary->indx + used]; + }; + }; + } + return 0x0000; } -#endif /* _JISX0213_H */ +#endif /* _JISX0213_H_ */ diff --git a/lib/converters/johab.h b/lib/converters/johab.h index 51fd1645..a9089b08 100644 --- a/lib/converters/johab.h +++ b/lib/converters/johab.h @@ -1,5 +1,10 @@ +/** + * @file johab.h + * @brief JOHAB + * @copyright Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,12 @@ * If not, see . */ -/* - * JOHAB - */ +#ifndef _JOHAB_H_ +#define _JOHAB_H_ + +#include "converters/johab_hangul.h" +#include "converters/ksc5601.h" +#include "reiconv_defines.h" /* Conversion between JOHAB codes (s1,s2) and KSX1001 codes (c1,c2): @@ -46,93 +54,107 @@ s2 := (t2 < 0x4E ? t2+0x31 : t2+0x43) */ -static int -johab_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int johab_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - if (c == 0x5c) - *pwc = (ucs4_t) 0x20a9; + unsigned char c = *s; + if (c < 0x80) + { + if (c == 0x5c) + *pwc = (ucs4_t)0x20a9; + else + *pwc = (ucs4_t)c; + return 1; + } + else if (c < 0xd8) + { + return johab_hangul_mbtowc(conv, pwc, s, n); + } else - *pwc = (ucs4_t) c; - return 1; - } else if (c < 0xd8) { - return johab_hangul_mbtowc(conv,pwc,s,n); - } else { - unsigned char s1, s2; - s1 = c; - if ((s1 >= 0xd9 && s1 <= 0xde) || (s1 >= 0xe0 && s1 <= 0xf9)) { - if (n < 2) - return RET_TOOFEW(0); - s2 = s[1]; - if ((s2 >= 0x31 && s2 <= 0x7e) || (s2 >= 0x91 && s2 <= 0xfe)) { - /* In KSC 5601, now KS X 1001, the region s1 = 0xDA, 0xA1 <= s2 <= 0xD3 - contains the 51 Jamo (Hangul letters). But in the Johab encoding, - they have been moved to the Hangul section, see - johab_hangul_page31. */ - if (!(s1 == 0xda && (s2 >= 0xa1 && s2 <= 0xd3))) { - unsigned char t1 = (s1 < 0xe0 ? 2*(s1-0xd9) : 2*s1-0x197); - unsigned char t2 = (s2 < 0x91 ? s2-0x31 : s2-0x43); - unsigned char buf[2]; - buf[0] = t1 + (t2 < 0x5e ? 0 : 1) + 0x21; - buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; - return ksc5601_mbtowc(conv,pwc,buf,2); + { + unsigned char s1, s2; + s1 = c; + if ((s1 >= 0xd9 && s1 <= 0xde) || (s1 >= 0xe0 && s1 <= 0xf9)) + { + if (n < 2) + return RET_TOOFEW(0); + s2 = s[1]; + if ((s2 >= 0x31 && s2 <= 0x7e) || (s2 >= 0x91 && s2 <= 0xfe)) + { + /* In KSC 5601, now KS X 1001, the region s1 = 0xDA, 0xA1 <= s2 <= 0xD3 + contains the 51 Jamo (Hangul letters). But in the Johab encoding, + they have been moved to the Hangul section, see + johab_hangul_page31. */ + if (!(s1 == 0xda && (s2 >= 0xa1 && s2 <= 0xd3))) + { + unsigned char t1 = (s1 < 0xe0 ? 2 * (s1 - 0xd9) : 2 * s1 - 0x197); + unsigned char t2 = (s2 < 0x91 ? s2 - 0x31 : s2 - 0x43); + unsigned char buf[2]; + buf[0] = t1 + (t2 < 0x5e ? 0 : 1) + 0x21; + buf[1] = (t2 < 0x5e ? t2 : t2 - 0x5e) + 0x21; + return ksc5601_mbtowc(conv, pwc, buf, 2); + } + } } - } + return RET_ILSEQ; } - return RET_ILSEQ; - } } -static int -johab_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int johab_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Try ASCII variation. */ - if (wc < 0x0080 && wc != 0x005c) { - *r = wc; - return 1; - } - if (wc == 0x20a9) { - *r = 0x5c; - return 1; - } + /* Try ASCII variation. */ + if (wc < 0x0080 && wc != 0x005c) + { + *r = wc; + return 1; + } + if (wc == 0x20a9) + { + *r = 0x5c; + return 1; + } - /* Try JOHAB Hangul table before KSC5601 table, because the KSC5601 table - contains some (2350 out of 11172) Hangul syllables (rows 0x30XX..0x48XX), - and we want the search to return the JOHAB Hangul table entry. */ + /* Try JOHAB Hangul table before KSC5601 table, because the KSC5601 table + contains some (2350 out of 11172) Hangul syllables (rows 0x30XX..0x48XX), + and we want the search to return the JOHAB Hangul table entry. */ - /* Try JOHAB Hangul. */ - ret = johab_hangul_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - r[0] = buf[0]; - r[1] = buf[1]; - return 2; - } + /* Try JOHAB Hangul. */ + ret = johab_hangul_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + r[0] = buf[0]; + r[1] = buf[1]; + return 2; + } - /* Try KSC5601, now KS X 1001. */ - ret = ksc5601_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - unsigned char c1, c2; - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - c1 = buf[0]; - c2 = buf[1]; - if (((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x4a && c1 <= 0x7d)) - && (c2 >= 0x21 && c2 <= 0x7e)) { - unsigned int t = (c1 < 0x4A ? (c1-0x21+0x1B2) : (c1-0x21+0x197)); - unsigned char t2 = ((t & 1) ? 0x5e : 0) + (c2 - 0x21); - r[0] = t >> 1; - r[1] = (t2 < 0x4e ? t2+0x31 : t2+0x43); - return 2; + /* Try KSC5601, now KS X 1001. */ + ret = ksc5601_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + unsigned char c1, c2; + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + c1 = buf[0]; + c2 = buf[1]; + if (((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x4a && c1 <= 0x7d)) && (c2 >= 0x21 && c2 <= 0x7e)) + { + unsigned int t = (c1 < 0x4A ? (c1 - 0x21 + 0x1B2) : (c1 - 0x21 + 0x197)); + unsigned char t2 = ((t & 1) ? 0x5e : 0) + (c2 - 0x21); + r[0] = t >> 1; + r[1] = (t2 < 0x4e ? t2 + 0x31 : t2 + 0x43); + return 2; + } } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _JOHAB_H_ */ diff --git a/lib/converters/johab_hangul.h b/lib/converters/johab_hangul.h index f24b6324..6dd23385 100644 --- a/lib/converters/johab_hangul.h +++ b/lib/converters/johab_hangul.h @@ -1,5 +1,10 @@ +/** + * @file johab_hangul.h + * @brief JOHAB Hangul + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -18,7 +23,6 @@ */ /* - * JOHAB Hangul * * Ken Lunde writes in his "CJKV Information Processing" book, p. 114: * "Hangul can be composed of two or three jamo (some jamo are considered @@ -47,6 +51,13 @@ * where the index tables are defined as below. */ +#ifndef _JOHAB_HANGUL_H_ +#define _JOHAB_HANGUL_H_ + +#include "reiconv_defines.h" + +#include + /* Tables mapping 5-bit groups to jamo letters. */ /* Note that Jamo XX = UHC 0xA4A0+XX = Unicode 0x3130+XX */ #define NONE 0xfd @@ -100,61 +111,76 @@ static const signed char jamo_final_index[32] = { 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, none, none, }; -static int -johab_hangul_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int johab_hangul_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x84 && c1 <= 0xd3)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x41 && c2 < 0x7f) || (c2 >= 0x81 && c2 < 0xff)) { - unsigned int johab = (c1 << 8) | c2; - unsigned int bitspart1 = (johab >> 10) & 31; - unsigned int bitspart2 = (johab >> 5) & 31; - unsigned int bitspart3 = johab & 31; - int index1 = jamo_initial_index[bitspart1]; - int index2 = jamo_medial_index[bitspart2]; - int index3 = jamo_final_index[bitspart3]; - /* Exclude "none" values. */ - if (index1 >= 0 && index2 >= 0 && index3 >= 0) { - /* Deal with "fill" values in initial or medial position. */ - if (index1 == fill) { - if (index2 == fill) { - unsigned char jamo3 = jamo_final_notinitial[bitspart3]; - if (jamo3 != NONE) { - *pwc = (ucs4_t) 0x3130 + jamo3; - return 2; - } - } else if (index3 == fill) { - unsigned char jamo2 = jamo_medial[bitspart2]; - if (jamo2 != NONE && jamo2 != FILL) { - *pwc = (ucs4_t) 0x3130 + jamo2; - return 2; - } - } - /* Syllables composed only of medial and final don't exist. */ - } else if (index2 == fill) { - if (index3 == fill) { - unsigned char jamo1 = jamo_initial[bitspart1]; - if (jamo1 != NONE && jamo1 != FILL) { - *pwc = (ucs4_t) 0x3130 + jamo1; - return 2; - } + unsigned char c1 = s[0]; + if ((c1 >= 0x84 && c1 <= 0xd3)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x41 && c2 < 0x7f) || (c2 >= 0x81 && c2 < 0xff)) + { + unsigned int johab = (c1 << 8) | c2; + unsigned int bitspart1 = (johab >> 10) & 31; + unsigned int bitspart2 = (johab >> 5) & 31; + unsigned int bitspart3 = johab & 31; + int index1 = jamo_initial_index[bitspart1]; + int index2 = jamo_medial_index[bitspart2]; + int index3 = jamo_final_index[bitspart3]; + /* Exclude "none" values. */ + if (index1 >= 0 && index2 >= 0 && index3 >= 0) + { + /* Deal with "fill" values in initial or medial position. */ + if (index1 == fill) + { + if (index2 == fill) + { + unsigned char jamo3 = jamo_final_notinitial[bitspart3]; + if (jamo3 != NONE) + { + *pwc = (ucs4_t)0x3130 + jamo3; + return 2; + } + } + else if (index3 == fill) + { + unsigned char jamo2 = jamo_medial[bitspart2]; + if (jamo2 != NONE && jamo2 != FILL) + { + *pwc = (ucs4_t)0x3130 + jamo2; + return 2; + } + } + /* Syllables composed only of medial and final don't exist. */ + } + else if (index2 == fill) + { + if (index3 == fill) + { + unsigned char jamo1 = jamo_initial[bitspart1]; + if (jamo1 != NONE && jamo1 != FILL) + { + *pwc = (ucs4_t)0x3130 + jamo1; + return 2; + } + } + /* Syllables composed only of initial and final don't exist. */ + } + else + { + /* index1 and index2 are not fill, but index3 may be fill. */ + /* Nothing more to exclude. All 11172 code points are valid. */ + *pwc = 0xac00 + ((index1 - 1) * 21 + (index2 - 1)) * 28 + index3; + return 2; + } + } } - /* Syllables composed only of initial and final don't exist. */ - } else { - /* index1 and index2 are not fill, but index3 may be fill. */ - /* Nothing more to exclude. All 11172 code points are valid. */ - *pwc = 0xac00 + ((index1 - 1) * 21 + (index2 - 1)) * 28 + index3; - return 2; - } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } /* 51 Jamo: 19 initial, 21 medial, 11 final not initial. */ @@ -193,33 +219,38 @@ static const char jamo_final_index_inverse[28] = { 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, }; -static int -johab_hangul_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int johab_hangul_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - if (wc >= 0x3131 && wc < 0x3164) { - unsigned short c = johab_hangul_page31[wc-0x3131]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } else if (wc >= 0xac00 && wc < 0xd7a4) { - unsigned int index1; - unsigned int index2; - unsigned int index3; - unsigned short c; - unsigned int tmp = wc - 0xac00; - index3 = tmp % 28; tmp = tmp / 28; - index2 = tmp % 21; tmp = tmp / 21; - index1 = tmp; - c = (((((1 << 5) - | jamo_initial_index_inverse[index1]) << 5) - | jamo_medial_index_inverse[index2]) << 5) - | jamo_final_index_inverse[index3]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; + if (n >= 2) + { + if (wc >= 0x3131 && wc < 0x3164) + { + unsigned short c = johab_hangul_page31[wc - 0x3131]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + else if (wc >= 0xac00 && wc < 0xd7a4) + { + unsigned int index1; + unsigned int index2; + unsigned int index3; + unsigned short c; + unsigned int tmp = wc - 0xac00; + index3 = tmp % 28; + tmp = tmp / 28; + index2 = tmp % 21; + tmp = tmp / 21; + index1 = tmp; + c = (((((1 << 5) | jamo_initial_index_inverse[index1]) << 5) | jamo_medial_index_inverse[index2]) << 5) | + jamo_final_index_inverse[index3]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } /* @@ -229,33 +260,38 @@ johab_hangul_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) /* Decompose wc into r[0..2], and return the number of resulting Jamo elements. Return RET_ILUNI if decomposition is not possible. */ -static int johab_hangul_decompose (conv_t conv, ucs4_t* r, ucs4_t wc) +static int johab_hangul_decompose(conv_t conv, ucs4_t *r, ucs4_t wc) { - unsigned char buf[2]; - int ret = johab_hangul_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - unsigned int hangul = (buf[0] << 8) | buf[1]; - unsigned char jamo1 = jamo_initial[(hangul >> 10) & 31]; - unsigned char jamo2 = jamo_medial[(hangul >> 5) & 31]; - unsigned char jamo3 = jamo_final[hangul & 31]; - if ((hangul >> 15) != 1) abort(); - if (jamo1 != NONE && jamo2 != NONE && jamo3 != NONE) { - /* They are not all three == FILL because that would correspond to - johab = 0x8441, which doesn't exist. */ - ucs4_t* p = r; - if (jamo1 != FILL) - *p++ = 0x3130 + jamo1; - if (jamo2 != FILL) - *p++ = 0x3130 + jamo2; - if (jamo3 != FILL) - *p++ = 0x3130 + jamo3; - return p-r; + unsigned char buf[2]; + int ret = johab_hangul_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + unsigned int hangul = (buf[0] << 8) | buf[1]; + unsigned char jamo1 = jamo_initial[(hangul >> 10) & 31]; + unsigned char jamo2 = jamo_medial[(hangul >> 5) & 31]; + unsigned char jamo3 = jamo_final[hangul & 31]; + if ((hangul >> 15) != 1) + abort(); + if (jamo1 != NONE && jamo2 != NONE && jamo3 != NONE) + { + /* They are not all three == FILL because that would correspond to + johab = 0x8441, which doesn't exist. */ + ucs4_t *p = r; + if (jamo1 != FILL) + *p++ = 0x3130 + jamo1; + if (jamo2 != FILL) + *p++ = 0x3130 + jamo2; + if (jamo3 != FILL) + *p++ = 0x3130 + jamo3; + return p - r; + } } - } - return RET_ILUNI; + return RET_ILUNI; } #undef fill #undef none #undef FILL #undef NONE + +#endif /* _JOHAB_HANGUL_H_ */ diff --git a/lib/converters/koi8_r.h b/lib/converters/koi8_r.h index a825378e..21088b3f 100644 --- a/lib/converters/koi8_r.h +++ b/lib/converters/koi8_r.h @@ -1,5 +1,10 @@ +/** + * @file koi8_r.h + * @brief KOI8-R + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * KOI8-R - */ +#ifndef _KOI8_R_H_ +#define _KOI8_R_H_ + +#include "reiconv_defines.h" /* Specification: RFC 1489 */ @@ -50,15 +56,14 @@ static const unsigned short koi8_r_2uni[128] = { 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; -static int -koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int koi8_r_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) koi8_r_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)koi8_r_2uni[c - 0x80]; + return 1; } static const unsigned char koi8_r_page00[88] = { @@ -126,27 +131,30 @@ static const unsigned char koi8_r_page25[168] = { 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int koi8_r_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00f8) - c = koi8_r_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0458) - c = koi8_r_page04[wc-0x0400]; - else if (wc >= 0x2218 && wc < 0x2268) - c = koi8_r_page22[wc-0x2218]; - else if (wc >= 0x2320 && wc < 0x2328) - c = koi8_r_page23[wc-0x2320]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = koi8_r_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00f8) + c = koi8_r_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0458) + c = koi8_r_page04[wc - 0x0400]; + else if (wc >= 0x2218 && wc < 0x2268) + c = koi8_r_page22[wc - 0x2218]; + else if (wc >= 0x2320 && wc < 0x2328) + c = koi8_r_page23[wc - 0x2320]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = koi8_r_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _KOI8_R_H_ */ diff --git a/lib/converters/koi8_ru.h b/lib/converters/koi8_ru.h index 7067ee8a..7c41ff09 100644 --- a/lib/converters/koi8_ru.h +++ b/lib/converters/koi8_ru.h @@ -1,5 +1,10 @@ +/** + * @file koi8_ru.h + * @brief KOI8-RU + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * KOI8-RU - */ +#ifndef _KOI8_RU_H_ +#define _KOI8_RU_H_ + +#include "reiconv_defines.h" static const unsigned short koi8_ru_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short koi8_ru_2uni[128] = { 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; -static int -koi8_ru_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int koi8_ru_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) koi8_ru_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)koi8_ru_2uni[c - 0x80]; + return 1; } static const unsigned char koi8_ru_page00[88] = { @@ -132,27 +137,30 @@ static const unsigned char koi8_ru_page25[168] = { 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -koi8_ru_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int koi8_ru_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00f8) - c = koi8_ru_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0498) - c = koi8_ru_page04[wc-0x0400]; - else if (wc >= 0x2218 && wc < 0x2268) - c = koi8_ru_page22[wc-0x2218]; - else if (wc >= 0x2320 && wc < 0x2328) - c = koi8_ru_page23[wc-0x2320]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = koi8_ru_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00f8) + c = koi8_ru_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0498) + c = koi8_ru_page04[wc - 0x0400]; + else if (wc >= 0x2218 && wc < 0x2268) + c = koi8_ru_page22[wc - 0x2218]; + else if (wc >= 0x2320 && wc < 0x2328) + c = koi8_ru_page23[wc - 0x2320]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = koi8_ru_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _KOI8_RU_H_ */ diff --git a/lib/converters/koi8_t.h b/lib/converters/koi8_t.h index 94d34c8f..f7f232f8 100644 --- a/lib/converters/koi8_t.h +++ b/lib/converters/koi8_t.h @@ -1,5 +1,10 @@ +/** + * @file koi8_t.h + * @brief KOI8-T + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * KOI8-T - */ +#ifndef _KOI8_T_H_ +#define _KOI8_T_H_ + +#include "reiconv_defines.h" static const unsigned short koi8_t_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short koi8_t_2uni[128] = { 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; -static int -koi8_t_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int koi8_t_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = koi8_t_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = koi8_t_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char koi8_t_page00[32] = { @@ -118,25 +126,28 @@ static const unsigned char koi8_t_page21[24] = { 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; -static int -koi8_t_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int koi8_t_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = koi8_t_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x04f0) - c = koi8_t_page04[wc-0x0400]; - else if (wc >= 0x2010 && wc < 0x2040) - c = koi8_t_page20[wc-0x2010]; - else if (wc >= 0x2110 && wc < 0x2128) - c = koi8_t_page21[wc-0x2110]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = koi8_t_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x04f0) + c = koi8_t_page04[wc - 0x0400]; + else if (wc >= 0x2010 && wc < 0x2040) + c = koi8_t_page20[wc - 0x2010]; + else if (wc >= 0x2110 && wc < 0x2128) + c = koi8_t_page21[wc - 0x2110]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _KOI8_T_H_ */ diff --git a/lib/converters/koi8_u.h b/lib/converters/koi8_u.h index 160bd2c8..aff975c7 100644 --- a/lib/converters/koi8_u.h +++ b/lib/converters/koi8_u.h @@ -1,5 +1,10 @@ +/** + * @file koi8_u.h + * @brief KOI8-U + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * KOI8-U - */ +#ifndef _KOI8_U_H_ +#define _KOI8_U_H_ + +#include "reiconv_defines.h" /* Specification: RFC 2319 */ @@ -50,15 +56,14 @@ static const unsigned short koi8_u_2uni[128] = { 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; -static int -koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int koi8_u_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) koi8_u_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)koi8_u_2uni[c - 0x80]; + return 1; } static const unsigned char koi8_u_page00[88] = { @@ -134,27 +139,30 @@ static const unsigned char koi8_u_page25[168] = { 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; -static int -koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int koi8_u_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00f8) - c = koi8_u_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x0498) - c = koi8_u_page04[wc-0x0400]; - else if (wc >= 0x2218 && wc < 0x2268) - c = koi8_u_page22[wc-0x2218]; - else if (wc >= 0x2320 && wc < 0x2328) - c = koi8_u_page23[wc-0x2320]; - else if (wc >= 0x2500 && wc < 0x25a8) - c = koi8_u_page25[wc-0x2500]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00f8) + c = koi8_u_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x0498) + c = koi8_u_page04[wc - 0x0400]; + else if (wc >= 0x2218 && wc < 0x2268) + c = koi8_u_page22[wc - 0x2218]; + else if (wc >= 0x2320 && wc < 0x2328) + c = koi8_u_page23[wc - 0x2320]; + else if (wc >= 0x2500 && wc < 0x25a8) + c = koi8_u_page25[wc - 0x2500]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _KOI8_U_H_ */ diff --git a/lib/converters/ksc5601.h b/lib/converters/ksc5601.h index 706fb3f4..67e5b84b 100644 --- a/lib/converters/ksc5601.h +++ b/lib/converters/ksc5601.h @@ -1,5 +1,10 @@ +/** + * @file ksc5601.h + * @brief KSC5601.1987-0, now KS X 1001:2002 + * @copyright Copyright (C) 1999-2007, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2007, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * KSC5601.1987-0, now KS X 1001:2002 - */ +#ifndef _KSC5601_H_ +#define _KSC5601_H_ + +#include "reiconv_defines.h" static const unsigned short ksc5601_2uni_page21[1115] = { /* 0x21 */ @@ -1184,36 +1190,44 @@ static const unsigned short ksc5601_2uni_page4a[4888] = { 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, }; -static int -ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ksc5601_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if (c2 >= 0x21 && c2 < 0x7f) { - unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); - unsigned short wc = 0xfffd; - if (i < 1410) { - if (i < 1115) - wc = ksc5601_2uni_page21[i]; - } else if (i < 3854) { - if (i < 3760) - wc = ksc5601_2uni_page30[i-1410]; - } else { - if (i < 8742) - wc = ksc5601_2uni_page4a[i-3854]; + unsigned char c1 = s[0]; + if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if (c2 >= 0x21 && c2 < 0x7f) + { + unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); + unsigned short wc = 0xfffd; + if (i < 1410) + { + if (i < 1115) + wc = ksc5601_2uni_page21[i]; + } + else if (i < 3854) + { + if (i < 3760) + wc = ksc5601_2uni_page30[i - 1410]; + } + else + { + if (i < 8742) + wc = ksc5601_2uni_page4a[i - 3854]; + } + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 2; + } + } + return RET_ILSEQ; } - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 2; - } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short ksc5601_2charset[8227] = { @@ -2979,43 +2993,48 @@ static const Summary16 ksc5601_uni2indx_pageff[15] = { { 8221, 0x0000 }, { 8221, 0x0000 }, { 8221, 0x006f }, }; -static int -ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ksc5601_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - const Summary16 *summary = NULL; - if (wc >= 0x0000 && wc < 0x0460) - summary = &ksc5601_uni2indx_page00[(wc>>4)]; - else if (wc >= 0x2000 && wc < 0x2670) - summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200]; - else if (wc >= 0x3000 && wc < 0x33e0) - summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300]; - else if (wc >= 0x4e00 && wc < 0x9fa0) - summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0]; - else if (wc >= 0xac00 && wc < 0xd7a0) - summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0]; - else if (wc >= 0xf900 && wc < 0xfa10) - summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90]; - else if (wc >= 0xff00 && wc < 0xfff0) - summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0]; - if (summary) { - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - c = ksc5601_2charset[summary->indx + used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + const Summary16 *summary = NULL; + if (wc >= 0x0000 && wc < 0x0460) + summary = &ksc5601_uni2indx_page00[(wc >> 4)]; + else if (wc >= 0x2000 && wc < 0x2670) + summary = &ksc5601_uni2indx_page20[(wc >> 4) - 0x200]; + else if (wc >= 0x3000 && wc < 0x33e0) + summary = &ksc5601_uni2indx_page30[(wc >> 4) - 0x300]; + else if (wc >= 0x4e00 && wc < 0x9fa0) + summary = &ksc5601_uni2indx_page4e[(wc >> 4) - 0x4e0]; + else if (wc >= 0xac00 && wc < 0xd7a0) + summary = &ksc5601_uni2indx_pageac[(wc >> 4) - 0xac0]; + else if (wc >= 0xf900 && wc < 0xfa10) + summary = &ksc5601_uni2indx_pagef9[(wc >> 4) - 0xf90]; + else if (wc >= 0xff00 && wc < 0xfff0) + summary = &ksc5601_uni2indx_pageff[(wc >> 4) - 0xff0]; + if (summary) + { + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + c = ksc5601_2charset[summary->indx + used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _KSC5601_H_ */ diff --git a/lib/converters/mac_arabic.h b/lib/converters/mac_arabic.h index 5aa1a405..156fbcce 100644 --- a/lib/converters/mac_arabic.h +++ b/lib/converters/mac_arabic.h @@ -1,5 +1,10 @@ +/** + * @file mac_arabic.h + * @brief MacArabic + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacArabic - */ +#ifndef _MAC_ARABIC_H_ +#define _MAC_ARABIC_H_ + +#include "reiconv_defines.h" static const unsigned short mac_arabic_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_arabic_2uni[128] = { 0x06af, 0x0688, 0x0691, 0xfffd, 0xfffd, 0xfffd, 0x0698, 0x06d2, }; -static int -mac_arabic_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_arabic_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_arabic_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_arabic_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_arabic_page00[96] = { @@ -109,23 +117,26 @@ static const unsigned char mac_arabic_page06[208] = { 0x00, 0x00, 0xff, 0x00, 0x00, 0xf6, 0x00, 0x00, /* 0xd0-0xd7 */ }; -static int -mac_arabic_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_arabic_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = mac_arabic_page00[wc-0x00a0]; - else if (wc >= 0x0608 && wc < 0x06d8) - c = mac_arabic_page06[wc-0x0608]; - else if (wc == 0x2026) - c = 0x93; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = mac_arabic_page00[wc - 0x00a0]; + else if (wc >= 0x0608 && wc < 0x06d8) + c = mac_arabic_page06[wc - 0x0608]; + else if (wc == 0x2026) + c = 0x93; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_ARABIC_H_ */ diff --git a/lib/converters/mac_centraleurope.h b/lib/converters/mac_centraleurope.h index ae9aee05..86872398 100644 --- a/lib/converters/mac_centraleurope.h +++ b/lib/converters/mac_centraleurope.h @@ -1,5 +1,10 @@ +/** + * @file mac_centraleurope.h + * @brief MacCentralEurope + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacCentralEurope - */ +#ifndef _MAC_CENTRALEUROPE_H_ +#define _MAC_CENTRALEUROPE_H_ + +#include "reiconv_defines.h" static const unsigned short mac_centraleurope_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short mac_centraleurope_2uni[128] = { 0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7, }; -static int -mac_centraleurope_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_centraleurope_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else - *pwc = (ucs4_t) mac_centraleurope_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else + *pwc = (ucs4_t)mac_centraleurope_2uni[c - 0x80]; + return 1; } static const unsigned char mac_centraleurope_page00[224] = { @@ -108,31 +113,34 @@ static const unsigned char mac_centraleurope_page22_1[8] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_centraleurope_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_centraleurope_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0180) - c = mac_centraleurope_page00[wc-0x00a0]; - else if (wc == 0x02c7) - c = 0xff; - else if (wc >= 0x2010 && wc < 0x2040) - c = mac_centraleurope_page20[wc-0x2010]; - else if (wc == 0x2122) - c = 0xaa; - else if (wc >= 0x2200 && wc < 0x2220) - c = mac_centraleurope_page22[wc-0x2200]; - else if (wc >= 0x2260 && wc < 0x2268) - c = mac_centraleurope_page22_1[wc-0x2260]; - else if (wc == 0x25ca) - c = 0xd7; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0180) + c = mac_centraleurope_page00[wc - 0x00a0]; + else if (wc == 0x02c7) + c = 0xff; + else if (wc >= 0x2010 && wc < 0x2040) + c = mac_centraleurope_page20[wc - 0x2010]; + else if (wc == 0x2122) + c = 0xaa; + else if (wc >= 0x2200 && wc < 0x2220) + c = mac_centraleurope_page22[wc - 0x2200]; + else if (wc >= 0x2260 && wc < 0x2268) + c = mac_centraleurope_page22_1[wc - 0x2260]; + else if (wc == 0x25ca) + c = 0xd7; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_CENTRALEUROPE_H_ */ diff --git a/lib/converters/mac_croatian.h b/lib/converters/mac_croatian.h index 24e257e3..0b9352a1 100644 --- a/lib/converters/mac_croatian.h +++ b/lib/converters/mac_croatian.h @@ -1,5 +1,10 @@ +/** + * @file mac_croatian.h + * @brief MacCroatian + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacCroatian - */ +#ifndef _MAC_CROATIAN_H_ +#define _MAC_CROATIAN_H_ + +#include "reiconv_defines.h" static const unsigned short mac_croatian_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_croatian_2uni[128] = { 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7, }; -static int -mac_croatian_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_croatian_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_croatian_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_croatian_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_croatian_page00[248] = { @@ -134,31 +142,34 @@ static const unsigned char mac_croatian_page22[104] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_croatian_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_croatian_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0198) - c = mac_croatian_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = mac_croatian_page02[wc-0x02c0]; - else if (wc == 0x03c0) - c = 0xf9; - else if (wc >= 0x2010 && wc < 0x2048) - c = mac_croatian_page20[wc-0x2010]; - else if (wc >= 0x2120 && wc < 0x2128) - c = mac_croatian_page21[wc-0x2120]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_croatian_page22[wc-0x2200]; - else if (wc == 0x25ca) - c = 0xd7; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0198) + c = mac_croatian_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = mac_croatian_page02[wc - 0x02c0]; + else if (wc == 0x03c0) + c = 0xf9; + else if (wc >= 0x2010 && wc < 0x2048) + c = mac_croatian_page20[wc - 0x2010]; + else if (wc >= 0x2120 && wc < 0x2128) + c = mac_croatian_page21[wc - 0x2120]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_croatian_page22[wc - 0x2200]; + else if (wc == 0x25ca) + c = 0xd7; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_CROATIAN_H_ */ diff --git a/lib/converters/mac_cyrillic.h b/lib/converters/mac_cyrillic.h index eab9e727..c89be043 100644 --- a/lib/converters/mac_cyrillic.h +++ b/lib/converters/mac_cyrillic.h @@ -1,5 +1,10 @@ +/** + * @file mac_cyrillic.h + * @brief MacCyrillic + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacCyrillic - */ +#ifndef _MAC_CYRILLIC_H_ +#define _MAC_CYRILLIC_H_ + +#include "reiconv_defines.h" static const unsigned short mac_cyrillic_2uni[128] = { /* 0x80 */ @@ -105,31 +111,34 @@ static const unsigned char mac_cyrillic_page22[104] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_cyrillic_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_cyrillic_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = mac_cyrillic_page00[wc-0x00a0]; - else if (wc == 0x00f7) - c = 0xd6; - else if (wc == 0x0192) - c = 0xc4; - else if (wc >= 0x0400 && wc < 0x0460) - c = mac_cyrillic_page04[wc-0x0400]; - else if (wc >= 0x2010 && wc < 0x2028) - c = mac_cyrillic_page20[wc-0x2010]; - else if (wc >= 0x2110 && wc < 0x2128) - c = mac_cyrillic_page21[wc-0x2110]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_cyrillic_page22[wc-0x2200]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = mac_cyrillic_page00[wc - 0x00a0]; + else if (wc == 0x00f7) + c = 0xd6; + else if (wc == 0x0192) + c = 0xc4; + else if (wc >= 0x0400 && wc < 0x0460) + c = mac_cyrillic_page04[wc - 0x0400]; + else if (wc >= 0x2010 && wc < 0x2028) + c = mac_cyrillic_page20[wc - 0x2010]; + else if (wc >= 0x2110 && wc < 0x2128) + c = mac_cyrillic_page21[wc - 0x2110]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_cyrillic_page22[wc - 0x2200]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_CYRILLIC_H_ */ diff --git a/lib/converters/mac_greek.h b/lib/converters/mac_greek.h index 6749fcd3..4fda554b 100644 --- a/lib/converters/mac_greek.h +++ b/lib/converters/mac_greek.h @@ -1,5 +1,10 @@ +/** + * @file mac_greek.h + * @brief MacGreek + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacGreek - */ +#ifndef _MAC_GREEK_H_ +#define _MAC_GREEK_H_ + +#include "reiconv_defines.h" static const unsigned short mac_greek_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_greek_2uni[128] = { 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0xfffd, }; -static int -mac_greek_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_greek_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_greek_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_greek_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_greek_page00[96] = { @@ -106,29 +114,32 @@ static const unsigned char mac_greek_page22[32] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_greek_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_greek_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = mac_greek_page00[wc-0x00a0]; - else if (wc == 0x0153) - c = 0xcf; - else if (wc >= 0x0380 && wc < 0x03d0) - c = mac_greek_page03[wc-0x0380]; - else if (wc >= 0x2010 && wc < 0x2038) - c = mac_greek_page20[wc-0x2010]; - else if (wc == 0x2122) - c = 0x93; - else if (wc >= 0x2248 && wc < 0x2268) - c = mac_greek_page22[wc-0x2248]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = mac_greek_page00[wc - 0x00a0]; + else if (wc == 0x0153) + c = 0xcf; + else if (wc >= 0x0380 && wc < 0x03d0) + c = mac_greek_page03[wc - 0x0380]; + else if (wc >= 0x2010 && wc < 0x2038) + c = mac_greek_page20[wc - 0x2010]; + else if (wc == 0x2122) + c = 0x93; + else if (wc >= 0x2248 && wc < 0x2268) + c = mac_greek_page22[wc - 0x2248]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_GREEK_H_ */ diff --git a/lib/converters/mac_hebrew.h b/lib/converters/mac_hebrew.h index 43bf4122..4c7bb077 100644 --- a/lib/converters/mac_hebrew.h +++ b/lib/converters/mac_hebrew.h @@ -1,5 +1,10 @@ +/** + * @file mac_hebrew.h + * @brief MacHebrew + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacHebrew - */ +#ifndef _MAC_HEBREW_H_ +#define _MAC_HEBREW_H_ + +#include "reiconv_defines.h" static const unsigned short mac_hebrew_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_hebrew_2uni[128] = { 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; -static int -mac_hebrew_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_hebrew_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c >= 0x80) { - unsigned short wc = mac_hebrew_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else if (c >= 0x80) + { + unsigned short wc = mac_hebrew_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_hebrew_page00[96] = { @@ -105,27 +113,30 @@ static const unsigned char mac_hebrew_pagefb[56] = { 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ }; -static int -mac_hebrew_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_hebrew_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = mac_hebrew_page00[wc-0x00a0]; - else if (wc >= 0x05b0 && wc < 0x05f0) - c = mac_hebrew_page05[wc-0x05b0]; - else if (wc >= 0x2010 && wc < 0x2028) - c = mac_hebrew_page20[wc-0x2010]; - else if (wc == 0x20aa) - c = 0xa6; - else if (wc >= 0xfb18 && wc < 0xfb50) - c = mac_hebrew_pagefb[wc-0xfb18]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = mac_hebrew_page00[wc - 0x00a0]; + else if (wc >= 0x05b0 && wc < 0x05f0) + c = mac_hebrew_page05[wc - 0x05b0]; + else if (wc >= 0x2010 && wc < 0x2028) + c = mac_hebrew_page20[wc - 0x2010]; + else if (wc == 0x20aa) + c = 0xa6; + else if (wc >= 0xfb18 && wc < 0xfb50) + c = mac_hebrew_pagefb[wc - 0xfb18]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_HEBREW_H_ */ diff --git a/lib/converters/mac_iceland.h b/lib/converters/mac_iceland.h index 69ff15a0..29fb34fa 100644 --- a/lib/converters/mac_iceland.h +++ b/lib/converters/mac_iceland.h @@ -1,5 +1,10 @@ +/** + * @file mac_iceland.h + * @brief MacIceland + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacIceland - */ +#ifndef _MAC_ICELAND_H_ +#define _MAC_ICELAND_H_ + +#include "reiconv_defines.h" static const unsigned short mac_iceland_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_iceland_2uni[128] = { 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; -static int -mac_iceland_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_iceland_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_iceland_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_iceland_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_iceland_page00[96] = { @@ -129,33 +137,36 @@ static const unsigned char mac_iceland_page22[104] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_iceland_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_iceland_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = mac_iceland_page00[wc-0x00a0]; - else if (wc >= 0x0130 && wc < 0x0198) - c = mac_iceland_page01[wc-0x0130]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = mac_iceland_page02[wc-0x02c0]; - else if (wc == 0x03c0) - c = 0xb9; - else if (wc >= 0x2010 && wc < 0x2048) - c = mac_iceland_page20[wc-0x2010]; - else if (wc >= 0x2120 && wc < 0x2128) - c = mac_iceland_page21[wc-0x2120]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_iceland_page22[wc-0x2200]; - else if (wc == 0x25ca) - c = 0xd7; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = mac_iceland_page00[wc - 0x00a0]; + else if (wc >= 0x0130 && wc < 0x0198) + c = mac_iceland_page01[wc - 0x0130]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = mac_iceland_page02[wc - 0x02c0]; + else if (wc == 0x03c0) + c = 0xb9; + else if (wc >= 0x2010 && wc < 0x2048) + c = mac_iceland_page20[wc - 0x2010]; + else if (wc >= 0x2120 && wc < 0x2128) + c = mac_iceland_page21[wc - 0x2120]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_iceland_page22[wc - 0x2200]; + else if (wc == 0x25ca) + c = 0xd7; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_ICELAND_H_ */ diff --git a/lib/converters/mac_roman.h b/lib/converters/mac_roman.h index 7e23019e..39c21307 100644 --- a/lib/converters/mac_roman.h +++ b/lib/converters/mac_roman.h @@ -1,5 +1,10 @@ +/** + * @file mac_roman.h + * @brief MacRoman + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacRoman - */ +#ifndef _MAC_ROMAN_H_ +#define _MAC_ROMAN_H_ + +#include "reiconv_defines.h" static const unsigned short mac_roman_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_roman_2uni[128] = { 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; -static int -mac_roman_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_roman_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_roman_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_roman_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_roman_page00[96] = { @@ -132,35 +140,38 @@ static const unsigned char mac_roman_pagefb[8] = { 0x00, 0xde, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ }; -static int -mac_roman_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_roman_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = mac_roman_page00[wc-0x00a0]; - else if (wc >= 0x0130 && wc < 0x0198) - c = mac_roman_page01[wc-0x0130]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = mac_roman_page02[wc-0x02c0]; - else if (wc == 0x03c0) - c = 0xb9; - else if (wc >= 0x2010 && wc < 0x2048) - c = mac_roman_page20[wc-0x2010]; - else if (wc >= 0x2120 && wc < 0x2128) - c = mac_roman_page21[wc-0x2120]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_roman_page22[wc-0x2200]; - else if (wc == 0x25ca) - c = 0xd7; - else if (wc >= 0xfb00 && wc < 0xfb08) - c = mac_roman_pagefb[wc-0xfb00]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = mac_roman_page00[wc - 0x00a0]; + else if (wc >= 0x0130 && wc < 0x0198) + c = mac_roman_page01[wc - 0x0130]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = mac_roman_page02[wc - 0x02c0]; + else if (wc == 0x03c0) + c = 0xb9; + else if (wc >= 0x2010 && wc < 0x2048) + c = mac_roman_page20[wc - 0x2010]; + else if (wc >= 0x2120 && wc < 0x2128) + c = mac_roman_page21[wc - 0x2120]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_roman_page22[wc - 0x2200]; + else if (wc == 0x25ca) + c = 0xd7; + else if (wc >= 0xfb00 && wc < 0xfb08) + c = mac_roman_pagefb[wc - 0xfb00]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_ROMAN_H_ */ diff --git a/lib/converters/mac_romania.h b/lib/converters/mac_romania.h index a60949e3..0fe8f073 100644 --- a/lib/converters/mac_romania.h +++ b/lib/converters/mac_romania.h @@ -1,5 +1,10 @@ +/** + * @file mac_romania.h + * @brief MacRomania + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacRomania - */ +#ifndef _MAC_ROMANIA_H_ +#define _MAC_ROMANIA_H_ + +#include "reiconv_defines.h" static const unsigned short mac_romania_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_romania_2uni[128] = { 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; -static int -mac_romania_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_romania_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_romania_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_romania_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_romania_page00[248] = { @@ -134,31 +142,34 @@ static const unsigned char mac_romania_page22[104] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_romania_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_romania_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0198) - c = mac_romania_page00[wc-0x00a0]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = mac_romania_page02[wc-0x02c0]; - else if (wc == 0x03c0) - c = 0xb9; - else if (wc >= 0x2010 && wc < 0x2048) - c = mac_romania_page20[wc-0x2010]; - else if (wc >= 0x2120 && wc < 0x2128) - c = mac_romania_page21[wc-0x2120]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_romania_page22[wc-0x2200]; - else if (wc == 0x25ca) - c = 0xd7; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0198) + c = mac_romania_page00[wc - 0x00a0]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = mac_romania_page02[wc - 0x02c0]; + else if (wc == 0x03c0) + c = 0xb9; + else if (wc >= 0x2010 && wc < 0x2048) + c = mac_romania_page20[wc - 0x2010]; + else if (wc >= 0x2120 && wc < 0x2128) + c = mac_romania_page21[wc - 0x2120]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_romania_page22[wc - 0x2200]; + else if (wc == 0x25ca) + c = 0xd7; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_ROMANIA_H_ */ diff --git a/lib/converters/mac_thai.h b/lib/converters/mac_thai.h index 5144458f..17e88ab8 100644 --- a/lib/converters/mac_thai.h +++ b/lib/converters/mac_thai.h @@ -1,5 +1,10 @@ +/** + * @file mac_thai.h + * @brief MacThai + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacThai - */ +#ifndef _MAC_THAI_H_ +#define _MAC_THAI_H_ + +#include "reiconv_defines.h" static const unsigned short mac_thai_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_thai_2uni[128] = { 0x0e58, 0x0e59, 0x00ae, 0x00a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; -static int -mac_thai_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_thai_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_thai_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_thai_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_thai_page00[32] = { @@ -99,29 +107,32 @@ static const unsigned char mac_thai_pagef8[32] = { 0x87, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ }; -static int -mac_thai_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_thai_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = mac_thai_page00[wc-0x00a0]; - else if (wc >= 0x0e00 && wc < 0x0e60) - c = mac_thai_page0e[wc-0x0e00]; - else if (wc >= 0x2008 && wc < 0x2028) - c = mac_thai_page20[wc-0x2008]; - else if (wc == 0x2122) - c = 0xee; - else if (wc >= 0xf880 && wc < 0xf8a0) - c = mac_thai_pagef8[wc-0xf880]; - else if (wc == 0xfeff) - c = 0xdb; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = mac_thai_page00[wc - 0x00a0]; + else if (wc >= 0x0e00 && wc < 0x0e60) + c = mac_thai_page0e[wc - 0x0e00]; + else if (wc >= 0x2008 && wc < 0x2028) + c = mac_thai_page20[wc - 0x2008]; + else if (wc == 0x2122) + c = 0xee; + else if (wc >= 0xf880 && wc < 0xf8a0) + c = mac_thai_pagef8[wc - 0xf880]; + else if (wc == 0xfeff) + c = 0xdb; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_THAI_H_ */ diff --git a/lib/converters/mac_turkish.h b/lib/converters/mac_turkish.h index fa8b4348..34113d35 100644 --- a/lib/converters/mac_turkish.h +++ b/lib/converters/mac_turkish.h @@ -1,5 +1,10 @@ +/** + * @file mac_turkish.h + * @brief MacTurkish + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacTurkish - */ +#ifndef _MAC_TURKISH_H_ +#define _MAC_TURKISH_H_ + +#include "reiconv_defines.h" static const unsigned short mac_turkish_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short mac_turkish_2uni[128] = { 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; -static int -mac_turkish_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_turkish_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mac_turkish_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mac_turkish_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mac_turkish_page00[96] = { @@ -130,33 +138,36 @@ static const unsigned char mac_turkish_page22[104] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_turkish_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_turkish_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = mac_turkish_page00[wc-0x00a0]; - else if (wc >= 0x0118 && wc < 0x0198) - c = mac_turkish_page01[wc-0x0118]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = mac_turkish_page02[wc-0x02c0]; - else if (wc == 0x03c0) - c = 0xb9; - else if (wc >= 0x2010 && wc < 0x2038) - c = mac_turkish_page20[wc-0x2010]; - else if (wc >= 0x2120 && wc < 0x2128) - c = mac_turkish_page21[wc-0x2120]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_turkish_page22[wc-0x2200]; - else if (wc == 0x25ca) - c = 0xd7; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = mac_turkish_page00[wc - 0x00a0]; + else if (wc >= 0x0118 && wc < 0x0198) + c = mac_turkish_page01[wc - 0x0118]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = mac_turkish_page02[wc - 0x02c0]; + else if (wc == 0x03c0) + c = 0xb9; + else if (wc >= 0x2010 && wc < 0x2038) + c = mac_turkish_page20[wc - 0x2010]; + else if (wc >= 0x2120 && wc < 0x2128) + c = mac_turkish_page21[wc - 0x2120]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_turkish_page22[wc - 0x2200]; + else if (wc == 0x25ca) + c = 0xd7; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_TURKISH_H_ */ diff --git a/lib/converters/mac_ukraine.h b/lib/converters/mac_ukraine.h index f57da08f..9b2521f3 100644 --- a/lib/converters/mac_ukraine.h +++ b/lib/converters/mac_ukraine.h @@ -1,5 +1,10 @@ +/** + * @file mac_ukraine.h + * @brief MacUkraine + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MacUkraine - */ +#ifndef _MAC_UKRAINE_H_ +#define _MAC_UKRAINE_H_ + +#include "reiconv_defines.h" static const unsigned short mac_ukraine_2uni[128] = { /* 0x80 */ @@ -48,15 +54,14 @@ static const unsigned short mac_ukraine_2uni[128] = { 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, }; -static int -mac_ukraine_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mac_ukraine_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0x80) - *pwc = (ucs4_t) mac_ukraine_2uni[c-0x80]; - else - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + if (c >= 0x80) + *pwc = (ucs4_t)mac_ukraine_2uni[c - 0x80]; + else + *pwc = (ucs4_t)c; + return 1; } static const unsigned char mac_ukraine_page00[32] = { @@ -112,31 +117,34 @@ static const unsigned char mac_ukraine_page22[104] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; -static int -mac_ukraine_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mac_ukraine_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = mac_ukraine_page00[wc-0x00a0]; - else if (wc == 0x00f7) - c = 0xd6; - else if (wc == 0x0192) - c = 0xc4; - else if (wc >= 0x0400 && wc < 0x0498) - c = mac_ukraine_page04[wc-0x0400]; - else if (wc >= 0x2010 && wc < 0x2028) - c = mac_ukraine_page20[wc-0x2010]; - else if (wc >= 0x2110 && wc < 0x2128) - c = mac_ukraine_page21[wc-0x2110]; - else if (wc >= 0x2200 && wc < 0x2268) - c = mac_ukraine_page22[wc-0x2200]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = mac_ukraine_page00[wc - 0x00a0]; + else if (wc == 0x00f7) + c = 0xd6; + else if (wc == 0x0192) + c = 0xc4; + else if (wc >= 0x0400 && wc < 0x0498) + c = mac_ukraine_page04[wc - 0x0400]; + else if (wc >= 0x2010 && wc < 0x2028) + c = mac_ukraine_page20[wc - 0x2010]; + else if (wc >= 0x2110 && wc < 0x2128) + c = mac_ukraine_page21[wc - 0x2110]; + else if (wc >= 0x2200 && wc < 0x2268) + c = mac_ukraine_page22[wc - 0x2200]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MAC_UKRAINE_H_ */ diff --git a/lib/converters/mulelao.h b/lib/converters/mulelao.h index 1e7ef5c5..505bca44 100644 --- a/lib/converters/mulelao.h +++ b/lib/converters/mulelao.h @@ -1,5 +1,10 @@ +/** + * @file mulelao.h + * @brief MULELAO-1 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * MULELAO-1 - */ +#ifndef _MULELAO_H_ +#define _MULELAO_H_ + +#include "reiconv_defines.h" static const unsigned short mulelao_2uni[96] = { /* 0xa0 */ @@ -42,22 +48,24 @@ static const unsigned short mulelao_2uni[96] = { 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd, }; -static int -mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int mulelao_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0xa0) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = mulelao_2uni[c-0xa0]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0xa0) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = mulelao_2uni[c - 0xa0]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char mulelao_page0e[96] = { @@ -75,21 +83,24 @@ static const unsigned char mulelao_page0e[96] = { 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */ }; -static int -mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int mulelao_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x00a0) { - *r = wc; - return 1; - } - else if (wc == 0x00a0) - c = 0xa0; - else if (wc >= 0x0e80 && wc < 0x0ee0) - c = mulelao_page0e[wc-0x0e80]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x00a0) + { + *r = wc; + return 1; + } + else if (wc == 0x00a0) + c = 0xa0; + else if (wc >= 0x0e80 && wc < 0x0ee0) + c = mulelao_page0e[wc - 0x0e80]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _MULELAO_H_ */ diff --git a/lib/converters/nextstep.h b/lib/converters/nextstep.h index 6afae4c3..db98f519 100644 --- a/lib/converters/nextstep.h +++ b/lib/converters/nextstep.h @@ -1,5 +1,10 @@ +/** + * @file nextstep.h + * @brief NEXTSTEP + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * NEXTSTEP - */ +#ifndef _NEXTSTEP_H_ +#define _NEXTSTEP_H_ + +#include "reiconv_defines.h" static const unsigned short nextstep_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short nextstep_2uni[128] = { 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x00ff, 0xfffd, 0xfffd, }; -static int -nextstep_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int nextstep_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = nextstep_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = nextstep_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char nextstep_page00[96] = { @@ -114,27 +122,30 @@ static const unsigned char nextstep_pagefb[8] = { 0x00, 0xae, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ }; -static int -nextstep_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int nextstep_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x0100) - c = nextstep_page00[wc-0x00a0]; - else if (wc >= 0x0130 && wc < 0x0198) - c = nextstep_page01[wc-0x0130]; - else if (wc >= 0x02c0 && wc < 0x02e0) - c = nextstep_page02[wc-0x02c0]; - else if (wc >= 0x2010 && wc < 0x2048) - c = nextstep_page20[wc-0x2010]; - else if (wc >= 0xfb00 && wc < 0xfb08) - c = nextstep_pagefb[wc-0xfb00]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x0100) + c = nextstep_page00[wc - 0x00a0]; + else if (wc >= 0x0130 && wc < 0x0198) + c = nextstep_page01[wc - 0x0130]; + else if (wc >= 0x02c0 && wc < 0x02e0) + c = nextstep_page02[wc - 0x02c0]; + else if (wc >= 0x2010 && wc < 0x2048) + c = nextstep_page20[wc - 0x2010]; + else if (wc >= 0xfb00 && wc < 0xfb08) + c = nextstep_pagefb[wc - 0xfb00]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _NEXTSTEP_H_ */ diff --git a/lib/converters/pt154.h b/lib/converters/pt154.h index aa440b83..1a8789f8 100644 --- a/lib/converters/pt154.h +++ b/lib/converters/pt154.h @@ -1,5 +1,10 @@ +/** + * @file pt154.h + * @brief PT154 + * @copyright Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * PT154 - */ +#ifndef _PT154_H_ +#define _PT154_H_ + +#include "reiconv_defines.h" static const unsigned short pt154_2uni[64] = { /* 0x80 */ @@ -36,17 +42,16 @@ static const unsigned short pt154_2uni[64] = { 0x0451, 0x2116, 0x04d9, 0x00bb, 0x0458, 0x04aa, 0x04ab, 0x049d, }; -static int -pt154_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int pt154_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) - *pwc = (ucs4_t) c; - else if (c >= 0xc0) - *pwc = (ucs4_t) c + 0x0350; - else - *pwc = (ucs4_t) pt154_2uni[c-0x80]; - return 1; + unsigned char c = *s; + if (c < 0x80) + *pwc = (ucs4_t)c; + else if (c >= 0xc0) + *pwc = (ucs4_t)c + 0x0350; + else + *pwc = (ucs4_t)pt154_2uni[c - 0x80]; + return 1; } static const unsigned char pt154_page00[32] = { @@ -93,25 +98,28 @@ static const unsigned char pt154_page20[24] = { 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ }; -static int -pt154_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int pt154_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = pt154_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x04f0) - c = pt154_page04[wc-0x0400]; - else if (wc >= 0x2010 && wc < 0x2028) - c = pt154_page20[wc-0x2010]; - else if (wc == 0x2116) - c = 0xb9; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = pt154_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x04f0) + c = pt154_page04[wc - 0x0400]; + else if (wc >= 0x2010 && wc < 0x2028) + c = pt154_page20[wc - 0x2010]; + else if (wc == 0x2116) + c = 0xb9; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _PT154_H_ */ diff --git a/lib/converters/riscos1.h b/lib/converters/riscos1.h index 3a9f6d24..527e757b 100644 --- a/lib/converters/riscos1.h +++ b/lib/converters/riscos1.h @@ -1,5 +1,10 @@ +/** + * @file riscos1.h + * @brief RISCOS-LATIN1 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * RISCOS-LATIN1 - */ +#ifndef _RISCOS1_H_ +#define _RISCOS1_H_ + +#include "reiconv_defines.h" static const unsigned short riscos1_2uni[32] = { /* 0x80 */ @@ -30,15 +36,14 @@ static const unsigned short riscos1_2uni[32] = { 0x2014, 0x2212, 0x0152, 0x0153, 0x2020, 0x2021, 0xfb01, 0xfb02, }; -static int -riscos1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int riscos1_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c >= 0x80 && c < 0xa0) - *pwc = (ucs4_t) riscos1_2uni[c-0x80]; - else - *pwc = (ucs4_t) c; - return 1; + unsigned char c = *s; + if (c >= 0x80 && c < 0xa0) + *pwc = (ucs4_t)riscos1_2uni[c - 0x80]; + else + *pwc = (ucs4_t)c; + return 1; } static const unsigned char riscos1_page01[40] = { @@ -65,31 +70,34 @@ static const unsigned char riscos1_page22[16] = { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; -static int -riscos1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int riscos1_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080 || wc == 0x0083 || wc == 0x0087 || (wc >= 0x00a0 && wc < 0x0100)) { - *r = wc; - return 1; - } - else if (wc >= 0x0150 && wc < 0x0178) - c = riscos1_page01[wc-0x0150]; - else if (wc >= 0x2010 && wc < 0x2040) - c = riscos1_page20[wc-0x2010]; - else if (wc == 0x2122) - c = 0x8d; - else if (wc >= 0x21e0 && wc < 0x21f0) - c = riscos1_page21[wc-0x21e0]; - else if (wc >= 0x2210 && wc < 0x2220) - c = riscos1_page22[wc-0x2210]; - else if (wc == 0x2573) - c = 0x84; - else if (wc >= 0xfb01 && wc < 0xfb03) - c = wc-0xfa63; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080 || wc == 0x0083 || wc == 0x0087 || (wc >= 0x00a0 && wc < 0x0100)) + { + *r = wc; + return 1; + } + else if (wc >= 0x0150 && wc < 0x0178) + c = riscos1_page01[wc - 0x0150]; + else if (wc >= 0x2010 && wc < 0x2040) + c = riscos1_page20[wc - 0x2010]; + else if (wc == 0x2122) + c = 0x8d; + else if (wc >= 0x21e0 && wc < 0x21f0) + c = riscos1_page21[wc - 0x21e0]; + else if (wc >= 0x2210 && wc < 0x2220) + c = riscos1_page22[wc - 0x2210]; + else if (wc == 0x2573) + c = 0x84; + else if (wc >= 0xfb01 && wc < 0xfb03) + c = wc - 0xfa63; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _RISCOS1_H_ */ diff --git a/lib/converters/rk1048.h b/lib/converters/rk1048.h index a4106cb7..ef71058e 100644 --- a/lib/converters/rk1048.h +++ b/lib/converters/rk1048.h @@ -1,5 +1,10 @@ +/** + * @file rk1048.h + * @brief RK1048 + * @copyright Copyright (C) 1999-2007, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2007, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * RK1048 - */ +#ifndef _RK1048_H_ +#define _RK1048_H_ + +#include "reiconv_defines.h" static const unsigned short rk1048_2uni[128] = { /* 0x80 */ @@ -48,22 +54,24 @@ static const unsigned short rk1048_2uni[128] = { 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, }; -static int -rk1048_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int rk1048_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else { - unsigned short wc = rk1048_2uni[c-0x80]; - if (wc != 0xfffd) { - *pwc = (ucs4_t) wc; - return 1; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; } - } - return RET_ILSEQ; + else + { + unsigned short wc = rk1048_2uni[c - 0x80]; + if (wc != 0xfffd) + { + *pwc = (ucs4_t)wc; + return 1; + } + } + return RET_ILSEQ; } static const unsigned char rk1048_page00[32] = { @@ -118,27 +126,30 @@ static const unsigned char rk1048_page21[24] = { 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; -static int -rk1048_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int rk1048_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char c = 0; - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x00a0 && wc < 0x00c0) - c = rk1048_page00[wc-0x00a0]; - else if (wc >= 0x0400 && wc < 0x04f0) - c = rk1048_page04[wc-0x0400]; - else if (wc >= 0x2010 && wc < 0x2040) - c = rk1048_page20[wc-0x2010]; - else if (wc == 0x20ac) - c = 0x88; - else if (wc >= 0x2110 && wc < 0x2128) - c = rk1048_page21[wc-0x2110]; - if (c != 0) { - *r = c; - return 1; - } - return RET_ILUNI; + unsigned char c = 0; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x00a0 && wc < 0x00c0) + c = rk1048_page00[wc - 0x00a0]; + else if (wc >= 0x0400 && wc < 0x04f0) + c = rk1048_page04[wc - 0x0400]; + else if (wc >= 0x2010 && wc < 0x2040) + c = rk1048_page20[wc - 0x2010]; + else if (wc == 0x20ac) + c = 0x88; + else if (wc >= 0x2110 && wc < 0x2128) + c = rk1048_page21[wc - 0x2110]; + if (c != 0) + { + *r = c; + return 1; + } + return RET_ILUNI; } + +#endif /* _RK1048_H_ */ diff --git a/lib/converters/shift_jisx0213.h b/lib/converters/shift_jisx0213.h index b84ec636..f1bb7c93 100644 --- a/lib/converters/shift_jisx0213.h +++ b/lib/converters/shift_jisx0213.h @@ -1,5 +1,10 @@ +/** + * @file shift_jisx0213.h + * @brief SHIFT_JISX0213 + * @copyright Copyright (C) 1999-2002 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,293 +22,339 @@ * If not, see . */ -/* - * SHIFT_JISX0213 - */ - /* The structure of Shift_JISX0213 is as follows: + * + * 0x00..0x7F: ISO646-JP, an ASCII variant + * + * 0x{A1..DF}: JISX0201 Katakana. + * + * 0x{81..9F,E0..EF}{40..7E,80..FC}: JISX0213 plane 1. + * + * 0x{F0..FC}{40..7E,80..FC}: JISX0213 plane 2, with irregular row mapping. + * + * Note that some JISX0213 characters are not contained in Unicode 3.2 + * and are therefore best represented as sequences of Unicode characters. + */ - 0x00..0x7F: ISO646-JP, an ASCII variant - - 0x{A1..DF}: JISX0201 Katakana. - - 0x{81..9F,E0..EF}{40..7E,80..FC}: JISX0213 plane 1. - - 0x{F0..FC}{40..7E,80..FC}: JISX0213 plane 2, with irregular row mapping. +#ifndef _SHIFT_JISX0213_H_ +#define _SHIFT_JISX0213_H_ - Note that some JISX0213 characters are not contained in Unicode 3.2 - and are therefore best represented as sequences of Unicode characters. -*/ +#include "reiconv_defines.h" +#include "flushwc.h" // IWYU pragma: keep #include "jisx0213.h" -#include "flushwc.h" -static int -shift_jisx0213_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int shift_jisx0213_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - ucs4_t last_wc = conv->istate; - if (last_wc) { - /* Output the buffered character. */ - conv->istate = 0; - *pwc = last_wc; - return 0; /* Don't advance the input pointer. */ - } else { - unsigned char c = *s; - if (c < 0x80) { - /* Plain ISO646-JP character. */ - if (c == 0x5c) - *pwc = (ucs4_t) 0x00a5; - else if (c == 0x7e) - *pwc = (ucs4_t) 0x203e; - else - *pwc = (ucs4_t) c; - return 1; - } else if (c >= 0xa1 && c <= 0xdf) { - *pwc = c + 0xfec0; - return 1; - } else { - if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc)) { - /* Two byte character. */ - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x40 && c2 <= 0x7e) || (c2 >= 0x80 && c2 <= 0xfc)) { - unsigned int c1; - ucs4_t wc; - /* Convert to row and column. */ - if (c < 0xe0) - c -= 0x81; - else - c -= 0xc1; - if (c2 < 0x80) - c2 -= 0x40; + ucs4_t last_wc = conv->istate; + if (last_wc) + { + /* Output the buffered character. */ + conv->istate = 0; + *pwc = last_wc; + return 0; /* Don't advance the input pointer. */ + } + else + { + unsigned char c = *s; + if (c < 0x80) + { + /* Plain ISO646-JP character. */ + if (c == 0x5c) + *pwc = (ucs4_t)0x00a5; + else if (c == 0x7e) + *pwc = (ucs4_t)0x203e; else - c2 -= 0x41; - /* Now 0 <= c <= 0x3b, 0 <= c2 <= 0xbb. */ - c1 = 2 * c; - if (c2 >= 0x5e) - c2 -= 0x5e, c1++; - c2 += 0x21; - if (c1 >= 0x5e) { - /* Handling of JISX 0213 plane 2 rows. */ - if (c1 >= 0x67) - c1 += 230; - else if (c1 >= 0x63 || c1 == 0x5f) - c1 += 168; - else - c1 += 162; - } - wc = jisx0213_to_ucs4(0x121+c1,c2); - if (wc) { - if (wc < 0x80) { - /* It's a combining character. */ - ucs4_t wc1 = jisx0213_to_ucs_combining[wc - 1][0]; - ucs4_t wc2 = jisx0213_to_ucs_combining[wc - 1][1]; - /* We cannot output two Unicode characters at once. So, - output the first character and buffer the second one. */ - *pwc = wc1; - conv->istate = wc2; - } else - *pwc = wc; - return 2; + *pwc = (ucs4_t)c; + return 1; + } + else if (c >= 0xa1 && c <= 0xdf) + { + *pwc = c + 0xfec0; + return 1; + } + else + { + if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc)) + { + /* Two byte character. */ + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x40 && c2 <= 0x7e) || (c2 >= 0x80 && c2 <= 0xfc)) + { + unsigned int c1; + ucs4_t wc; + /* Convert to row and column. */ + if (c < 0xe0) + c -= 0x81; + else + c -= 0xc1; + if (c2 < 0x80) + c2 -= 0x40; + else + c2 -= 0x41; + /* Now 0 <= c <= 0x3b, 0 <= c2 <= 0xbb. */ + c1 = 2 * c; + if (c2 >= 0x5e) + c2 -= 0x5e, c1++; + c2 += 0x21; + if (c1 >= 0x5e) + { + /* Handling of JISX 0213 plane 2 rows. */ + if (c1 >= 0x67) + c1 += 230; + else if (c1 >= 0x63 || c1 == 0x5f) + c1 += 168; + else + c1 += 162; + } + wc = jisx0213_to_ucs4(0x121 + c1, c2); + if (wc) + { + if (wc < 0x80) + { + /* It's a combining character. */ + ucs4_t wc1 = jisx0213_to_ucs_combining[wc - 1][0]; + ucs4_t wc2 = jisx0213_to_ucs_combining[wc - 1][1]; + /* We cannot output two Unicode characters at once. So, + output the first character and buffer the second one. */ + *pwc = wc1; + conv->istate = wc2; + } + else + *pwc = wc; + return 2; + } + } + } + else + return RET_TOOFEW(0); } - } - } else - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; + } } - } } #define shift_jisx0213_flushwc normal_flushwc /* Composition tables for each of the relevant combining characters. */ -static const struct { unsigned short base; unsigned short composed; } shift_jisx0213_comp_table_data[] = { +static const struct +{ + unsigned short base; + unsigned short composed; +} shift_jisx0213_comp_table_data[] = { #define shift_jisx0213_comp_table02e5_idx 0 #define shift_jisx0213_comp_table02e5_len 1 - { 0x8684, 0x8685 }, /* 0x12B65 = 0x12B64 U+02E5 */ -#define shift_jisx0213_comp_table02e9_idx (shift_jisx0213_comp_table02e5_idx+shift_jisx0213_comp_table02e5_len) + {0x8684, 0x8685}, /* 0x12B65 = 0x12B64 U+02E5 */ +#define shift_jisx0213_comp_table02e9_idx (shift_jisx0213_comp_table02e5_idx + shift_jisx0213_comp_table02e5_len) #define shift_jisx0213_comp_table02e9_len 1 - { 0x8680, 0x8686 }, /* 0x12B66 = 0x12B60 U+02E9 */ -#define shift_jisx0213_comp_table0300_idx (shift_jisx0213_comp_table02e9_idx+shift_jisx0213_comp_table02e9_len) + {0x8680, 0x8686}, /* 0x12B66 = 0x12B60 U+02E9 */ +#define shift_jisx0213_comp_table0300_idx (shift_jisx0213_comp_table02e9_idx + shift_jisx0213_comp_table02e9_len) #define shift_jisx0213_comp_table0300_len 5 - { 0x857b, 0x8663 }, /* 0x12B44 = 0x1295C U+0300 */ - { 0x8657, 0x8667 }, /* 0x12B48 = 0x12B38 U+0300 */ - { 0x8656, 0x8669 }, /* 0x12B4A = 0x12B37 U+0300 */ - { 0x864f, 0x866b }, /* 0x12B4C = 0x12B30 U+0300 */ - { 0x8662, 0x866d }, /* 0x12B4E = 0x12B43 U+0300 */ -#define shift_jisx0213_comp_table0301_idx (shift_jisx0213_comp_table0300_idx+shift_jisx0213_comp_table0300_len) + {0x857b, 0x8663}, /* 0x12B44 = 0x1295C U+0300 */ + {0x8657, 0x8667}, /* 0x12B48 = 0x12B38 U+0300 */ + {0x8656, 0x8669}, /* 0x12B4A = 0x12B37 U+0300 */ + {0x864f, 0x866b}, /* 0x12B4C = 0x12B30 U+0300 */ + {0x8662, 0x866d}, /* 0x12B4E = 0x12B43 U+0300 */ +#define shift_jisx0213_comp_table0301_idx (shift_jisx0213_comp_table0300_idx + shift_jisx0213_comp_table0300_len) #define shift_jisx0213_comp_table0301_len 4 - { 0x8657, 0x8668 }, /* 0x12B49 = 0x12B38 U+0301 */ - { 0x8656, 0x866a }, /* 0x12B4B = 0x12B37 U+0301 */ - { 0x864f, 0x866c }, /* 0x12B4D = 0x12B30 U+0301 */ - { 0x8662, 0x866e }, /* 0x12B4F = 0x12B43 U+0301 */ -#define shift_jisx0213_comp_table309a_idx (shift_jisx0213_comp_table0301_idx+shift_jisx0213_comp_table0301_len) + {0x8657, 0x8668}, /* 0x12B49 = 0x12B38 U+0301 */ + {0x8656, 0x866a}, /* 0x12B4B = 0x12B37 U+0301 */ + {0x864f, 0x866c}, /* 0x12B4D = 0x12B30 U+0301 */ + {0x8662, 0x866e}, /* 0x12B4F = 0x12B43 U+0301 */ +#define shift_jisx0213_comp_table309a_idx (shift_jisx0213_comp_table0301_idx + shift_jisx0213_comp_table0301_len) #define shift_jisx0213_comp_table309a_len 14 - { 0x82a9, 0x82f5 }, /* 0x12477 = 0x1242B U+309A */ - { 0x82ab, 0x82f6 }, /* 0x12478 = 0x1242D U+309A */ - { 0x82ad, 0x82f7 }, /* 0x12479 = 0x1242F U+309A */ - { 0x82af, 0x82f8 }, /* 0x1247A = 0x12431 U+309A */ - { 0x82b1, 0x82f9 }, /* 0x1247B = 0x12433 U+309A */ - { 0x834a, 0x8397 }, /* 0x12577 = 0x1252B U+309A */ - { 0x834c, 0x8398 }, /* 0x12578 = 0x1252D U+309A */ - { 0x834e, 0x8399 }, /* 0x12579 = 0x1252F U+309A */ - { 0x8350, 0x839a }, /* 0x1257A = 0x12531 U+309A */ - { 0x8352, 0x839b }, /* 0x1257B = 0x12533 U+309A */ - { 0x835a, 0x839c }, /* 0x1257C = 0x1253B U+309A */ - { 0x8363, 0x839d }, /* 0x1257D = 0x12544 U+309A */ - { 0x8367, 0x839e }, /* 0x1257E = 0x12548 U+309A */ - { 0x83f3, 0x83f6 }, /* 0x12678 = 0x12675 U+309A */ + {0x82a9, 0x82f5}, /* 0x12477 = 0x1242B U+309A */ + {0x82ab, 0x82f6}, /* 0x12478 = 0x1242D U+309A */ + {0x82ad, 0x82f7}, /* 0x12479 = 0x1242F U+309A */ + {0x82af, 0x82f8}, /* 0x1247A = 0x12431 U+309A */ + {0x82b1, 0x82f9}, /* 0x1247B = 0x12433 U+309A */ + {0x834a, 0x8397}, /* 0x12577 = 0x1252B U+309A */ + {0x834c, 0x8398}, /* 0x12578 = 0x1252D U+309A */ + {0x834e, 0x8399}, /* 0x12579 = 0x1252F U+309A */ + {0x8350, 0x839a}, /* 0x1257A = 0x12531 U+309A */ + {0x8352, 0x839b}, /* 0x1257B = 0x12533 U+309A */ + {0x835a, 0x839c}, /* 0x1257C = 0x1253B U+309A */ + {0x8363, 0x839d}, /* 0x1257D = 0x12544 U+309A */ + {0x8367, 0x839e}, /* 0x1257E = 0x12548 U+309A */ + {0x83f3, 0x83f6}, /* 0x12678 = 0x12675 U+309A */ }; -static int -shift_jisx0213_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int shift_jisx0213_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - int count = 0; - unsigned short lasttwo = conv->ostate; + int count = 0; + unsigned short lasttwo = conv->ostate; - if (lasttwo) { - /* Attempt to combine the last character with this one. */ - unsigned int idx; - unsigned int len; + if (lasttwo) + { + /* Attempt to combine the last character with this one. */ + unsigned int idx; + unsigned int len; - if (wc == 0x02e5) - idx = shift_jisx0213_comp_table02e5_idx, - len = shift_jisx0213_comp_table02e5_len; - else if (wc == 0x02e9) - idx = shift_jisx0213_comp_table02e9_idx, - len = shift_jisx0213_comp_table02e9_len; - else if (wc == 0x0300) - idx = shift_jisx0213_comp_table0300_idx, - len = shift_jisx0213_comp_table0300_len; - else if (wc == 0x0301) - idx = shift_jisx0213_comp_table0301_idx, - len = shift_jisx0213_comp_table0301_len; - else if (wc == 0x309a) - idx = shift_jisx0213_comp_table309a_idx, - len = shift_jisx0213_comp_table309a_len; - else - goto not_combining; + if (wc == 0x02e5) + idx = shift_jisx0213_comp_table02e5_idx, len = shift_jisx0213_comp_table02e5_len; + else if (wc == 0x02e9) + idx = shift_jisx0213_comp_table02e9_idx, len = shift_jisx0213_comp_table02e9_len; + else if (wc == 0x0300) + idx = shift_jisx0213_comp_table0300_idx, len = shift_jisx0213_comp_table0300_len; + else if (wc == 0x0301) + idx = shift_jisx0213_comp_table0301_idx, len = shift_jisx0213_comp_table0301_len; + else if (wc == 0x309a) + idx = shift_jisx0213_comp_table309a_idx, len = shift_jisx0213_comp_table309a_len; + else + goto not_combining; + + do + if (shift_jisx0213_comp_table_data[idx].base == lasttwo) + break; + while (++idx, --len > 0); - do - if (shift_jisx0213_comp_table_data[idx].base == lasttwo) - break; - while (++idx, --len > 0); + if (len > 0) + { + /* Output the combined character. */ + if (n >= 2) + { + lasttwo = shift_jisx0213_comp_table_data[idx].composed; + r[0] = (lasttwo >> 8) & 0xff; + r[1] = lasttwo & 0xff; + conv->ostate = 0; + return 2; + } + else + return RET_TOOSMALL; + } - if (len > 0) { - /* Output the combined character. */ - if (n >= 2) { - lasttwo = shift_jisx0213_comp_table_data[idx].composed; + not_combining: + /* Output the buffered character. */ + if (n < 2) + return RET_TOOSMALL; r[0] = (lasttwo >> 8) & 0xff; r[1] = lasttwo & 0xff; - conv->ostate = 0; - return 2; - } else - return RET_TOOSMALL; + r += 2; + count = 2; } - not_combining: - /* Output the buffered character. */ - if (n < 2) - return RET_TOOSMALL; - r[0] = (lasttwo >> 8) & 0xff; - r[1] = lasttwo & 0xff; - r += 2; - count = 2; - } - - if (wc < 0x80 && wc != 0x5c && wc != 0x7e) { - /* Plain ISO646-JP character. */ - if (n > count) { - r[0] = (unsigned char) wc; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else if (wc == 0x00a5) { - if (n > count) { - r[0] = 0x5c; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else if (wc == 0x203e) { - if (n > count) { - r[0] = 0x7e; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else if (wc >= 0xff61 && wc <= 0xff9f) { - /* Half-width katakana. */ - if (n > count) { - r[0] = wc - 0xfec0; - conv->ostate = 0; - return count+1; - } else - return RET_TOOSMALL; - } else { - unsigned int s1, s2; - unsigned short jch = ucs4_to_jisx0213(wc); - if (jch != 0) { - /* Convert it to shifted representation. */ - s1 = jch >> 8; - s2 = jch & 0x7f; - s1 -= 0x21; - s2 -= 0x21; - if (s1 >= 0x5e) { - /* Handling of JISX 0213 plane 2 rows. */ - if (s1 >= 0xcd) /* rows 0x26E..0x27E */ - s1 -= 102; - else if (s1 >= 0x8b || s1 == 0x87) /* rows 0x228, 0x22C..0x22F */ - s1 -= 40; - else /* rows 0x221, 0x223..0x225 */ - s1 -= 34; - /* Now 0x5e <= s1 <= 0x77. */ - } - if (s1 & 1) - s2 += 0x5e; - s1 = s1 >> 1; - if (s1 < 0x1f) - s1 += 0x81; - else - s1 += 0xc1; - if (s2 < 0x3f) - s2 += 0x40; - else - s2 += 0x41; - if (jch & 0x0080) { - /* A possible match in comp_table_data. We have to buffer it. */ - /* We know it's a JISX 0213 plane 1 character. */ - if (jch & 0x8000) abort(); - conv->ostate = (s1 << 8) | s2; - return count+0; - } - /* Output the shifted representation. */ - if (n >= count+2) { - r[0] = s1; - r[1] = s2; - conv->ostate = 0; - return count+2; - } else - return RET_TOOSMALL; + if (wc < 0x80 && wc != 0x5c && wc != 0x7e) + { + /* Plain ISO646-JP character. */ + if (n > count) + { + r[0] = (unsigned char)wc; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; + } + else if (wc == 0x00a5) + { + if (n > count) + { + r[0] = 0x5c; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; + } + else if (wc == 0x203e) + { + if (n > count) + { + r[0] = 0x7e; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; + } + else if (wc >= 0xff61 && wc <= 0xff9f) + { + /* Half-width katakana. */ + if (n > count) + { + r[0] = wc - 0xfec0; + conv->ostate = 0; + return count + 1; + } + else + return RET_TOOSMALL; + } + else + { + unsigned int s1, s2; + unsigned short jch = ucs4_to_jisx0213(wc); + if (jch != 0) + { + /* Convert it to shifted representation. */ + s1 = jch >> 8; + s2 = jch & 0x7f; + s1 -= 0x21; + s2 -= 0x21; + if (s1 >= 0x5e) + { + /* Handling of JISX 0213 plane 2 rows. */ + if (s1 >= 0xcd) /* rows 0x26E..0x27E */ + s1 -= 102; + else if (s1 >= 0x8b || s1 == 0x87) /* rows 0x228, 0x22C..0x22F */ + s1 -= 40; + else /* rows 0x221, 0x223..0x225 */ + s1 -= 34; + /* Now 0x5e <= s1 <= 0x77. */ + } + if (s1 & 1) + s2 += 0x5e; + s1 = s1 >> 1; + if (s1 < 0x1f) + s1 += 0x81; + else + s1 += 0xc1; + if (s2 < 0x3f) + s2 += 0x40; + else + s2 += 0x41; + if (jch & 0x0080) + { + /* A possible match in comp_table_data. We have to buffer it. */ + /* We know it's a JISX 0213 plane 1 character. */ + if (jch & 0x8000) + abort(); + conv->ostate = (s1 << 8) | s2; + return count + 0; + } + /* Output the shifted representation. */ + if (n >= count + 2) + { + r[0] = s1; + r[1] = s2; + conv->ostate = 0; + return count + 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } - return RET_ILUNI; - } } -static int -shift_jisx0213_reset (conv_t conv, unsigned char *r, size_t n) +static int shift_jisx0213_reset(conv_t conv, unsigned char *r, size_t n) { - state_t lasttwo = conv->ostate; + state_t lasttwo = conv->ostate; - if (lasttwo) { - if (n < 2) - return RET_TOOSMALL; - r[0] = (lasttwo >> 8) & 0xff; - r[1] = lasttwo & 0xff; - /* conv->ostate = 0; will be done by the caller */ - return 2; - } else - return 0; + if (lasttwo) + { + if (n < 2) + return RET_TOOSMALL; + r[0] = (lasttwo >> 8) & 0xff; + r[1] = lasttwo & 0xff; + /* conv->ostate = 0; will be done by the caller */ + return 2; + } + else + return 0; } + +#endif /* _SHIFT_JISX0213_H_ */ diff --git a/lib/converters/sjis.h b/lib/converters/sjis.h index 521dfce7..00eac87f 100644 --- a/lib/converters/sjis.h +++ b/lib/converters/sjis.h @@ -1,5 +1,10 @@ +/** + * @file sjis.h + * @brief SHIFT_JIS + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,14 @@ * If not, see . */ -/* - * SHIFT_JIS - */ +#ifndef _SJIS_H_ +#define _SJIS_H_ + +#include "converters/jisx0201.h" +#include "converters/jisx0208.h" +#include "reiconv_defines.h" + +#include /* Conversion between SJIS codes (s1,s2) and JISX0208 codes (c1,c2): @@ -42,90 +52,103 @@ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x41) */ -static int -sjis_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int sjis_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80 || (c >= 0xa1 && c <= 0xdf)) - return jisx0201_mbtowc(conv,pwc,s,n); - else { - unsigned char s1, s2; - s1 = c; - if ((s1 >= 0x81 && s1 <= 0x9f) || (s1 >= 0xe0 && s1 <= 0xea)) { - if (n < 2) - return RET_TOOFEW(0); - s2 = s[1]; - if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { - unsigned char t1 = (s1 < 0xe0 ? s1-0x81 : s1-0xc1); - unsigned char t2 = (s2 < 0x80 ? s2-0x40 : s2-0x41); - unsigned char buf[2]; - buf[0] = 2*t1 + (t2 < 0x5e ? 0 : 1) + 0x21; - buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; - return jisx0208_mbtowc(conv,pwc,buf,2); - } - } else if (s1 >= 0xf0 && s1 <= 0xf9) { - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - if (n < 2) - return RET_TOOFEW(0); - s2 = s[1]; - if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { - *pwc = 0xe000 + 188*(s1 - 0xf0) + (s2 < 0x80 ? s2-0x40 : s2-0x41); - return 2; - } + unsigned char c = *s; + if (c < 0x80 || (c >= 0xa1 && c <= 0xdf)) + return jisx0201_mbtowc(conv, pwc, s, n); + else + { + unsigned char s1, s2; + s1 = c; + if ((s1 >= 0x81 && s1 <= 0x9f) || (s1 >= 0xe0 && s1 <= 0xea)) + { + if (n < 2) + return RET_TOOFEW(0); + s2 = s[1]; + if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) + { + unsigned char t1 = (s1 < 0xe0 ? s1 - 0x81 : s1 - 0xc1); + unsigned char t2 = (s2 < 0x80 ? s2 - 0x40 : s2 - 0x41); + unsigned char buf[2]; + buf[0] = 2 * t1 + (t2 < 0x5e ? 0 : 1) + 0x21; + buf[1] = (t2 < 0x5e ? t2 : t2 - 0x5e) + 0x21; + return jisx0208_mbtowc(conv, pwc, buf, 2); + } + } + else if (s1 >= 0xf0 && s1 <= 0xf9) + { + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + if (n < 2) + return RET_TOOFEW(0); + s2 = s[1]; + if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) + { + *pwc = 0xe000 + 188 * (s1 - 0xf0) + (s2 < 0x80 ? s2 - 0x40 : s2 - 0x41); + return 2; + } + } + return RET_ILSEQ; } - return RET_ILSEQ; - } } -static int -sjis_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int sjis_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - unsigned char buf[2]; - int ret; + unsigned char buf[2]; + int ret; - /* Try JIS X 0201-1976. */ - ret = jisx0201_wctomb(conv,buf,wc,1); - if (ret != RET_ILUNI) { - unsigned char c; - if (ret != 1) abort(); - c = buf[0]; - if (c < 0x80 || (c >= 0xa1 && c <= 0xdf)) { - r[0] = c; - return 1; + /* Try JIS X 0201-1976. */ + ret = jisx0201_wctomb(conv, buf, wc, 1); + if (ret != RET_ILUNI) + { + unsigned char c; + if (ret != 1) + abort(); + c = buf[0]; + if (c < 0x80 || (c >= 0xa1 && c <= 0xdf)) + { + r[0] = c; + return 1; + } } - } - /* Try JIS X 0208-1990. */ - ret = jisx0208_wctomb(conv,buf,wc,2); - if (ret != RET_ILUNI) { - unsigned char c1, c2; - if (ret != 2) abort(); - if (n < 2) - return RET_TOOSMALL; - c1 = buf[0]; - c2 = buf[1]; - if ((c1 >= 0x21 && c1 <= 0x74) && (c2 >= 0x21 && c2 <= 0x7e)) { - unsigned char t1 = (c1 - 0x21) >> 1; - unsigned char t2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21); - r[0] = (t1 < 0x1f ? t1+0x81 : t1+0xc1); - r[1] = (t2 < 0x3f ? t2+0x40 : t2+0x41); - return 2; + /* Try JIS X 0208-1990. */ + ret = jisx0208_wctomb(conv, buf, wc, 2); + if (ret != RET_ILUNI) + { + unsigned char c1, c2; + if (ret != 2) + abort(); + if (n < 2) + return RET_TOOSMALL; + c1 = buf[0]; + c2 = buf[1]; + if ((c1 >= 0x21 && c1 <= 0x74) && (c2 >= 0x21 && c2 <= 0x7e)) + { + unsigned char t1 = (c1 - 0x21) >> 1; + unsigned char t2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21); + r[0] = (t1 < 0x1f ? t1 + 0x81 : t1 + 0xc1); + r[1] = (t2 < 0x3f ? t2 + 0x40 : t2 + 0x41); + return 2; + } } - } - /* User-defined range. See - * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ - if (wc >= 0xe000 && wc < 0xe758) { - unsigned char c1, c2; - if (n < 2) - return RET_TOOSMALL; - c1 = (unsigned int) (wc - 0xe000) / 188; - c2 = (unsigned int) (wc - 0xe000) % 188; - r[0] = c1+0xf0; - r[1] = (c2 < 0x3f ? c2+0x40 : c2+0x41); - return 2; - } + /* User-defined range. See + * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ + if (wc >= 0xe000 && wc < 0xe758) + { + unsigned char c1, c2; + if (n < 2) + return RET_TOOSMALL; + c1 = (unsigned int)(wc - 0xe000) / 188; + c2 = (unsigned int)(wc - 0xe000) % 188; + r[0] = c1 + 0xf0; + r[1] = (c2 < 0x3f ? c2 + 0x40 : c2 + 0x41); + return 2; + } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _SJIS_H_ */ diff --git a/lib/converters/tcvn.h b/lib/converters/tcvn.h index 7292ba9d..4ced8411 100644 --- a/lib/converters/tcvn.h +++ b/lib/converters/tcvn.h @@ -1,5 +1,10 @@ +/** + * @file tcvn.h + * @brief TCVN-5712 + * @copyright Copyright (C) 1999-2002, 2004, 2016, 2019 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2004, 2016, 2019 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,13 +22,16 @@ * If not, see . */ -/* - * TCVN-5712 - */ +#ifndef _TCVN_H_ +#define _TCVN_H_ -#include "flushwc.h" +#include "reiconv_defines.h" + +//#include "flushwc.h" #include "vietcomb.h" +#include + static const unsigned char tcvn_comb_table[] = { 0xb0, 0xb3, 0xb2, 0xb1, 0xb4, }; @@ -288,3 +296,5 @@ tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) } return RET_ILUNI; } + +#endif /* _TCVN_H_ */ diff --git a/lib/converters/tds565.h b/lib/converters/tds565.h index 073af424..11a7bd90 100644 --- a/lib/converters/tds565.h +++ b/lib/converters/tds565.h @@ -1,5 +1,10 @@ +/** + * @file tds565.h + * @brief TDS565 + * @copyright Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * TDS565 - */ +#ifndef _TDS565_H_ +#define _TDS565_H_ + +#include "reiconv_defines.h" static const unsigned short tds565_2uni[64] = { /* 0x40 */ @@ -104,3 +110,5 @@ tds565_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) } return RET_ILUNI; } + +#endif /* _TDS565_H_ */ diff --git a/lib/converters/tis620.h b/lib/converters/tis620.h index cfb51c46..8bb93ffe 100644 --- a/lib/converters/tis620.h +++ b/lib/converters/tis620.h @@ -1,5 +1,10 @@ +/** + * @file tis620.h + * @brief TIS620.2533-1 + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,35 +22,40 @@ * If not, see . */ -/* - * TIS620.2533-1 - */ +#ifndef _TIS620_H_ +#define _TIS620_H_ -static int -tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int tis620_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c = *s; - if (c < 0x80) { - *pwc = (ucs4_t) c; - return 1; - } - else if (c >= 0xa1 && c <= 0xfb && !(c >= 0xdb && c <= 0xde)) { - *pwc = (ucs4_t) (c + 0x0d60); - return 1; - } - return RET_ILSEQ; + unsigned char c = *s; + if (c < 0x80) + { + *pwc = (ucs4_t)c; + return 1; + } + else if (c >= 0xa1 && c <= 0xfb && !(c >= 0xdb && c <= 0xde)) + { + *pwc = (ucs4_t)(c + 0x0d60); + return 1; + } + return RET_ILSEQ; } -static int -tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int tis620_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x0080) { - *r = wc; - return 1; - } - else if (wc >= 0x0e01 && wc <= 0x0e5b && !(wc >= 0x0e3b && wc <= 0x0e3e)) { - *r = wc-0x0d60; - return 1; - } - return RET_ILUNI; + if (wc < 0x0080) + { + *r = wc; + return 1; + } + else if (wc >= 0x0e01 && wc <= 0x0e5b && !(wc >= 0x0e3b && wc <= 0x0e3e)) + { + *r = wc - 0x0d60; + return 1; + } + return RET_ILUNI; } + +#endif /* _TIS620_H_ */ diff --git a/lib/converters/ucs2.h b/lib/converters/ucs2.h index 38cb7505..36a8cde0 100644 --- a/lib/converters/ucs2.h +++ b/lib/converters/ucs2.h @@ -1,5 +1,10 @@ +/** + * @file ucs2.h + * @brief UCS-2 + * @copyright Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,51 +22,68 @@ * If not, see . */ -/* - * UCS-2 - */ +#ifndef _UCS2_H_ +#define _UCS2_H_ + +#include "reiconv_defines.h" + +#include /* Here we accept FFFE/FEFF marks as endianness indicators everywhere in the stream, not just at the beginning. The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ -static int -ucs2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ucs2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX-2;) { - ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]); - if (wc == 0xfeff) { - } else if (wc == 0xfffe) { - state ^= 1; - } else if (wc >= 0xd800 && wc < 0xe000) { - conv->istate = state; - return RET_SHIFT_ILSEQ(count); - } else { - *pwc = wc; - conv->istate = state; - return count+2; + state_t state = conv->istate; + int count = 0; + for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX - 2;) + { + ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]); + if (wc == 0xfeff) + { + } + else if (wc == 0xfffe) + { + state ^= 1; + } + else if (wc >= 0xd800 && wc < 0xe000) + { + conv->istate = state; + return RET_SHIFT_ILSEQ(count); + } + else + { + *pwc = wc; + conv->istate = state; + return count + 2; + } + s += 2; + n -= 2; + count += 2; } - s += 2; n -= 2; count += 2; - } - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); } /* But we output UCS-2 in big-endian order, without byte-order mark. */ /* RFC 2152 says: "ISO/IEC 10646-1:1993(E) specifies that when characters the UCS-2 form are serialized as octets, that the most significant octet appear first." */ -static int -ucs2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs2_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x10000 && wc != 0xfffe && !(wc >= 0xd800 && wc < 0xe000)) { - if (n >= 2) { - r[0] = (unsigned char) (wc >> 8); - r[1] = (unsigned char) wc; - return 2; - } else - return RET_TOOSMALL; - } else - return RET_ILUNI; + if (wc < 0x10000 && wc != 0xfffe && !(wc >= 0xd800 && wc < 0xe000)) + { + if (n >= 2) + { + r[0] = (unsigned char)(wc >> 8); + r[1] = (unsigned char)wc; + return 2; + } + else + return RET_TOOSMALL; + } + else + return RET_ILUNI; } + +#endif /* _UCS2_H_ */ diff --git a/lib/converters/ucs2be.h b/lib/converters/ucs2be.h index 105e5f6a..91e0e49f 100644 --- a/lib/converters/ucs2be.h +++ b/lib/converters/ucs2be.h @@ -1,5 +1,10 @@ +/** + * @file ucs2be.h + * @brief UCS-2BE = UCS-2 big endian + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,34 +22,42 @@ * If not, see . */ -/* - * UCS-2BE = UCS-2 big endian - */ +#ifndef _UCS2BE_H_ +#define _UCS2BE_H_ -static int -ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ucs2be_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 2) { - if (s[0] >= 0xd8 && s[0] < 0xe0) { - return RET_ILSEQ; - } else { - *pwc = (s[0] << 8) + s[1]; - return 2; + if (n >= 2) + { + if (s[0] >= 0xd8 && s[0] < 0xe0) + { + return RET_ILSEQ; + } + else + { + *pwc = (s[0] << 8) + s[1]; + return 2; + } } - } - return RET_TOOFEW(0); + return RET_TOOFEW(0); } -static int -ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs2be_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { - if (n >= 2) { - r[0] = (unsigned char) (wc >> 8); - r[1] = (unsigned char) wc; - return 2; - } else - return RET_TOOSMALL; - } - return RET_ILUNI; + if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) + { + if (n >= 2) + { + r[0] = (unsigned char)(wc >> 8); + r[1] = (unsigned char)wc; + return 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } + +#endif /* _UCS2BE_H_ */ diff --git a/lib/converters/ucs2internal.h b/lib/converters/ucs2internal.h index ddf0af60..1a44ee0d 100644 --- a/lib/converters/ucs2internal.h +++ b/lib/converters/ucs2internal.h @@ -1,5 +1,10 @@ +/** + * @file ucs2internal.h + * @brief UCS-2-INTERNAL = UCS-2 with machine dependent endianness and alignment + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,34 +22,43 @@ * If not, see . */ -/* - * UCS-2-INTERNAL = UCS-2 with machine dependent endianness and alignment - */ +#ifndef _UCS2INTERNAL_H_ +#define _UCS2INTERNAL_H_ -static int -ucs2internal_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ucs2internal_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 2) { - unsigned short x = *(const unsigned short *)s; - if (x >= 0xd800 && x < 0xe000) { - return RET_ILSEQ; - } else { - *pwc = x; - return 2; + if (n >= 2) + { + unsigned short x = *(const unsigned short *)s; + if (x >= 0xd800 && x < 0xe000) + { + return RET_ILSEQ; + } + else + { + *pwc = x; + return 2; + } } - } - return RET_TOOFEW(0); + return RET_TOOFEW(0); } -static int -ucs2internal_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs2internal_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { - if (n >= 2) { - *(unsigned short *)r = wc; - return 2; - } else - return RET_TOOSMALL; - } else - return RET_ILUNI; + if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) + { + if (n >= 2) + { + *(unsigned short *)r = wc; + return 2; + } + else + return RET_TOOSMALL; + } + else + return RET_ILUNI; } + +#endif /* _UCS2INTERNAL_H_ */ diff --git a/lib/converters/ucs2le.h b/lib/converters/ucs2le.h index 02e636df..ec18cbd6 100644 --- a/lib/converters/ucs2le.h +++ b/lib/converters/ucs2le.h @@ -1,5 +1,10 @@ +/** + * @file ucs2le.h + * @brief UCS-2LE = UCS-2 little endian + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,34 +22,42 @@ * If not, see . */ -/* - * UCS-2LE = UCS-2 little endian - */ +#ifndef _UCS2LE_H_ +#define _UCS2LE_H_ -static int -ucs2le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ucs2le_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 2) { - if (s[1] >= 0xd8 && s[1] < 0xe0) { - return RET_ILSEQ; - } else { - *pwc = s[0] + (s[1] << 8); - return 2; + if (n >= 2) + { + if (s[1] >= 0xd8 && s[1] < 0xe0) + { + return RET_ILSEQ; + } + else + { + *pwc = s[0] + (s[1] << 8); + return 2; + } } - } - return RET_TOOFEW(0); + return RET_TOOFEW(0); } -static int -ucs2le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs2le_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { - if (n >= 2) { - r[0] = (unsigned char) wc; - r[1] = (unsigned char) (wc >> 8); - return 2; - } else - return RET_TOOSMALL; - } - return RET_ILUNI; + if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) + { + if (n >= 2) + { + r[0] = (unsigned char)wc; + r[1] = (unsigned char)(wc >> 8); + return 2; + } + else + return RET_TOOSMALL; + } + return RET_ILUNI; } + +#endif /* _UCS2LE_H_ */ diff --git a/lib/converters/ucs2swapped.h b/lib/converters/ucs2swapped.h index 8e58a0a2..ec47f32f 100644 --- a/lib/converters/ucs2swapped.h +++ b/lib/converters/ucs2swapped.h @@ -1,5 +1,10 @@ +/** + * @file ucs2swapped.h + * @brief UCS-2-SWAPPED = UCS-2-INTERNAL with inverted endianness + * @copyright Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,43 +22,56 @@ * If not, see . */ -/* - * UCS-2-SWAPPED = UCS-2-INTERNAL with inverted endianness - */ +#ifndef _UCS2SWAPPED_H_ +#define _UCS2SWAPPED_H_ + +#include "reiconv_defines.h" + +#include -static int -ucs2swapped_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ucs2swapped_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - /* This function assumes that 'unsigned short' has exactly 16 bits. */ - if (sizeof(unsigned short) != 2) abort(); - - if (n >= 2) { - unsigned short x = *(const unsigned short *)s; - x = (x >> 8) | (x << 8); - if (x >= 0xd800 && x < 0xe000) { - return RET_ILSEQ; - } else { - *pwc = x; - return 2; + /* This function assumes that 'unsigned short' has exactly 16 bits. */ + if (sizeof(unsigned short) != 2) + abort(); + + if (n >= 2) + { + unsigned short x = *(const unsigned short *)s; + x = (x >> 8) | (x << 8); + if (x >= 0xd800 && x < 0xe000) + { + return RET_ILSEQ; + } + else + { + *pwc = x; + return 2; + } } - } - return RET_TOOFEW(0); + return RET_TOOFEW(0); } -static int -ucs2swapped_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs2swapped_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - /* This function assumes that 'unsigned short' has exactly 16 bits. */ - if (sizeof(unsigned short) != 2) abort(); - - if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { - if (n >= 2) { - unsigned short x = wc; - x = (x >> 8) | (x << 8); - *(unsigned short *)r = x; - return 2; - } else - return RET_TOOSMALL; - } else - return RET_ILUNI; + /* This function assumes that 'unsigned short' has exactly 16 bits. */ + if (sizeof(unsigned short) != 2) + abort(); + + if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) + { + if (n >= 2) + { + unsigned short x = wc; + x = (x >> 8) | (x << 8); + *(unsigned short *)r = x; + return 2; + } + else + return RET_TOOSMALL; + } + else + return RET_ILUNI; } + +#endif /* _UCS2SWAPPED_H_ */ diff --git a/lib/converters/ucs4.h b/lib/converters/ucs4.h index 9ae70e88..ad72adbe 100644 --- a/lib/converters/ucs4.h +++ b/lib/converters/ucs4.h @@ -1,5 +1,10 @@ +/** + * @file ucs4.h + * @brief UCS-4 + * @copyright Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,58 +22,68 @@ * If not, see . */ -/* - * UCS-4 - */ +#ifndef _UCS4_H_ +#define _UCS4_H_ + +#include "reiconv_defines.h" + +#include /* Here we accept FFFE0000/0000FEFF marks as endianness indicators everywhere in the stream, not just at the beginning. The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ -static int -ucs4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int ucs4_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX-4;) { - ucs4_t wc = (state - ? (ucs4_t) s[0] - + ((ucs4_t) s[1] << 8) - + ((ucs4_t) s[2] << 16) - + ((ucs4_t) s[3] << 24) - : ((ucs4_t) s[0] << 24) - + ((ucs4_t) s[1] << 16) - + ((ucs4_t) s[2] << 8) - + (ucs4_t) s[3]); - if (wc == 0x0000feff) { - } else if (wc == 0xfffe0000u) { - state ^= 1; - } else if (wc <= 0x7fffffff) { - *pwc = wc; - conv->istate = state; - return count+4; - } else { - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + state_t state = conv->istate; + int count = 0; + for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX - 4;) + { + ucs4_t wc = (state ? (ucs4_t)s[0] + ((ucs4_t)s[1] << 8) + ((ucs4_t)s[2] << 16) + ((ucs4_t)s[3] << 24) + : ((ucs4_t)s[0] << 24) + ((ucs4_t)s[1] << 16) + ((ucs4_t)s[2] << 8) + (ucs4_t)s[3]); + if (wc == 0x0000feff) + { + } + else if (wc == 0xfffe0000u) + { + state ^= 1; + } + else if (wc <= 0x7fffffff) + { + *pwc = wc; + conv->istate = state; + return count + 4; + } + else + { + conv->istate = state; + return RET_SHIFT_ILSEQ(count); + } + s += 4; + n -= 4; + count += 4; } - s += 4; n -= 4; count += 4; - } - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); } /* But we output UCS-4 in big-endian order, without byte-order mark. */ -static int -ucs4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs4_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc <= 0x7fffffff) { - if (n >= 4) { - r[0] = (unsigned char) (wc >> 24); - r[1] = (unsigned char) (wc >> 16); - r[2] = (unsigned char) (wc >> 8); - r[3] = (unsigned char) wc; - return 4; - } else - return RET_TOOSMALL; - } else - return RET_ILUNI; + if (wc <= 0x7fffffff) + { + if (n >= 4) + { + r[0] = (unsigned char)(wc >> 24); + r[1] = (unsigned char)(wc >> 16); + r[2] = (unsigned char)(wc >> 8); + r[3] = (unsigned char)wc; + return 4; + } + else + return RET_TOOSMALL; + } + else + return RET_ILUNI; } + +#endif /* _UCS4_H_ */ diff --git a/lib/converters/ucs4be.h b/lib/converters/ucs4be.h index 3fcb2921..821e2838 100644 --- a/lib/converters/ucs4be.h +++ b/lib/converters/ucs4be.h @@ -1,5 +1,10 @@ +/** + * @file ucs4be.h + * @brief UCS-4BE = UCS-4 big endian + * @copyright Copyright (C) 1999-2000, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2000, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,32 +22,33 @@ * If not, see . */ -/* - * UCS-4BE = UCS-4 big endian - */ +#ifndef _UCS4BE_H_ +#define _UCS4BE_H_ -static int -ucs4be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ucs4be_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 4) { - *pwc = ((ucs4_t) s[0] << 24) - + ((ucs4_t) s[1] << 16) - + ((ucs4_t) s[2] << 8) - + (ucs4_t) s[3]; - return 4; - } - return RET_TOOFEW(0); + if (n >= 4) + { + *pwc = ((ucs4_t)s[0] << 24) + ((ucs4_t)s[1] << 16) + ((ucs4_t)s[2] << 8) + (ucs4_t)s[3]; + return 4; + } + return RET_TOOFEW(0); } -static int -ucs4be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs4be_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 4) { - r[0] = (unsigned char) (wc >> 24); - r[1] = (unsigned char) (wc >> 16); - r[2] = (unsigned char) (wc >> 8); - r[3] = (unsigned char) wc; - return 4; - } else - return RET_TOOSMALL; + if (n >= 4) + { + r[0] = (unsigned char)(wc >> 24); + r[1] = (unsigned char)(wc >> 16); + r[2] = (unsigned char)(wc >> 8); + r[3] = (unsigned char)wc; + return 4; + } + else + return RET_TOOSMALL; } + +#endif /* _UCS4BE_H_ */ diff --git a/lib/converters/ucs4internal.h b/lib/converters/ucs4internal.h index 227acee0..17992129 100644 --- a/lib/converters/ucs4internal.h +++ b/lib/converters/ucs4internal.h @@ -1,5 +1,10 @@ +/** + * @file ucs4internal.h + * @brief UCS-4-INTERNAL = UCS-4 with machine dependent endianness and alignment + * @copyright Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,26 +22,30 @@ * If not, see . */ -/* - * UCS-4-INTERNAL = UCS-4 with machine dependent endianness and alignment - */ +#ifndef _UCS4INTERNAL_H_ +#define _UCS4INTERNAL_H_ -static int -ucs4internal_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ucs4internal_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 4) { - *pwc = *(const unsigned int *)s; - return 4; - } - return RET_TOOFEW(0); + if (n >= 4) + { + *pwc = *(const unsigned int *)s; + return 4; + } + return RET_TOOFEW(0); } -static int -ucs4internal_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs4internal_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 4) { - *(unsigned int *)r = wc; - return 4; - } else - return RET_TOOSMALL; + if (n >= 4) + { + *(unsigned int *)r = wc; + return 4; + } + else + return RET_TOOSMALL; } + +#endif /* _UCS4INTERNAL_H_ */ diff --git a/lib/converters/ucs4le.h b/lib/converters/ucs4le.h index b56cb592..fa972228 100644 --- a/lib/converters/ucs4le.h +++ b/lib/converters/ucs4le.h @@ -1,5 +1,10 @@ +/** + * @file ucs4le.h + * @brief UCS-4LE = UCS-4 little endian + * @copyright Copyright (C) 1999-2000, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2000, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,32 +22,33 @@ * If not, see . */ -/* - * UCS-4LE = UCS-4 little endian - */ +#ifndef _UCS4LE_H_ +#define _UCS4LE_H_ -static int -ucs4le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include "reiconv_defines.h" + +static int ucs4le_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 4) { - *pwc = (ucs4_t) s[0] - + ((ucs4_t) s[1] << 8) - + ((ucs4_t) s[2] << 16) - + ((ucs4_t) s[3] << 24); - return 4; - } - return RET_TOOFEW(0); + if (n >= 4) + { + *pwc = (ucs4_t)s[0] + ((ucs4_t)s[1] << 8) + ((ucs4_t)s[2] << 16) + ((ucs4_t)s[3] << 24); + return 4; + } + return RET_TOOFEW(0); } -static int -ucs4le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs4le_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 4) { - r[0] = (unsigned char) wc; - r[1] = (unsigned char) (wc >> 8); - r[2] = (unsigned char) (wc >> 16); - r[3] = (unsigned char) (wc >> 24); - return 4; - } else - return RET_TOOSMALL; + if (n >= 4) + { + r[0] = (unsigned char)wc; + r[1] = (unsigned char)(wc >> 8); + r[2] = (unsigned char)(wc >> 16); + r[3] = (unsigned char)(wc >> 24); + return 4; + } + else + return RET_TOOSMALL; } + +#endif /* _UCS4LE_H_ */ diff --git a/lib/converters/ucs4swapped.h b/lib/converters/ucs4swapped.h index 379abc72..e18fa410 100644 --- a/lib/converters/ucs4swapped.h +++ b/lib/converters/ucs4swapped.h @@ -1,5 +1,10 @@ +/** + * @file ucs4swapped.h + * @brief UCS-4-SWAPPED = UCS-4-INTERNAL with inverted endianness + * @copyright Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,36 +22,44 @@ * If not, see . */ -/* - * UCS-4-SWAPPED = UCS-4-INTERNAL with inverted endianness - */ +#ifndef _UCS4SWAPPED_H_ +#define _UCS4SWAPPED_H_ + +#include "reiconv_defines.h" -static int -ucs4swapped_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +#include + +static int ucs4swapped_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - /* This function assumes that 'unsigned int' has exactly 32 bits. */ - if (sizeof(unsigned int) != 4) abort(); - - if (n >= 4) { - unsigned int x = *(const unsigned int *)s; - x = (x >> 24) | ((x >> 8) & 0xff00) | ((x & 0xff00) << 8) | (x << 24); - *pwc = x; - return 4; - } - return RET_TOOFEW(0); + /* This function assumes that 'unsigned int' has exactly 32 bits. */ + if (sizeof(unsigned int) != 4) + abort(); + + if (n >= 4) + { + unsigned int x = *(const unsigned int *)s; + x = (x >> 24) | ((x >> 8) & 0xff00) | ((x & 0xff00) << 8) | (x << 24); + *pwc = x; + return 4; + } + return RET_TOOFEW(0); } -static int -ucs4swapped_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int ucs4swapped_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - /* This function assumes that 'unsigned int' has exactly 32 bits. */ - if (sizeof(unsigned int) != 4) abort(); - - if (n >= 4) { - unsigned int x = wc; - x = (x >> 24) | ((x >> 8) & 0xff00) | ((x & 0xff00) << 8) | (x << 24); - *(unsigned int *)r = x; - return 4; - } else - return RET_TOOSMALL; + /* This function assumes that 'unsigned int' has exactly 32 bits. */ + if (sizeof(unsigned int) != 4) + abort(); + + if (n >= 4) + { + unsigned int x = wc; + x = (x >> 24) | ((x >> 8) & 0xff00) | ((x & 0xff00) << 8) | (x << 24); + *(unsigned int *)r = x; + return 4; + } + else + return RET_TOOSMALL; } + +#endif /* _UCS4SWAPPED_H_ */ diff --git a/lib/converters/uhc_1.h b/lib/converters/uhc_1.h index 40a69d8e..fb10f970 100644 --- a/lib/converters/uhc_1.h +++ b/lib/converters/uhc_1.h @@ -1,5 +1,10 @@ +/** + * @file uhc_1.h + * @brief Unified Hangul Code part 1 + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * Unified Hangul Code part 1 - */ +#ifndef _UHC_1_H_ +#define _UHC_1_H_ + +#include "reiconv_defines.h" static const unsigned short uhc_1_2uni_main_page81[64] = { 0xac02, 0xac8d, 0xad14, 0xad91, 0xadfa, 0xae7a, 0xaee6, 0xaf57, @@ -802,27 +808,30 @@ static const unsigned char uhc_1_2uni_page81[5696] = { 0x71, 0x72, }; -static int -uhc_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int uhc_1_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0x81 && c1 <= 0xa0)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xff)) { - unsigned int row = c1 - 0x81; - unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); - unsigned int i = 178 * row + col; - if (i < 5696) { - *pwc = (ucs4_t) (uhc_1_2uni_main_page81[2*row+(col>=89?1:0)] + uhc_1_2uni_page81[i]); - return 2; + unsigned char c1 = s[0]; + if ((c1 >= 0x81 && c1 <= 0xa0)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xff)) + { + unsigned int row = c1 - 0x81; + unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); + unsigned int i = 178 * row + col; + if (i < 5696) + { + *pwc = (ucs4_t)(uhc_1_2uni_main_page81[2 * row + (col >= 89 ? 1 : 0)] + uhc_1_2uni_page81[i]); + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short uhc_1_2charset_main[45] = { @@ -1695,30 +1704,35 @@ static const Summary16 uhc_1_uni2indx_pageac[459] = { { 5672, 0xc714 }, { 5679, 0x5fef }, { 5692, 0x001d }, }; -static int -uhc_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int uhc_1_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - if (wc >= 0xac00 && wc < 0xc8b0) { - const Summary16 *summary = &uhc_1_uni2indx_pageac[(wc>>4)-0xac0]; - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - used += summary->indx; - c = uhc_1_2charset_main[used>>7] + uhc_1_2charset[used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + if (wc >= 0xac00 && wc < 0xc8b0) + { + const Summary16 *summary = &uhc_1_uni2indx_pageac[(wc >> 4) - 0xac0]; + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + used += summary->indx; + c = uhc_1_2charset_main[used >> 7] + uhc_1_2charset[used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _UHC_1_H_ */ diff --git a/lib/converters/uhc_2.h b/lib/converters/uhc_2.h index 7e66a06c..75012be2 100644 --- a/lib/converters/uhc_2.h +++ b/lib/converters/uhc_2.h @@ -1,5 +1,10 @@ +/** + * @file uhc_2.h + * @brief Unified Hangul Code part 2 + * @copyright Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * Unified Hangul Code part 2 - */ +#ifndef _UHC_2_H_ +#define _UHC_2_H_ + +#include "reiconv_defines.h" static const unsigned short uhc_2_2uni_main_pagea1[76] = { 0xc8a5, 0xc8d8, 0xc910, 0xc93e, 0xc971, 0xc9a5, 0xc9de, 0xca1c, @@ -484,27 +490,30 @@ static const unsigned char uhc_2_2uni_pagea1[3126] = { 0x15, 0x16, }; -static int -uhc_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int uhc_2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - unsigned char c1 = s[0]; - if ((c1 >= 0xa1 && c1 <= 0xc6)) { - if (n >= 2) { - unsigned char c2 = s[1]; - if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xa1)) { - unsigned int row = c1 - 0xa1; - unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); - unsigned int i = 84 * row + col; - if (i < 3126) { - *pwc = (ucs4_t) (uhc_2_2uni_main_pagea1[2*row+(col>=42?1:0)] + uhc_2_2uni_pagea1[i]); - return 2; + unsigned char c1 = s[0]; + if ((c1 >= 0xa1 && c1 <= 0xc6)) + { + if (n >= 2) + { + unsigned char c2 = s[1]; + if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xa1)) + { + unsigned int row = c1 - 0xa1; + unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); + unsigned int i = 84 * row + col; + if (i < 3126) + { + *pwc = (ucs4_t)(uhc_2_2uni_main_pagea1[2 * row + (col >= 42 ? 1 : 0)] + uhc_2_2uni_pagea1[i]); + return 2; + } + } + return RET_ILSEQ; } - } - return RET_ILSEQ; + return RET_TOOFEW(0); } - return RET_TOOFEW(0); - } - return RET_ILSEQ; + return RET_ILSEQ; } static const unsigned short uhc_2_2charset_main[49] = { @@ -992,30 +1001,35 @@ static const Summary16 uhc_2_uni2indx_pagec8[251] = { { 3099, 0xecfd }, { 3111, 0xd4fe }, { 3122, 0x000f }, }; -static int -uhc_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int uhc_2_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (n >= 2) { - if (wc >= 0xc800 && wc < 0xd7b0) { - const Summary16 *summary = &uhc_2_uni2indx_pagec8[(wc>>4)-0xc80]; - unsigned short used = summary->used; - unsigned int i = wc & 0x0f; - if (used & ((unsigned short) 1 << i)) { - unsigned short c; - /* Keep in 'used' only the bits 0..i-1. */ - used &= ((unsigned short) 1 << i) - 1; - /* Add 'summary->indx' and the number of bits set in 'used'. */ - used = (used & 0x5555) + ((used & 0xaaaa) >> 1); - used = (used & 0x3333) + ((used & 0xcccc) >> 2); - used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); - used = (used & 0x00ff) + (used >> 8); - used += summary->indx; - c = uhc_2_2charset_main[used>>6] + uhc_2_2charset[used]; - r[0] = (c >> 8); r[1] = (c & 0xff); - return 2; - } + if (n >= 2) + { + if (wc >= 0xc800 && wc < 0xd7b0) + { + const Summary16 *summary = &uhc_2_uni2indx_pagec8[(wc >> 4) - 0xc80]; + unsigned short used = summary->used; + unsigned int i = wc & 0x0f; + if (used & ((unsigned short)1 << i)) + { + unsigned short c; + /* Keep in 'used' only the bits 0..i-1. */ + used &= ((unsigned short)1 << i) - 1; + /* Add 'summary->indx' and the number of bits set in 'used'. */ + used = (used & 0x5555) + ((used & 0xaaaa) >> 1); + used = (used & 0x3333) + ((used & 0xcccc) >> 2); + used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); + used = (used & 0x00ff) + (used >> 8); + used += summary->indx; + c = uhc_2_2charset_main[used >> 6] + uhc_2_2charset[used]; + r[0] = (c >> 8); + r[1] = (c & 0xff); + return 2; + } + } + return RET_ILUNI; } - return RET_ILUNI; - } - return RET_TOOSMALL; + return RET_TOOSMALL; } + +#endif /* _UHC_2_H_ */ diff --git a/lib/converters/utf16.h b/lib/converters/utf16.h index 9735d7cb..8f845c1f 100644 --- a/lib/converters/utf16.h +++ b/lib/converters/utf16.h @@ -1,5 +1,10 @@ +/** + * @file utf16.h + * @brief UTF-16 + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,12 @@ * If not, see . */ -/* - * UTF-16 - */ +#ifndef _UTF16_H_ +#define _UTF16_H_ + +#include "reiconv_defines.h" + +#include /* Specification: RFC 2781 */ @@ -30,41 +38,54 @@ only for strings containing U+FEFF characters, which is quite rare.) The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ -static int -utf16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int utf16_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX-2;) { - ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]); - if (wc == 0xfeff) { - } else if (wc == 0xfffe) { - state ^= 1; - } else if (wc >= 0xd800 && wc < 0xdc00) { - if (n >= 4) { - ucs4_t wc2 = (state ? s[2] + (s[3] << 8) : (s[2] << 8) + s[3]); - if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) - goto ilseq; - *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); - conv->istate = state; - return count+4; - } else - break; - } else if (wc >= 0xdc00 && wc < 0xe000) { - goto ilseq; - } else { - *pwc = wc; - conv->istate = state; - return count+2; + state_t state = conv->istate; + int count = 0; + for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX - 2;) + { + ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]); + if (wc == 0xfeff) + { + } + else if (wc == 0xfffe) + { + state ^= 1; + } + else if (wc >= 0xd800 && wc < 0xdc00) + { + if (n >= 4) + { + ucs4_t wc2 = (state ? s[2] + (s[3] << 8) : (s[2] << 8) + s[3]); + if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) + goto ilseq; + *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); + conv->istate = state; + return count + 4; + } + else + break; + } + else if (wc >= 0xdc00 && wc < 0xe000) + { + goto ilseq; + } + else + { + *pwc = wc; + conv->istate = state; + return count + 2; + } + s += 2; + n -= 2; + count += 2; } - s += 2; n -= 2; count += 2; - } - conv->istate = state; - return RET_TOOFEW(count); + conv->istate = state; + return RET_TOOFEW(count); ilseq: - conv->istate = state; - return RET_SHIFT_ILSEQ(count); + conv->istate = state; + return RET_SHIFT_ILSEQ(count); } /* We output UTF-16 in big-endian order, with byte-order mark. @@ -72,41 +93,54 @@ utf16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) mandate a BOM; the file concatenation issue is not so severe as long as the above utf16_mbtowc function is used. */ /* The state is 0 at the beginning, 1 after the BOM has been written. */ -static int -utf16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int utf16_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc != 0xfffe && !(wc >= 0xd800 && wc < 0xe000)) { - int count = 0; - if (!conv->ostate) { - if (n >= 2) { - r[0] = 0xFE; - r[1] = 0xFF; - r += 2; n -= 2; count += 2; - } else - return RET_TOOSMALL; - } - if (wc < 0x10000) { - if (n >= 2) { - r[0] = (unsigned char) (wc >> 8); - r[1] = (unsigned char) wc; - conv->ostate = 1; - return count+2; - } else - return RET_TOOSMALL; + if (wc != 0xfffe && !(wc >= 0xd800 && wc < 0xe000)) + { + int count = 0; + if (!conv->ostate) + { + if (n >= 2) + { + r[0] = 0xFE; + r[1] = 0xFF; + r += 2; + n -= 2; + count += 2; + } + else + return RET_TOOSMALL; + } + if (wc < 0x10000) + { + if (n >= 2) + { + r[0] = (unsigned char)(wc >> 8); + r[1] = (unsigned char)wc; + conv->ostate = 1; + return count + 2; + } + else + return RET_TOOSMALL; + } + else if (wc < 0x110000) + { + if (n >= 4) + { + ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); + ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); + r[0] = (unsigned char)(wc1 >> 8); + r[1] = (unsigned char)wc1; + r[2] = (unsigned char)(wc2 >> 8); + r[3] = (unsigned char)wc2; + conv->ostate = 1; + return count + 4; + } + else + return RET_TOOSMALL; + } } - else if (wc < 0x110000) { - if (n >= 4) { - ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); - ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); - r[0] = (unsigned char) (wc1 >> 8); - r[1] = (unsigned char) wc1; - r[2] = (unsigned char) (wc2 >> 8); - r[3] = (unsigned char) wc2; - conv->ostate = 1; - return count+4; - } else - return RET_TOOSMALL; - } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _UTF16_H_ */ diff --git a/lib/converters/utf16be.h b/lib/converters/utf16be.h index 68d79582..c4ce4873 100644 --- a/lib/converters/utf16be.h +++ b/lib/converters/utf16be.h @@ -1,5 +1,10 @@ +/** + * @file utf16be.h + * @brief UTF-16BE + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,63 +22,78 @@ * If not, see . */ -/* - * UTF-16BE - */ +#ifndef _UTF16BE_H_ +#define _UTF16BE_H_ + +#include "reiconv_defines.h" /* Specification: RFC 2781 */ -static int -utf16be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int utf16be_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - int count = 0; - if (n >= 2) { - ucs4_t wc = (s[0] << 8) + s[1]; - if (wc >= 0xd800 && wc < 0xdc00) { - if (n >= 4) { - ucs4_t wc2 = (s[2] << 8) + s[3]; - if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) - goto ilseq; - *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); - return count+4; - } - } else if (wc >= 0xdc00 && wc < 0xe000) { - goto ilseq; - } else { - *pwc = wc; - return count+2; + int count = 0; + if (n >= 2) + { + ucs4_t wc = (s[0] << 8) + s[1]; + if (wc >= 0xd800 && wc < 0xdc00) + { + if (n >= 4) + { + ucs4_t wc2 = (s[2] << 8) + s[3]; + if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) + goto ilseq; + *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); + return count + 4; + } + } + else if (wc >= 0xdc00 && wc < 0xe000) + { + goto ilseq; + } + else + { + *pwc = wc; + return count + 2; + } } - } - return RET_TOOFEW(count); + return RET_TOOFEW(count); ilseq: - return RET_SHIFT_ILSEQ(count); + return RET_SHIFT_ILSEQ(count); } -static int -utf16be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int utf16be_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (!(wc >= 0xd800 && wc < 0xe000)) { - if (wc < 0x10000) { - if (n >= 2) { - r[0] = (unsigned char) (wc >> 8); - r[1] = (unsigned char) wc; - return 2; - } else - return RET_TOOSMALL; - } - else if (wc < 0x110000) { - if (n >= 4) { - ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); - ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); - r[0] = (unsigned char) (wc1 >> 8); - r[1] = (unsigned char) wc1; - r[2] = (unsigned char) (wc2 >> 8); - r[3] = (unsigned char) wc2; - return 4; - } else - return RET_TOOSMALL; + if (!(wc >= 0xd800 && wc < 0xe000)) + { + if (wc < 0x10000) + { + if (n >= 2) + { + r[0] = (unsigned char)(wc >> 8); + r[1] = (unsigned char)wc; + return 2; + } + else + return RET_TOOSMALL; + } + else if (wc < 0x110000) + { + if (n >= 4) + { + ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); + ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); + r[0] = (unsigned char)(wc1 >> 8); + r[1] = (unsigned char)wc1; + r[2] = (unsigned char)(wc2 >> 8); + r[3] = (unsigned char)wc2; + return 4; + } + else + return RET_TOOSMALL; + } } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _UTF16BE_H_ */ diff --git a/lib/converters/utf16le.h b/lib/converters/utf16le.h index a56444e7..6809a5fb 100644 --- a/lib/converters/utf16le.h +++ b/lib/converters/utf16le.h @@ -1,5 +1,10 @@ +/** + * @file utf16le.h + * @brief UTF-16LE + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,63 +22,78 @@ * If not, see . */ -/* - * UTF-16LE - */ +#ifndef _UTF16LE_H_ +#define _UTF16LE_H_ + +#include "reiconv_defines.h" /* Specification: RFC 2781 */ -static int -utf16le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int utf16le_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - int count = 0; - if (n >= 2) { - ucs4_t wc = s[0] + (s[1] << 8); - if (wc >= 0xd800 && wc < 0xdc00) { - if (n >= 4) { - ucs4_t wc2 = s[2] + (s[3] << 8); - if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) - goto ilseq; - *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); - return count+4; - } - } else if (wc >= 0xdc00 && wc < 0xe000) { - goto ilseq; - } else { - *pwc = wc; - return count+2; + int count = 0; + if (n >= 2) + { + ucs4_t wc = s[0] + (s[1] << 8); + if (wc >= 0xd800 && wc < 0xdc00) + { + if (n >= 4) + { + ucs4_t wc2 = s[2] + (s[3] << 8); + if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) + goto ilseq; + *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); + return count + 4; + } + } + else if (wc >= 0xdc00 && wc < 0xe000) + { + goto ilseq; + } + else + { + *pwc = wc; + return count + 2; + } } - } - return RET_TOOFEW(count); + return RET_TOOFEW(count); ilseq: - return RET_SHIFT_ILSEQ(count); + return RET_SHIFT_ILSEQ(count); } -static int -utf16le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int utf16le_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (!(wc >= 0xd800 && wc < 0xe000)) { - if (wc < 0x10000) { - if (n >= 2) { - r[0] = (unsigned char) wc; - r[1] = (unsigned char) (wc >> 8); - return 2; - } else - return RET_TOOSMALL; - } - else if (wc < 0x110000) { - if (n >= 4) { - ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); - ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); - r[0] = (unsigned char) wc1; - r[1] = (unsigned char) (wc1 >> 8); - r[2] = (unsigned char) wc2; - r[3] = (unsigned char) (wc2 >> 8); - return 4; - } else - return RET_TOOSMALL; + if (!(wc >= 0xd800 && wc < 0xe000)) + { + if (wc < 0x10000) + { + if (n >= 2) + { + r[0] = (unsigned char)wc; + r[1] = (unsigned char)(wc >> 8); + return 2; + } + else + return RET_TOOSMALL; + } + else if (wc < 0x110000) + { + if (n >= 4) + { + ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); + ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); + r[0] = (unsigned char)wc1; + r[1] = (unsigned char)(wc1 >> 8); + r[2] = (unsigned char)wc2; + r[3] = (unsigned char)(wc2 >> 8); + return 4; + } + else + return RET_TOOSMALL; + } } - } - return RET_ILUNI; + return RET_ILUNI; } + +#endif /* _UTF16LE_H_ */ diff --git a/lib/converters/utf32.h b/lib/converters/utf32.h index 12b1cf28..6076a794 100644 --- a/lib/converters/utf32.h +++ b/lib/converters/utf32.h @@ -1,5 +1,10 @@ +/** + * @file utf32.h + * @brief UTF-32 + * @copyright Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,12 @@ * If not, see . */ -/* - * UTF-32 - */ +#ifndef _UTF32_H_ +#define _UTF32_H_ + +#include "reiconv_defines.h" + +#include /* Specification: Unicode 3.1 Standard Annex #19 */ @@ -95,3 +103,5 @@ utf32_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) } return RET_ILUNI; } + +#endif /* _UTF32_H_ */ diff --git a/lib/converters/utf32be.h b/lib/converters/utf32be.h index db3517dc..86e6336a 100644 --- a/lib/converters/utf32be.h +++ b/lib/converters/utf32be.h @@ -1,5 +1,10 @@ +/** + * @file utf32be.h + * @brief UTF-32BE + * @copyright Copyright (C) 1999-2001, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * UTF-32BE - */ +#ifndef _UTF32BE_H_ +#define _UTF32BE_H_ + +#include "reiconv_defines.h" /* Specification: Unicode 3.1 Standard Annex #19 */ @@ -55,3 +61,5 @@ utf32be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) } return RET_ILUNI; } + +#endif /* _UTF32BE_H_ */ diff --git a/lib/converters/utf32le.h b/lib/converters/utf32le.h index 7ed564be..fc0b7fe6 100644 --- a/lib/converters/utf32le.h +++ b/lib/converters/utf32le.h @@ -1,5 +1,10 @@ +/** + * @file utf32le.h + * @brief UTF-32LE + * @copyright Copyright (C) 1999-2001, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016, 2024 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * UTF-32LE - */ +#ifndef _UTF32LE_H_ +#define _UTF32LE_H_ + +#include "reiconv_defines.h" /* Specification: Unicode 3.1 Standard Annex #19 */ @@ -55,3 +61,5 @@ utf32le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) } return RET_ILUNI; } + +#endif /* _UTF32LE_H_ */ diff --git a/lib/converters/utf7.h b/lib/converters/utf7.h index 650d4bd0..3335a58e 100644 --- a/lib/converters/utf7.h +++ b/lib/converters/utf7.h @@ -1,5 +1,10 @@ +/** + * @file utf7.h + * @brief UTF-7 + * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,12 @@ * If not, see . */ -/* - * UTF-7 - */ +#ifndef _UTF7_H_ +#define _UTF7_H_ + +#include "reiconv_defines.h" + +#include /* Specification: RFC 2152 (and old RFC 1641, RFC 1642) */ /* The original Base64 encoding is defined in RFC 2045. */ @@ -352,3 +360,5 @@ utf7_reset (conv_t conv, unsigned char *r, size_t n) } else return 0; } + +#endif /* _UTF7_H_ */ diff --git a/lib/converters/utf8.h b/lib/converters/utf8.h index d1cd3d67..94381938 100644 --- a/lib/converters/utf8.h +++ b/lib/converters/utf8.h @@ -1,5 +1,10 @@ +/** + * @file utf8.h + * @brief UTF-8 + * @copyright Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * UTF-8 - */ +#ifndef _UTF8_H_ +#define _UTF8_H_ + +#include "reiconv_defines.h" /* Specification: RFC 3629 */ @@ -96,3 +102,5 @@ utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) /* n == 0 is ac } return count; } + +#endif /* _UTF8_H_ */ diff --git a/lib/converters/vietcomb.h b/lib/converters/vietcomb.h index 9fb8db83..654c5d71 100644 --- a/lib/converters/vietcomb.h +++ b/lib/converters/vietcomb.h @@ -1,5 +1,10 @@ +/** + * @file vietcomb.h + * @brief mbining characters used in Vietnamese encodings CP1258, TCVN. + * @copyright Copyright (C) 2001, 2004, 2011 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2001, 2004, 2011 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,10 +22,8 @@ * If not, see . */ -/* Combining characters used in Vietnamese encodings CP1258, TCVN. */ - -#ifndef _VIETCOMB_H -#define _VIETCOMB_H +#ifndef _VIETCOMB_H_ +#define _VIETCOMB_H_ /* Relevant combining characters: 0x0300, 0x0301, 0x0303, 0x0309, 0x0323. */ @@ -462,4 +465,4 @@ static const struct viet_decomp viet_decomp_table[] = { { 0x1FEE, 0x00A8, 1 }, /* U+1FEE => U+0385 => U+00A8 U+0301 */ }; -#endif /* _VIETCOMB_H */ +#endif /* _VIETCOMB_H_ */ diff --git a/lib/converters/viscii.h b/lib/converters/viscii.h index 2d5f0149..459850b3 100644 --- a/lib/converters/viscii.h +++ b/lib/converters/viscii.h @@ -1,5 +1,10 @@ +/** + * @file viscii.h + * @brief VISCII1.1-1 + * @copyright Copyright (C) 1999-2001, 2016, 2019 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2001, 2016, 2019 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,9 +22,10 @@ * If not, see . */ -/* - * VISCII1.1-1 - */ +#ifndef _VISCII_H_ +#define _VISCII_H_ + +#include "reiconv_defines.h" /* Specification: RFC 1456 */ @@ -138,3 +144,5 @@ viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) } return RET_ILUNI; } + +#endif /* _VISCII_H_ */ diff --git a/lib/reiconv_defines.h b/lib/reiconv_defines.h index d23cd90d..8e9c9e98 100644 --- a/lib/reiconv_defines.h +++ b/lib/reiconv_defines.h @@ -135,4 +135,11 @@ struct conv_struct int discard_ilseq; }; +/* [CCS = coded character set] [CJKV.INF chapter 3] */ +typedef struct +{ + unsigned short indx; /* Index into big table. */ + unsigned short used; /* Bitmask of used entries. */ +} Summary16; + #endif /* _REICONV_DEFINES_H_ */ From 28a274c91efd8b2e160b089d8728f903df2b1cfb Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 9 Nov 2024 11:13:33 +0800 Subject: [PATCH 50/77] Unified source codes' comments. --- CMakeLists.txt | 2 +- lib/all_encodings.h | 8 +- lib/codepage_to_ei.h | 24 + lib/converters.h | 418 ++++----- lib/encoding.h | 6 +- lib/encoding_indexes.h | 6 + lib/encodings.h.snippet | 86 +- lib/generated/aliases.h | 1682 ++++++++++++++++++------------------ lib/iconv.c | 33 +- lib/loop_funcs.h | 23 +- lib/loop_unicode.h | 359 ++++---- lib/loops.h | 14 +- lib/reiconv.cpp | 17 +- lib/reiconv_defines.h | 6 +- tools/check-encodings.cpp | 11 +- tools/genaliases.cpp | 41 +- tools/genindexes.cpp | 10 +- windows/cppp-reiconv.rc.in | 2 +- 18 files changed, 1452 insertions(+), 1296 deletions(-) create mode 100644 lib/codepage_to_ei.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f018e401..b550c9f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2023 The C++ Plus Project. +# Copyright (C) 2023-2024 The C++ Plus Project. # This file is part of the cppp-reiconv library. # # The cppp-reiconv library is free software; you can redistribute it diff --git a/lib/all_encodings.h b/lib/all_encodings.h index 881633ca..e112b46e 100644 --- a/lib/all_encodings.h +++ b/lib/all_encodings.h @@ -1,5 +1,9 @@ +/** + * @file all_encodings.h + * @brief Definition of `all_encodings[]`. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -20,7 +24,7 @@ #ifndef _ALL_ENCODINGS_H_ #define _ALL_ENCODINGS_H_ -#include "converters.h" +#include "converters.h" // IWYU pragma: keep. Include all the converters for `encodings.h.snippet`. #include "encoding.h" #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ diff --git a/lib/codepage_to_ei.h b/lib/codepage_to_ei.h new file mode 100644 index 00000000..598ff72c --- /dev/null +++ b/lib/codepage_to_ei.h @@ -0,0 +1,24 @@ +/** + * @file codepage_to_ei.h + * @brief A mapping of codepages to encoding indexes. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ + +#ifndef _CODEPAGE_TO_EI_H_ +#define _CODEPAGE_TO_EI_H_ + +#include "encoding_indexes.h" // IWYU pragma: keep + +#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) +#define DEFCODEPAGE(codepage, xxx) [codepage] = ei_##xxx + 1, +#define DEFINDEX(alias, name) + +static const int codepage_to_eindex[] = { +#include "encodings.h.snippet" +}; + +#undef DEFINDEX +#undef DEFENCODING +#undef DEFCODEPAGE + +#endif /* _CODEPAGE_TO_EI_H_ */ diff --git a/lib/converters.h b/lib/converters.h index 988b7b22..fb4e3380 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -1,6 +1,10 @@ +/** + * @file converters.h + * @brief Include all the converters. + * @copyright Copyright (C) 1999-2002, 2004-2011, 2016, 2022-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2002, 2004-2011, 2016, 2022-2023 Free Software Foundation, Inc. - * Copyright (C) 2024 The C++ Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -21,244 +25,242 @@ #ifndef _CONVERTERS_H_ #define _CONVERTERS_H_ -#include "reiconv_defines.h" - -// Include all the converters. +#include "reiconv_defines.h" // IWYU pragma: keep #pragma region ASCII -#include "converters/ascii.h" +#include "converters/ascii.h" // IWYU pragma: keep #pragma endregion #pragma region General multi-byte encodings -#include "converters/c99.h" -#include "converters/java.h" -#include "converters/ucs2.h" -#include "converters/ucs2be.h" -#include "converters/ucs2internal.h" -#include "converters/ucs2le.h" -#include "converters/ucs2swapped.h" -#include "converters/ucs4.h" -#include "converters/ucs4be.h" -#include "converters/ucs4internal.h" -#include "converters/ucs4le.h" -#include "converters/ucs4swapped.h" -#include "converters/utf16.h" -#include "converters/utf16be.h" -#include "converters/utf16le.h" -#include "converters/utf32.h" -#include "converters/utf32be.h" -#include "converters/utf32le.h" -#include "converters/utf7.h" -#include "converters/utf8.h" +#include "converters/c99.h" // IWYU pragma: keep +#include "converters/java.h" // IWYU pragma: keep +#include "converters/ucs2.h" // IWYU pragma: keep +#include "converters/ucs2be.h" // IWYU pragma: keep +#include "converters/ucs2internal.h" // IWYU pragma: keep +#include "converters/ucs2le.h" // IWYU pragma: keep +#include "converters/ucs2swapped.h" // IWYU pragma: keep +#include "converters/ucs4.h" // IWYU pragma: keep +#include "converters/ucs4be.h" // IWYU pragma: keep +#include "converters/ucs4internal.h" // IWYU pragma: keep +#include "converters/ucs4le.h" // IWYU pragma: keep +#include "converters/ucs4swapped.h" // IWYU pragma: keep +#include "converters/utf16.h" // IWYU pragma: keep +#include "converters/utf16be.h" // IWYU pragma: keep +#include "converters/utf16le.h" // IWYU pragma: keep +#include "converters/utf32.h" // IWYU pragma: keep +#include "converters/utf32be.h" // IWYU pragma: keep +#include "converters/utf32le.h" // IWYU pragma: keep +#include "converters/utf7.h" // IWYU pragma: keep +#include "converters/utf8.h" // IWYU pragma: keep #pragma endregion #pragma region 8-bit encodings -#include "converters/armscii_8.h" -#include "converters/cp1131.h" -#include "converters/cp1133.h" -#include "converters/cp1250.h" -#include "converters/cp1251.h" -#include "converters/cp1252.h" -#include "converters/cp1253.h" -#include "converters/cp1254.h" -#include "converters/cp1255.h" -#include "converters/cp1256.h" -#include "converters/cp1257.h" -#include "converters/cp1258.h" -#include "converters/cp850.h" -#include "converters/cp862.h" -#include "converters/cp866.h" -#include "converters/cp874.h" -#include "converters/georgian_academy.h" -#include "converters/georgian_ps.h" -#include "converters/hp_roman8.h" -#include "converters/iso8859_1.h" -#include "converters/iso8859_10.h" -#include "converters/iso8859_11.h" -#include "converters/iso8859_13.h" -#include "converters/iso8859_14.h" -#include "converters/iso8859_15.h" -#include "converters/iso8859_16.h" -#include "converters/iso8859_2.h" -#include "converters/iso8859_3.h" -#include "converters/iso8859_4.h" -#include "converters/iso8859_5.h" -#include "converters/iso8859_6.h" -#include "converters/iso8859_7.h" -#include "converters/iso8859_8.h" -#include "converters/iso8859_9.h" -#include "converters/koi8_r.h" -#include "converters/koi8_ru.h" -#include "converters/koi8_t.h" -#include "converters/koi8_u.h" -#include "converters/mac_arabic.h" -#include "converters/mac_centraleurope.h" -#include "converters/mac_croatian.h" -#include "converters/mac_cyrillic.h" -#include "converters/mac_greek.h" -#include "converters/mac_hebrew.h" -#include "converters/mac_iceland.h" -#include "converters/mac_roman.h" -#include "converters/mac_romania.h" -#include "converters/mac_thai.h" -#include "converters/mac_turkish.h" -#include "converters/mac_ukraine.h" -#include "converters/mulelao.h" -#include "converters/nextstep.h" -#include "converters/pt154.h" -#include "converters/rk1048.h" -#include "converters/tcvn.h" -#include "converters/tis620.h" -#include "converters/viscii.h" +#include "converters/armscii_8.h" // IWYU pragma: keep +#include "converters/cp1131.h" // IWYU pragma: keep +#include "converters/cp1133.h" // IWYU pragma: keep +#include "converters/cp1250.h" // IWYU pragma: keep +#include "converters/cp1251.h" // IWYU pragma: keep +#include "converters/cp1252.h" // IWYU pragma: keep +#include "converters/cp1253.h" // IWYU pragma: keep +#include "converters/cp1254.h" // IWYU pragma: keep +#include "converters/cp1255.h" // IWYU pragma: keep +#include "converters/cp1256.h" // IWYU pragma: keep +#include "converters/cp1257.h" // IWYU pragma: keep +#include "converters/cp1258.h" // IWYU pragma: keep +#include "converters/cp850.h" // IWYU pragma: keep +#include "converters/cp862.h" // IWYU pragma: keep +#include "converters/cp866.h" // IWYU pragma: keep +#include "converters/cp874.h" // IWYU pragma: keep +#include "converters/georgian_academy.h" // IWYU pragma: keep +#include "converters/georgian_ps.h" // IWYU pragma: keep +#include "converters/hp_roman8.h" // IWYU pragma: keep +#include "converters/iso8859_1.h" // IWYU pragma: keep +#include "converters/iso8859_10.h" // IWYU pragma: keep +#include "converters/iso8859_11.h" // IWYU pragma: keep +#include "converters/iso8859_13.h" // IWYU pragma: keep +#include "converters/iso8859_14.h" // IWYU pragma: keep +#include "converters/iso8859_15.h" // IWYU pragma: keep +#include "converters/iso8859_16.h" // IWYU pragma: keep +#include "converters/iso8859_2.h" // IWYU pragma: keep +#include "converters/iso8859_3.h" // IWYU pragma: keep +#include "converters/iso8859_4.h" // IWYU pragma: keep +#include "converters/iso8859_5.h" // IWYU pragma: keep +#include "converters/iso8859_6.h" // IWYU pragma: keep +#include "converters/iso8859_7.h" // IWYU pragma: keep +#include "converters/iso8859_8.h" // IWYU pragma: keep +#include "converters/iso8859_9.h" // IWYU pragma: keep +#include "converters/koi8_r.h" // IWYU pragma: keep +#include "converters/koi8_ru.h" // IWYU pragma: keep +#include "converters/koi8_t.h" // IWYU pragma: keep +#include "converters/koi8_u.h" // IWYU pragma: keep +#include "converters/mac_arabic.h" // IWYU pragma: keep +#include "converters/mac_centraleurope.h" // IWYU pragma: keep +#include "converters/mac_croatian.h" // IWYU pragma: keep +#include "converters/mac_cyrillic.h" // IWYU pragma: keep +#include "converters/mac_greek.h" // IWYU pragma: keep +#include "converters/mac_hebrew.h" // IWYU pragma: keep +#include "converters/mac_iceland.h" // IWYU pragma: keep +#include "converters/mac_roman.h" // IWYU pragma: keep +#include "converters/mac_romania.h" // IWYU pragma: keep +#include "converters/mac_thai.h" // IWYU pragma: keep +#include "converters/mac_turkish.h" // IWYU pragma: keep +#include "converters/mac_ukraine.h" // IWYU pragma: keep +#include "converters/mulelao.h" // IWYU pragma: keep +#include "converters/nextstep.h" // IWYU pragma: keep +#include "converters/pt154.h" // IWYU pragma: keep +#include "converters/rk1048.h" // IWYU pragma: keep +#include "converters/tcvn.h" // IWYU pragma: keep +#include "converters/tis620.h" // IWYU pragma: keep +#include "converters/viscii.h" // IWYU pragma: keep #pragma endregion #pragma region CJK character sets -#include "converters/iso646_jp.h" -#include "converters/jisx0201.h" -#include "converters/jisx0208.h" -#include "converters/jisx0212.h" +#include "converters/iso646_jp.h" // IWYU pragma: keep +#include "converters/jisx0201.h" // IWYU pragma: keep +#include "converters/jisx0208.h" // IWYU pragma: keep +#include "converters/jisx0212.h" // IWYU pragma: keep -#include "converters/gb2312.h" -#include "converters/iso646_cn.h" -#include "converters/isoir165.h" -/* #include "converters/gb12345.h" */ -#include "converters/big5.h" -#include "converters/cns11643.h" -#include "converters/gbk.h" +#include "converters/gb2312.h" // IWYU pragma: keep +#include "converters/iso646_cn.h" // IWYU pragma: keep +#include "converters/isoir165.h" // IWYU pragma: keep +/* #include "converters/gb12345.h" // IWYU pragma: keep */ +#include "converters/big5.h" // IWYU pragma: keep +#include "converters/cns11643.h" // IWYU pragma: keep +#include "converters/gbk.h" // IWYU pragma: keep -#include "converters/johab_hangul.h" -#include "converters/ksc5601.h" +#include "converters/johab_hangul.h" // IWYU pragma: keep +#include "converters/ksc5601.h" // IWYU pragma: keep #pragma endregion /* [CES = character encoding scheme] [CJKV.INF chapter 4] */ #pragma region CJK encodings -#include "converters/cp932.h" -#include "converters/euc_jp.h" -#include "converters/iso2022_jp.h" -#include "converters/iso2022_jp1.h" -#include "converters/iso2022_jp2.h" -#include "converters/iso2022_jpms.h" -#include "converters/sjis.h" +#include "converters/cp932.h" // IWYU pragma: keep +#include "converters/euc_jp.h" // IWYU pragma: keep +#include "converters/iso2022_jp.h" // IWYU pragma: keep +#include "converters/iso2022_jp1.h" // IWYU pragma: keep +#include "converters/iso2022_jp2.h" // IWYU pragma: keep +#include "converters/iso2022_jpms.h" // IWYU pragma: keep +#include "converters/sjis.h" // IWYU pragma: keep -#include "converters/big5hkscs1999.h" -#include "converters/big5hkscs2001.h" -#include "converters/big5hkscs2004.h" -#include "converters/big5hkscs2008.h" -#include "converters/ces_big5.h" -#include "converters/ces_gbk.h" -#include "converters/cp936.h" -#include "converters/cp950.h" -#include "converters/euc_cn.h" -#include "converters/euc_tw.h" -#include "converters/gb18030_2005.h" -#include "converters/gb18030_2022.h" -#include "converters/hz.h" -#include "converters/iso2022_cn.h" -#include "converters/iso2022_cnext.h" +#include "converters/big5hkscs1999.h" // IWYU pragma: keep +#include "converters/big5hkscs2001.h" // IWYU pragma: keep +#include "converters/big5hkscs2004.h" // IWYU pragma: keep +#include "converters/big5hkscs2008.h" // IWYU pragma: keep +#include "converters/ces_big5.h" // IWYU pragma: keep +#include "converters/ces_gbk.h" // IWYU pragma: keep +#include "converters/cp936.h" // IWYU pragma: keep +#include "converters/cp950.h" // IWYU pragma: keep +#include "converters/euc_cn.h" // IWYU pragma: keep +#include "converters/euc_tw.h" // IWYU pragma: keep +#include "converters/gb18030_2005.h" // IWYU pragma: keep +#include "converters/gb18030_2022.h" // IWYU pragma: keep +#include "converters/hz.h" // IWYU pragma: keep +#include "converters/iso2022_cn.h" // IWYU pragma: keep +#include "converters/iso2022_cnext.h" // IWYU pragma: keep -#include "converters/cp949.h" -#include "converters/euc_kr.h" -#include "converters/iso2022_kr.h" -#include "converters/johab.h" +#include "converters/cp949.h" // IWYU pragma: keep +#include "converters/euc_kr.h" // IWYU pragma: keep +#include "converters/iso2022_kr.h" // IWYU pragma: keep +#include "converters/johab.h" // IWYU pragma: keep -#include "converters/dec_hanyu.h" -#include "converters/dec_kanji.h" +#include "converters/dec_hanyu.h" // IWYU pragma: keep +#include "converters/dec_kanji.h" // IWYU pragma: keep #pragma endregion #pragma region Encodings used by system dependent locales -#include "converters/cp1046.h" -#include "converters/cp1124.h" -#include "converters/cp1129.h" -#include "converters/cp1161.h" -#include "converters/cp1162.h" -#include "converters/cp1163.h" -#include "converters/cp856.h" -#include "converters/cp922.h" -#include "converters/cp943.h" +#include "converters/cp1046.h" // IWYU pragma: keep +#include "converters/cp1124.h" // IWYU pragma: keep +#include "converters/cp1129.h" // IWYU pragma: keep +#include "converters/cp1161.h" // IWYU pragma: keep +#include "converters/cp1162.h" // IWYU pragma: keep +#include "converters/cp1163.h" // IWYU pragma: keep +#include "converters/cp856.h" // IWYU pragma: keep +#include "converters/cp922.h" // IWYU pragma: keep +#include "converters/cp943.h" // IWYU pragma: keep -#include "converters/cp1125.h" -#include "converters/cp437.h" -#include "converters/cp737.h" -#include "converters/cp775.h" -#include "converters/cp852.h" -#include "converters/cp853.h" -#include "converters/cp855.h" -#include "converters/cp857.h" -#include "converters/cp858.h" -#include "converters/cp860.h" -#include "converters/cp861.h" -#include "converters/cp863.h" -#include "converters/cp864.h" -#include "converters/cp865.h" -#include "converters/cp869.h" +#include "converters/cp1125.h" // IWYU pragma: keep +#include "converters/cp437.h" // IWYU pragma: keep +#include "converters/cp737.h" // IWYU pragma: keep +#include "converters/cp775.h" // IWYU pragma: keep +#include "converters/cp852.h" // IWYU pragma: keep +#include "converters/cp853.h" // IWYU pragma: keep +#include "converters/cp855.h" // IWYU pragma: keep +#include "converters/cp857.h" // IWYU pragma: keep +#include "converters/cp858.h" // IWYU pragma: keep +#include "converters/cp860.h" // IWYU pragma: keep +#include "converters/cp861.h" // IWYU pragma: keep +#include "converters/cp863.h" // IWYU pragma: keep +#include "converters/cp864.h" // IWYU pragma: keep +#include "converters/cp865.h" // IWYU pragma: keep +#include "converters/cp869.h" // IWYU pragma: keep #pragma endregion #define DEDUPLICATE_TABLES 1 #pragma region AIX locales -#include "converters/ebcdic037.h" -#include "converters/ebcdic273.h" -#include "converters/ebcdic277.h" -#include "converters/ebcdic278.h" -#include "converters/ebcdic280.h" -#include "converters/ebcdic282.h" -#include "converters/ebcdic284.h" -#include "converters/ebcdic285.h" -#include "converters/ebcdic297.h" -#include "converters/ebcdic423.h" -#include "converters/ebcdic424.h" -#include "converters/ebcdic425.h" -#include "converters/ebcdic500.h" -#include "converters/ebcdic838.h" -#include "converters/ebcdic870.h" -#include "converters/ebcdic871.h" -#include "converters/ebcdic875.h" -#include "converters/ebcdic880.h" -#include "converters/ebcdic905.h" -#include "converters/ebcdic924.h" -#include "converters/ebcdic1025.h" -#include "converters/ebcdic1026.h" -#include "converters/ebcdic1047.h" -#include "converters/ebcdic1097.h" -#include "converters/ebcdic1112.h" -#include "converters/ebcdic1122.h" -#include "converters/ebcdic1123.h" -#include "converters/ebcdic1130.h" -#include "converters/ebcdic1132.h" -#include "converters/ebcdic1137.h" -#include "converters/ebcdic1140.h" -#include "converters/ebcdic1141.h" -#include "converters/ebcdic1142.h" -#include "converters/ebcdic1143.h" -#include "converters/ebcdic1144.h" -#include "converters/ebcdic1145.h" -#include "converters/ebcdic1146.h" -#include "converters/ebcdic1147.h" -#include "converters/ebcdic1148.h" -#include "converters/ebcdic1149.h" -#include "converters/ebcdic1153.h" -#include "converters/ebcdic1154.h" -#include "converters/ebcdic1155.h" -#include "converters/ebcdic1156.h" -#include "converters/ebcdic1157.h" -#include "converters/ebcdic1158.h" -#include "converters/ebcdic1160.h" -#include "converters/ebcdic1164.h" -#include "converters/ebcdic1165.h" -#include "converters/ebcdic1166.h" -#include "converters/ebcdic4971.h" -#include "converters/ebcdic12712.h" -#include "converters/ebcdic16804.h" +#include "converters/ebcdic037.h" // IWYU pragma: keep +#include "converters/ebcdic273.h" // IWYU pragma: keep +#include "converters/ebcdic277.h" // IWYU pragma: keep +#include "converters/ebcdic278.h" // IWYU pragma: keep +#include "converters/ebcdic280.h" // IWYU pragma: keep +#include "converters/ebcdic282.h" // IWYU pragma: keep +#include "converters/ebcdic284.h" // IWYU pragma: keep +#include "converters/ebcdic285.h" // IWYU pragma: keep +#include "converters/ebcdic297.h" // IWYU pragma: keep +#include "converters/ebcdic423.h" // IWYU pragma: keep +#include "converters/ebcdic424.h" // IWYU pragma: keep +#include "converters/ebcdic425.h" // IWYU pragma: keep +#include "converters/ebcdic500.h" // IWYU pragma: keep +#include "converters/ebcdic838.h" // IWYU pragma: keep +#include "converters/ebcdic870.h" // IWYU pragma: keep +#include "converters/ebcdic871.h" // IWYU pragma: keep +#include "converters/ebcdic875.h" // IWYU pragma: keep +#include "converters/ebcdic880.h" // IWYU pragma: keep +#include "converters/ebcdic905.h" // IWYU pragma: keep +#include "converters/ebcdic924.h" // IWYU pragma: keep +#include "converters/ebcdic1025.h" // IWYU pragma: keep +#include "converters/ebcdic1026.h" // IWYU pragma: keep +#include "converters/ebcdic1047.h" // IWYU pragma: keep +#include "converters/ebcdic1097.h" // IWYU pragma: keep +#include "converters/ebcdic1112.h" // IWYU pragma: keep +#include "converters/ebcdic1122.h" // IWYU pragma: keep +#include "converters/ebcdic1123.h" // IWYU pragma: keep +#include "converters/ebcdic1130.h" // IWYU pragma: keep +#include "converters/ebcdic1132.h" // IWYU pragma: keep +#include "converters/ebcdic1137.h" // IWYU pragma: keep +#include "converters/ebcdic1140.h" // IWYU pragma: keep +#include "converters/ebcdic1141.h" // IWYU pragma: keep +#include "converters/ebcdic1142.h" // IWYU pragma: keep +#include "converters/ebcdic1143.h" // IWYU pragma: keep +#include "converters/ebcdic1144.h" // IWYU pragma: keep +#include "converters/ebcdic1145.h" // IWYU pragma: keep +#include "converters/ebcdic1146.h" // IWYU pragma: keep +#include "converters/ebcdic1147.h" // IWYU pragma: keep +#include "converters/ebcdic1148.h" // IWYU pragma: keep +#include "converters/ebcdic1149.h" // IWYU pragma: keep +#include "converters/ebcdic1153.h" // IWYU pragma: keep +#include "converters/ebcdic1154.h" // IWYU pragma: keep +#include "converters/ebcdic1155.h" // IWYU pragma: keep +#include "converters/ebcdic1156.h" // IWYU pragma: keep +#include "converters/ebcdic1157.h" // IWYU pragma: keep +#include "converters/ebcdic1158.h" // IWYU pragma: keep +#include "converters/ebcdic1160.h" // IWYU pragma: keep +#include "converters/ebcdic1164.h" // IWYU pragma: keep +#include "converters/ebcdic1165.h" // IWYU pragma: keep +#include "converters/ebcdic1166.h" // IWYU pragma: keep +#include "converters/ebcdic4971.h" // IWYU pragma: keep +#include "converters/ebcdic12712.h" // IWYU pragma: keep +#include "converters/ebcdic16804.h" // IWYU pragma: keep #pragma endregion #pragma region Extra encodings -#include "converters/atarist.h" -#include "converters/big5_2003.h" -#include "converters/euc_jisx0213.h" -#include "converters/iso2022_jp3.h" -#include "converters/riscos1.h" -#include "converters/shift_jisx0213.h" -#include "converters/tds565.h" +#include "converters/atarist.h" // IWYU pragma: keep +#include "converters/big5_2003.h" // IWYU pragma: keep +#include "converters/euc_jisx0213.h" // IWYU pragma: keep +#include "converters/iso2022_jp3.h" // IWYU pragma: keep +#include "converters/riscos1.h" // IWYU pragma: keep +#include "converters/shift_jisx0213.h" // IWYU pragma: keep +#include "converters/tds565.h" // IWYU pragma: keep #pragma endregion #endif /* _CONVERTERS_H_ */ diff --git a/lib/encoding.h b/lib/encoding.h index 7f92973d..b6086207 100644 --- a/lib/encoding.h +++ b/lib/encoding.h @@ -1,5 +1,9 @@ +/** + * @file encoding.h + * @brief Encoding structure definition. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it diff --git a/lib/encoding_indexes.h b/lib/encoding_indexes.h index a7a0fcae..ef4bf289 100644 --- a/lib/encoding_indexes.h +++ b/lib/encoding_indexes.h @@ -1,3 +1,9 @@ +/** + * @file encoding_indexes.h + * @brief All encoding's internal indexes. + * @copyright Copyright (C) 1999-2002, 2004-2011, 2016, 2022-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index 1c5df655..df8c65f9 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -1,39 +1,59 @@ -/* Copyright (C) 1999-2011 Free Software Foundation, Inc. - This file is part of the cppp-reiconv library. - - The cppp-reiconv library is free software; you can redistribute it - and/or modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either version 3 - of the License, or (at your option) any later version. - - The cppp-reiconv library 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 - Lesser General Public License for more details. +/** + * @file encodings.h.snippet + * @brief Definitions of encodings. + * @copyright Copyright (C) 1999-2011 Free Software Foundation, Inc. + * @copyright Copyright (C) 2023-2024 The C++ Plus Project. + * @note By convention, an encoding named "FOOBAR" or "FOO_BAR" or "FOO-BAR" is defined in a file + * named `converters/foobar.h` through the functions `foobar_mbtowc` and `foobar_wctomb` (and + * possibly `foobar_reset`). With FOOBAR's index (and possibly codepage) + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ - You should have received a copy of the GNU Lesser General Public - License along with the cppp-reiconv library; see the file LICENSE. - If not, see . */ +/* DEFENCODING(( name, alias1, ..., ), + * xxx, + * xxx_index, + * { xxx_mbtowc, xxx_flushwc }, + * { xxx_wctomb, xxx_reset }) + * Defines an encoding with the given name and aliases. (There is no difference between a name and + * an alias. By convention, the name is chosen as the preferred MIME name or the standard name.) + * All names and aliases must be in ASCII. Case is not significant, but for the "cs*" aliases mixed + * case is preferred, otherwise UPPERCASE is preferred. For all names and aliases, note where it + * comes from. + * xxx is the name as used in the C code (lowercase). xxx_index provides a unique index for the + * encoding. It will be used in a enum for fast access to the encoding. xxx is for reiconv's + * internal use only and xxx_index is for the user's + * use. Their values may be same. + * We removed all '-' and '_' of encoding's name. And turn their names to upper case. + */ -/* By convention, an encoding named FOOBAR or FOO_BAR or FOO-BAR is defined - in a file named "foobar.h" through the functions foobar_mbtowc and - foobar_wctomb (and possibly foobar_reset). */ +/* + * DEFCODEPAGE(codepage, xxx) + * Defines a codepage for the given encoding. + * codepage is the codepage number, which is often used in Windows, z/OS and AIX. + * xxx is the encoding internal name. + */ -/* DEFENCODING(( name, alias1, ..., ), - xxx, - xxx_index, - { xxx_mbtowc, xxx_flushwc }, - { xxx_wctomb, xxx_reset }) - defines an encoding with the given name and aliases. (There is no - difference between a name and an alias. By convention, the name is chosen - as the preferred MIME name or the standard name.) - All names and aliases must be in ASCII. Case is not significant, but - for the "cs*" aliases mixed case is preferred, otherwise UPPERCASE is - preferred. For all names and aliases, note where it comes from. - xxx is the name as used in the C code (lowercase). xxx_index provides - a unique index for the encoding. It will be used in a enum for fast - access to the encoding. We removed all '-' and '_' of encoding's name. And - turn their names to upper case. +/* + * DEFINDEX(alias, index) + * Defines an index alias for the given encoding. + * All encoding has its own index. But some encoding's index is strange. (e.g. GB18030_2022) + * So we define an alias for the index. (e.g. GB18030) */ // ASCII diff --git a/lib/generated/aliases.h b/lib/generated/aliases.h index 7d1a350d..135f27e5 100644 --- a/lib/generated/aliases.h +++ b/lib/generated/aliases.h @@ -29,7 +29,7 @@ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif -#line 1 "lib/generated/aliases.gperf" +#line 2 "lib/generated/aliases.gperf" struct alias { int name; unsigned int encoding_index; }; #define TOTAL_KEYWORDS 840 @@ -1795,2234 +1795,2234 @@ static const struct stringpool_t stringpool_contents = static const struct alias aliases[] = { {-1}, {-1}, {-1}, {-1}, -#line 354 "lib/generated/aliases.gperf" +#line 355 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str4, ei_mac_roman}, {-1}, -#line 20 "lib/generated/aliases.gperf" +#line 21 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str6, ei_ascii}, -#line 83 "lib/generated/aliases.gperf" +#line 84 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str7, ei_sjis}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 37 "lib/generated/aliases.gperf" +#line 38 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str22, ei_ucs2be}, {-1}, {-1}, -#line 295 "lib/generated/aliases.gperf" +#line 296 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str25, ei_cp1251}, -#line 46 "lib/generated/aliases.gperf" +#line 47 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str26, ei_ucs4be}, {-1}, -#line 41 "lib/generated/aliases.gperf" +#line 42 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str28, ei_ucs2le}, {-1}, {-1}, -#line 289 "lib/generated/aliases.gperf" +#line 290 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str31, ei_cp1250}, -#line 50 "lib/generated/aliases.gperf" +#line 51 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str32, ei_ucs4le}, {-1}, {-1}, {-1}, {-1}, -#line 318 "lib/generated/aliases.gperf" +#line 319 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str37, ei_cp1255}, -#line 474 "lib/generated/aliases.gperf" +#line 475 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str38, ei_iso646_cn}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 645 "lib/generated/aliases.gperf" +#line 646 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str45, ei_ebcdic425}, {-1}, {-1}, -#line 373 "lib/generated/aliases.gperf" +#line 374 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str48, ei_mac_romania}, -#line 651 "lib/generated/aliases.gperf" +#line 652 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str49, ei_ebcdic500}, {-1}, -#line 357 "lib/generated/aliases.gperf" +#line 358 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str51, ei_mac_roman}, {-1}, {-1}, -#line 177 "lib/generated/aliases.gperf" +#line 178 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str54, ei_iso8859_2}, -#line 312 "lib/generated/aliases.gperf" +#line 313 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str55, ei_cp1254}, {-1}, -#line 393 "lib/generated/aliases.gperf" +#line 394 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str57, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 642 "lib/generated/aliases.gperf" +#line 643 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str63, ei_ebcdic424}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 397 "lib/generated/aliases.gperf" +#line 398 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str75, ei_mac_arabic}, -#line 401 "lib/generated/aliases.gperf" +#line 402 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str76, ei_mac_thai}, -#line 146 "lib/generated/aliases.gperf" +#line 147 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str77, ei_euc_kr}, {-1}, -#line 58 "lib/generated/aliases.gperf" +#line 59 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str79, ei_utf32}, {-1}, {-1}, {-1}, {-1}, -#line 690 "lib/generated/aliases.gperf" +#line 691 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str84, ei_ebcdic1025}, {-1}, {-1}, {-1}, {-1}, -#line 44 "lib/generated/aliases.gperf" +#line 45 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str89, ei_ucs4}, {-1}, {-1}, {-1}, -#line 301 "lib/generated/aliases.gperf" +#line 302 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str93, ei_cp1252}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 389 "lib/generated/aliases.gperf" +#line 390 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str106, ei_mac_turkish}, {-1}, -#line 155 "lib/generated/aliases.gperf" +#line 156 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str108, ei_johab}, {-1}, {-1}, {-1}, {-1}, -#line 97 "lib/generated/aliases.gperf" +#line 98 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str113, ei_iso2022_jpms}, {-1}, {-1}, {-1}, {-1}, -#line 193 "lib/generated/aliases.gperf" +#line 194 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str118, ei_iso8859_4}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 159 "lib/generated/aliases.gperf" +#line 160 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str125, ei_iso2022_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 557 "lib/generated/aliases.gperf" +#line 558 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str131, ei_cp861}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 553 "lib/generated/aliases.gperf" +#line 554 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str137, ei_cp860}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 570 "lib/generated/aliases.gperf" +#line 571 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str143, ei_cp865}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 335 "lib/generated/aliases.gperf" +#line 336 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str153, ei_cp1258}, {-1}, -#line 559 "lib/generated/aliases.gperf" +#line 560 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str155, ei_cp861}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 568 "lib/generated/aliases.gperf" +#line 569 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str161, ei_cp864}, {-1}, {-1}, {-1}, {-1}, -#line 839 "lib/generated/aliases.gperf" +#line 840 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str166, ei_ebcdic16804}, -#line 245 "lib/generated/aliases.gperf" +#line 246 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str167, ei_iso8859_10}, {-1}, {-1}, {-1}, -#line 650 "lib/generated/aliases.gperf" +#line 651 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str171, ei_ebcdic500}, -#line 406 "lib/generated/aliases.gperf" +#line 407 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str172, ei_hp_roman8}, {-1}, -#line 369 "lib/generated/aliases.gperf" +#line 370 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str174, ei_mac_croatian}, {-1}, -#line 372 "lib/generated/aliases.gperf" +#line 373 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str176, ei_mac_romania}, {-1}, -#line 733 "lib/generated/aliases.gperf" +#line 734 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str178, ei_ebcdic1141}, {-1}, {-1}, -#line 120 "lib/generated/aliases.gperf" +#line 121 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str181, ei_hz}, {-1}, {-1}, {-1}, -#line 356 "lib/generated/aliases.gperf" +#line 357 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str185, ei_mac_roman}, {-1}, {-1}, {-1}, {-1}, -#line 725 "lib/generated/aliases.gperf" +#line 726 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str190, ei_ebcdic1140}, -#line 392 "lib/generated/aliases.gperf" +#line 393 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str191, ei_mac_hebrew}, -#line 418 "lib/generated/aliases.gperf" +#line 419 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str192, ei_pt154}, {-1}, {-1}, -#line 200 "lib/generated/aliases.gperf" +#line 201 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str195, ei_iso8859_5}, {-1}, -#line 443 "lib/generated/aliases.gperf" +#line 444 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str197, ei_viscii}, {-1}, -#line 341 "lib/generated/aliases.gperf" +#line 342 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str199, ei_cp862}, -#line 36 "lib/generated/aliases.gperf" +#line 37 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str200, ei_ucs2be}, -#line 656 "lib/generated/aliases.gperf" +#line 657 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str201, ei_ebcdic838}, -#line 292 "lib/generated/aliases.gperf" +#line 293 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str202, ei_cp1251}, -#line 294 "lib/generated/aliases.gperf" +#line 295 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str203, ei_cp1251}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 396 "lib/generated/aliases.gperf" +#line 397 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str209, ei_mac_arabic}, -#line 47 "lib/generated/aliases.gperf" +#line 48 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str210, ei_ucs4be}, {-1}, -#line 40 "lib/generated/aliases.gperf" +#line 41 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str212, ei_ucs2le}, {-1}, -#line 374 "lib/generated/aliases.gperf" +#line 375 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str214, ei_mac_cyrillic}, -#line 284 "lib/generated/aliases.gperf" +#line 285 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str215, ei_cp1250}, -#line 49 "lib/generated/aliases.gperf" +#line 50 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str216, ei_ucs4le}, -#line 644 "lib/generated/aliases.gperf" +#line 645 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str217, ei_ebcdic425}, {-1}, {-1}, {-1}, -#line 324 "lib/generated/aliases.gperf" +#line 325 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str221, ei_cp1256}, {-1}, {-1}, {-1}, -#line 730 "lib/generated/aliases.gperf" +#line 731 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str225, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 722 "lib/generated/aliases.gperf" +#line 723 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str231, ei_ebcdic1140}, -#line 339 "lib/generated/aliases.gperf" +#line 340 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str232, ei_cp850}, {-1}, {-1}, -#line 641 "lib/generated/aliases.gperf" +#line 642 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str235, ei_ebcdic424}, {-1}, -#line 764 "lib/generated/aliases.gperf" +#line 765 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str237, ei_ebcdic1145}, -#line 540 "lib/generated/aliases.gperf" +#line 541 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str238, ei_cp855}, {-1}, {-1}, -#line 385 "lib/generated/aliases.gperf" +#line 386 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str241, ei_mac_greek}, -#line 805 "lib/generated/aliases.gperf" +#line 806 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str242, ei_ebcdic1154}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 412 "lib/generated/aliases.gperf" +#line 413 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str248, ei_pt154}, -#line 498 "lib/generated/aliases.gperf" +#line 499 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str249, ei_cp1046}, {-1}, -#line 759 "lib/generated/aliases.gperf" +#line 760 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str251, ei_ebcdic1144}, {-1}, {-1}, {-1}, -#line 756 "lib/generated/aliases.gperf" +#line 757 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str255, ei_ebcdic1144}, {-1}, {-1}, {-1}, {-1}, -#line 613 "lib/generated/aliases.gperf" +#line 614 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str260, ei_ebcdic280}, -#line 507 "lib/generated/aliases.gperf" +#line 508 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str261, ei_cp1161}, -#line 400 "lib/generated/aliases.gperf" +#line 401 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str262, ei_mac_thai}, {-1}, {-1}, -#line 167 "lib/generated/aliases.gperf" +#line 168 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str265, ei_iso8859_1}, -#line 624 "lib/generated/aliases.gperf" +#line 625 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str266, ei_ebcdic285}, {-1}, -#line 694 "lib/generated/aliases.gperf" +#line 695 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str268, ei_ebcdic1026}, {-1}, -#line 500 "lib/generated/aliases.gperf" +#line 501 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str270, ei_cp1124}, -#line 185 "lib/generated/aliases.gperf" +#line 186 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str271, ei_iso8859_3}, -#line 271 "lib/generated/aliases.gperf" +#line 272 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str272, ei_iso8859_16}, -#line 820 "lib/generated/aliases.gperf" +#line 821 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str273, ei_ebcdic1160}, {-1}, {-1}, -#line 311 "lib/generated/aliases.gperf" +#line 312 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str276, ei_cp1254}, {-1}, {-1}, -#line 734 "lib/generated/aliases.gperf" +#line 735 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str279, ei_ebcdic1141}, -#line 27 "lib/generated/aliases.gperf" +#line 28 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str280, ei_utf8}, {-1}, -#line 809 "lib/generated/aliases.gperf" +#line 810 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str282, ei_ebcdic1155}, {-1}, -#line 621 "lib/generated/aliases.gperf" +#line 622 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str284, ei_ebcdic284}, -#line 726 "lib/generated/aliases.gperf" +#line 727 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str285, ei_ebcdic1140}, -#line 67 "lib/generated/aliases.gperf" +#line 68 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str286, ei_utf7}, {-1}, {-1}, -#line 702 "lib/generated/aliases.gperf" +#line 703 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str289, ei_ebcdic1112}, -#line 675 "lib/generated/aliases.gperf" +#line 676 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str290, ei_ebcdic880}, -#line 768 "lib/generated/aliases.gperf" +#line 769 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str291, ei_ebcdic1145}, {-1}, -#line 738 "lib/generated/aliases.gperf" +#line 739 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str293, ei_ebcdic1142}, -#line 531 "lib/generated/aliases.gperf" +#line 532 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str294, ei_cp852}, {-1}, -#line 455 "lib/generated/aliases.gperf" +#line 456 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str296, ei_jisx0201}, {-1}, {-1}, -#line 96 "lib/generated/aliases.gperf" +#line 97 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str299, ei_iso2022_jpms}, -#line 806 "lib/generated/aliases.gperf" +#line 807 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str300, ei_ebcdic1154}, {-1}, {-1}, {-1}, -#line 742 "lib/generated/aliases.gperf" +#line 743 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str304, ei_ebcdic1142}, {-1}, {-1}, {-1}, {-1}, -#line 760 "lib/generated/aliases.gperf" +#line 761 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str309, ei_ebcdic1144}, -#line 580 "lib/generated/aliases.gperf" +#line 581 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str310, ei_cp1125}, -#line 158 "lib/generated/aliases.gperf" +#line 159 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str311, ei_iso2022_kr}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 558 "lib/generated/aliases.gperf" +#line 559 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str318, ei_cp861}, {-1}, {-1}, {-1}, -#line 617 "lib/generated/aliases.gperf" +#line 618 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str322, ei_ebcdic282}, -#line 705 "lib/generated/aliases.gperf" +#line 706 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str323, ei_ebcdic1122}, -#line 555 "lib/generated/aliases.gperf" +#line 556 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str324, ei_cp860}, {-1}, {-1}, -#line 346 "lib/generated/aliases.gperf" +#line 347 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str327, ei_cp866}, -#line 501 "lib/generated/aliases.gperf" +#line 502 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str328, ei_cp1124}, -#line 300 "lib/generated/aliases.gperf" +#line 301 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str329, ei_cp1252}, -#line 572 "lib/generated/aliases.gperf" +#line 573 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str330, ei_cp865}, {-1}, -#line 703 "lib/generated/aliases.gperf" +#line 704 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str332, ei_ebcdic1112}, {-1}, -#line 823 "lib/generated/aliases.gperf" +#line 824 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str334, ei_ebcdic1164}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 743 "lib/generated/aliases.gperf" +#line 744 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str347, ei_ebcdic1142}, -#line 567 "lib/generated/aliases.gperf" +#line 568 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str348, ei_cp864}, {-1}, {-1}, {-1}, {-1}, -#line 788 "lib/generated/aliases.gperf" +#line 789 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str353, ei_ebcdic1148}, -#line 548 "lib/generated/aliases.gperf" +#line 549 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str354, ei_cp858}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 468 "lib/generated/aliases.gperf" +#line 469 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str361, ei_jisx0212}, -#line 508 "lib/generated/aliases.gperf" +#line 509 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str362, ei_cp1161}, {-1}, -#line 42 "lib/generated/aliases.gperf" +#line 43 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str364, ei_ucs4}, -#line 838 "lib/generated/aliases.gperf" +#line 839 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str365, ei_ebcdic16804}, -#line 706 "lib/generated/aliases.gperf" +#line 707 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str366, ei_ebcdic1122}, {-1}, -#line 821 "lib/generated/aliases.gperf" +#line 822 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str368, ei_ebcdic1160}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 827 "lib/generated/aliases.gperf" +#line 828 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str374, ei_ebcdic1165}, -#line 384 "lib/generated/aliases.gperf" +#line 385 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str375, ei_mac_greek}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 344 "lib/generated/aliases.gperf" +#line 345 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str386, ei_cp862}, -#line 511 "lib/generated/aliases.gperf" +#line 512 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str387, ei_cp1162}, {-1}, -#line 687 "lib/generated/aliases.gperf" +#line 688 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str389, ei_ebcdic924}, {-1}, {-1}, -#line 824 "lib/generated/aliases.gperf" +#line 825 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str392, ei_ebcdic1164}, {-1}, {-1}, -#line 24 "lib/generated/aliases.gperf" +#line 25 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str395, ei_ascii}, {-1}, {-1}, -#line 818 "lib/generated/aliases.gperf" +#line 819 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str398, ei_ebcdic1158}, {-1}, {-1}, {-1}, -#line 29 "lib/generated/aliases.gperf" +#line 30 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str402, ei_ucs2}, {-1}, {-1}, {-1}, {-1}, -#line 792 "lib/generated/aliases.gperf" +#line 793 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str407, ei_ebcdic1148}, -#line 667 "lib/generated/aliases.gperf" +#line 668 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str408, ei_ebcdic871}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 662 "lib/generated/aliases.gperf" +#line 663 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str414, ei_ebcdic870}, {-1}, {-1}, {-1}, -#line 89 "lib/generated/aliases.gperf" +#line 90 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str418, ei_cp932}, {-1}, -#line 671 "lib/generated/aliases.gperf" +#line 672 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str420, ei_ebcdic875}, -#line 772 "lib/generated/aliases.gperf" +#line 773 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str421, ei_ebcdic1146}, -#line 488 "lib/generated/aliases.gperf" +#line 489 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str422, ei_cp856}, -#line 350 "lib/generated/aliases.gperf" +#line 351 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str423, ei_cp1131}, -#line 461 "lib/generated/aliases.gperf" +#line 462 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str424, ei_jisx0208}, {-1}, {-1}, -#line 492 "lib/generated/aliases.gperf" +#line 493 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str427, ei_cp922}, {-1}, {-1}, -#line 512 "lib/generated/aliases.gperf" +#line 513 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str430, ei_cp1162}, -#line 276 "lib/generated/aliases.gperf" +#line 277 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str431, ei_koi8_r}, {-1}, -#line 584 "lib/generated/aliases.gperf" +#line 585 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str433, ei_cp1125}, {-1}, -#line 711 "lib/generated/aliases.gperf" +#line 712 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str435, ei_ebcdic1130}, {-1}, {-1}, -#line 440 "lib/generated/aliases.gperf" +#line 441 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str438, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 166 "lib/generated/aliases.gperf" +#line 167 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str450, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 270 "lib/generated/aliases.gperf" +#line 271 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str457, ei_iso8859_16}, {-1}, {-1}, {-1}, -#line 52 "lib/generated/aliases.gperf" +#line 53 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str461, ei_utf16}, -#line 575 "lib/generated/aliases.gperf" +#line 576 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str462, ei_cp869}, -#line 338 "lib/generated/aliases.gperf" +#line 339 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str463, ei_cp850}, -#line 578 "lib/generated/aliases.gperf" +#line 579 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str464, ei_cp869}, {-1}, -#line 812 "lib/generated/aliases.gperf" +#line 813 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str466, ei_ebcdic1156}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 776 "lib/generated/aliases.gperf" +#line 777 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str475, ei_ebcdic1146}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 732 "lib/generated/aliases.gperf" +#line 733 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str484, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 724 "lib/generated/aliases.gperf" +#line 725 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str490, ei_ebcdic1140}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 766 "lib/generated/aliases.gperf" +#line 767 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str496, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 104 "lib/generated/aliases.gperf" +#line 105 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str502, ei_euc_cn}, {-1}, {-1}, -#line 582 "lib/generated/aliases.gperf" +#line 583 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str505, ei_cp1125}, -#line 609 "lib/generated/aliases.gperf" +#line 610 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str506, ei_ebcdic278}, {-1}, {-1}, -#line 135 "lib/generated/aliases.gperf" +#line 136 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str509, ei_cp950}, -#line 808 "lib/generated/aliases.gperf" +#line 809 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str510, ei_ebcdic1155}, {-1}, {-1}, {-1}, -#line 348 "lib/generated/aliases.gperf" +#line 349 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str514, ei_cp866}, {-1}, {-1}, {-1}, {-1}, -#line 767 "lib/generated/aliases.gperf" +#line 768 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str519, ei_ebcdic1145}, {-1}, -#line 154 "lib/generated/aliases.gperf" +#line 155 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str521, ei_johab}, {-1}, -#line 192 "lib/generated/aliases.gperf" +#line 193 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str523, ei_iso8859_4}, -#line 351 "lib/generated/aliases.gperf" +#line 352 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str524, ei_cp1131}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 712 "lib/generated/aliases.gperf" +#line 713 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str530, ei_ebcdic1130}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 13 "lib/generated/aliases.gperf" +#line 14 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str537, ei_ascii}, -#line 585 "lib/generated/aliases.gperf" +#line 586 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str538, ei_cp1125}, {-1}, -#line 21 "lib/generated/aliases.gperf" +#line 22 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str540, ei_ascii}, -#line 689 "lib/generated/aliases.gperf" +#line 690 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str541, ei_ebcdic1025}, -#line 12 "lib/generated/aliases.gperf" +#line 13 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str542, ei_ascii}, {-1}, -#line 317 "lib/generated/aliases.gperf" +#line 318 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str544, ei_cp1255}, -#line 306 "lib/generated/aliases.gperf" +#line 307 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str545, ei_cp1253}, -#line 110 "lib/generated/aliases.gperf" +#line 111 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str546, ei_cp936}, {-1}, {-1}, -#line 714 "lib/generated/aliases.gperf" +#line 715 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str549, ei_ebcdic1132}, {-1}, -#line 299 "lib/generated/aliases.gperf" +#line 300 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str551, ei_cp1252}, -#line 741 "lib/generated/aliases.gperf" +#line 742 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str552, ei_ebcdic1142}, -#line 637 "lib/generated/aliases.gperf" +#line 638 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str553, ei_ebcdic423}, {-1}, -#line 237 "lib/generated/aliases.gperf" +#line 238 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str555, ei_iso8859_9}, -#line 175 "lib/generated/aliases.gperf" +#line 176 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str556, ei_iso8859_2}, -#line 506 "lib/generated/aliases.gperf" +#line 507 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str557, ei_cp1161}, -#line 830 "lib/generated/aliases.gperf" +#line 831 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str558, ei_ebcdic1166}, -#line 191 "lib/generated/aliases.gperf" +#line 192 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str559, ei_iso8859_4}, {-1}, -#line 686 "lib/generated/aliases.gperf" +#line 687 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str561, ei_ebcdic924}, -#line 164 "lib/generated/aliases.gperf" +#line 165 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str562, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 176 "lib/generated/aliases.gperf" +#line 177 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str576, ei_iso8859_2}, -#line 419 "lib/generated/aliases.gperf" +#line 420 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str577, ei_pt154}, {-1}, -#line 118 "lib/generated/aliases.gperf" +#line 119 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str579, ei_iso2022_cn}, -#line 640 "lib/generated/aliases.gperf" +#line 641 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str580, ei_ebcdic424}, {-1}, -#line 450 "lib/generated/aliases.gperf" +#line 451 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str582, ei_iso646_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 117 "lib/generated/aliases.gperf" +#line 118 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str588, ei_iso2022_cn}, {-1}, {-1}, {-1}, -#line 715 "lib/generated/aliases.gperf" +#line 716 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str592, ei_ebcdic1132}, {-1}, -#line 149 "lib/generated/aliases.gperf" +#line 150 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str594, ei_cp949}, {-1}, {-1}, {-1}, -#line 199 "lib/generated/aliases.gperf" +#line 200 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str598, ei_iso8859_5}, -#line 491 "lib/generated/aliases.gperf" +#line 492 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str599, ei_cp922}, {-1}, {-1}, -#line 826 "lib/generated/aliases.gperf" +#line 827 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str602, ei_ebcdic1165}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 655 "lib/generated/aliases.gperf" +#line 656 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str608, ei_ebcdic838}, {-1}, -#line 413 "lib/generated/aliases.gperf" +#line 414 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str610, ei_pt154}, {-1}, -#line 790 "lib/generated/aliases.gperf" +#line 791 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str612, ei_ebcdic1148}, {-1}, {-1}, {-1}, {-1}, -#line 337 "lib/generated/aliases.gperf" +#line 338 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str617, ei_cp850}, {-1}, {-1}, -#line 612 "lib/generated/aliases.gperf" +#line 613 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str620, ei_ebcdic280}, {-1}, {-1}, -#line 538 "lib/generated/aliases.gperf" +#line 539 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str623, ei_cp855}, -#line 129 "lib/generated/aliases.gperf" +#line 130 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str624, ei_euc_tw}, -#line 510 "lib/generated/aliases.gperf" +#line 511 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str625, ei_cp1162}, -#line 626 "lib/generated/aliases.gperf" +#line 627 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str626, ei_ebcdic285}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 836 "lib/generated/aliases.gperf" +#line 837 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str632, ei_ebcdic12712}, -#line 683 "lib/generated/aliases.gperf" +#line 684 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str633, ei_ebcdic924}, {-1}, {-1}, {-1}, {-1}, -#line 481 "lib/generated/aliases.gperf" +#line 482 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str638, ei_ksc5601}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 620 "lib/generated/aliases.gperf" +#line 621 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str644, ei_ebcdic284}, {-1}, -#line 438 "lib/generated/aliases.gperf" +#line 439 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str646, ei_cp874}, {-1}, {-1}, {-1}, {-1}, -#line 562 "lib/generated/aliases.gperf" +#line 563 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str651, ei_cp863}, {-1}, -#line 28 "lib/generated/aliases.gperf" +#line 29 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str653, ei_utf8}, {-1}, {-1}, {-1}, -#line 283 "lib/generated/aliases.gperf" +#line 284 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str657, ei_koi8_ru}, {-1}, -#line 68 "lib/generated/aliases.gperf" +#line 69 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str659, ei_utf7}, {-1}, {-1}, {-1}, -#line 479 "lib/generated/aliases.gperf" +#line 480 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str663, ei_isoir165}, {-1}, {-1}, {-1}, -#line 293 "lib/generated/aliases.gperf" +#line 294 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str667, ei_cp1251}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 529 "lib/generated/aliases.gperf" +#line 530 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str679, ei_cp852}, -#line 423 "lib/generated/aliases.gperf" +#line 424 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str680, ei_rk1048}, {-1}, -#line 48 "lib/generated/aliases.gperf" +#line 49 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str682, ei_ucs4le}, {-1}, {-1}, {-1}, {-1}, -#line 614 "lib/generated/aliases.gperf" +#line 615 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str687, ei_ebcdic280}, {-1}, {-1}, {-1}, {-1}, -#line 692 "lib/generated/aliases.gperf" +#line 693 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str692, ei_ebcdic1026}, -#line 627 "lib/generated/aliases.gperf" +#line 628 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str693, ei_ebcdic285}, -#line 583 "lib/generated/aliases.gperf" +#line 584 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str694, ei_cp1125}, -#line 277 "lib/generated/aliases.gperf" +#line 278 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str695, ei_koi8_u}, -#line 235 "lib/generated/aliases.gperf" +#line 236 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str696, ei_iso8859_9}, -#line 550 "lib/generated/aliases.gperf" +#line 551 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str697, ei_cp858}, {-1}, -#line 441 "lib/generated/aliases.gperf" +#line 442 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str699, ei_viscii}, {-1}, -#line 38 "lib/generated/aliases.gperf" +#line 39 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str701, ei_ucs2le}, {-1}, {-1}, {-1}, {-1}, -#line 62 "lib/generated/aliases.gperf" +#line 63 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str706, ei_utf32le}, {-1}, {-1}, {-1}, {-1}, -#line 622 "lib/generated/aliases.gperf" +#line 623 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str711, ei_ebcdic284}, -#line 26 "lib/generated/aliases.gperf" +#line 27 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str712, ei_utf8}, -#line 258 "lib/generated/aliases.gperf" +#line 259 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str713, ei_iso8859_14}, {-1}, {-1}, {-1}, -#line 676 "lib/generated/aliases.gperf" +#line 677 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str717, ei_ebcdic880}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 636 "lib/generated/aliases.gperf" +#line 637 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str725, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 546 "lib/generated/aliases.gperf" +#line 547 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str739, ei_cp858}, {-1}, -#line 414 "lib/generated/aliases.gperf" +#line 415 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str741, ei_pt154}, -#line 417 "lib/generated/aliases.gperf" +#line 418 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str742, ei_pt154}, {-1}, {-1}, -#line 747 "lib/generated/aliases.gperf" +#line 748 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str745, ei_ebcdic1143}, -#line 536 "lib/generated/aliases.gperf" +#line 537 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str746, ei_cp853}, -#line 442 "lib/generated/aliases.gperf" +#line 443 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str747, ei_viscii}, {-1}, -#line 616 "lib/generated/aliases.gperf" +#line 617 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str749, ei_ebcdic282}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 361 "lib/generated/aliases.gperf" +#line 362 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str758, ei_mac_centraleurope}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 666 "lib/generated/aliases.gperf" +#line 667 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str764, ei_ebcdic871}, {-1}, {-1}, -#line 451 "lib/generated/aliases.gperf" +#line 452 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str767, ei_iso646_jp}, {-1}, {-1}, -#line 658 "lib/generated/aliases.gperf" +#line 659 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str770, ei_ebcdic870}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 670 "lib/generated/aliases.gperf" +#line 671 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str776, ei_ebcdic875}, {-1}, {-1}, {-1}, {-1}, -#line 728 "lib/generated/aliases.gperf" +#line 729 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str781, ei_ebcdic1141}, -#line 646 "lib/generated/aliases.gperf" +#line 647 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str782, ei_ebcdic500}, -#line 216 "lib/generated/aliases.gperf" +#line 217 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str783, ei_iso8859_7}, {-1}, -#line 25 "lib/generated/aliases.gperf" +#line 26 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str785, ei_utf8}, {-1}, -#line 720 "lib/generated/aliases.gperf" +#line 721 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str787, ei_ebcdic1140}, {-1}, {-1}, -#line 803 "lib/generated/aliases.gperf" +#line 804 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str790, ei_ebcdic1153}, -#line 236 "lib/generated/aliases.gperf" +#line 237 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str791, ei_iso8859_9}, {-1}, -#line 762 "lib/generated/aliases.gperf" +#line 763 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str793, ei_ebcdic1145}, -#line 439 "lib/generated/aliases.gperf" +#line 440 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str794, ei_cp874}, {-1}, -#line 266 "lib/generated/aliases.gperf" +#line 267 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str796, ei_iso8859_15}, {-1}, {-1}, -#line 752 "lib/generated/aliases.gperf" +#line 753 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str799, ei_ebcdic1143}, {-1}, -#line 133 "lib/generated/aliases.gperf" +#line 134 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str801, ei_ces_big5}, -#line 649 "lib/generated/aliases.gperf" +#line 650 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str802, ei_ebcdic500}, {-1}, {-1}, -#line 107 "lib/generated/aliases.gperf" +#line 108 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str805, ei_cp936}, {-1}, -#line 489 "lib/generated/aliases.gperf" +#line 490 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str807, ei_cp856}, {-1}, {-1}, -#line 835 "lib/generated/aliases.gperf" +#line 836 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str810, ei_ebcdic12712}, -#line 754 "lib/generated/aliases.gperf" +#line 755 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str811, ei_ebcdic1144}, {-1}, -#line 574 "lib/generated/aliases.gperf" +#line 575 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str813, ei_cp869}, {-1}, {-1}, {-1}, {-1}, -#line 709 "lib/generated/aliases.gperf" +#line 710 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str818, ei_ebcdic1123}, {-1}, -#line 727 "lib/generated/aliases.gperf" +#line 728 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str820, ei_ebcdic1141}, {-1}, {-1}, -#line 123 "lib/generated/aliases.gperf" +#line 124 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str823, ei_hz}, -#line 132 "lib/generated/aliases.gperf" +#line 133 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str824, ei_ces_big5}, -#line 88 "lib/generated/aliases.gperf" +#line 89 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str825, ei_cp932}, -#line 719 "lib/generated/aliases.gperf" +#line 720 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str826, ei_ebcdic1140}, {-1}, {-1}, {-1}, -#line 701 "lib/generated/aliases.gperf" +#line 702 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str830, ei_ebcdic1112}, {-1}, -#line 761 "lib/generated/aliases.gperf" +#line 762 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str832, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 564 "lib/generated/aliases.gperf" +#line 565 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str838, ei_cp863}, {-1}, {-1}, {-1}, {-1}, -#line 336 "lib/generated/aliases.gperf" +#line 337 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str843, ei_cp850}, {-1}, {-1}, {-1}, -#line 433 "lib/generated/aliases.gperf" +#line 434 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str847, ei_tis620}, {-1}, -#line 736 "lib/generated/aliases.gperf" +#line 737 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str849, ei_ebcdic1142}, -#line 753 "lib/generated/aliases.gperf" +#line 754 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str850, ei_ebcdic1144}, {-1}, -#line 128 "lib/generated/aliases.gperf" +#line 129 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str852, ei_euc_tw}, {-1}, -#line 51 "lib/generated/aliases.gperf" +#line 52 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str854, ei_utf16}, {-1}, {-1}, {-1}, {-1}, -#line 279 "lib/generated/aliases.gperf" +#line 280 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str859, ei_koi8_ru}, {-1}, -#line 404 "lib/generated/aliases.gperf" +#line 405 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str861, ei_hp_roman8}, -#line 608 "lib/generated/aliases.gperf" +#line 609 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str862, ei_ebcdic278}, {-1}, {-1}, {-1}, -#line 579 "lib/generated/aliases.gperf" +#line 580 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str866, ei_cp1125}, {-1}, {-1}, -#line 688 "lib/generated/aliases.gperf" +#line 689 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str869, ei_ebcdic1025}, {-1}, -#line 610 "lib/generated/aliases.gperf" +#line 611 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str871, ei_ebcdic280}, {-1}, {-1}, {-1}, -#line 269 "lib/generated/aliases.gperf" +#line 270 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str875, ei_iso8859_16}, {-1}, -#line 685 "lib/generated/aliases.gperf" +#line 686 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str877, ei_ebcdic924}, {-1}, {-1}, {-1}, {-1}, -#line 516 "lib/generated/aliases.gperf" +#line 517 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str882, ei_cp1163}, -#line 638 "lib/generated/aliases.gperf" +#line 639 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str883, ei_ebcdic424}, -#line 499 "lib/generated/aliases.gperf" +#line 500 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str884, ei_cp1124}, {-1}, {-1}, {-1}, -#line 735 "lib/generated/aliases.gperf" +#line 736 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str888, ei_ebcdic1142}, -#line 66 "lib/generated/aliases.gperf" +#line 67 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str889, ei_utf7}, -#line 251 "lib/generated/aliases.gperf" +#line 252 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str890, ei_iso8859_13}, -#line 98 "lib/generated/aliases.gperf" +#line 99 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str891, ei_euc_cn}, {-1}, {-1}, -#line 136 "lib/generated/aliases.gperf" +#line 137 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str894, ei_cp950}, {-1}, {-1}, {-1}, -#line 597 "lib/generated/aliases.gperf" +#line 598 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str898, ei_ebcdic273}, {-1}, -#line 527 "lib/generated/aliases.gperf" +#line 528 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str900, ei_cp775}, -#line 672 "lib/generated/aliases.gperf" +#line 673 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str901, ei_ebcdic880}, -#line 169 "lib/generated/aliases.gperf" +#line 170 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str902, ei_iso8859_1}, {-1}, {-1}, -#line 811 "lib/generated/aliases.gperf" +#line 812 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str905, ei_ebcdic1156}, -#line 116 "lib/generated/aliases.gperf" +#line 117 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str906, ei_gb18030_2022}, -#line 796 "lib/generated/aliases.gperf" +#line 797 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str907, ei_ebcdic1149}, {-1}, -#line 786 "lib/generated/aliases.gperf" +#line 787 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str909, ei_ebcdic1148}, {-1}, -#line 848 "lib/generated/aliases.gperf" +#line 849 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str911, ei_tds565}, {-1}, {-1}, -#line 775 "lib/generated/aliases.gperf" +#line 776 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str914, ei_ebcdic1146}, {-1}, -#line 100 "lib/generated/aliases.gperf" +#line 101 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str916, ei_euc_cn}, -#line 497 "lib/generated/aliases.gperf" +#line 498 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str917, ei_cp1046}, {-1}, {-1}, -#line 415 "lib/generated/aliases.gperf" +#line 416 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str920, ei_pt154}, {-1}, -#line 704 "lib/generated/aliases.gperf" +#line 705 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str922, ei_ebcdic1122}, -#line 556 "lib/generated/aliases.gperf" +#line 557 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str923, ei_cp861}, {-1}, {-1}, {-1}, -#line 34 "lib/generated/aliases.gperf" +#line 35 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str927, ei_ucs2be}, -#line 581 "lib/generated/aliases.gperf" +#line 582 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str928, ei_cp1125}, {-1}, {-1}, {-1}, -#line 618 "lib/generated/aliases.gperf" +#line 619 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str932, ei_ebcdic284}, {-1}, {-1}, -#line 552 "lib/generated/aliases.gperf" +#line 553 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str935, ei_cp860}, -#line 693 "lib/generated/aliases.gperf" +#line 694 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str936, ei_ebcdic1026}, -#line 398 "lib/generated/aliases.gperf" +#line 399 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str937, ei_mac_thai}, {-1}, -#line 323 "lib/generated/aliases.gperf" +#line 324 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str939, ei_cp1256}, -#line 81 "lib/generated/aliases.gperf" +#line 82 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str940, ei_euc_jp}, -#line 226 "lib/generated/aliases.gperf" +#line 227 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str941, ei_iso8859_8}, {-1}, {-1}, -#line 360 "lib/generated/aliases.gperf" +#line 361 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str944, ei_mac_centraleurope}, {-1}, {-1}, {-1}, -#line 785 "lib/generated/aliases.gperf" +#line 786 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str948, ei_ebcdic1148}, {-1}, {-1}, {-1}, {-1}, -#line 109 "lib/generated/aliases.gperf" +#line 110 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str953, ei_cp936}, {-1}, {-1}, {-1}, -#line 528 "lib/generated/aliases.gperf" +#line 529 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str957, ei_cp852}, {-1}, {-1}, -#line 444 "lib/generated/aliases.gperf" +#line 445 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str960, ei_tcvn}, -#line 800 "lib/generated/aliases.gperf" +#line 801 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str961, ei_ebcdic1149}, -#line 495 "lib/generated/aliases.gperf" +#line 496 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str962, ei_cp943}, {-1}, {-1}, {-1}, {-1}, -#line 802 "lib/generated/aliases.gperf" +#line 803 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str967, ei_ebcdic1153}, {-1}, {-1}, {-1}, {-1}, -#line 130 "lib/generated/aliases.gperf" +#line 131 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str972, ei_ces_big5}, {-1}, {-1}, {-1}, -#line 751 "lib/generated/aliases.gperf" +#line 752 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str976, ei_ebcdic1143}, -#line 770 "lib/generated/aliases.gperf" +#line 771 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str977, ei_ebcdic1146}, {-1}, {-1}, -#line 504 "lib/generated/aliases.gperf" +#line 505 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str980, ei_cp1129}, -#line 353 "lib/generated/aliases.gperf" +#line 354 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str981, ei_mac_roman}, {-1}, -#line 530 "lib/generated/aliases.gperf" +#line 531 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str983, ei_cp852}, {-1}, -#line 615 "lib/generated/aliases.gperf" +#line 616 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str985, ei_ebcdic282}, -#line 57 "lib/generated/aliases.gperf" +#line 58 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str986, ei_utf32}, {-1}, {-1}, {-1}, {-1}, -#line 288 "lib/generated/aliases.gperf" +#line 289 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str991, ei_cp1250}, {-1}, -#line 273 "lib/generated/aliases.gperf" +#line 274 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str993, ei_koi8_r}, {-1}, -#line 708 "lib/generated/aliases.gperf" +#line 709 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str995, ei_ebcdic1123}, -#line 565 "lib/generated/aliases.gperf" +#line 566 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str996, ei_cp864}, -#line 829 "lib/generated/aliases.gperf" +#line 830 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str997, ei_ebcdic1166}, {-1}, {-1}, -#line 577 "lib/generated/aliases.gperf" +#line 578 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1000, ei_cp869}, -#line 305 "lib/generated/aliases.gperf" +#line 306 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1001, ei_cp1253}, {-1}, {-1}, -#line 750 "lib/generated/aliases.gperf" +#line 751 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1004, ei_ebcdic1143}, {-1}, {-1}, {-1}, {-1}, -#line 170 "lib/generated/aliases.gperf" +#line 171 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1009, ei_iso8859_1}, {-1}, {-1}, {-1}, -#line 388 "lib/generated/aliases.gperf" +#line 389 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1013, ei_mac_turkish}, {-1}, -#line 477 "lib/generated/aliases.gperf" +#line 478 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1015, ei_gb2312}, -#line 769 "lib/generated/aliases.gperf" +#line 770 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1016, ei_ebcdic1146}, {-1}, {-1}, -#line 496 "lib/generated/aliases.gperf" +#line 497 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1019, ei_cp1046}, -#line 421 "lib/generated/aliases.gperf" +#line 422 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1020, ei_rk1048}, {-1}, {-1}, {-1}, -#line 56 "lib/generated/aliases.gperf" +#line 57 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1024, ei_utf16le}, {-1}, {-1}, -#line 143 "lib/generated/aliases.gperf" +#line 144 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1027, ei_euc_kr}, {-1}, {-1}, -#line 172 "lib/generated/aliases.gperf" +#line 173 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1030, ei_iso8859_1}, {-1}, -#line 494 "lib/generated/aliases.gperf" +#line 495 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1032, ei_cp943}, {-1}, {-1}, -#line 405 "lib/generated/aliases.gperf" +#line 406 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1035, ei_hp_roman8}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 203 "lib/generated/aliases.gperf" +#line 204 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1042, ei_iso8859_5}, {-1}, -#line 427 "lib/generated/aliases.gperf" +#line 428 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1044, ei_cp1133}, {-1}, {-1}, {-1}, {-1}, -#line 340 "lib/generated/aliases.gperf" +#line 341 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1049, ei_cp862}, {-1}, {-1}, {-1}, -#line 691 "lib/generated/aliases.gperf" +#line 692 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1053, ei_ebcdic1026}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 515 "lib/generated/aliases.gperf" +#line 516 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1059, ei_cp1163}, -#line 196 "lib/generated/aliases.gperf" +#line 197 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1060, ei_iso8859_4}, {-1}, {-1}, -#line 832 "lib/generated/aliases.gperf" +#line 833 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1063, ei_ebcdic4971}, {-1}, {-1}, {-1}, -#line 171 "lib/generated/aliases.gperf" +#line 172 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1067, ei_iso8859_1}, {-1}, {-1}, -#line 635 "lib/generated/aliases.gperf" +#line 636 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1070, ei_ebcdic423}, {-1}, -#line 84 "lib/generated/aliases.gperf" +#line 85 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1072, ei_sjis}, {-1}, {-1}, {-1}, -#line 817 "lib/generated/aliases.gperf" +#line 818 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1076, ei_ebcdic1158}, -#line 514 "lib/generated/aliases.gperf" +#line 515 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1077, ei_cp1163}, {-1}, -#line 202 "lib/generated/aliases.gperf" +#line 203 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1079, ei_iso8859_5}, {-1}, -#line 368 "lib/generated/aliases.gperf" +#line 369 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1081, ei_mac_croatian}, {-1}, {-1}, {-1}, -#line 791 "lib/generated/aliases.gperf" +#line 792 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1085, ei_ebcdic1148}, {-1}, {-1}, {-1}, -#line 420 "lib/generated/aliases.gperf" +#line 421 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1089, ei_rk1048}, -#line 428 "lib/generated/aliases.gperf" +#line 429 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1090, ei_tis620}, {-1}, -#line 408 "lib/generated/aliases.gperf" +#line 409 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1092, ei_armscii_8}, {-1}, -#line 429 "lib/generated/aliases.gperf" +#line 430 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1094, ei_tis620}, {-1}, -#line 282 "lib/generated/aliases.gperf" +#line 283 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1096, ei_koi8_ru}, -#line 195 "lib/generated/aliases.gperf" +#line 196 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1097, ei_iso8859_4}, -#line 180 "lib/generated/aliases.gperf" +#line 181 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1098, ei_iso8859_2}, -#line 275 "lib/generated/aliases.gperf" +#line 276 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1099, ei_koi8_r}, {-1}, {-1}, -#line 101 "lib/generated/aliases.gperf" +#line 102 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1102, ei_euc_cn}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 807 "lib/generated/aliases.gperf" +#line 808 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1109, ei_ebcdic1155}, -#line 334 "lib/generated/aliases.gperf" +#line 335 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1110, ei_cp1258}, {-1}, -#line 518 "lib/generated/aliases.gperf" +#line 519 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1112, ei_cp437}, -#line 330 "lib/generated/aliases.gperf" +#line 331 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1113, ei_cp1257}, -#line 103 "lib/generated/aliases.gperf" +#line 104 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1114, ei_euc_cn}, {-1}, -#line 729 "lib/generated/aliases.gperf" +#line 730 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1116, ei_ebcdic1141}, -#line 80 "lib/generated/aliases.gperf" +#line 81 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1117, ei_euc_jp}, {-1}, {-1}, -#line 45 "lib/generated/aliases.gperf" +#line 46 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1120, ei_ucs4be}, {-1}, -#line 721 "lib/generated/aliases.gperf" +#line 722 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1122, ei_ebcdic1140}, {-1}, -#line 151 "lib/generated/aliases.gperf" +#line 152 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1124, ei_cp949}, {-1}, {-1}, -#line 804 "lib/generated/aliases.gperf" +#line 805 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1127, ei_ebcdic1154}, -#line 763 "lib/generated/aliases.gperf" +#line 764 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1128, ei_ebcdic1145}, -#line 410 "lib/generated/aliases.gperf" +#line 411 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1129, ei_georgian_ps}, -#line 381 "lib/generated/aliases.gperf" +#line 382 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1130, ei_mac_ukraine}, -#line 533 "lib/generated/aliases.gperf" +#line 534 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1131, ei_cp853}, {-1}, -#line 377 "lib/generated/aliases.gperf" +#line 378 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1133, ei_mac_cyrillic}, {-1}, -#line 179 "lib/generated/aliases.gperf" +#line 180 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1135, ei_iso8859_2}, {-1}, -#line 287 "lib/generated/aliases.gperf" +#line 288 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1137, ei_cp1250}, {-1}, -#line 32 "lib/generated/aliases.gperf" +#line 33 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1139, ei_ucs2be}, {-1}, -#line 698 "lib/generated/aliases.gperf" +#line 699 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1141, ei_ebcdic1047}, {-1}, -#line 316 "lib/generated/aliases.gperf" +#line 317 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1143, ei_cp1255}, -#line 60 "lib/generated/aliases.gperf" +#line 61 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1144, ei_utf32be}, {-1}, -#line 755 "lib/generated/aliases.gperf" +#line 756 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1146, ei_ebcdic1144}, {-1}, {-1}, {-1}, {-1}, -#line 643 "lib/generated/aliases.gperf" +#line 644 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1151, ei_ebcdic425}, {-1}, {-1}, {-1}, -#line 14 "lib/generated/aliases.gperf" +#line 15 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1155, ei_ascii}, {-1}, {-1}, -#line 230 "lib/generated/aliases.gperf" +#line 231 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1158, ei_iso8859_8}, {-1}, -#line 343 "lib/generated/aliases.gperf" +#line 344 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1160, ei_cp862}, -#line 309 "lib/generated/aliases.gperf" +#line 310 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1161, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, -#line 798 "lib/generated/aliases.gperf" +#line 799 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1166, ei_ebcdic1149}, {-1}, -#line 262 "lib/generated/aliases.gperf" +#line 263 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1168, ei_iso8859_15}, {-1}, {-1}, {-1}, -#line 537 "lib/generated/aliases.gperf" +#line 538 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1172, ei_cp855}, {-1}, -#line 259 "lib/generated/aliases.gperf" +#line 260 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1174, ei_iso8859_14}, -#line 472 "lib/generated/aliases.gperf" +#line 473 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1175, ei_iso646_cn}, {-1}, -#line 43 "lib/generated/aliases.gperf" +#line 44 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1177, ei_ucs4}, {-1}, {-1}, {-1}, -#line 92 "lib/generated/aliases.gperf" +#line 93 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1181, ei_iso2022_jp1}, -#line 91 "lib/generated/aliases.gperf" +#line 92 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1182, ei_iso2022_jp}, -#line 95 "lib/generated/aliases.gperf" +#line 96 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1183, ei_iso2022_jpms}, -#line 737 "lib/generated/aliases.gperf" +#line 738 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1184, ei_ebcdic1142}, -#line 99 "lib/generated/aliases.gperf" +#line 100 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1185, ei_euc_cn}, -#line 244 "lib/generated/aliases.gperf" +#line 245 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1186, ei_iso8859_10}, {-1}, {-1}, {-1}, -#line 264 "lib/generated/aliases.gperf" +#line 265 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1190, ei_iso8859_15}, {-1}, -#line 94 "lib/generated/aliases.gperf" +#line 95 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1192, ei_iso2022_jp2}, {-1}, -#line 150 "lib/generated/aliases.gperf" +#line 151 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1194, ei_cp949}, -#line 229 "lib/generated/aliases.gperf" +#line 230 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1195, ei_iso8859_8}, -#line 30 "lib/generated/aliases.gperf" +#line 31 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1196, ei_ucs2}, {-1}, {-1}, -#line 298 "lib/generated/aliases.gperf" +#line 299 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1199, ei_cp1252}, -#line 623 "lib/generated/aliases.gperf" +#line 624 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1200, ei_ebcdic285}, {-1}, {-1}, {-1}, {-1}, -#line 90 "lib/generated/aliases.gperf" +#line 91 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1205, ei_iso2022_jp}, -#line 162 "lib/generated/aliases.gperf" +#line 163 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1206, ei_iso8859_1}, -#line 247 "lib/generated/aliases.gperf" +#line 248 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1207, ei_iso8859_11}, {-1}, -#line 680 "lib/generated/aliases.gperf" +#line 681 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1209, ei_ebcdic924}, -#line 352 "lib/generated/aliases.gperf" +#line 353 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1210, ei_mac_roman}, -#line 430 "lib/generated/aliases.gperf" +#line 431 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1211, ei_tis620}, -#line 127 "lib/generated/aliases.gperf" +#line 128 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1212, ei_euc_tw}, -#line 241 "lib/generated/aliases.gperf" +#line 242 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1213, ei_iso8859_10}, {-1}, {-1}, {-1}, {-1}, -#line 197 "lib/generated/aliases.gperf" +#line 198 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1218, ei_iso8859_5}, -#line 260 "lib/generated/aliases.gperf" +#line 261 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1219, ei_iso8859_15}, {-1}, -#line 426 "lib/generated/aliases.gperf" +#line 427 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1221, ei_cp1133}, -#line 607 "lib/generated/aliases.gperf" +#line 608 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1222, ei_ebcdic278}, -#line 476 "lib/generated/aliases.gperf" +#line 477 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1223, ei_gb2312}, {-1}, -#line 816 "lib/generated/aliases.gperf" +#line 817 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1225, ei_ebcdic1158}, -#line 212 "lib/generated/aliases.gperf" +#line 213 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1226, ei_iso8859_6}, {-1}, {-1}, -#line 157 "lib/generated/aliases.gperf" +#line 158 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1229, ei_iso2022_kr}, -#line 207 "lib/generated/aliases.gperf" +#line 208 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1230, ei_iso8859_6}, {-1}, {-1}, -#line 845 "lib/generated/aliases.gperf" +#line 846 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1233, ei_iso2022_jp3}, {-1}, {-1}, -#line 189 "lib/generated/aliases.gperf" +#line 190 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1236, ei_iso8859_4}, -#line 254 "lib/generated/aliases.gperf" +#line 255 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1237, ei_iso8859_14}, -#line 183 "lib/generated/aliases.gperf" +#line 184 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1238, ei_iso8859_3}, {-1}, {-1}, -#line 469 "lib/generated/aliases.gperf" +#line 470 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1241, ei_jisx0212}, {-1}, {-1}, -#line 787 "lib/generated/aliases.gperf" +#line 788 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1244, ei_ebcdic1148}, {-1}, {-1}, {-1}, -#line 184 "lib/generated/aliases.gperf" +#line 185 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1248, ei_iso8859_3}, -#line 93 "lib/generated/aliases.gperf" +#line 94 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1249, ei_iso2022_jp2}, -#line 484 "lib/generated/aliases.gperf" +#line 485 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1250, ei_ksc5601}, -#line 147 "lib/generated/aliases.gperf" +#line 148 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1251, ei_euc_kr}, {-1}, {-1}, -#line 596 "lib/generated/aliases.gperf" +#line 597 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1254, ei_ebcdic273}, {-1}, -#line 526 "lib/generated/aliases.gperf" +#line 527 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1256, ei_cp775}, {-1}, -#line 380 "lib/generated/aliases.gperf" +#line 381 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1258, ei_mac_ukraine}, -#line 333 "lib/generated/aliases.gperf" +#line 334 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1259, ei_cp1258}, -#line 115 "lib/generated/aliases.gperf" +#line 116 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1260, ei_gb18030_2022}, {-1}, -#line 490 "lib/generated/aliases.gperf" +#line 491 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1262, ei_cp922}, -#line 211 "lib/generated/aliases.gperf" +#line 212 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1263, ei_iso8859_6}, -#line 569 "lib/generated/aliases.gperf" +#line 570 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1264, ei_cp865}, {-1}, -#line 407 "lib/generated/aliases.gperf" +#line 408 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1266, ei_nextstep}, -#line 376 "lib/generated/aliases.gperf" +#line 377 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1267, ei_mac_cyrillic}, -#line 365 "lib/generated/aliases.gperf" +#line 366 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1268, ei_mac_iceland}, {-1}, {-1}, {-1}, -#line 679 "lib/generated/aliases.gperf" +#line 680 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1272, ei_ebcdic905}, {-1}, -#line 173 "lib/generated/aliases.gperf" +#line 174 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1274, ei_iso8859_2}, {-1}, {-1}, -#line 121 "lib/generated/aliases.gperf" +#line 122 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1277, ei_hz}, {-1}, -#line 122 "lib/generated/aliases.gperf" +#line 123 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1279, ei_hz}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 460 "lib/generated/aliases.gperf" +#line 461 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1286, ei_jisx0208}, -#line 16 "lib/generated/aliases.gperf" +#line 17 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1287, ei_ascii}, -#line 315 "lib/generated/aliases.gperf" +#line 316 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1288, ei_cp1255}, {-1}, {-1}, -#line 478 "lib/generated/aliases.gperf" +#line 479 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1291, ei_gb2312}, {-1}, -#line 810 "lib/generated/aliases.gperf" +#line 811 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1293, ei_ebcdic1156}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 349 "lib/generated/aliases.gperf" +#line 350 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1300, ei_cp1131}, -#line 745 "lib/generated/aliases.gperf" +#line 746 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1301, ei_ebcdic1143}, -#line 549 "lib/generated/aliases.gperf" +#line 550 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1302, ei_cp858}, {-1}, -#line 253 "lib/generated/aliases.gperf" +#line 254 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1304, ei_iso8859_13}, -#line 375 "lib/generated/aliases.gperf" +#line 376 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1305, ei_mac_cyrillic}, -#line 710 "lib/generated/aliases.gperf" +#line 711 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1306, ei_ebcdic1130}, {-1}, {-1}, -#line 148 "lib/generated/aliases.gperf" +#line 149 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1309, ei_euc_kr}, {-1}, {-1}, -#line 771 "lib/generated/aliases.gperf" +#line 772 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1312, ei_ebcdic1146}, -#line 780 "lib/generated/aliases.gperf" +#line 781 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1313, ei_ebcdic1147}, -#line 544 "lib/generated/aliases.gperf" +#line 545 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1314, ei_cp857}, {-1}, {-1}, {-1}, -#line 799 "lib/generated/aliases.gperf" +#line 800 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1318, ei_ebcdic1149}, -#line 539 "lib/generated/aliases.gperf" +#line 540 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1319, ei_cp855}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 321 "lib/generated/aliases.gperf" +#line 322 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1327, ei_cp1256}, -#line 217 "lib/generated/aliases.gperf" +#line 218 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1328, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 119 "lib/generated/aliases.gperf" +#line 120 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1332, ei_iso2022_cn_ext}, {-1}, -#line 224 "lib/generated/aliases.gperf" +#line 225 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1334, ei_iso8859_8}, {-1}, {-1}, -#line 503 "lib/generated/aliases.gperf" +#line 504 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1337, ei_cp1129}, {-1}, {-1}, -#line 744 "lib/generated/aliases.gperf" +#line 745 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1340, ei_ebcdic1143}, -#line 402 "lib/generated/aliases.gperf" +#line 403 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1341, ei_hp_roman8}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 847 "lib/generated/aliases.gperf" +#line 848 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1350, ei_tds565}, {-1}, {-1}, -#line 470 "lib/generated/aliases.gperf" +#line 471 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1353, ei_jisx0212}, {-1}, {-1}, {-1}, -#line 257 "lib/generated/aliases.gperf" +#line 258 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1357, ei_iso8859_14}, -#line 815 "lib/generated/aliases.gperf" +#line 816 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1358, ei_ebcdic1157}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 784 "lib/generated/aliases.gperf" +#line 785 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1367, ei_ebcdic1147}, -#line 713 "lib/generated/aliases.gperf" +#line 714 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1368, ei_ebcdic1132}, -#line 663 "lib/generated/aliases.gperf" +#line 664 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1369, ei_ebcdic871}, {-1}, -#line 674 "lib/generated/aliases.gperf" +#line 675 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1371, ei_ebcdic880}, {-1}, {-1}, -#line 707 "lib/generated/aliases.gperf" +#line 708 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1374, ei_ebcdic1123}, {-1}, -#line 86 "lib/generated/aliases.gperf" +#line 87 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1376, ei_sjis}, -#line 112 "lib/generated/aliases.gperf" +#line 113 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1377, ei_gb18030_2022}, -#line 156 "lib/generated/aliases.gperf" +#line 157 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1378, ei_iso2022_kr}, -#line 33 "lib/generated/aliases.gperf" +#line 34 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1379, ei_ucs2be}, -#line 654 "lib/generated/aliases.gperf" +#line 655 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1380, ei_ebcdic838}, -#line 657 "lib/generated/aliases.gperf" +#line 658 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1381, ei_ebcdic870}, {-1}, {-1}, -#line 232 "lib/generated/aliases.gperf" +#line 233 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1384, ei_iso8859_8}, {-1}, {-1}, {-1}, -#line 483 "lib/generated/aliases.gperf" +#line 484 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1388, ei_ksc5601}, -#line 168 "lib/generated/aliases.gperf" +#line 169 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1389, ei_iso8859_1}, -#line 434 "lib/generated/aliases.gperf" +#line 435 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1390, ei_tis620}, {-1}, {-1}, -#line 272 "lib/generated/aliases.gperf" +#line 273 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1393, ei_iso8859_16}, -#line 210 "lib/generated/aliases.gperf" +#line 211 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1394, ei_iso8859_6}, -#line 238 "lib/generated/aliases.gperf" +#line 239 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1395, ei_iso8859_9}, -#line 201 "lib/generated/aliases.gperf" +#line 202 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1396, ei_iso8859_5}, {-1}, -#line 850 "lib/generated/aliases.gperf" +#line 851 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1398, ei_atarist}, -#line 560 "lib/generated/aliases.gperf" +#line 561 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1399, ei_cp861}, -#line 505 "lib/generated/aliases.gperf" +#line 506 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1400, ei_cp1161}, -#line 452 "lib/generated/aliases.gperf" +#line 453 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1401, ei_iso646_jp}, -#line 204 "lib/generated/aliases.gperf" +#line 205 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1402, ei_iso8859_6}, -#line 267 "lib/generated/aliases.gperf" +#line 268 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1403, ei_iso8859_16}, -#line 194 "lib/generated/aliases.gperf" +#line 195 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1404, ei_iso8859_4}, -#line 554 "lib/generated/aliases.gperf" +#line 555 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1405, ei_cp860}, -#line 819 "lib/generated/aliases.gperf" +#line 820 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1406, ei_ebcdic1160}, -#line 833 "lib/generated/aliases.gperf" +#line 834 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1407, ei_ebcdic4971}, {-1}, {-1}, {-1}, -#line 571 "lib/generated/aliases.gperf" +#line 572 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1411, ei_cp865}, -#line 825 "lib/generated/aliases.gperf" +#line 826 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1412, ei_ebcdic1165}, {-1}, {-1}, -#line 22 "lib/generated/aliases.gperf" +#line 23 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1415, ei_ascii}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 231 "lib/generated/aliases.gperf" +#line 232 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1421, ei_iso8859_8}, {-1}, -#line 178 "lib/generated/aliases.gperf" +#line 179 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1423, ei_iso8859_2}, {-1}, -#line 71 "lib/generated/aliases.gperf" +#line 72 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1425, ei_ucs4internal}, {-1}, {-1}, {-1}, -#line 566 "lib/generated/aliases.gperf" +#line 567 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1429, ei_cp864}, -#line 822 "lib/generated/aliases.gperf" +#line 823 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1430, ei_ebcdic1164}, -#line 453 "lib/generated/aliases.gperf" +#line 454 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1431, ei_jisx0201}, {-1}, {-1}, {-1}, -#line 551 "lib/generated/aliases.gperf" +#line 552 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1435, ei_cp858}, {-1}, -#line 432 "lib/generated/aliases.gperf" +#line 433 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1437, ei_tis620}, {-1}, -#line 55 "lib/generated/aliases.gperf" +#line 56 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1439, ei_utf16le}, -#line 431 "lib/generated/aliases.gperf" +#line 432 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1440, ei_tis620}, {-1}, {-1}, {-1}, -#line 69 "lib/generated/aliases.gperf" +#line 70 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1444, ei_ucs2internal}, {-1}, -#line 677 "lib/generated/aliases.gperf" +#line 678 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1446, ei_ebcdic905}, -#line 422 "lib/generated/aliases.gperf" +#line 423 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1447, ei_rk1048}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 394 "lib/generated/aliases.gperf" +#line 395 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1460, ei_mac_arabic}, {-1}, -#line 54 "lib/generated/aliases.gperf" +#line 55 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1462, ei_utf16be}, -#line 794 "lib/generated/aliases.gperf" +#line 795 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1463, ei_ebcdic1149}, {-1}, {-1}, -#line 603 "lib/generated/aliases.gperf" +#line 604 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1466, ei_ebcdic277}, {-1}, -#line 509 "lib/generated/aliases.gperf" +#line 510 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1468, ei_cp1162}, {-1}, -#line 359 "lib/generated/aliases.gperf" +#line 360 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1470, ei_mac_centraleurope}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 64 "lib/generated/aliases.gperf" +#line 65 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1477, ei_utf7}, {-1}, {-1}, {-1}, {-1}, -#line 310 "lib/generated/aliases.gperf" +#line 311 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1482, ei_cp1254}, -#line 386 "lib/generated/aliases.gperf" +#line 387 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1483, ei_mac_turkish}, {-1}, {-1}, {-1}, -#line 246 "lib/generated/aliases.gperf" +#line 247 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1487, ei_iso8859_10}, -#line 87 "lib/generated/aliases.gperf" +#line 88 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1488, ei_cp932}, {-1}, {-1}, {-1}, {-1}, -#line 35 "lib/generated/aliases.gperf" +#line 36 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1493, ei_ucs2be}, {-1}, {-1}, -#line 465 "lib/generated/aliases.gperf" +#line 466 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1496, ei_jisx0212}, {-1}, {-1}, {-1}, {-1}, -#line 82 "lib/generated/aliases.gperf" +#line 83 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1501, ei_sjis}, -#line 793 "lib/generated/aliases.gperf" +#line 794 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1502, ei_ebcdic1149}, {-1}, {-1}, {-1}, {-1}, -#line 592 "lib/generated/aliases.gperf" +#line 593 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1507, ei_ebcdic037}, -#line 75 "lib/generated/aliases.gperf" +#line 76 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1508, ei_euc_jp}, -#line 682 "lib/generated/aliases.gperf" +#line 683 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1509, ei_ebcdic924}, {-1}, -#line 485 "lib/generated/aliases.gperf" +#line 486 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1511, ei_ksc5601}, {-1}, -#line 382 "lib/generated/aliases.gperf" +#line 383 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1513, ei_mac_greek}, -#line 304 "lib/generated/aliases.gperf" +#line 305 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1514, ei_cp1253}, -#line 466 "lib/generated/aliases.gperf" +#line 467 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1515, ei_jisx0212}, {-1}, {-1}, {-1}, -#line 520 "lib/generated/aliases.gperf" +#line 521 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1519, ei_cp437}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 252 "lib/generated/aliases.gperf" +#line 253 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1526, ei_iso8859_13}, {-1}, -#line 281 "lib/generated/aliases.gperf" +#line 282 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1528, ei_koi8_ru}, -#line 73 "lib/generated/aliases.gperf" +#line 74 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1529, ei_c99}, {-1}, {-1}, {-1}, {-1}, -#line 140 "lib/generated/aliases.gperf" +#line 141 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1534, ei_big5hkscs2008}, {-1}, -#line 502 "lib/generated/aliases.gperf" +#line 503 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1536, ei_cp1129}, -#line 15 "lib/generated/aliases.gperf" +#line 16 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1537, ei_ascii}, {-1}, -#line 411 "lib/generated/aliases.gperf" +#line 412 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1539, ei_koi8_t}, {-1}, {-1}, -#line 846 "lib/generated/aliases.gperf" +#line 847 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1542, ei_big5_2003}, -#line 355 "lib/generated/aliases.gperf" +#line 356 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1543, ei_mac_roman}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 188 "lib/generated/aliases.gperf" +#line 189 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1550, ei_iso8859_3}, -#line 814 "lib/generated/aliases.gperf" +#line 815 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1551, ei_ebcdic1157}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 843 "lib/generated/aliases.gperf" +#line 844 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1557, ei_shift_jisx0213}, {-1}, -#line 457 "lib/generated/aliases.gperf" +#line 458 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1559, ei_jisx0208}, -#line 783 "lib/generated/aliases.gperf" +#line 784 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1560, ei_ebcdic1147}, {-1}, -#line 480 "lib/generated/aliases.gperf" +#line 481 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1562, ei_isoir165}, -#line 697 "lib/generated/aliases.gperf" +#line 698 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1563, ei_ebcdic1047}, {-1}, -#line 696 "lib/generated/aliases.gperf" +#line 697 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1565, ei_ebcdic1047}, {-1}, -#line 487 "lib/generated/aliases.gperf" +#line 488 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1567, ei_cp856}, {-1}, -#line 425 "lib/generated/aliases.gperf" +#line 426 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1569, ei_cp1133}, {-1}, {-1}, -#line 782 "lib/generated/aliases.gperf" +#line 783 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1572, ei_ebcdic1147}, {-1}, {-1}, -#line 113 "lib/generated/aliases.gperf" +#line 114 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1575, ei_gb18030_2022}, -#line 256 "lib/generated/aliases.gperf" +#line 257 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1576, ei_iso8859_14}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 329 "lib/generated/aliases.gperf" +#line 330 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1585, ei_cp1257}, {-1}, -#line 187 "lib/generated/aliases.gperf" +#line 188 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1587, ei_iso8859_3}, {-1}, {-1}, -#line 263 "lib/generated/aliases.gperf" +#line 264 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1590, ei_iso8859_15}, -#line 482 "lib/generated/aliases.gperf" +#line 483 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1591, ei_ksc5601}, {-1}, -#line 424 "lib/generated/aliases.gperf" +#line 425 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1593, ei_mulelao}, {-1}, -#line 347 "lib/generated/aliases.gperf" +#line 348 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1595, ei_cp866}, -#line 828 "lib/generated/aliases.gperf" +#line 829 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1596, ei_ebcdic1166}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 23 "lib/generated/aliases.gperf" +#line 24 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1602, ei_ascii}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 633 "lib/generated/aliases.gperf" +#line 634 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1608, ei_ebcdic423}, {-1}, {-1}, {-1}, -#line 718 "lib/generated/aliases.gperf" +#line 719 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1612, ei_ebcdic1137}, -#line 208 "lib/generated/aliases.gperf" +#line 209 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1613, ei_iso8859_6}, -#line 595 "lib/generated/aliases.gperf" +#line 596 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1614, ei_ebcdic273}, -#line 758 "lib/generated/aliases.gperf" +#line 759 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1615, ei_ebcdic1144}, {-1}, -#line 801 "lib/generated/aliases.gperf" +#line 802 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1617, ei_ebcdic1153}, {-1}, -#line 631 "lib/generated/aliases.gperf" +#line 632 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1619, ei_ebcdic297}, {-1}, -#line 105 "lib/generated/aliases.gperf" +#line 106 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1621, ei_euc_cn}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 532 "lib/generated/aliases.gperf" +#line 533 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1629, ei_cp853}, {-1}, -#line 125 "lib/generated/aliases.gperf" +#line 126 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1631, ei_euc_tw}, -#line 681 "lib/generated/aliases.gperf" +#line 682 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1632, ei_ebcdic924}, {-1}, {-1}, -#line 61 "lib/generated/aliases.gperf" +#line 62 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1635, ei_utf32le}, -#line 746 "lib/generated/aliases.gperf" +#line 747 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1636, ei_ebcdic1143}, -#line 161 "lib/generated/aliases.gperf" +#line 162 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1637, ei_dec_hanyu}, {-1}, {-1}, {-1}, -#line 523 "lib/generated/aliases.gperf" +#line 524 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1641, ei_cp737}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 243 "lib/generated/aliases.gperf" +#line 244 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1647, ei_iso8859_10}, {-1}, -#line 186 "lib/generated/aliases.gperf" +#line 187 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1649, ei_iso8859_3}, {-1}, {-1}, -#line 227 "lib/generated/aliases.gperf" +#line 228 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1652, ei_iso8859_8}, -#line 409 "lib/generated/aliases.gperf" +#line 410 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1653, ei_georgian_academy}, {-1}, {-1}, {-1}, {-1}, -#line 366 "lib/generated/aliases.gperf" +#line 367 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1658, ei_mac_croatian}, -#line 345 "lib/generated/aliases.gperf" +#line 346 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1659, ei_cp866}, {-1}, -#line 291 "lib/generated/aliases.gperf" +#line 292 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1661, ei_cp1251}, {-1}, {-1}, -#line 285 "lib/generated/aliases.gperf" +#line 286 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1664, ei_cp1250}, {-1}, {-1}, -#line 314 "lib/generated/aliases.gperf" +#line 315 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1667, ei_cp1255}, {-1}, {-1}, {-1}, {-1}, -#line 265 "lib/generated/aliases.gperf" +#line 266 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1672, ei_iso8859_15}, {-1}, {-1}, -#line 206 "lib/generated/aliases.gperf" +#line 207 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1675, ei_iso8859_6}, -#line 308 "lib/generated/aliases.gperf" +#line 309 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1676, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, -#line 142 "lib/generated/aliases.gperf" +#line 143 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1681, ei_euc_kr}, {-1}, {-1}, {-1}, -#line 653 "lib/generated/aliases.gperf" +#line 654 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1685, ei_ebcdic838}, -#line 39 "lib/generated/aliases.gperf" +#line 40 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1686, ei_ucs2le}, {-1}, {-1}, {-1}, -#line 364 "lib/generated/aliases.gperf" +#line 365 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1690, ei_mac_iceland}, {-1}, {-1}, {-1}, {-1}, -#line 297 "lib/generated/aliases.gperf" +#line 298 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1695, ei_cp1252}, -#line 435 "lib/generated/aliases.gperf" +#line 436 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1696, ei_tis620}, {-1}, -#line 774 "lib/generated/aliases.gperf" +#line 775 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1698, ei_ebcdic1146}, -#line 542 "lib/generated/aliases.gperf" +#line 543 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1699, ei_cp857}, {-1}, -#line 844 "lib/generated/aliases.gperf" +#line 845 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1701, ei_iso2022_jp3}, {-1}, -#line 834 "lib/generated/aliases.gperf" +#line 835 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1703, ei_ebcdic12712}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 668 "lib/generated/aliases.gperf" +#line 669 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1710, ei_ebcdic875}, {-1}, -#line 240 "lib/generated/aliases.gperf" +#line 241 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1712, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 561 "lib/generated/aliases.gperf" +#line 562 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1721, ei_cp863}, {-1}, -#line 218 "lib/generated/aliases.gperf" +#line 219 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1723, ei_iso8859_7}, -#line 403 "lib/generated/aliases.gperf" +#line 404 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1724, ei_hp_roman8}, -#line 332 "lib/generated/aliases.gperf" +#line 333 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1725, ei_cp1258}, -#line 181 "lib/generated/aliases.gperf" +#line 182 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1726, ei_iso8859_3}, -#line 248 "lib/generated/aliases.gperf" +#line 249 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1727, ei_iso8859_13}, {-1}, {-1}, {-1}, -#line 78 "lib/generated/aliases.gperf" +#line 79 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1731, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 837 "lib/generated/aliases.gperf" +#line 838 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1737, ei_ebcdic16804}, -#line 545 "lib/generated/aliases.gperf" +#line 546 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1738, ei_cp858}, -#line 437 "lib/generated/aliases.gperf" +#line 438 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1739, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 63 "lib/generated/aliases.gperf" +#line 64 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1745, ei_utf7}, -#line 547 "lib/generated/aliases.gperf" +#line 548 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1746, ei_cp858}, {-1}, {-1}, -#line 239 "lib/generated/aliases.gperf" +#line 240 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1749, ei_iso8859_9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 278 "lib/generated/aliases.gperf" +#line 279 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1758, ei_koi8_u}, -#line 320 "lib/generated/aliases.gperf" +#line 321 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1759, ei_cp1256}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 106 "lib/generated/aliases.gperf" +#line 107 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1776, ei_ces_gbk}, {-1}, {-1}, -#line 249 "lib/generated/aliases.gperf" +#line 250 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1779, ei_iso8859_13}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 85 "lib/generated/aliases.gperf" +#line 86 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1791, ei_sjis}, -#line 449 "lib/generated/aliases.gperf" +#line 450 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1792, ei_iso646_jp}, {-1}, {-1}, -#line 17 "lib/generated/aliases.gperf" +#line 18 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1795, ei_ascii}, -#line 475 "lib/generated/aliases.gperf" +#line 476 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1796, ei_iso646_cn}, {-1}, -#line 795 "lib/generated/aliases.gperf" +#line 796 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1798, ei_ebcdic1149}, -#line 486 "lib/generated/aliases.gperf" +#line 487 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1799, ei_ksc5601}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 717 "lib/generated/aliases.gperf" +#line 718 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1805, ei_ebcdic1137}, {-1}, {-1}, {-1}, {-1}, -#line 467 "lib/generated/aliases.gperf" +#line 468 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1810, ei_jisx0212}, -#line 593 "lib/generated/aliases.gperf" +#line 594 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1811, ei_ebcdic037}, {-1}, {-1}, {-1}, -#line 591 "lib/generated/aliases.gperf" +#line 592 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1815, ei_ebcdic037}, {-1}, {-1}, {-1}, -#line 31 "lib/generated/aliases.gperf" +#line 32 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1819, ei_ucs2}, {-1}, {-1}, -#line 602 "lib/generated/aliases.gperf" +#line 603 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1822, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, -#line 535 "lib/generated/aliases.gperf" +#line 536 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1827, ei_cp853}, {-1}, -#line 18 "lib/generated/aliases.gperf" +#line 19 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1829, ei_ascii}, {-1}, {-1}, -#line 250 "lib/generated/aliases.gperf" +#line 251 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1832, ei_iso8859_13}, {-1}, {-1}, -#line 74 "lib/generated/aliases.gperf" +#line 75 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1835, ei_java}, {-1}, {-1}, -#line 446 "lib/generated/aliases.gperf" +#line 447 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1838, ei_tcvn}, {-1}, {-1}, {-1}, {-1}, -#line 459 "lib/generated/aliases.gperf" +#line 460 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1843, ei_jisx0208}, {-1}, -#line 665 "lib/generated/aliases.gperf" +#line 666 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1845, ei_ebcdic871}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 661 "lib/generated/aliases.gperf" +#line 662 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1851, ei_ebcdic870}, -#line 371 "lib/generated/aliases.gperf" +#line 372 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1852, ei_mac_romania}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 664 "lib/generated/aliases.gperf" +#line 665 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1864, ei_ebcdic871}, {-1}, -#line 587 "lib/generated/aliases.gperf" +#line 588 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1866, ei_ebcdic037}, {-1}, {-1}, -#line 778 "lib/generated/aliases.gperf" +#line 779 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1869, ei_ebcdic1147}, {-1}, -#line 445 "lib/generated/aliases.gperf" +#line 446 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1871, ei_tcvn}, {-1}, {-1}, -#line 454 "lib/generated/aliases.gperf" +#line 455 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1874, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 590 "lib/generated/aliases.gperf" +#line 591 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1881, ei_ebcdic037}, -#line 660 "lib/generated/aliases.gperf" +#line 661 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1882, ei_ebcdic870}, -#line 53 "lib/generated/aliases.gperf" +#line 54 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1883, ei_utf16be}, {-1}, {-1}, {-1}, {-1}, -#line 233 "lib/generated/aliases.gperf" +#line 234 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1888, ei_iso8859_9}, -#line 700 "lib/generated/aliases.gperf" +#line 701 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1889, ei_ebcdic1097}, {-1}, {-1}, {-1}, -#line 242 "lib/generated/aliases.gperf" +#line 243 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1893, ei_iso8859_10}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 378 "lib/generated/aliases.gperf" +#line 379 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1902, ei_mac_ukraine}, -#line 221 "lib/generated/aliases.gperf" +#line 222 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1903, ei_iso8859_7}, -#line 144 "lib/generated/aliases.gperf" +#line 145 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1904, ei_euc_kr}, {-1}, {-1}, {-1}, -#line 777 "lib/generated/aliases.gperf" +#line 778 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1908, ei_ebcdic1147}, {-1}, -#line 280 "lib/generated/aliases.gperf" +#line 281 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1910, ei_koi8_ru}, -#line 695 "lib/generated/aliases.gperf" +#line 696 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1911, ei_ebcdic1047}, {-1}, {-1}, {-1}, -#line 493 "lib/generated/aliases.gperf" +#line 494 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1915, ei_cp943}, {-1}, {-1}, {-1}, -#line 563 "lib/generated/aliases.gperf" +#line 564 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1919, ei_cp863}, -#line 513 "lib/generated/aliases.gperf" +#line 514 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1920, ei_cp1163}, -#line 303 "lib/generated/aliases.gperf" +#line 304 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1921, ei_cp1253}, {-1}, {-1}, {-1}, -#line 198 "lib/generated/aliases.gperf" +#line 199 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1925, ei_iso8859_5}, -#line 261 "lib/generated/aliases.gperf" +#line 262 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1926, ei_iso8859_15}, {-1}, {-1}, {-1}, -#line 228 "lib/generated/aliases.gperf" +#line 229 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1930, ei_iso8859_8}, {-1}, -#line 358 "lib/generated/aliases.gperf" +#line 359 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1932, ei_mac_centraleurope}, {-1}, -#line 190 "lib/generated/aliases.gperf" +#line 191 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1934, ei_iso8859_4}, -#line 255 "lib/generated/aliases.gperf" +#line 256 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1935, ei_iso8859_14}, -#line 209 "lib/generated/aliases.gperf" +#line 210 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1936, ei_iso8859_6}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 268 "lib/generated/aliases.gperf" +#line 269 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1954, ei_iso8859_16}, {-1}, -#line 831 "lib/generated/aliases.gperf" +#line 832 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1956, ei_ebcdic4971}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 165 "lib/generated/aliases.gperf" +#line 166 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1965, ei_iso8859_1}, {-1}, {-1}, {-1}, -#line 632 "lib/generated/aliases.gperf" +#line 633 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1969, ei_ebcdic297}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 473 "lib/generated/aliases.gperf" +#line 474 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1975, ei_iso646_cn}, {-1}, {-1}, {-1}, -#line 630 "lib/generated/aliases.gperf" +#line 631 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1979, ei_ebcdic297}, {-1}, {-1}, {-1}, -#line 225 "lib/generated/aliases.gperf" +#line 226 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1983, ei_iso8859_8}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 842 "lib/generated/aliases.gperf" +#line 843 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1989, ei_shift_jisx0213}, {-1}, {-1}, -#line 652 "lib/generated/aliases.gperf" +#line 653 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str1992, ei_ebcdic838}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 673 "lib/generated/aliases.gperf" +#line 674 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2008, ei_ebcdic880}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 72 "lib/generated/aliases.gperf" +#line 73 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2020, ei_ucs4swapped}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 363 "lib/generated/aliases.gperf" +#line 364 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2026, ei_mac_iceland}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 70 "lib/generated/aliases.gperf" +#line 71 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2039, ei_ucs2swapped}, -#line 463 "lib/generated/aliases.gperf" +#line 464 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2040, ei_jisx0208}, -#line 65 "lib/generated/aliases.gperf" +#line 66 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2041, ei_utf7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 522 "lib/generated/aliases.gperf" +#line 523 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2048, ei_cp737}, {-1}, {-1}, -#line 362 "lib/generated/aliases.gperf" +#line 363 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2051, ei_mac_iceland}, {-1}, {-1}, {-1}, {-1}, -#line 274 "lib/generated/aliases.gperf" +#line 275 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2056, ei_koi8_r}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 573 "lib/generated/aliases.gperf" +#line 574 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2063, ei_cp869}, {-1}, {-1}, -#line 111 "lib/generated/aliases.gperf" +#line 112 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2066, ei_gb18030_2005}, {-1}, {-1}, -#line 841 "lib/generated/aliases.gperf" +#line 842 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2069, ei_euc_jisx0213}, {-1}, {-1}, {-1}, -#line 448 "lib/generated/aliases.gperf" +#line 449 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2073, ei_iso646_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 59 "lib/generated/aliases.gperf" +#line 60 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2079, ei_utf32be}, {-1}, -#line 576 "lib/generated/aliases.gperf" +#line 577 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2081, ei_cp869}, -#line 416 "lib/generated/aliases.gperf" +#line 417 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2082, ei_pt154}, {-1}, {-1}, -#line 471 "lib/generated/aliases.gperf" +#line 472 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2085, ei_iso646_cn}, {-1}, {-1}, {-1}, {-1}, -#line 131 "lib/generated/aliases.gperf" +#line 132 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2090, ei_ces_big5}, {-1}, {-1}, {-1}, -#line 114 "lib/generated/aliases.gperf" +#line 115 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2094, ei_gb18030_2022}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 458 "lib/generated/aliases.gperf" +#line 459 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2100, ei_jisx0208}, -#line 399 "lib/generated/aliases.gperf" +#line 400 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2101, ei_mac_thai}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 220 "lib/generated/aliases.gperf" +#line 221 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2110, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 223 "lib/generated/aliases.gperf" +#line 224 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2118, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 102 "lib/generated/aliases.gperf" +#line 103 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2127, ei_euc_cn}, {-1}, {-1}, -#line 322 "lib/generated/aliases.gperf" +#line 323 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2130, ei_cp1256}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 594 "lib/generated/aliases.gperf" +#line 595 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2137, ei_ebcdic273}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 519 "lib/generated/aliases.gperf" +#line 520 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2143, ei_cp437}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 222 "lib/generated/aliases.gperf" +#line 223 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2155, ei_iso8859_7}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 634 "lib/generated/aliases.gperf" +#line 635 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2171, ei_ebcdic423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 182 "lib/generated/aliases.gperf" +#line 183 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2179, ei_iso8859_3}, {-1}, {-1}, -#line 601 "lib/generated/aliases.gperf" +#line 602 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2182, ei_ebcdic277}, -#line 138 "lib/generated/aliases.gperf" +#line 139 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2183, ei_big5hkscs2001}, {-1}, -#line 813 "lib/generated/aliases.gperf" +#line 814 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2185, ei_ebcdic1157}, {-1}, {-1}, {-1}, {-1}, -#line 524 "lib/generated/aliases.gperf" +#line 525 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2190, ei_cp775}, {-1}, -#line 619 "lib/generated/aliases.gperf" +#line 620 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2192, ei_ebcdic284}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 139 "lib/generated/aliases.gperf" +#line 140 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2198, ei_big5hkscs2004}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 779 "lib/generated/aliases.gperf" +#line 780 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2204, ei_ebcdic1147}, -#line 326 "lib/generated/aliases.gperf" +#line 327 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2205, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 541 "lib/generated/aliases.gperf" +#line 542 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2213, ei_cp857}, {-1}, {-1}, {-1}, {-1}, -#line 648 "lib/generated/aliases.gperf" +#line 649 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2218, ei_ebcdic500}, -#line 328 "lib/generated/aliases.gperf" +#line 329 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2219, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 379 "lib/generated/aliases.gperf" +#line 380 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2240, ei_mac_ukraine}, {-1}, {-1}, {-1}, -#line 79 "lib/generated/aliases.gperf" +#line 80 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2244, ei_euc_jp}, {-1}, -#line 604 "lib/generated/aliases.gperf" +#line 605 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2246, ei_ebcdic278}, -#line 141 "lib/generated/aliases.gperf" +#line 142 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2247, ei_big5hkscs2008}, {-1}, {-1}, -#line 290 "lib/generated/aliases.gperf" +#line 291 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2250, ei_cp1251}, {-1}, {-1}, -#line 286 "lib/generated/aliases.gperf" +#line 287 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2253, ei_cp1250}, {-1}, {-1}, -#line 313 "lib/generated/aliases.gperf" +#line 314 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2256, ei_cp1255}, {-1}, {-1}, {-1}, {-1}, -#line 370 "lib/generated/aliases.gperf" +#line 371 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2261, ei_mac_romania}, {-1}, {-1}, {-1}, -#line 307 "lib/generated/aliases.gperf" +#line 308 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2265, ei_cp1254}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 342 "lib/generated/aliases.gperf" +#line 343 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2280, ei_cp862}, {-1}, {-1}, {-1}, -#line 296 "lib/generated/aliases.gperf" +#line 297 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2284, ei_cp1252}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 213 "lib/generated/aliases.gperf" +#line 214 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2294, ei_iso8859_7}, -#line 152 "lib/generated/aliases.gperf" +#line 153 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2295, ei_johab}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 331 "lib/generated/aliases.gperf" +#line 332 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2314, ei_cp1258}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 605 "lib/generated/aliases.gperf" +#line 606 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2333, ei_ebcdic278}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 319 "lib/generated/aliases.gperf" +#line 320 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2348, ei_cp1256}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 124 "lib/generated/aliases.gperf" +#line 125 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2365, ei_euc_tw}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 716 "lib/generated/aliases.gperf" +#line 717 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2388, ei_ebcdic1137}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 543 "lib/generated/aliases.gperf" +#line 544 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2395, ei_cp857}, {-1}, {-1}, {-1}, -#line 163 "lib/generated/aliases.gperf" +#line 164 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2399, ei_iso8859_1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 586 "lib/generated/aliases.gperf" +#line 587 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2406, ei_ebcdic037}, {-1}, -#line 525 "lib/generated/aliases.gperf" +#line 526 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2408, ei_cp775}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 517 "lib/generated/aliases.gperf" +#line 518 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2418, ei_cp437}, {-1}, {-1}, {-1}, {-1}, -#line 387 "lib/generated/aliases.gperf" +#line 388 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2423, ei_mac_turkish}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 174 "lib/generated/aliases.gperf" +#line 175 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2433, ei_iso8859_2}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 464 "lib/generated/aliases.gperf" +#line 465 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2449, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 534 "lib/generated/aliases.gperf" +#line 535 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2459, ei_cp853}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 462 "lib/generated/aliases.gperf" +#line 463 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2483, ei_jisx0208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 205 "lib/generated/aliases.gperf" +#line 206 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2497, ei_iso8859_6}, {-1}, {-1}, {-1}, -#line 19 "lib/generated/aliases.gperf" +#line 20 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2501, ei_ascii}, -#line 153 "lib/generated/aliases.gperf" +#line 154 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2502, ei_johab}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 302 "lib/generated/aliases.gperf" +#line 303 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2510, ei_cp1253}, {-1}, {-1}, {-1}, -#line 219 "lib/generated/aliases.gperf" +#line 220 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2514, ei_iso8859_7}, {-1}, {-1}, -#line 840 "lib/generated/aliases.gperf" +#line 841 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2517, ei_euc_jisx0213}, -#line 628 "lib/generated/aliases.gperf" +#line 629 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2518, ei_ebcdic297}, {-1}, -#line 606 "lib/generated/aliases.gperf" +#line 607 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2520, ei_ebcdic278}, {-1}, {-1}, {-1}, -#line 137 "lib/generated/aliases.gperf" +#line 138 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2524, ei_big5hkscs1999}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 390 "lib/generated/aliases.gperf" +#line 391 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2535, ei_mac_hebrew}, {-1}, -#line 234 "lib/generated/aliases.gperf" +#line 235 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2537, ei_iso8859_9}, {-1}, {-1}, {-1}, -#line 160 "lib/generated/aliases.gperf" +#line 161 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2541, ei_dec_kanji}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 851 "lib/generated/aliases.gperf" +#line 852 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2552, ei_riscos1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 134 "lib/generated/aliases.gperf" +#line 135 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2562, ei_cp950}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 126 "lib/generated/aliases.gperf" +#line 127 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2588, ei_euc_tw}, {-1}, -#line 678 "lib/generated/aliases.gperf" +#line 679 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2590, ei_ebcdic905}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 629 "lib/generated/aliases.gperf" +#line 630 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2635, ei_ebcdic297}, {-1}, {-1}, {-1}, {-1}, -#line 327 "lib/generated/aliases.gperf" +#line 328 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2640, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 600 "lib/generated/aliases.gperf" +#line 601 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2647, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, -#line 699 "lib/generated/aliases.gperf" +#line 700 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2652, ei_ebcdic1097}, {-1}, {-1}, {-1}, {-1}, -#line 765 "lib/generated/aliases.gperf" +#line 766 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2657, ei_ebcdic1145}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 367 "lib/generated/aliases.gperf" +#line 368 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2681, ei_mac_croatian}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 215 "lib/generated/aliases.gperf" +#line 216 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2693, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 639 "lib/generated/aliases.gperf" +#line 640 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2697, ei_ebcdic424}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 611 "lib/generated/aliases.gperf" +#line 612 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2712, ei_ebcdic280}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 145 "lib/generated/aliases.gperf" +#line 146 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2720, ei_euc_kr}, -#line 598 "lib/generated/aliases.gperf" +#line 599 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2721, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, -#line 76 "lib/generated/aliases.gperf" +#line 77 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2726, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 659 "lib/generated/aliases.gperf" +#line 660 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2732, ei_ebcdic870}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 447 "lib/generated/aliases.gperf" +#line 448 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2747, ei_tcvn}, {-1}, {-1}, {-1}, -#line 625 "lib/generated/aliases.gperf" +#line 626 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2751, ei_ebcdic285}, {-1}, -#line 757 "lib/generated/aliases.gperf" +#line 758 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2753, ei_ebcdic1144}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 773 "lib/generated/aliases.gperf" +#line 774 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2775, ei_ebcdic1146}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 849 "lib/generated/aliases.gperf" +#line 850 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2784, ei_atarist}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 325 "lib/generated/aliases.gperf" +#line 326 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2794, ei_cp1257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 395 "lib/generated/aliases.gperf" +#line 396 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2829, ei_mac_arabic}, {-1}, -#line 77 "lib/generated/aliases.gperf" +#line 78 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2831, ei_euc_jp}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 797 "lib/generated/aliases.gperf" +#line 798 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2839, ei_ebcdic1149}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 436 "lib/generated/aliases.gperf" +#line 437 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2847, ei_cp874}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -4033,35 +4033,35 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 588 "lib/generated/aliases.gperf" +#line 589 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2924, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 214 "lib/generated/aliases.gperf" +#line 215 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2943, ei_iso8859_7}, {-1}, {-1}, {-1}, -#line 521 "lib/generated/aliases.gperf" +#line 522 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2947, ei_cp737}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 647 "lib/generated/aliases.gperf" +#line 648 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str2961, ei_ebcdic500}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 789 "lib/generated/aliases.gperf" +#line 790 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3005, ei_ebcdic1148}, -#line 108 "lib/generated/aliases.gperf" +#line 109 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3006, ei_cp936}, {-1}, -#line 383 "lib/generated/aliases.gperf" +#line 384 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3008, ei_mac_greek}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 723 "lib/generated/aliases.gperf" +#line 724 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3036, ei_ebcdic1140}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -4075,43 +4075,43 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 749 "lib/generated/aliases.gperf" +#line 750 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3137, ei_ebcdic1143}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 669 "lib/generated/aliases.gperf" +#line 670 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3162, ei_ebcdic875}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 684 "lib/generated/aliases.gperf" +#line 685 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3188, ei_ebcdic924}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 740 "lib/generated/aliases.gperf" +#line 741 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3206, ei_ebcdic1142}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 781 "lib/generated/aliases.gperf" +#line 782 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3226, ei_ebcdic1147}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 589 "lib/generated/aliases.gperf" +#line 590 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3248, ei_ebcdic037}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 748 "lib/generated/aliases.gperf" +#line 749 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3278, ei_ebcdic1143}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 391 "lib/generated/aliases.gperf" +#line 392 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3315, ei_mac_hebrew}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -4140,7 +4140,7 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 456 "lib/generated/aliases.gperf" +#line 457 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3558, ei_jisx0201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -4151,7 +4151,7 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 599 "lib/generated/aliases.gperf" +#line 600 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3632, ei_ebcdic277}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -4181,7 +4181,7 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 731 "lib/generated/aliases.gperf" +#line 732 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str3885, ei_ebcdic1141}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -4204,7 +4204,7 @@ static const struct alias aliases[] = {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, -#line 739 "lib/generated/aliases.gperf" +#line 740 "lib/generated/aliases.gperf" {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str4067, ei_ebcdic1142} }; diff --git a/lib/iconv.c b/lib/iconv.c index 00fac264..68fe6c2b 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -1,6 +1,10 @@ +/** + * @file encoding.h + * @brief Encoding structure definition. + * @copyright Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022-2023 Free Software Foundation, Inc. - * Copyright (C) The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -26,37 +30,22 @@ #include #include "all_encodings.h" -#include "converters.h" -#include "encoding_indexes.h" -#include "loop_funcs.h" +#include "codepage_to_ei.h" #include "encoding.h" - -const size_t TEMP_BUFFER_SIZE = 4096; - -#define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) -#define DEFCODEPAGE(codepage, xxx) [codepage] = ei_##xxx + 1, -#define DEFINDEX(alias, name) - -static const int codepage_to_eindex[] = { -#include "encodings.h.snippet" -}; - -#undef DEFINDEX -#undef DEFENCODING -#undef DEFCODEPAGE - -// Conversion loops. +#include "loop_funcs.h" #include "loops.h" /* * Alias lookup function. * Defines * struct alias { int name; unsigned int encoding_index; }; - * const struct alias * HashPool::aliases_lookup (const char *str, unsigned int len); + * const struct alias * aliases_lookup (const char *str, unsigned int len); * #define MAX_WORD_LENGTH ... */ #include "generated/aliases.h" +const size_t TEMP_BUFFER_SIZE = 4096; + _CPPP_API struct VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf) diff --git a/lib/loop_funcs.h b/lib/loop_funcs.h index 1e8b5c3d..1954f2b1 100644 --- a/lib/loop_funcs.h +++ b/lib/loop_funcs.h @@ -1,5 +1,9 @@ +/** + * @file loop_funcs.h + * @brief Data type for general conversion loop. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -29,7 +33,24 @@ */ struct loop_funcs { + /** + * @brief Conversion loop. + * @param icd Conversion descriptor. + * @param inbuf Pointer to the input buffer. + * @param inbytesleft Number of bytes available at `inbuf`. + * @param outbuf Pointer to the output buffer. + * @param outbytesleft Number of bytes available at `outbuf`. + * @return Number of bytes written to `outbuf`. + */ size_t (*loop_convert)(reiconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + + /** + * @brief Reset conversion loop. + * @param icd Conversion descriptor. + * @param outbuf Pointer to the output buffer. + * @param outbytesleft Number of bytes available at `outbuf`. + * @return Number of bytes written to `outbuf`. + */ size_t (*loop_reset)(reiconv_t icd, char **outbuf, size_t *outbytesleft); }; diff --git a/lib/loop_unicode.h b/lib/loop_unicode.h index 04f33f1f..3753ec12 100644 --- a/lib/loop_unicode.h +++ b/lib/loop_unicode.h @@ -1,5 +1,10 @@ +/** + * @file loop_unicode.h + * @brief The conversion loop via Unicode as a pivot encoding. + * @copyright Copyright (C) 1999-2003, 2005-2006, 2008 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 1999-2003, 2005-2006, 2008 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,165 +22,215 @@ * If not, see . */ -/* This file defines the conversion loop via Unicode as a pivot encoding. */ +#ifndef _LOOPS_UNICODE_H_ +#define _LOOPS_UNICODE_H_ + +#include "encoding_indexes.h" +#include "reiconv_defines.h" +#include + +#include +#include +#include +#include -static size_t unicode_loop_convert (reiconv_t icd, - const char* * inbuf, size_t *inbytesleft, - char* * outbuf, size_t *outbytesleft) +static size_t unicode_loop_convert(reiconv_t icd, const char **inbuf, size_t *inbytesleft, char **outbuf, + size_t *outbytesleft) { - conv_t cd = (conv_t) icd; - size_t result = 0; - const unsigned char* inptr = (const unsigned char*) *inbuf; - size_t inleft = *inbytesleft; - unsigned char* outptr = (unsigned char*) *outbuf; - size_t outleft = *outbytesleft; - while (inleft > 0) { - state_t last_istate = cd->istate; - ucs4_t wc; - int incount; - int outcount; - incount = cd->ifuncs.xxx_mbtowc(cd,&wc,inptr,inleft); - if (incount < 0) { - if ((unsigned int)(-1-incount) % 2 == (unsigned int)(-1-RET_ILSEQ) % 2) { - /* Case 1: invalid input, possibly after a shift sequence */ - incount = DECODE_SHIFT_ILSEQ(incount); - if (cd->discard_ilseq) { - switch (cd->iindex) { - case ei_ucs4: case ei_ucs4be: case ei_ucs4le: - case ei_utf32: case ei_utf32be: case ei_utf32le: - case ei_ucs4internal: case ei_ucs4swapped: - incount += 4; break; - case ei_ucs2: case ei_ucs2be: case ei_ucs2le: - case ei_utf16: case ei_utf16be: case ei_utf16le: - case ei_ucs2internal: case ei_ucs2swapped: - incount += 2; break; - default: - incount += 1; break; - } - goto outcount_zero; + conv_t cd = (conv_t)icd; + size_t result = 0; + const unsigned char *inptr = (const unsigned char *)*inbuf; + size_t inleft = *inbytesleft; + unsigned char *outptr = (unsigned char *)*outbuf; + size_t outleft = *outbytesleft; + while (inleft > 0) + { + state_t last_istate = cd->istate; + ucs4_t wc; + int incount; + int outcount; + incount = cd->ifuncs.xxx_mbtowc(cd, &wc, inptr, inleft); + if (incount < 0) + { + if ((unsigned int)(-1 - incount) % 2 == (unsigned int)(-1 - RET_ILSEQ) % 2) + { + /* Case 1: invalid input, possibly after a shift sequence */ + incount = DECODE_SHIFT_ILSEQ(incount); + if (cd->discard_ilseq) + { + switch (cd->iindex) + { + case ei_ucs4: + case ei_ucs4be: + case ei_ucs4le: + case ei_utf32: + case ei_utf32be: + case ei_utf32le: + case ei_ucs4internal: + case ei_ucs4swapped: + incount += 4; + break; + case ei_ucs2: + case ei_ucs2be: + case ei_ucs2le: + case ei_utf16: + case ei_utf16be: + case ei_utf16le: + case ei_ucs2internal: + case ei_ucs2swapped: + incount += 2; + break; + default: + incount += 1; + break; + } + goto outcount_zero; + } + inptr += incount; + inleft -= incount; + errno = EILSEQ; + result = -1; + break; + } + if (incount == RET_TOOFEW(0)) + { + /* Case 2: not enough bytes available to detect anything */ + errno = EINVAL; + result = -1; + break; + } + /* Case 3: k bytes read, but only a shift sequence */ + incount = DECODE_TOOFEW(incount); + } + else + { + /* Case 4: k bytes read, making up a wide character */ + if (outleft == 0) + { + cd->istate = last_istate; + errno = E2BIG; + result = -1; + break; + } + outcount = cd->ofuncs.xxx_wctomb(cd, outptr, wc, outleft); + if (outcount != RET_ILUNI) + goto outcount_ok; + /* Handle Unicode tag characters (range U+E0000..U+E007F). */ + if ((wc >> 7) == (0xe0000 >> 7)) + goto outcount_zero; + result++; + if (cd->discard_ilseq) + { + outcount = 0; + goto outcount_ok; + } + outcount = cd->ofuncs.xxx_wctomb(cd, outptr, 0xFFFD, outleft); + if (outcount != RET_ILUNI) + goto outcount_ok; + cd->istate = last_istate; + errno = EILSEQ; + result = -1; + break; + outcount_ok: + if (outcount < 0) + { + cd->istate = last_istate; + errno = E2BIG; + result = -1; + break; + } + if (!(outcount <= outleft)) + abort(); + outptr += outcount; + outleft -= outcount; } - inptr += incount; inleft -= incount; - errno = EILSEQ; - result = -1; - break; - } - if (incount == RET_TOOFEW(0)) { - /* Case 2: not enough bytes available to detect anything */ - errno = EINVAL; - result = -1; - break; - } - /* Case 3: k bytes read, but only a shift sequence */ - incount = DECODE_TOOFEW(incount); - } else { - /* Case 4: k bytes read, making up a wide character */ - if (outleft == 0) { - cd->istate = last_istate; - errno = E2BIG; - result = -1; - break; - } - outcount = cd->ofuncs.xxx_wctomb(cd,outptr,wc,outleft); - if (outcount != RET_ILUNI) - goto outcount_ok; - /* Handle Unicode tag characters (range U+E0000..U+E007F). */ - if ((wc >> 7) == (0xe0000 >> 7)) - goto outcount_zero; - result++; - if (cd->discard_ilseq) { - outcount = 0; - goto outcount_ok; - } - outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); - if (outcount != RET_ILUNI) - goto outcount_ok; - cd->istate = last_istate; - errno = EILSEQ; - result = -1; - break; - outcount_ok: - if (outcount < 0) { - cd->istate = last_istate; - errno = E2BIG; - result = -1; - break; - } - if (!(outcount <= outleft)) abort(); - outptr += outcount; outleft -= outcount; + outcount_zero: + if (!(incount <= inleft)) + abort(); + inptr += incount; + inleft -= incount; } - outcount_zero: - if (!(incount <= inleft)) abort(); - inptr += incount; inleft -= incount; - } - *inbuf = (const char*) inptr; - *inbytesleft = inleft; - *outbuf = (char*) outptr; - *outbytesleft = outleft; - return result; + *inbuf = (const char *)inptr; + *inbytesleft = inleft; + *outbuf = (char *)outptr; + *outbytesleft = outleft; + return result; } -static size_t unicode_loop_reset (reiconv_t icd, - char* * outbuf, size_t *outbytesleft) +static size_t unicode_loop_reset(reiconv_t icd, char **outbuf, size_t *outbytesleft) { - conv_t cd = (conv_t) icd; - if (outbuf == NULL || *outbuf == NULL) { - /* Reset the states. */ - memset(&cd->istate,'\0',sizeof(state_t)); - memset(&cd->ostate,'\0',sizeof(state_t)); - return 0; - } else { - size_t result = 0; - if (cd->ifuncs.xxx_flushwc) { - state_t last_istate = cd->istate; - ucs4_t wc; - if (cd->ifuncs.xxx_flushwc(cd, &wc)) { - unsigned char* outptr = (unsigned char*) *outbuf; - size_t outleft = *outbytesleft; - int outcount = cd->ofuncs.xxx_wctomb(cd,outptr,wc,outleft); - if (outcount != RET_ILUNI) - goto outcount_ok; - /* Handle Unicode tag characters (range U+E0000..U+E007F). */ - if ((wc >> 7) == (0xe0000 >> 7)) - goto outcount_zero; - result++; - if (cd->discard_ilseq) { - outcount = 0; - goto outcount_ok; + conv_t cd = (conv_t)icd; + if (outbuf == NULL || *outbuf == NULL) + { + /* Reset the states. */ + memset(&cd->istate, '\0', sizeof(state_t)); + memset(&cd->ostate, '\0', sizeof(state_t)); + return 0; + } + else + { + size_t result = 0; + if (cd->ifuncs.xxx_flushwc) + { + state_t last_istate = cd->istate; + ucs4_t wc; + if (cd->ifuncs.xxx_flushwc(cd, &wc)) + { + unsigned char *outptr = (unsigned char *)*outbuf; + size_t outleft = *outbytesleft; + int outcount = cd->ofuncs.xxx_wctomb(cd, outptr, wc, outleft); + if (outcount != RET_ILUNI) + goto outcount_ok; + /* Handle Unicode tag characters (range U+E0000..U+E007F). */ + if ((wc >> 7) == (0xe0000 >> 7)) + goto outcount_zero; + result++; + if (cd->discard_ilseq) + { + outcount = 0; + goto outcount_ok; + } + outcount = cd->ofuncs.xxx_wctomb(cd, outptr, 0xFFFD, outleft); + if (outcount != RET_ILUNI) + goto outcount_ok; + cd->istate = last_istate; + errno = EILSEQ; + return -1; + outcount_ok: + if (outcount < 0) + { + cd->istate = last_istate; + errno = E2BIG; + return -1; + } + if (!(outcount <= outleft)) + abort(); + outptr += outcount; + outleft -= outcount; + outcount_zero: + *outbuf = (char *)outptr; + *outbytesleft = outleft; + } } - outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); - if (outcount != RET_ILUNI) - goto outcount_ok; - cd->istate = last_istate; - errno = EILSEQ; - return -1; - outcount_ok: - if (outcount < 0) { - cd->istate = last_istate; - errno = E2BIG; - return -1; + if (cd->ofuncs.xxx_reset) + { + unsigned char *outptr = (unsigned char *)*outbuf; + size_t outleft = *outbytesleft; + int outcount = cd->ofuncs.xxx_reset(cd, outptr, outleft); + if (outcount < 0) + { + errno = E2BIG; + return -1; + } + if (!(outcount <= outleft)) + abort(); + *outbuf = (char *)(outptr + outcount); + *outbytesleft = outleft - outcount; } - if (!(outcount <= outleft)) abort(); - outptr += outcount; - outleft -= outcount; - outcount_zero: - *outbuf = (char*) outptr; - *outbytesleft = outleft; - } - } - if (cd->ofuncs.xxx_reset) { - unsigned char* outptr = (unsigned char*) *outbuf; - size_t outleft = *outbytesleft; - int outcount = cd->ofuncs.xxx_reset(cd,outptr,outleft); - if (outcount < 0) { - errno = E2BIG; - return -1; - } - if (!(outcount <= outleft)) abort(); - *outbuf = (char*) (outptr + outcount); - *outbytesleft = outleft - outcount; + memset(&cd->istate, '\0', sizeof(state_t)); + memset(&cd->ostate, '\0', sizeof(state_t)); + return result; } - memset(&cd->istate,'\0',sizeof(state_t)); - memset(&cd->ostate,'\0',sizeof(state_t)); - return result; - } } + +#endif /* _LOOPS_UNICODE_H_ */ diff --git a/lib/loops.h b/lib/loops.h index 7a6c84f9..115d7be0 100644 --- a/lib/loops.h +++ b/lib/loops.h @@ -1,5 +1,10 @@ +/** + * @file loops.h + * @brief All the loops. + * @copyright Copyright (C) 2000 Free Software Foundation, Inc. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2000 Free Software Foundation, Inc. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -17,6 +22,9 @@ * If not, see . */ -/* This file defines all the loops. */ +#ifndef _LOOPS_H_ +#define _LOOPS_H_ + +#include "loop_unicode.h" // IWYU pragma: export -#include "loop_unicode.h" +#endif /* _LOOPS_H_ */ diff --git a/lib/reiconv.cpp b/lib/reiconv.cpp index 75adb993..a0bb17c7 100644 --- a/lib/reiconv.cpp +++ b/lib/reiconv.cpp @@ -1,5 +1,9 @@ +/** + * @file reiconv.cpp + * @brief reiconv C++ bindings implementation. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it @@ -27,7 +31,7 @@ #include -_CPPP_API reiconv::Encoding::Encoding(const char* const name) +_CPPP_API reiconv::Encoding::Encoding(const char *const name) { _index = ::reiconv_lookup_from_name(name); if (_index == -1) @@ -45,9 +49,10 @@ _CPPP_API reiconv::Encoding::Encoding(const int codepage) } } -_CPPP_API reiconv::VersionInfo reiconv::version { VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH }; +_CPPP_API reiconv::VersionInfo reiconv::version{VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; -_CPPP_API std::string reiconv::convert(reiconv::Encoding from, reiconv::Encoding to, const std::string_view input, bool strict) +_CPPP_API std::string reiconv::convert(reiconv::Encoding from, reiconv::Encoding to, const std::string_view input, + bool strict) { ::reiconv_t cd = ::reiconv_open_from_index(from, to, !strict); if (cd == (::reiconv_t)(-1)) @@ -56,8 +61,8 @@ _CPPP_API std::string reiconv::convert(reiconv::Encoding from, reiconv::Encoding } std::size_t outlen = ::reiconv_result_size(cd, input.data(), input.size()); - std::string res (outlen, '\0'); - char* result = const_cast(res.data()); + std::string res(outlen, '\0'); + char *result = const_cast(res.data()); if (::reiconv_convert_static_size(cd, input.data(), input.size(), result, outlen) != 0) { ::reiconv_handle_close(cd); diff --git a/lib/reiconv_defines.h b/lib/reiconv_defines.h index 8e9c9e98..1fb5c4b4 100644 --- a/lib/reiconv_defines.h +++ b/lib/reiconv_defines.h @@ -1,5 +1,9 @@ +/** + * @file reiconv_defines.h + * @brief Type definitions for the reiconv implementation. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it diff --git a/tools/check-encodings.cpp b/tools/check-encodings.cpp index 2b975dbe..5de0a94e 100644 --- a/tools/check-encodings.cpp +++ b/tools/check-encodings.cpp @@ -1,5 +1,10 @@ +/** + * @file check-encodings.cpp + * @brief Check if all names in `encodings.h.snippet` are in upper case. + * @copyright Copyright (C) 2024 The C++ Plus Project. + * @note `name_canonicalize()` will upper the encoding name. So lower-case cannot be recognized. + */ /* - * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,10 +22,6 @@ * If not, see . */ -/* Check encoding names in `encodings.h.snippet` is not in lower case. - * `name_canonicalize()` will upper the encoding name. So lower-case cannot be recognized. - */ - #include #include #include diff --git a/tools/genaliases.cpp b/tools/genaliases.cpp index db3f88e7..2c5bf01f 100644 --- a/tools/genaliases.cpp +++ b/tools/genaliases.cpp @@ -1,5 +1,9 @@ +/** + * @file genaliases.cpp + * @brief Creates the aliases.gperf table. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,13 +21,17 @@ * If not, see . */ -/* Creates the aliases.gperf table. */ - #include #include #include #include #include +#include + +static inline void write_stream(std::ostream &out, const std::string_view data) +{ + out.write(data.data(), data.size()); +} static void emit_alias(std::ostream &out, const char *alias, const char *c_name) { @@ -39,7 +47,9 @@ static void emit_alias(std::ostream &out, const char *alias, const char *c_name) c = std::toupper(c); out.put(c); } - out << ", ei_" << c_name << std::endl; + write_stream(out, ", ei_"); + write_stream(out, c_name); + out.put('\n'); } static void emit_encoding(std::ofstream &out, const char *const *names, size_t n, const char *c_name) @@ -70,17 +80,18 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - aliases_file << "struct alias { int name; unsigned int encoding_index; };\n"; - aliases_file << "%struct-type\n"; - aliases_file << "%language=C++\n"; - aliases_file << "%define hash-function-name aliases_hash\n"; - aliases_file << "%define lookup-function-name aliases_lookup\n"; - aliases_file << "%7bit\n"; - aliases_file << "%readonly-tables\n"; - aliases_file << "%global-table\n"; - aliases_file << "%define word-array-name aliases\n"; - aliases_file << "%pic\n"; - aliases_file << "%%" << std::endl; + write_stream(aliases_file, "/* This file is automatically generated. Do not edit. */\n"); + write_stream(aliases_file, "struct alias { int name; unsigned int encoding_index; };\n"); + write_stream(aliases_file, "%struct-type\n"); + write_stream(aliases_file, "%language=C++\n"); + write_stream(aliases_file, "%define hash-function-name aliases_hash\n"); + write_stream(aliases_file, "%define lookup-function-name aliases_lookup\n"); + write_stream(aliases_file, "%7bit\n"); + write_stream(aliases_file, "%readonly-tables\n"); + write_stream(aliases_file, "%global-table\n"); + write_stream(aliases_file, "%define word-array-name aliases\n"); + write_stream(aliases_file, "%pic\n"); + write_stream(aliases_file, "%%\n"); #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ { \ diff --git a/tools/genindexes.cpp b/tools/genindexes.cpp index 98737d9b..105fc67b 100644 --- a/tools/genindexes.cpp +++ b/tools/genindexes.cpp @@ -1,5 +1,9 @@ +/** + * @file genaliases.cpp + * @brief Generate index enum for reiconv users. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ /* - * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it @@ -17,13 +21,11 @@ * If not, see . */ -/* Generate indexes enum. */ - #include #include #include -#include "encoding_indexes.h" +#include "encoding_indexes.h" // IWYU pragma: keep #define DEFENCODING(xxx_names, xxx, xxx_index, xxx_ifuncs1, xxx_ifuncs2, xxx_ofuncs1, xxx_ofuncs2) \ {#xxx_index, ei_##xxx}, diff --git a/windows/cppp-reiconv.rc.in b/windows/cppp-reiconv.rc.in index 135389df..1f5b2df1 100644 --- a/windows/cppp-reiconv.rc.in +++ b/windows/cppp-reiconv.rc.in @@ -32,7 +32,7 @@ BEGIN VALUE "LegalCopyright", "Copyright (C) 2023\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "cppp-reiconv.dll\0" - VALUE "ProductName", "cppp-reiconv: character set conversion library\0" + VALUE "ProductName", "cppp-reiconv: Character set conversion library.\0" VALUE "ProductVersion", PROJECT_VERSION "\0" END END From 2df85074ac421b25659eaa48a0f009b0280a1fcb Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 9 Nov 2024 11:15:33 +0800 Subject: [PATCH 51/77] Unified tests suites source codes' comments. --- tests/buffer.hpp | 1 - tests/data-generator.cpp | 2 +- tests/output.hpp | 1 - tests/utils.hpp | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/buffer.hpp b/tests/buffer.hpp index a27bbfc2..ad5e4b29 100644 --- a/tests/buffer.hpp +++ b/tests/buffer.hpp @@ -5,7 +5,6 @@ * @copyright Copyright (C) 2024 The C++ Plus Project */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it diff --git a/tests/data-generator.cpp b/tests/data-generator.cpp index 86b9597c..6fc383d0 100644 --- a/tests/data-generator.cpp +++ b/tests/data-generator.cpp @@ -1,7 +1,7 @@ /** * @file reiconv-test.hpp * @brief Creates the beyond-BMP part of the GB18030.TXT reference table. - * @brief Or creates the UTF-8.TXT reference table. + * Or creates the UTF-8.TXT reference table. * @author ChenPi11 * @copyright Copyright (C) 2005, 2012 Free Software Foundation, Inc. * @copyright Copyright (C) 2024 The C++ Plus Project. diff --git a/tests/output.hpp b/tests/output.hpp index 43bc5366..3ceab33d 100644 --- a/tests/output.hpp +++ b/tests/output.hpp @@ -5,7 +5,6 @@ * @copyright Copyright (C) 2024 The C++ Plus Project */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it diff --git a/tests/utils.hpp b/tests/utils.hpp index 903abd2d..7e667f76 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -5,7 +5,6 @@ * @copyright Copyright (C) 2024 The C++ Plus Project */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it From ac61242d266269b6b1a2dddd52d55023c605ab12 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 9 Nov 2024 14:20:38 +0800 Subject: [PATCH 52/77] Add `//IGNORE` support for iconv compatibility. --- include/cppp/reiconv.h.in | 8 +++++++ include/iconv.h.in | 10 ++++---- lib/encoding_indexes.h | 1 - lib/iconv.c | 48 +++++++++++++++++++++++++++++++++++++-- 4 files changed, 58 insertions(+), 9 deletions(-) diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in index a29692c4..a07e9de4 100644 --- a/include/cppp/reiconv.h.in +++ b/include/cppp/reiconv.h.in @@ -177,6 +177,14 @@ extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char* input */ extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, size_t *output_length_ptr); +/** + * @brief Open a conversion descriptor. For iconv compatibility. + * @param tocode The output buffer encoding. Supports "//IGNORE". + * @param fromcode The input buffer encoding. + * @return The conversion descriptor. (reiconv_t)(-1) is returned if error occured with errno set. + */ +extern _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode); + /** * @brief Do conversion. For iconv compatibility. * @note At most `*inbytesleft` bytes starting at `*inbuf`. diff --git a/include/iconv.h.in b/include/iconv.h.in index e071c822..d5ada6c4 100644 --- a/include/iconv.h.in +++ b/include/iconv.h.in @@ -46,15 +46,13 @@ */ #define iconv_t reiconv_t -/** - * @brief Open a conversion descriptor. - * @param tocode The target encoding. + /** + * @brief Open a conversion descriptor. For iconv compatibility. + * @param tocode The target encoding. Supports "//IGNORE". * @param fromcode The source encoding. * @return The conversion descriptor. (iconv_t)(-1) on error with errno set. - * @note This function is equivalent to `reiconv_open_from_name(fromcode, tocode)`. - * @see reiconv_open_from_name */ -#define iconv_open(tocode, fromcode) reiconv_open_from_name(fromcode, tocode, false) +#define iconv_open reiconv_open /** * @brief Convert at most `*inbytesleft` bytes from `*inbuf` according to the code conversion diff --git a/lib/encoding_indexes.h b/lib/encoding_indexes.h index ef4bf289..ec61d773 100644 --- a/lib/encoding_indexes.h +++ b/lib/encoding_indexes.h @@ -5,7 +5,6 @@ * @copyright Copyright (C) 2024 The C++ Plus Project. */ /* - * Copyright (C) 2024 The C++ Plus Project. * This file is part of the cppp-reiconv library. * * The cppp-reiconv library is free software; you can redistribute it diff --git a/lib/iconv.c b/lib/iconv.c index 68fe6c2b..305dbccc 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -88,8 +88,7 @@ _CPPP_API int reiconv_lookup_from_codepage(int codepage) _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq) { - struct conv_struct *cd; - cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); + struct conv_struct *cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); if (cd == NULL) { errno = ENOMEM; @@ -142,6 +141,51 @@ _CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *toc return reiconv_open_from_index(from_index, to_index, discard_ilseq); } +_CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) +{ + char fromcode_buf[MAX_WORD_LENGTH + 2]; + char tocode_buf[MAX_WORD_LENGTH + 2]; + + size_t fromcode_len = reiconv_name_canonicalize(fromcode, fromcode_buf); + size_t tocode_len = reiconv_name_canonicalize(tocode, tocode_buf); + + bool discard_ilseq = false; + + for (size_t i = 0; i < fromcode_len; i++) + { + if (i < fromcode_len && fromcode_buf[i] == '/') + { + fromcode_buf[i] = '\0'; + if (i + 7 < fromcode_len && memcmp(fromcode_buf + i + 1, "/IGNORE", 8) == 0) + { + discard_ilseq = true; + } + } + } + + for (size_t i = 0; i < tocode_len; i++) + { + if (tocode_buf[i] == '/') + { + tocode_buf[i] = '\0'; + if (i + 7 < fromcode_len && memcmp(tocode_buf + i + 1, "/IGNORE", 8) == 0) + { + discard_ilseq = true; + } + } + } + + int from_index = reiconv_lookup_from_name(fromcode_buf); + int to_index = reiconv_lookup_from_name(tocode_buf); + if (from_index == -1 || to_index == -1) + { + errno = EINVAL; + return (reiconv_t)(-1); + } + + return reiconv_open_from_index(from_index, to_index, discard_ilseq); +} + _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { if (inbuf == NULL || *inbuf == NULL) From c333c229a5939dbc56830f7c720ce0a4038a2930 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 10 Nov 2024 17:32:48 +0800 Subject: [PATCH 53/77] Add benchmark utility. --- .gitignore | 1 + CMakeLists.txt | 8 +- benchmark/benchmark.cpp | 236 ++++++++++------------------------- benchmark/benchmark.hpp | 34 ++--- benchmark/benchmark.md | 18 +++ benchmark/benchmark.png | Bin 0 -> 107761 bytes benchmark/glib_iconv.cpp | 150 ++++------------------ benchmark/libiconv_iconv.cpp | 150 +++------------------- benchmark/reiconv_iconv.cpp | 53 ++++++++ benchmark/run.py | 109 ++++++++++++++++ benchmark/test_string.hpp | 34 ----- lib/iconv.c | 1 + 12 files changed, 306 insertions(+), 488 deletions(-) create mode 100644 benchmark/benchmark.md create mode 100644 benchmark/benchmark.png create mode 100644 benchmark/reiconv_iconv.cpp create mode 100755 benchmark/run.py delete mode 100644 benchmark/test_string.hpp diff --git a/.gitignore b/.gitignore index 9291fabc..554d2996 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,4 @@ tests/data/GB18030-2022.TXT tests/tmp-*.TXT *.tmp *.dump +benchmark/benchmark diff --git a/CMakeLists.txt b/CMakeLists.txt index b550c9f4..913128af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,8 +124,8 @@ install(FILES "${output_includedir}/cppp/reiconv.hpp.inst" # PERMISSIONS 0644 install(FILES "${output_includedir}/cppp/encodings/reiconv.hpp" - DESTINATION "${install_includedir}/encodings" - RENAME "cppp/reiconv.hpp" + DESTINATION "${install_includedir}" + RENAME "cppp/encodings/reiconv.hpp" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) # PERMISSIONS 0644 @@ -136,8 +136,8 @@ install(FILES "${output_includedir}/cppp/reiconv.h.inst" # PERMISSIONS 0644 install(FILES "${output_includedir}/cppp/encodings/reiconv.h" - DESTINATION "${install_includedir}/encodings" - RENAME "cppp/reiconv.h" + DESTINATION "${install_includedir}" + RENAME "cppp/encodings/reiconv.h" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) # PERMISSIONS 0644 diff --git a/benchmark/benchmark.cpp b/benchmark/benchmark.cpp index 619c6cdf..03253a0f 100644 --- a/benchmark/benchmark.cpp +++ b/benchmark/benchmark.cpp @@ -1,220 +1,112 @@ #include "benchmark.hpp" -#include "test_string.hpp" - +#include "cppp/reiconv.h" #include -#include -#include #include -#include -#include - - -static void reiconv_handle_open_by_name(benchmark::State& state) -{ - for (auto _: state) - { - volatile reiconv::Encoding index = {"UTF-8"}; - volatile reiconv::Encoding index2 = {"CP936"}; - } -} +#include +#include +#include -BENCHMARK(reiconv_handle_open_by_name); +char *test_string_utf8; +std::size_t test_string_utf8_len; -static void reiconv_handle_open_by_codepage(benchmark::State& state) +static void reiconv(benchmark::State &state) { - for (auto _: state) + char output[test_string_utf8_len * 4]; + void *cd = reiconv_iconv_open(); + for (auto _ : state) { - volatile reiconv::Encoding index = {65001}; - volatile reiconv::Encoding index2 = {936}; + reiconv_convert_static_size(cd, test_string_utf8, test_string_utf8_len, output, test_string_utf8_len * 4); } } +BENCHMARK(reiconv); -BENCHMARK(reiconv_handle_open_by_codepage); - -static void reiconv_handle_open_by_index(benchmark::State& state) +static void glibc(benchmark::State &state) { - for (auto _: state) + char output[test_string_utf8_len * 4]; + void *cd = glibc_iconv_open(); + for (auto _ : state) { - volatile reiconv::Encoding index = {reiconv::Encodings::UTF8}; - volatile reiconv::Encoding index2 = {reiconv::Encodings::CP936}; + glibc_static_size_convert(cd, test_string_utf8, test_string_utf8_len, output, test_string_utf8_len * 4); } } +BENCHMARK(glibc); -BENCHMARK(reiconv_handle_open_by_index); - -static void glibc_iconv_dynamic_length(benchmark::State& state) +static void libiconv(benchmark::State &state) { - char* output = nullptr; - std::size_t length = 0; - - for (auto _: state) + char output[test_string_utf8_len * 4]; + void *cd = libiconv_iconv_open(); + for (auto _ : state) { - output = nullptr; - length = 0; - glibc_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length); - free(output); + libiconv_static_size_convert(cd, test_string_utf8, test_string_utf8_len, output, test_string_utf8_len * 4); } } +BENCHMARK(libiconv); -BENCHMARK(glibc_iconv_dynamic_length); - -static void libiconv_iconv_dynamic_length(benchmark::State& state) +static void libicu(benchmark::State &state) { - char* output = nullptr; - std::size_t length = 0; + UErrorCode status{U_ZERO_ERROR}; + char output[test_string_utf8_len * 4]; - for (auto _: state) + for (auto _ : state) { - output = nullptr; - length = 0; - libiconv_iconv_string("GB18030", "UTF-8", simple_test_string_utf8, simple_test_string_utf8 + 1, &output, &length); - free(output); + ucnv_convert("GB18030", "UTF-8", output, test_string_utf8_len * 4, test_string_utf8, test_string_utf8_len, + &status); } } +BENCHMARK(libicu); -BENCHMARK(libiconv_iconv_dynamic_length); - -static void glibc_iconv_static_length(benchmark::State& state) +void init_test_string(std::size_t len) { - char* output = nullptr; - std::size_t length = 0; - glibc_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); - free(output); - - for (auto _: state) + constexpr const char *const test_string = + "\u6211\u80fd\u541e\u4e0b\u8eab\u4f53\u800c\u4e0d\u4f24\u8eab\u4f53\u30021234567890ABCD"; + constexpr const std::size_t test_string_len = 50; + test_string_utf8 = new char[test_string_len * len]; + test_string_utf8_len = test_string_len * len; + for (std::size_t i = 0; i < len; ++i) { - output = nullptr; - length = 0; - glibc_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); - free(output); + std::memcpy(test_string_utf8 + i * test_string_len, test_string, test_string_len); } } -static void libiconv_static_length(benchmark::State& state) +static inline bool isdigit(const std::string_view str) { - char* output = nullptr; - std::size_t length = 0; - libiconv_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); - free(output); - - for (auto _: state) + for (const char c : str) { - output = nullptr; - length = 0; - libiconv_static_size_convert("GB18030", "UTF-8", simple_test_string_utf8, 1, &output, length); - free(output); + if (!std::isdigit(c)) + { + return false; + } } + return true; } -static void libicu_static_length(benchmark::State& state) +const char *const_argv_default[2] = {"benchmark", "--benchmark_format=json"}; +int main(int argc, char **argv) { - UErrorCode status{ U_ZERO_ERROR }; - size_t enough_size = 24; - char* output = (char*)malloc(enough_size); - memset(output, 0, enough_size); - int len = ucnv_convert("GB18030", - "UTF-8", - output, - enough_size, - simple_test_string_utf8, - 1, - &status); - - if (U_FAILURE(status)) + if (argc != 2) { - free(output); - throw std::runtime_error("ucnv_convert failed"); + std::fputs("Usage: benchmark \n", stderr); + return EXIT_FAILURE; } - free(output); - - for (auto _: state) + if (!isdigit(argv[1])) { - output = (char*)malloc(enough_size); - memset(output, 0, enough_size); - len = ucnv_convert("GB18030", - NULL, - output, - enough_size, - simple_test_string_utf8, - 1, - &status); - free(output); + std::fputs("Error: test_string_repeat_times must be a number.\n", stderr); + return EXIT_FAILURE; } -} - -BENCHMARK(libicu_static_length); - + std::size_t len = std::atoi(argv[1]); + init_test_string(len); -constexpr std::size_t big_test_string_utf8_len = sizeof(big_test_string_utf8) - 1; - -static void reiconv_convert(benchmark::State& state) -{ - using namespace reiconv; - for (auto _: state) + int argc_default = 2; + ::benchmark::Initialize(&argc_default, const_cast(const_argv_default)); + if (::benchmark::ReportUnrecognizedArguments(argc_default, const_cast(const_argv_default))) { - reiconv_t cd = reiconv_open_from_index(reiconv_lookup_from_name("UTF-8"), reiconv_lookup_from_name("GB18030"), false); - char* output = nullptr; - size_t length = 0; - reiconv_convert(cd, big_test_string_utf8, big_test_string_utf8_len, &output, &length); - free(output); + return EXIT_FAILURE; } -} - -BENCHMARK(reiconv_convert); + ::benchmark::RunSpecifiedBenchmarks(); + ::benchmark::Shutdown(); -static void glibc_convert(benchmark::State& state) -{ - char* output = nullptr; - std::size_t length = 0; - for (auto _: state) - { - output = nullptr; - length = 0; - glibc_iconv_string("GB18030", "UTF-8", big_test_string_utf8, big_test_string_utf8 + big_test_string_utf8_len, &output, &length); - free(output); - } + delete[] test_string_utf8; // Not necessary. + return EXIT_SUCCESS; } - -BENCHMARK(glibc_convert); - -static void libiconv_convert(benchmark::State& state) -{ - char* output = nullptr; - std::size_t length = 0; - for (auto _: state) - { - output = nullptr; - length = 0; - libiconv_iconv_string("GB18030", "UTF-8", big_test_string_utf8, big_test_string_utf8 + big_test_string_utf8_len, &output, &length); - free(output); - } -} - -BENCHMARK(libiconv_convert); - -static void libicu_convert(benchmark::State& state) -{ - UErrorCode status{ U_ZERO_ERROR }; - size_t enough_size = big_test_string_utf8_len * 4; - char* output = nullptr; - for (auto _: state) - { - output = (char*)malloc(enough_size); - memset(output, 0, enough_size); - - ucnv_convert_72("GB18030", - NULL, - output, - enough_size + 1, - big_test_string_utf8, - big_test_string_utf8_len, - &status); - free(output); - } -} - -BENCHMARK(libicu_convert); - -BENCHMARK_MAIN(); diff --git a/benchmark/benchmark.hpp b/benchmark/benchmark.hpp index 4e418e07..caabab24 100644 --- a/benchmark/benchmark.hpp +++ b/benchmark/benchmark.hpp @@ -4,30 +4,14 @@ #include -extern int glibc_iconv_string(const char* tocode, - const char* fromcode, - const char* start, - const char* end, - char** resultp, - std::size_t* lengthp); +extern void* glibc_iconv_open(); +extern int glibc_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length); -extern void glibc_static_size_convert(const char* tocode, - const char* fromcode, - const char* data, - std::size_t size, - char** resultp, - std::size_t result_size); +extern void* libiconv_iconv_open(); +extern int libiconv_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length); -extern int libiconv_iconv_string(const char* tocode, - const char* fromcode, - const char* start, - const char* end, - char** resultp, - std::size_t* lengthp); - -extern void libiconv_static_size_convert(const char* tocode, - const char* fromcode, - const char* data, - std::size_t size, - char** resultp, - std::size_t result_size); +extern void* reiconv_iconv_open(); +extern int reiconv_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length); // Unused. diff --git a/benchmark/benchmark.md b/benchmark/benchmark.md new file mode 100644 index 00000000..45ae50e4 --- /dev/null +++ b/benchmark/benchmark.md @@ -0,0 +1,18 @@ +# Benchmark + +## Compile command + +```bash +cd benchmark +g++ *.cpp -I/tmp/inst/include /tmp/inst/lib/libicudata.a /tmp/inst/lib/libicuuc.a /tmp/inst/lib/libiconv.a /tmp/inst/lib/libcharset.a /tmp/inst/lib/libcppp-reiconv.static.a /usr/local/lib/libbenchmark.a /tmp/inst/lib/*.a -O2 -fPIC -Wall -o benchmark +``` + +## GCC version + +```text +gcc (Debian 14.2.0-8) 14.2.0 +``` + +## Benchmark result + +![benchmark result](./benchmark.png) diff --git a/benchmark/benchmark.png b/benchmark/benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2445b2103f542c79df8367f0335d28f8a8a977 GIT binary patch literal 107761 zcmeFZXH=7E*fknulo14Mh@!x#6agvHi!@O&6zL#+5NSb*R4D<}0aOH(D!oJKQbI2( z0@7=U^j?zCA@qcEKZ^REbJqI)egEF9H6xMaDffMqeeJy;U#mS(prK-pwE@8jTadd}mHfIq~Y?>=_bg(kP{B~^}vzoOrigdpky+wVc^*CJ91jj z;uc2SoV75cjjNUxJwvQlr2e|i*CUsG?ugu-uQqajt#ZB6J*{5odAHBz$k5$F<73oG zNiR}T?xUYOzv%0_^8DPH`}Ue0dkT+@uc7`rYjLJF5pBWd)FHjM@A?8BXSq4bUeA9L zx{t%xtv3TB$9}y5e?GYTf%?x|=2!d-f8O0XWy<^K-Lrqb82)*;BKu#(pLgTW|91Lw zl1~(;XOI5=r7z{xw*PTPx;y`S!e49izf1bRL30=j|C<)Sk^%<%znT`~=a*}?5|r6B z{S+QQPTSqUr54ogwv5c+s+McRnjiOMCVJzSG&;UD7tHz7TpBilngcB9&8eRiZ5Th| zHiqexImpH2=n{Mm_7ZQL5A;8IF@>*gzh@-vn`7%%;-n-1PKnCu7%7yPt`H!eMj z>&6Xb7Uafz@cGHc7R2$`cJ{F5=_P?5caHIm{#j5%Cg$B}M1VYZYZ}&&M*4rgq7ascAoIQKiWoIVJW_7Xw-8YvI@^UdFr*`3%Z{JW|9Tvs7u>*41O&Rim<#?x(QZ;$)tP4(s4y?j>d?v%UGDUKdJ+E?jf!(&`s{)OndwS;LG9m{1` ziMjsIKeDT&|*Sl z$S6wYXR;$zZrEh`03r9a$3$GO!X=R>@9OI6a_V>tO6NyCmof5mQfc$^RyFG#l8k~D zZy81Ha*b;|;9PW$eAO$r2cC#Xt$n+O=*V zV=mq;JSr-alEq6+-v4BGN4%tY;X}j4p59)U^>$Ihb4q5lkxCa~5g)$7E?LXl5v@gQyE;k;&g0^D!~1bnc#Q zkHzHb6;qiM2e5cQ1c&U6wXfwY9>_(ZP@1**L#4L8=21o&l`aJQT%wQ8ojZ3h$lf2T zHuu-h_WUWY(sfaPqN1Rnz!*u?rnxMp7P_(8!~z9IjEqlhekGnux2n{32>*qeuMg}= z=8%2eh|4W*ZlxTZJdGL;A}bvHuV-zhl{gW=Qu$@LiP=+GPfu^K$UIQL#A>3__4`ND z%sy<9xl((A)DUs_QK1$18~r+Oq~D;b|7Rvi*Kk%Bd>>q0T|Gv?{LSXl2!YCOYI3qK z-$=4OQO3k=)IBq&F$@i#IkGkW`K8O}V+`|oWurYxd^K9h8TW!1abc>`JM{&)BJ);f zB1YHdlkbrjVVlVP{eALB9_VI2ITg13$dgZb(%a({c_wwn1Z)9Tbj&N&hrFIxITb9q zfzK&W46WV8bNl)GBfh=6QZ%%fuTbT>c<$`kR49yZ`z#KkosLy#>=d=D#EM`*{1`UX z?#x~?@>*@6e=#iM*g&tV^=vdlhPuZ|z3o>nOd^@BqUQ(A#CRffx8ax(=CO>li5ml=9e&Vwg zG26kC?y@oO9FS|=SFhd%8{9qF5U4sNA|_VeLsGbRk4spXxE!fxZqb>Lcgen5z4O+( zvfmWAU@96KsdQ4JUy0LfTXz~ftgp(=o=30f4p{%3NyLvLIY-rcg919?tp^$!p=oPf z#I;sFU02uA%d`PtQJh;+^@=SbmVCOB<$i1-(^4P`(eoEUtm8 z{Zd~Kc0mAb)qR`6#H+ABS5H&h{0H{zxM^`%vJoJMKrDo&Ei63YdH7LQDT)^(Ltdp5 zw(624;xWB(;!e&3=25u(swIuNj`*3y#k{^gtvtgD4XEOPPlhOttV0V*Ehh_JBKhCl`zu+WInYIm2DL^>nyof!|%U;02HMqBsZyCiDYx85n^)2JkOVC>-V z@jRb#ZccusVw9od>)P!}YAEuw4TYg~NUA&p&BOTFSbJBb9azS^!{4!Usjc9fB8 z^lWEhK`U=nE>#XR3&FHR!%Q#uR|P^pAHKA{Cj4KR0NzDaQNz^4{Y|g)@u`M_xEwa5 z`E^E2C;!QrxjCq!S_nGPKPCUub`0@hf8Prvd}YCV|XJ!2g-XFfy7D3X6zk8Q7KK`#;)X_N2|0-l@=+B(F{d+bMEBHwIr$h7x7wxa_ zz+nI9>1Y#N3}-<7mDu*#C4m)gdwYAm8|U4kej{AOsV{~}kvC7u<8Zi^=H{nvoZInT zU1|+qzkYixP*HX6*Ll<^0M?~LVp07PE39pxbPlTwG|G$|Jkqdyr{8H7jtJ}q2--Tgb@H5Q$ zv3PIGfnKR@Xc(u=9wrUiH`Sa9d#^PMz)RIRDv8p_2jVhb+bdM0II*X7bCz9M4HOd>ni?I0kN-XgW&WW2&o28SXSdeq|EvFQB8)l5jNWqpR=<*M*tuqZ&wcMV0p$NARvHS zOlDkF@eygs3q==|FoCcgMpZchecKAP53Edsd2 zRZ^^ zCVaKqDbQzTW@fa<7?O_9_hyDPhOiX8KFa|u4pc#07rrNh995Q+lLOeLA6mwU2Viy?XWP2H0^O62tF7J`Vf0)AOXU z6B6ARbcs+gmk`D(wfWr)Lf;VN!0to~T5?^vB3I?MtkavJ!fjaPxn+mkUv1K_bk5q{ zTIPe(Tj15f8AulMlCuhz=-qp{$_V8hI|FV+1XO0h~<#^5r&6Y?dSHIeGD^z5OzkEvS=m4>AcmAn-5%B$-=SAaFhDYwPR1 zNpdgA8>7E29cKBGpJ6-bqM!xJtSJ~Ennjb+ky>Qc6OmZ%hYO&bI666@?M5VAmWK60 zOF&%D%+6+m2`yhlRfbg3)6-*!g=!2ykofO~Q`XB<1Om5-$yhNn7zq zg)?W*&dd<8#4<3)fjb!UIjFITo*6?76r}@5U~;9;sKx{R;^j+v78ajI7nkKxBT!;u zMC}uP0BNuV5Nch2{ySsht`viY-r@J+#Zgdv!I%UObsqn81pJI!nW)bfad&s$oeool zKysWTsTR4n0p20%{b?kgtt8cwcWt0;MU2(fcx=pHfkTj)w`M~lh)Gh%ra!kE3<*MD z7KUIKqCYp9)fx;A(4|5#&>kyl1I09e{?KPO4N38mOXc!SAuL!T)}#OcChG$-Nx$gv z>w6*0JOTAj75Bb=y+ZD;o_LH{X+gEoNG^;OwQ0N2Y9YnctsL<2NJJ1gy zQkx%g+J`Hg%rE%ogT&R$-&$Sm2D6wjNJL?qer3=GyL^vOlmM8kcjKTgd*J{l1L;Pr9Z z%P5ei5Z(n1m{h+)3=$pf62=;)KAmdJa$lci1gQ+h1vWUC-FJ5h1yEq2ZHIKqMqFbX z-(E~rU_qAjpo0Ja2Wg@PFei5#<*z$MA=sy;Gv31x|5aDt(#z8UahMYs(#x_15{52Q-`0M`*gt9NCzL!H`t?JGwz=00ephEuZ z<@+X*#W+8}``LZ=FnBR#d;hW14CPg(V zS_*}gpD^Y1WxNKc5>Sqvq(q~YclXyj+2E9P%;C+CHNbFVfH(vWzS$qyZG)Ed+(Q-~ zR2}bQNjlir4!L0wSk-!Toc%`e$)rX_z>hq9_@S!x@XCC-3a=nvE*W}fw#1p^!@3kS zJyhODMPH{BOI$q*lMSLjdvQ9?UAxEIvCU2bDY-HH9p#UbHmEC2fa_uq9fv4>Kgn;^9JvMpr~uLe;aza5)ZMk9@Z;f^!9dCaQyZ|wcy@uw?L>L}0%wp8+y>ly1`){mko73a`<(r z#b$S#ghbu*rQzf|9Ez&15>gbxcVLFSMFgW==^lc0c;BEu%PArfl!4 z-ALtz&dksn=1TUx=Vw4IKDpZ?_;jga>zV>v;wM2w3|L?YF@ScI zyh|i-z&*A`+~^r}D+WO^DgaGdKXjw`7 zy>?8ccXq83>47Tonc~go5kri2J{{gcMglq&=@kg3Zv6tHr^=DhBbb{vV8Z7BpA_=Z z=fE5AW1x`?xU?bA+0Yn{&jg?~zq6*g8gw&`MbME$!^6YV5~Mr zdKZ|A(O1k~5}xg$HY<}GXz&IF1=Vc_ELnGs-@ylY+s{u;hY-K`Gn9zf=H=@@iy)5> z$0~C_n+wE$e&ZLgPD_YnE1Q4T{1pASeX{6oUGhJPNr;OqzA=H&%2rdfSbnP{j9Px< zKM9wZ35g49ItUI!?(Xd!EY==gNguOc>1|}`oM8KaxI)&ktWZ|Iu&Cp#v|Thjc4~xg z{XWm~K(TgdFVKwo&g(IqsZb(plf%5bdL>U;FAHwO(Tukt)!T%eyWIVO&CEG>`va6r z22s_-%*7*dbscs`++e~1&04j6g_6t>-}%baQ}3;9ZuSF)&aerLl_i#)35qms?J>gn zoq#9;z!n7nm{KU%!BiHXeRYx8JPqWbJccp?DVxhw+; zL@}!K!Q`PfEuAb67-m0R`-_s2ka)14xm0)H4N)3HW%gLm-poZ}JFVcMVaA?|!pO}5 zOQ@qQl~2*eLxY(@NTgP6qMfmEfwF<7@LQO%Y5st=>?Cc^?@FC zBqy$q^r+|P=j<-=Y3bM-7$c^o?2X#8&}s9{o<&=G>_V#r_f1yy=!WP@+W}h-kM>@! zQiiHQb9zhbh0sC?4Tn1}FY);JBg@yn$fR%uP$orQX*)K4)7S&Y2HLbrl!R5=Qe zSg}&hKOu?l`hO$V*fj014RY`n8+^;PS~ro7WLO_V6IO>E8_USkzQc{YHEm`zw(kM& z8J@0S+??UJZ5_;*Vrz0~Ei0S&s?#w6gu&5{w zFy9Oh8-k*!C8n#PkpdMVxtGTysAQ$UERj4pHAS2Z=a^3ArTQt*&#WM5CnwR%7s`_`+m@%(~x_c)}SLn_?*>xz6-zi@`sWEgUK%Hs_7&R zMUCV~aB|O>ZFc+Y?U(7lG=$@s$Bd}`dArhIN41!WIhU-U@Y|SfNs6&6-;OynRu3D& zVEg^leAP+Q(~ozyw;>=3t-Mhy>tTPBHD}@z&xel8G$46yo(Y9RW)i-9pzdt0$*a|o z8ryRx=3#ZYX$!jQ2KSX{a%no6YmW5M0wMXX1-D-W-wG#%2_6~m78zkY8Bncb1CzYXJO@6S7_iUPFki0!A=?jgl?my(-KdjqQVMSEoXiAm{y}&` z*Xy>kgK-rVw++IS!D{f(J@cXQEDkItZuXb4!F5F|^usD2gf={R+N1_cQUu)N%HPP{ z4RtVK3)v0|v9Yt`0rKq!Y8MY&0AQMh;!X%oCTtGAq@>FRAw5{_UJR;+TLL5w%rf_Z?F7|g-fBXfiRV^! zVy}087ZxBD7q@^abHMfqF~U&#P(*ZqPDy{^!n4N3vuDnPM@DA6di4sC`zwaE1y9O{ z>8kecZV;(9X!~qP#+q8P;jCGAFxZ=hnmz zOBw_-;ELG$_wOSR_Jt3DHlV43Ioxp+uf3hSrpeNQ#`&J8ohM+DCo&K8!%gVEpJ&3P2q?6A$(EV~*1>vikV=K%{b_*V=2sFd&t{4S_y6 zEm4ZxbERRv_3+A-D^#?!I-r^Yb7k5#W zO>S;ZcVXl1fThvz0Q4b%QfvGtQ(GEuTKBLT0pbY~ckIe1jvM)qh=UbQbJj!5fG+_$ zP-tReqE7C^WN0kknD73)tD(!Kfqydloc11k$V0RKHU7jRULKHT6iKv&cb zVV2^$yxg7I#7P1QK_k)q$&*~xAJnc8K+|9x#sQZ99V;Z80fvc@|6f@)g~JSslPL-; z7PcD@n~9pqv3+bHg_+`vR=GnDTTy@jvm@Dww~zR9SwHQ3u@)nKQw^DqGON4(mE%sq zmXFbd_r#AgGedLM1jv`}wrD{#V7*ilZs`FTrgwXFN_EI}e|xp1wY3+J3TVI(g1}TL zwrJOIbSz@Uk@uFd0Jws!y~W1CK}Zf@hQ_j`${a^er;Vi%gYNEbs7(Uu1B14~)=541 zc{NEQF{MvqBANBM_==-4jBcrbjx}s_2G;j?E+tjcy=RlJIfOvKfjoI|^X5&6deSd_ z;yzdk31x5Sxt$M4TRA{@D|&bXfz6M%NgO_LmK_SFtx?Yc0YO0wkW-PX4Gf5$Gs-dB#{P^YchzWBbn296=`1#6>G7H>e&lIuGl+|H~%< zowLu&-xL}Rgw03J4bW7@{3qOPgER@lVDU>mu>V)j^-+pWRaPxP>Qistc*jbkd>O@2 zC6fi>QB?OhO!(5DbBozr^t%|dJ#vQ>N(^jcFJ8hsMA_AjTWo$i=F0_y6X>+itD|MM ztsVLt0HmDXIUaUyc^FGgdX`t+fT4u{7~5pik#YNl2}WDFAnBo*fSaK%<-d1-LAQ*i z`X8q?GY=M!s#?-RR_YGr?Q)eeW)qy-@6J04YE1 zFEAgi6 zIe*h{*LhuAYgEW&kTcpnSfDQpnYWy)*z1=#a1<9%!dBCIxyjA(+e$}?dpo&E!Hf04SJb|W})z@p%5%jp8flQueWZ( z#B_f&(d)cAjsd}T6>h~Um&~dDMupbq*KF#KIJWYHrXB3h$v^~rhH7FyB%6en7SwFU zgt%}#AY9Z?Vkr?XlwL73G<})UfD>M{@%e$wm8zkWUWQ9p1-M< zm__kGcJ3hn{&aRaeA;R-!#bwUvX&J}3%8Ogd80>_*QLdb$;OzyT_)K0G6)~28)%s; zF;(?~<#z^RjLx&sS`seG1&kj-qdo`7fhVQC9UVb$-)aGvM5w5r=mMa|8B{)9@k3<==Xvzgz~E?&%{PLy zbVo$O7s+uQ?LB z07)xsH!KDeTPpx+0M9&QJp@!&D6+apTVn-4hi`pUh%%~j#RI8=)f%9uA1JGO^&ZsM z6Fiqpbq-e-QLsdM2BQV7Au+_bwYe$}y z{2%IjVqz@USC)yrp97e0w#5biTJe>jgt3+CqBq5?aEh~(c=CfSZVCRucFYm&x!-f* zVeqR_EOrhQWMZZBTyO+dI8h!?c+VSx@-%dVYAK5APr2_q#kP6IwtX-g42{I@{E)|P zgEKa(nD6~&E>1bIGiIw#-Cl#SZg-zOlcvtL>v5O~e zqJu8S&cR4j=L8JJ`{yLjVD?hcKzgGQf5iuMu-+*lNfufUU^^_ zd4OroAGk>7j)HKez6iSD83#r$lb^S=;t6ticXPZ9I&G|=2zRmAdbkKp9t}o1y9VHQ zHEcVZ*NhJ9QU$0dLF8M?~w9muh@{VWY`&M^4tO zsjI&S?Vg^Ikt?ua5-`R;UgH*k>auAo`#~_Bkv}7x)_n>cf+)~Aoj1MQaEB(mm8Uc- zsV{$9jjRHjUfoHOP#6fgS1-05mtCdVxbAwB5qVO?*3|tV~qU@n_*r zx^_%KXm;pk%k>sDc^ml}sd3vEhH;M;$xlW^JX0T>8#re})VycRY0B%6048AsXJEta zXMg{^t7q>@UI+#4xW4V7>J7gTin>T)2`HT}Bj%s$y^5~f4e=_~770i$b;tVY@7dfJ5o!D(A8K?E@?_CS{D&daL4rnV%eH8A-#d}j+JW$}Ml3gPzdE{v zBChjKYewAzot|-h@k09fG_EURa)QU()WAGg)%t>xldG7J;11t)_4H@8zCG4hS>>Y{ z-Odi;`_st(H~@Ron_wKoJUWm~8z>uWWC{?HlU1y=~70>3@(4<8t2c_HLeKdo>I1Ec{=) z^FE@kT1~qUruC%+G}q6C0}fMj21`Puy?yudVTv~=-gZO#$Z&2B?4w-mKum_G^aG98 z?O7S!axtr&)Dfqc$3gpkcHxgb!+XX-qGWsgQ946L4&boR!B%;&<(6YlI20dPE%X!) zMpdb*A5o7H|2G4F9GjQ%M!olfe=@diD08k(C6bkBeLf3^Ez|v&SQg7oG5-3`%DjVy zw2b`N?CG=3`DPYjdMdYLQDFE$2O)AqPTOk9q}769!+P%t<)8G;6u9VbT3+=x%#s%XW1SrB zii!#V8J@a{|6CT?Ah)#fSH{CDDG&^YQ*EBmiTc1hm{4P6?Pr}?LPw<0j{PPwbHx6! z0d`?zxW^D;wk1QBwV3K8Jhpn=FrNm;4e2PExvG-1%GyU!L`v0fk3?{*+`L_=eBy|a zPS9tYDKV3qg1@vN2V<@xdR%zm6ZSVWFN;3gi@? zXoC{aa~HpjCdc($2Ds>@_kEI_#?Hb>V{(x8?DgJ5)(Y(6-;P)6`AcMS)M9DlySTYG zug^Ryd_k(-*!@O}A7JennK^{gURl&<#fY3qiyKdTju>W9jGA^0jR3+Qx{v+FOp;NyMeL2dG{bzh+XWYUEYjhB#}F z@uT@7Txu!rN4Z;`InEf2ZG2jLwXMM&xCp$v0KP2%!x9${k4hqPGdjO|O%b~jYgY*e zMh|a4n@VR~3eY>t6QUv`@wIzPy%38zIr)f4z^WG1kt=~|hJbLI{CYy=1HYV!*Qy^Y z?hSW-*9NW^lvX^#X?w+V9N8zwZ)^a@RHa>^<~M z7Px&DJH}c~%1SG=Q}u&G3mUNPnBD$a<f02y;VaXvVlAB2E3BkZy*eeNl0Mr4rTpm zPU032(16TIkXgCYhpg#uY6Xnzn43Qxo3Qa}9sG3+<&aF*kinQvVa>x(p^|PjXiB(y z{G%mjhqCu;mF0X1l$-Z(LG_s`LU}=yo-JMAuELx;2od_$7(xV4m1}PAeB3yLjnUef#ype~U;1 z5@!nnjR1a7$VlK#-mwHjL<{}2Vh^}MZQ#`bk&6e^y>xm$aP34yM*i@BXg94K$_o1C z%dcx7b)$u^RTs3LCET-+|^Nd*

1qDDhumZFIgk6DtbRFzNdS+&8Q0n-(7W&H|iIe;W#{E!`vxNsVEf)rzQ-{7_(Yz{Cl z|KKVK`A*2uY;A7H=nZlb3(N-27;RnBgbNrQo^g!fMlo(8w%!Dg>;1q@Z`8T|!(zEI zNAat|Xaddg#}WZ5074f1%fc@V_tPf@0xSx|(?sjWG8atbhrdc3iRmhMoo{uCgO6H? zlfr@Si{ZEsaI0wpzd6L~ghGbyq9OsHRi%7c7;bA*1~!xt4EwcfQ{lBB&SqnRE`d(~ zDo01m2h2@RfXYibnzGT)W)Gx47tr$mWh)K4 zvgB<}A8zla%XdrGZPPZ_rzC{q>#=dy{c}ejT$7YE0A%Nzpr8m=mxb@@qobqH^p~Ro z1{^Tk%u+d3f#?T1P@X|q2gU*ryDjbQd0iI3hzt~dC$t_gop>RU7~oEHx+(N?f0A^- zP*{1ew}%FO<=Ea|ggml6Cp&*5z)mlDMk6y4I`jH816{dtlC(}tkUf_0BKqFI^fbiz z{2vBig?}x0JE(!=HCW|VK-hUsK?&)zD=Q9u0RaTS$6Qoc-b?b%ig^*#a$%Ov!-dy=l%Bzz1(`r>o#_GG7-anh8fzwS^J0Y$NXtIJG?{K%@1Ip({*bgw>;-qn z0kAhh(6Zw))IC5gc*kn=w1M6O6lgWw6>yt-T(}R z&ah9&@7(l;0KuH6RKceD;)v0iTMsRaU)v?tr~_0hm-lF6ZDn(9^(qLHXk~xX3roC5 zKSj5;wuS)%q@5javHQFo>=c}l8+#S*Q9U$OS&75g<^P?K+qTsAstjvYpL`a< z$duOENK{MWTOUOnHNMoe^QJ83@Je8av<6BB8+>I}Xqx2E82nve-9}=8EA%z0&GjCG zREg8mM^~Qx9;$p9EmZ~?rS_-l1s+>HE1qB+^2n`HdJ(Yq4Ee?)PnBlojJd0UY66PgX*{$FPuJiPOl9(qy4x(vaug`G~>Dd^YSUfj5M=INsiZsa{var>PuFpEclj_pc5R{Xo4-*pwFzMHRoCfpl zMnU?4hAX@@#!tAnBrp@WM}UZ@c8p4CvC?MAV!$WpoC5HSmUU#MUN8Us0IZep3-hC#Yt;~)~Ck$p;hTTWrBwuxTa8g$; z%c#ujqZ}XKkR}f4JZGbLoC4ot5c$kIPjbM_RL9QfAg3&>MF+!#{2tZD)q~Gp#!Tg~VBdB6&llGuHUp|y zegAHZuvH}QtMX4HGs$nn;{2DQqtXE680<&mm&hvIaa*Myh+n&OJeFca)(StMA1nBi zS9cMMGMjUI^A-%@_|kz(+6cF7llAK(BL#35S_)Wp1oT9};Y&8Ohq{;8(eEbY)9D4+ z1h~dl`4U8&4BjhsadJT+?7iz$ZRjrR`i9))qqFC;Z^g|e(h$Ov*wy7KZ8z^Nw%_RL z!s_5=CKmh3+&4IF7ilvaeaiI|9N%F6xvIuzgneL9oK+cc6ovuC=kTQCI?;EdJuC^5 zyUtsgMdGbd-HT_2?m}$XV(MU3g@jfB52yI9z?mHa zfpFRWT|%CP!zWk3GMY6@)0tzWdx_TN4Q_fCuVw^=xuRn8K!P0J zr>_$i5VHl#+WVTCS#rLrUxh;?2XvqDW|Gi-mT}Y$=TqqUy(!+sMf;TG^A~RxY(I-8 zZpi58Xjf~8@C;|zm!{i{6&_WoPRnAB1CfRc4!nfx(J91eOT(b2EPkKrDj1hpo*c+J zh0SGu2e21$X+URcFi5lPyIlkoQO%uABtRpWp~9sRk2UDsSoPP6R_;;4qQiv87b4|q zYn`NogJ}B~i$xJ`_nw2Gg@^X#Sf{ZY_vCUZ9fy_uQRuaDfVXR7Y154eU*pJ+F3-EB zZ(~^X6n`4~^3>L4cPldA?kyaOjMSqJTEwixjU7Navg@+BP%a(Rhc=C`!QA-ATutSdht>{I^e&69ha^(ab~c`|9*tY9U!?*z zA5Ys%M5czOaR$0&+1^G;i2f~Ox#cECGa|?bcV}}&=h}V8wsd|LWhEDQ)FP0U_RMFURY$+?NF&dew zJUdzW*@kQ* zdFVO2$Ch&u=wP?t7*ffh_yjA*=ka@n<1snM;XGg&Wo^86 z3+MwbukcA_l+}59FDBO4Km`P>K7ybLQW=GTKxsmvRU~E+bk%^VHp|(OlCM zawk4EsvUQP)D=(yAnRZ>g(aROx13}1MEAC#s0VV!Sez!ye*LUpB>??^h-7lo5AB!&F8Hco&jdl~DS)AI8H+Ri5 z#Sug>uDBgcGgEsak*r|$?l0CwN3yDz6zXz^3Fa)4RlO>VD2u4*Es4E?2UaR5I#|S? zr>fNI)2Gv|`aASO)AsnPO=|F)J^0id;=-V%3;%KwnbccH#4V{3mw69#idQUr2*wSY zk9cIN4XL+y`vyzU0$R*xwq7kK4-F1yxT-IbmmJjmAQlZ23zNyL63Wc3wo_OOi}m&M04EBQU-Bja9wG&A90rAsEEBi6bh z<;?htW169TQu$Tq4GU$9T|0VW4MzKbqQ;tt7_3IK9@(K zUjp3=F;VL$5$^WQ<(BkyWBE&T82X@mH7_+U3>}sBVsgNs|ChL~R>RG&d_2*g!w>MeGT@ck&3Aq;hLMnqAE*WGjJB*TqRU~v*z1-Bhw2)Xy5ib)g<-`s}yuQ z5fU{Ka@o5WLS}N1f3~JFN2GfGXA82k>|JwOqf-nifw6bvyM>L<7aLd9)*P=}3v;zR zH{ab^hHJ1HBIBNPf!RA@A5kT(A9WR8$$wKBfTn_Sr|R4y(+gZ9#R{Y9>P7$gC-i#i z3M<&<3naMfR8TW0hI%oIXblUhCT_{`I!FTv@aKB^GO`QHXtOMA%Z56eWbRGdu1XVX zC7N9OGj+Z6wbMVhI|kZ%_z>mbJ@Lp(x(Mr0fL2uMYHRLQ*W9BPVN##_>Oiw>xLjiE zW;t!M9}rt2nJUX3CPbcWtjsYv>#oxIRM=c(X`yIQ{KdW&{@!hrvp6xaN{M3p-f!%oR=@8yI6p zCCt1ur#*Qq6RjP2jjzB<1pG=V)a%Sy`n?4~Dyy;48owhef9Hn%ECVo@@VCadLHdqX zuOaI~-3pmebng@<6A)oP(sOBk=%K~>0BLAjx4<7ic2&{bH500lpzN@6)_u)5;S{#f z^&*d}P#jYX|F1ToYd!9GMevK;=CvCpi);XXe@?h%MaaYea2a zN4#R>UqRwvEfqL`O$Xsq?%k^!t=VG1LedtS^`?Il_@%2t1j+TEoSD>-^K|?2mUWA0RUiLVH6@PC$eA1UhVT}i zBI}h6mI#lOhZOqvY`lOvv!2>65pKj9IFPn?T&TCsL--cqQ+d(J0C{onr1JOHf^Y95 z*x*$2!+PCxGOTsydALek00%Hv+!-P0mfu3lLF_=@^;({T{I)NuUv6MzYBeAQ z8eD%$d0R4|VAOQvqK(T-^YU>Ix9qoeln}xB?o*Z#;&B4eto83Ensb#J!y;qXLi9T8A-*NnJ|?u@WT8wYF6Ccymi;4&BH4qY8Wee83%8dTG=i zbN95y8b`8{a@y5#u0lzT)l^O;N278tW_tnKAbIcgKxS<;~^W zaohO1MQj}Cw$L(bH9B?X{M$eU4;2@CczUXl(`)+g=#GCafK^`O-!eO@g?^RNx5_hK zyRRLk$#*v2o;0r$lpheZXsNR`h^E+Q3)2&b_D0?ph<+Rj7tp7mqnFJe)C+grO;aJ81e~%TJIBK*v@5 z`$5;M^Vf!rXm8zr-JV=lJH`QL#AX&&^UQJ)JRe7StgQ;Pb`GUnv3=Cp%-kM4Y-nCX zt_<$nQ7al^3%qNJHOhP?+0@Ftuwe0*r-B0KTCn7~)dHWa@x5i2$a#lX;}iwFrzU&>1QZnBKkbYabW`2KTk<3I`+vv_geU*)c1;6k|D;NDm z*?Q*k4Yt1F{?JLo3+GWdpu)fFpLcgXNI<(cnRom9l4B2H_fJ#S4 zW?X;>hNgJoF$g%{@YY_U(N<&)96c z_7(;wu(u7l%2uumFK0>~&cc1CfN$Fd3{rX0MfyNr1y0K~^ma?yYpy}eXuQBntWN``ObdtPl-YnG6u`g;wsOYD;X+Ez*4 z2PY0Zl_Hb=f$V9_0l(Rd?C-U4$QZO)WbN=)I(VwgC#S$ua)jF?(4Jn~Kc)pIRsy5a)cOya?A;dkR)4TUVl z#hE$P1RL-y5{W=`n?k9L0A{0w>pGp4pbrf~RT|8W&I?#4y<_HJe5Ar2-|?_^4moa@ zy}tki?2;xH-H9!kZ_{&`mG-q)#{7kCPQn~`fB*Y)pT^XHG?qdN6tZc$vDnTzR^P`O zw%bq0xnwYk0vs-c3=P>j(!-7{Hox0^C>LF{c5vXnQy~Dj|7=v7dR8sruifi_C4+(( zunu|@Kpq;-#q~x=`aFLu!c9(Rpzo@!sZu%$3;Dy{SVB()tcT7)<1u(7f)`G;Le(V` zvoC)wHbm?8{TH#^Un|reIa#%npYV)DXKC*hg(nzj;C%Z#hjLN>)~&r0LES@^qd-kfujXD4T=)JFu?6-xxfHCtUR z@R?G2T&3}hqr2|0^cNR$UL_s)ga@FdXF6XV96U@4N$>9*?Jy}-#;Hnk!rxpFePD{E zaRNSbHNnGw9}D&=m5oKUzeiq)4Q_0~H!_4X7S;W4T^(>1+!{Jo6Qh3mVWo{O)h>5z zM!v7zBj${$j?TuQhj}{UOfL+23#qocSs-@uPXY1qcLA_U$D7&cA4oP-7o8e1VPmzRXf!rNNM>iL~h zzGb9}H%P>2=9UbfVQS~;?~Vh1aQ2s8tKdRQ8ZA7&g5`zJQ*A%(rs(8@yX;cF&Z??1F#)f=s^r zfS*K+K}t#7BXD&(`VZV43?4a=am3YRGXDRe>n)(7+}`hT5CMZwQb{F5T0pu)RJyyR zrNNlLl*RE|^3_9dj1f5+Q&l086jSAMkqO@8qL$hcfM&G7xKjCj^c z4WMMxjH#DJ3R);}uH^w~#XA21rwX8?&!%~1u%38i0pS}!n`tC;pRwvFpHN|&@w}=hRvclYUzLAP z-h7kOiKfN$D)~qB6RH9vT$>S=5{j>FeP}?}au_IJ29c7Y#5SjOZ%T^3E@Bu{P?f=x zgSA#=L7p38WTC}kLGIRL;b;1hhuqb1x+E?}Ko0oHJj&@J)y?lB)yW59DC>M2m1V!_ zwwKHCIuWTIqMGK)6>m<6?33Cxc4G&g$wgaoot0T;Rom3E?5uu39xa@4{~C%ymzMCl z0AC;QbR5a$K=O82KZs-ro@C8hteLA&Nt+P>6ld9Qk%M*F_`@W>x(!&lD zrCl%7Y+*Mda6T)e{*53y=Qf=!OED!U000R|BN$KWm5f00ED@UtO7rfT)9II<(ZVHh&k9cixcLmKm8UOx{w6bRdAZ7{T925ijsX# zSmA#tQW4I|6(0xp(ok#_-L!q946+zwH(LEkNjY$wyTy*x#K|$b{j!uUWiDapelLV) zr|_MJpd=s`DT2jnf|HQNQlv8l`d*D2vs;7QlLO0EY-?~*J_f$#-f7xl^SANb8x3Vm z%5e!yQg1%5_nyBRc^XrLWXwDKoq*02$+DDOig7?_I{>>K$tx9e#|1riPR|x+T2pe> z0Qj1DlVaCO1_(DV*W(o=nZ;EA?I=$0L%HUN8K9@jW2R-RIC1HcGfgnHA}SwjY{Io#kGjZGuSBBcjyKwd-ojYS&F=VbggDnUj8dDh6^x z1fx3@PS(V>`g z|LbLtAPe9i8hRj|QPtactb>pLC+Q{MD#eC=(laxG9_zxzIOOZw^C%52-v5ly8i)~q zXsotg9qpi*?KCE+87KHQq=9oEJ1=J{K~}PhSwTA!>JWJk7i5yUGOj8&7t7Fy)Oon? z#?Kzy4ukT_Dt2Yye74hHocI_NfE#%VQO$|~6CJD(q`IkZ<P!*(ZhQ6;ZlT;s$|o66H6CAQ0QAT8#_%L z4aH?3`-~C;r;dvb7V%oK0Xjh*HG(>?s3u;8$$#b2x+o5Ea)#CE zQRYJb9g;+ClPcX^jn7q8wCrTw=J+!*5^d1P3WraQ=@mH(_vTpu=S=6E4?fMQ#;BwU zbU{l%ISi>wQi7ddP3cf%D_9rF7z&U5_|5KD&4o1z!>q7%lA!1cPcBHo70C37Vx*P$ z*;Jr(2>dZOm8t|&WlTzpOjr$2Y>EE~+o`aU?vJjz0W@av3xtw<*D1BR@nu)50StM# zE4l!xMW$~E+TKAx3C~|l{KdbPkK>f3qs)Io=x4rSOM>kAlXtTy0v3rbX}`z}(d*Vh zdVpbOE$%3f{}g3EJAH1lZ+Nfn+#Gpq@!bDs^m#yu43K`Q>`V48K!jQ*nxv74;abn* zt{CmVYrG*o{){mCSm6gNYrybJH`&epDILhs@-?f9C2KSdx-BBPgVX`ckTWPvf9i2p=|89LO&{3R~@X`qBSjFWy-PXhy)AClX-#dTwh+!f}XpA z?)*G5r@gbVrPXeQdJ|63b3M&bKU zxfAznIVWf~XlzSFv=}MOx_WTdj@trBn||7jOasRlnXJcAmjYm+p-sd_JGG8#T-70~ zkj(db*jB_DKerZgiaO&uJTEIlq-)jQT8xNCtWUAO3kMqIZ^S@LG-Q8C^Or@2R~v7Y zp0#m|dh|8a#5#9aE@J3;Y52M`r)s%Jfodwt2yCc){oY%2oD9(#+06mpL+pv@G9*;O zi=9E{o3bEgde%0W$Pa|fI89F_vKQ6FMqk#wL;eE7W@`%a9#uf8gp8(rKxCsyUL3*X z0AA_;gz_!=MU~G4c-*%b7YyuUatcrD1F;yO+bdRf2X_Rt_D1p~6K!KQ&CJ-*Z$ICT z%^>`^mInAADDrRrIWz4P_mzMU!-tU)k%SfWOY~B^&9xb8fH-Tgtim}BYZ2ANQ8j$l zw*n*!7KW|w2*>VSJHp6+@vWXCMv(;#NLAHD(ro>{*5bjn9bQr93+7(p)zHvWwX1QT zh!3^191)PrEh6s80WU>kp&K7b$L%n=t8N6H!eatH2DU1x4i_mw1X5Tivtnsn2ttCH3ON)$C02X>=yt3yCN^MU4^E zU`$2xs97`PUiWfI@MywRX4tc|t;$o|)$hO!Nw^B}$PTHc2$}nR>!4GA^pob90c7 zP?Ux$(Z74^p$AUU8bZ7r+^y?7d?O6cRC|8kH@Z9XYkX3;e@N(amFfDcZPcsp=P4G5 zEy^zy#I4$yvTTV%0=ZR8CcQWt@<&MjovXGZ80E2<@jlz=-hKQgdy9g1>!SjoA+gfy z&njs9>akMtH<~ZH!rIXfascki1SR96Nl9%6JYi{6)O{IgWq<(FA5K^pvB&46wMHx% zk=N}AMQx8W#!3g)TKKF_xmuJ>ahBbQXo!#fN9=0+0YTxp0lhthM+I3s8r%8&!s2x?)EARrC|D1CxefPzTm_*LFMC z7xO1*)(Yy}T)4T5r})e3Hl{#t7y2LKoR$zjg|qsZY<-PI@vYq=JB!L5pN>jbt5L< z@q!e)C6@*j6#=(#pbyKsg7FD3|E9R^{0sZ@65|EVAhJ#LP*x~Nj+D>O!P`M=fauV{ ze>1n>V=jYgKGLD5q1jtS(Z)&%K;RerGov+=Gb%_9^bm7-e07V1(#rRq&lO>Rp$kFf z>1$ogVxZx0IU4|2(4&soIc&t7%AfpSajR*#XxP+dMdWE2f+~8 zohd2;0C?VS-jrNv<18`d-DxL2E|2O!AU?ik^hM(G1VZMK($O$(t?B6StWrNp#rgGQ zS_u(iz1*>k7O%NNZ@?(~UPW=Ou@UBJq;%6OMcu#+T7<45-ATEHawhhpSyawbzAd%GqdI!!`hlx<--d5u z$rYe7ZvR`2Mnoi2t!+lD_jI#H>5I=0eOte+s{O9&t);&uFZnWQkz!70zUn)D-(P4c zIjM*^Yn=(cy25$%ErEJ)vQQEf)bP*bc^_foJsN%isx7#Vle)gQkU7EQ)Yfp3VhrbG z6+NI0jv3PSsNZqtMx#*j~Yc1!gV#IZ8EpgQ=}-NEb7^OY-{8dx+l;mPlVeXFrun_*0pOpSkHvjWaaRBv}4vEtbaZovux%RrpHZ{yl*pDig! znVN{6x+(msy@j)$bERh{y}<^B&B646cgy)+d#L%N33>SMxGW$oM0dtaD7l~nz7#QB z^{F721FK|4q`C~Ahjf>6XXb?XE}t=h{vD}l?r^l;NxmR5bO%$R4L{Eon6e@uOnn#b z4N!yR{n-FOr;zNR$F;3U-w^M)!K}QVAv&_srI^#55>P}HDqCD$1}|mA@2;*3v|h1? zAEFM;*kcK}EWi7>9x0wLwW;i0o$wv+Gj?hfE8EEl(}Fj@IXqv`^Xw15*ooQd(+9nu zM6K56`#t=|`}zeoC_J-6A+zOwRXUlRpt^JC;(!c7x?|c@3Sp5ZN)xP ztw992fP<|$C#*Q+PL?+ZKS$v!uRnJn=jcd1e|j|hGB+#k3%629p@})sjC4P0zlx@* ztVGDn<+2QXl2gvHi3M04A*DBylhgUO!pC#D0fC*HBv&)8RuXU(b*~B*{}OXRHA`EL zeh#*e26~#N+nng5atqhA}}nTiLs=Hf}Gt^sYGl~ zCC7)~iKG|U1L6)+J_PtUJ=G&6NTJXtVS!A5g2(xBs{tiXgdEKV@V+AN=FbF%DP>E2 zcxrAr1!V$r*cOO;uGE**OBQ=k$uY_9-9n}W#}i~+9;F-9b!T1iKz0yAbCf@+h0iam z+$0}uotGtPi8FoP_%2V_`E{eGZX9QN5J>E3CD79xw}e%Hc(mOsWi64v2qFAnW8#ft zLY&=<7z!yB*b?u`>C*%J$t%q_7PcFYj;u*kQexz)*q64?1~WDOg)#lS7jMy0Pv$0 z^StP4(A!4)yW1z=3;dYEFR3F^|6~!#Nm^8EhX6CkGS>Ew-rQA5J$s$T>pAe-GNTmx`V< zWgHEH9WSubt}YaKLnvcxN=yQ4FY?V{8ET1q*%z}n4A9;8X@Yy7JCAope}+>NIyPbN zTlBwv+$%tBD&h?a`al=Uh}Zd*K7u)@DF0L_WZ-x&CUrd1bSETypt80xc;JZ*LE4L0 zp5bL5Psu9w$!WU3FQTa2MLlynOZMoGDm`yEhflCcMI0tm+}NR4MG(wW{`5b+bL77> z&xceCT_;=--kK4lJAPilqz2Ad33j8*W`$pPVjX%j!oP)I<4?%-0h&`-i*^lK%|y@q zOZ$^r8s^DZdcY_&xjcC7kW1jkUk`9lXw-SHVdJFu9JHZi+i zLAnFpsUWUOC=^}W`6qk2w92+=@>+AQMn2?vYm#yMY-LHQVw*Py6J>7vpCHSoxZfG0 zE_+8dY}_dS@QBV7(W)s&*;9VW*)1bTl7g|dh;*hx7CHd7^o%A{>)DG~JU_{XN=4*b zI3~K%9bR`?xHH!S8=xQ*Q{QN2r9Z6YM6;kuM0L& zj*4BcP)b-Ai_*kWn^AAOa&zS*A!sjmEVXnUqj=r4+5C?ftKbZn-fbkG|yEUw7$)atWq!drcWx)Ibx;vxm>y? z+q6XPW&dJOzy}4U#Qh4h>vUy}?q>kk{dE2^=TiFkApHNNW%pov?!nN})|z%+ z4CZq^{P0Bx2+pWMi8s%NH1M{PP2l+nR39DYWk}W3P^JQKG|%co0QVK-B_P0CnegGm zpTO@VGdDN4+V_v|!K>hp&v(LTvUF|hB=t7zNjh!6RAnT`S^!IbDdsk}qez-ODXokY zbTPTfdIq>uQpS!FEGBeZOvz0qDtUA*#s}jX={SejNQ^5vE<{r0^{pJtavp){F*K^% zOGkDkd1>B&Ibr-Ze#IING8{lrL4mek!Lqy{KY+hCQ0NTN=ix&ARTL*_Y9B*;^1xb4{-cM zfp?H9@O1M$U!#MAs}v4adPnO{X0(nz{jux$fg#z!ss}(7@#Ute&EM?fWWLhR=owD` z#J0DVg+RSEsR!&7+QWXb9(&k1q9^~XqdQ&)Ttx8*q<9P*jyWS2KabCMiUnOS+5l^t zUaf4T&vDN>KNIm>R#I`KpkSp%+EaRl?eiQ8N^cu`7Y{2I$xCry!@;-33(S|&q+(Qg zxPV6z(iGSamr}LP_2x!66j;g!o_!MDcif)JLSA10j0)EW(g0O^t729a*!}|7gj^GN zoLNT%?L?8GAF#?nE)fY=VA$X=D8s$BmXWL~E-tQu^#}6wBH7qsDslg)YW*gxpq3db z;5Wb2Jwp3Vms z9_q~o6PNtgmNSYmB4gih0xnb+t&Ftk4(jdq& zc`VNsX8XsCNjlxU3fH{iM2&I?5d0+~C@M>1t=Ib-;Dp0Wk3qKKcv@I%U`Ti{M&lHN zhSKmD>7tzhym4^_55wMleWakDzKOIT2RAYxuOk{nTAM(x-E|y>Rq_wOwE;lS$d?Ao z%zO^ifHf0u#KhEiD2a%kfy;u_;%D7}jiZj+u4bMpEsgSZV#l8}ZRj>I!z<>s0ysGR zvmg6i$>}$sDZsbX+cagu*2o^8y77eJgn|80SEU+=Z`rowFm zFL#>&Z`VN(EV~{@=Rfb@T>4FlX%st~F=$*7oPCfW+N+~(ZDE@rl6M#q40`4+fan^L zO6wP$*{-U*c5xlPxnL=HJ_y+M8}WJtz-~fCW0nWXB+d5=llT(Q9G8D#RIfy&Tj#It z02jHQU)dKnTfJi;6e<%b%N%x1HuW0bIyILqK)dEl1f+**Ks*Zks0V?luGD^Q05%0H z2VU7o$Im3e<%`JX=4NnT%VMM>h#L@iYj8jSuQA5(>kdf8HfC7}OAc zRi-7)#fLXtOl_BMzcXH$%uc1am=ll720RS_#+Vy`i<~rE2L%X?jIN-@IPJJO*@QaC z>vAJJ?L0MVnRW1mXQ=+_PC#+36&7RGxH>!S0r`d2X)`qvI-PzQ#c0e!rsA3WS1wQ4 zH{%`CX?I!a9?z+?H0`8v<^epOtUp(IT?@BQmzahE+uU?;>B{9YC$I;Nftx5HJ;}0w z;S89HVIbtywgN8bIY7_&M`-!~C1Yfu_)F@?DJAK7X0CkX)63EgKXr&*{ti<&(TLEj zK8C{qD)<9K-b z!+qwy=mo2vjnfei=<+QNuGk((-c2&19(5seGjc-2j=Q~ePVYDf4@_$;1LSp9RGh3&eR5d~kC+5zrIL5lJjS5o6aQ!jma zAq%2dH66IG-6Fm75$Dv|nV+L)#m5b+f9bow{}I?P>0P)2i=WiAw1pFpcvZ2 z9El~x_^!{=@HqtEd2feUBeKT->j2h-FD1B8Wg}?hpj)pO#dh#V{3_n~WkyR>tHSc( z?!*qMv%?5RwvH|nQ3>_Q^@WR%vUhaD@WdK;H9(-uGDI_uHXQ+ zKS)16;PGZQS2^9b)%9LD_J)G`Bm%E}!+b3{625ti|>S;&bD^)XVQnClU`fY*4 z6FIiPdGI@r9Tm`=+l%T{12akR5icn+gikrnZ{eJ(H@#@5=iTj@l0hd_<`r!AYvy3G zdju&#?8AL+D)Vm~FtyQM1!wqbna)arA5GtIO${mnFdZn&bZT`!?L-^xHJ1*TQA+aU zdeEFC^?jSMA`{Br?tAPjvfYHMw0|`Ez9jr|ljCzJDdwxqCDP}KT)_*W!avPB@H*3F zQ!LkCZj$rkxg2Zo$O=84q=dVjvc zn>VRH)dBm~UFWm^CJdZrWH^{0Iax=5#0z}FiJB~&AMejU$QB&FbnXnroO-OKx%I2} zN*JwhzcJ-*`A(f*;|nYdL4i+JgtGNjCbzF9-o3CIe0hCv0TsU^@qQv}uu#LwO;AiH z>2&d~kopm-g13UZ%R)@^ZF=d5I;{lV=1)qh5zz`*uRgwc;6yQ+xadmv^1>{t@e<0s zvz9^czF}3UF7CR2mkj^e5O2BbFhiiwS!4vg(hCMg)WX{sc%GMbZ<0K?MC#lOE43qK zl4a*FDCLh%X3N?zj<%$hQYAizQu@6eqz@_;ujXdSi{gU-SF=B#=9PWMgREoaMbkZM zwwHTep|kx_8+Z0+O~dZLFH&C(C+OL9K+o-DNzsrs18 zO$m9B)As<{5qP=q6uqigO`}CcfY*w1Hq{vQfn|jqd{tKaqci5ME8NRZw`EisyIA8z zSi*K2uH3LbqTZ@;qTBPn2)O8Fj&wgEZ=r;~hF3d8x}Oo!>Uq9>6}s(wuYA6zivxG} zgzj?8(4TKdz~}tX>}wa86f^sK|9J;T>7oRJxX;N)4K^C&?F3!?_Ht8?5w~uS-Qvk_ zvU9ISC<*Cau{B;d@(9XiPY)y1dh_)x1UPFpHCE zG(khQC8tm?PbSGM-7d)Q>AsA45(Haxr0Nxbz(PvC_~LQeQH8H0hz`#}m4H)Qq)g&F zc&7^D`uiiQUZME*lAdN(uJXopV(_H*2oQmP?Gb9o9aj7jg)n(F{sHpOMe{26)zTmgLszb#R4sKee zC__sSfIucBDDQQWj{FKG56c=*yf#m33|cSkS8 z$0aV|%fJdkZ?zAi>wj1&m^n=`=8N&5=E|Y4?r7REPrcA9Z*&&Lnj0DK7e3({6lr?s zL?grO==rtEQ}DfiJ~Ex<>sHEDIfa_JG=9%0hj?+)If#FV8StQh5yM^gNL!9CrU{ya zX-j??6qU|QB<|Vn^_OL<2mWb%L&{v|*In=UR7h`3fg>`1v3l zLD|oux8G5u(Xlixs&nv+5Y`|x}NAZF1)~E zWdM;zTr`1uiS`%_OtI{Yy`sXyVp}lchlkf4XcYYfbk@XdYyoW}Rc^gG3m+;j@ zJ|$1V&Bid}_0$b-VoqlLSvn!}rck&yaXhqtdcj?11eI;dx^Nul^v3UMzOyHN_X_v< z^(IH{@-oWp<2BJqHN6%R`}c`^$gj5f?^m;TvZILK6|Q{YBxY*u?%W_kK1)rXkQ-sH zO5bfYtWCixC#wY~E#XG(6Q=cvd4}_Z_t)9&$fW&``$_JB3#_naVcyunBE!3+{Lw!= zJ&M$E^KvT9TkhSPb%_};8*JFZXqfqlra-Lgzqs_R5QA*$28w(Hr~f{}F((`-kd_3m zd4?I)^ed;!aHm+XV&cn}Rch4~Wc;y5>RVV0b5T)gV7mf8sl~SUu4?FfISf@O7|X1! zbE0$e@IxPpZ<7nRv30c%syb9o^IDDU+;-+9nU=#^{?K&^;#^LZz)V2974yk|JgtQ zmN1HpORU=ZJvq#qZnC9$?`Ee?Fp2uZ1zN*FfyYdzq-6b-bu!4svNwybn6=`hMS^*UuN}nQ2e< z=$@agGooBhmebD9xb3Mb%X1lGEW@sR>0n+9aze<2tH}4uL)WG7&%xwUtL;ri7??Yb zvNjH!w177>e{)6IBV&@m?&VZnS&$v!T{BToFTOAC5w@Cvj z#VdF9x#Nb>spI7ZY29-NL0{Cmh^DjIX4KLk9J3`xK4)Xt)w`a$6L7qu1$}9kSb50p z^3m!Qsb_cpBUw7a`^1V|9vH^3OP`D%UIX+>&lB0vrCy;trGEE-%bH9-CA8VLhW>n& zI#B5Pwp{plnkDvq>V<9&|G1ZTZ$2aNKL+{xmlFJE5t@P^LPm)v=ask3$*lv%z#3rP zAb+cvyoM2v6bexhh!t$#PTj_e&z+xtUo_X*-K-<;r6(<&xFQ#D?^&~T%I`IOB@y(* z#U`Ai;#7(%LEUI0A`UklRLBTnShT{|NsFQF3e6vC#b`M#uRS%eU5tk-1u$BoSOOV! za^cLgD{cwgFTd1;?uh)jxpp`>kISh14z6ZRS(@BIDXg#%TSy6gAYeOZZOH7%4>kcF z-$$CeC(}~H5ws?S{Dv6$U$Hu&XJ7X9JfBXQG#Qi`RBEG~($PM2XguSQM8Z_n>v*&_LBBhN1fiFc!y@RY@!=+{YY)8VemQ21OB&}=)Nq)VrVi;b0{n-XrfA`GE1>h*D#Dgp>$^Xx zazUPrpUj5R!BCipezDYsjcpV(kr0&j8ZvW{HlkrX5O|MbS8?qJ3~9_iO@rTG2vFR* zIDUHmD+ugpqM&4JN-(phah@dL$6udbqsUkhtI5K0H?qaf_S+3Jjwfu^p)r@mBq(^l z(VQkJ$0`aQBhu5h*t*dn(^KU7){uM0nsKAh*@heVwN_ z<(lh0+T>gCs7zoUeu5*!4he%_|NGF1}{!zD=A%rOMoIlLjz?@$q^R}73O2N`BUJM!yi+kccRCX=B~Tyaqx}P%NL)$o z#gCUJEZ^w4pp)01ONxL5Oq?<0h1y?b#+x_pzf#jbgJAf+S3e(e;aYXw(V=cxK7DLz zgA2hY7Xiz^NYkRJAiK0wa0JitBt_Kz4#;7K6DQTP6DU}qJFMj@JZs^PdX!8L%~S^| zxg+<-A>zsQLP?jmHWL-iZq_oIWs<%QTc0?XAt$~4Kf^2s)~FIw8%7J>CZ+buBU9h; zstvt1f-aOQutP~Hb)8IEUdhkaqbR2_k6Q@xr)#QypX9-6niJMz(g%s6!c#|GVdxLO zkKPLfu&0aJIlHQ=cmnp%w}h|1|Iiiula~3P`u`{B2OJL6$rWMEP0Ykv*eIQRPfVjX4G39&O}v zj`*Ix@21vXlav>}(2IEnUP~x7v^wDLNtD}EXXU09Fb*};jx{;ShfY>EO(hJ}6~x|u zFf^KAG9DG~?Ka7E`733EETd?%}B6n4a;dLRm*%21va1&cfL++Zfq$X|CYTnkFa+$;nh~zOjV&ZpGk&`6) z5A%+s49)FuBi|};6lFTP94l6l1s=H=Pwh&O_@d(brP|K)Io7juWYnst80kVkJzmme zYMyl<-n%&q^+8rCsQ;O*&>`6pvib_MXeWEbHpMB4Z&3+{6RQQ{w{W`VHNRD;A&4sh zcaGZ@In`sd>PHVc8tJp_?Z(}Lo)_40RC*Ac$bFc$Xsiwj6o>6nb(;1x8&rI|ygYa# z!`C}%93U>*u7?H_!WftG&;7HhWsyuBN$ z|E$<|(pt(5geDVFHQk5oW#5H8677?YSxbh@C%jbtF}S_SvG0ysK^?)d!S?gm!`DZ|qW(kAgH)u z1#r5)*-ndZ7BwD~?19q*kKdD$OuZ7L#1pXn@z=Ag>YVOk*+z>fixr+X zM)U5jRqf7Rzqonv&o6#WWUFVyC$G_lh|Pav$;K&HFz<=IIcjs z%qg{8vJxh=<}QGae%pRa@*-6D=@ZUjb?a;L&?W1c|SAi^2FxmDat`(f6XByiy!e>d_kA5#4y;+#QiM zo~9Lwv=dx-JWA~?)Pa*ba&!dI1_9m<#&T73906Gsv#bc*8C$aRU2 zzb7T#Ak236runv|g2Kh+PTJ{)O?&+cg>B7U3a&`5n=97x!oqjix^GB=b4co|?y0&P z*Hbv~lezG#GtG(n7M(Ocyzw?pZuC)m0_9|KCnT!J&r zVMzr)Yv@&7xmb!)ftM>j)V9{}_QTJ3hcX;*(Qo8`U`)K?Ia z%zOO)k@HimN))c^d-rv}I0!dRWFe^YF|q3IxhA7tiv)Wb-9jii(-kF;DBZ=`zAj#|5x+1bB>T1;71%JjP-U>zR#o zsl$L;vMg0_o-s|DV^kUs*A$SGSyuEjc8DZ%;kZ`V^;O8+rdMc;RH-?0kf9JR=++;J zbN?u1acZm2N68{h_p%{WLC5g%EOiofP3!!feas)NTl1YK#NkSsG8vWfNy0U=o=yi` zocUAQ>?}12ab*@ozMtoKmI(kPUiq=u&eV93<#|J9R%010`DpZET@vH@fRumT+A}8A zJTJO|1(Ui!Rp_*W3M9W)U}}84 zvbe;~cxA4$=XYYFVSP^rYC+6c$F~5!9c@Zv@XkC$-`(StSGf~Hz;goe-zeW%yrxgb zC%bt`<^Znl7GiQImmJXFKCm52!&WT!f9dgWuuttbj@KN0y_DxGEBIgtfcHVz67bM-Tbwv76q5>_92n zWUpz!l07Kf{NxMzIa|J%fL~eYFF8_7orR{|3i4A<^waT2)0`pwI*ZPysk%%ZOeW`@ z+Q_le(dC7V5WfHw9E$4wS{^$Ta)a0FTO_1P%fH?lX?tMLMBr_b^YtAEa~D=f%vdF~ zShvljV;^%lKzC6Zc3p>q83z=ZZ}5P3hX7~T5M|F9!S4m!Yj=@{FE05WeI(31LoLtq z+iiAbRC^Og{BLD4kjbDEwWP9)>XrnOgl}jRxI{JNu(2_|wk2y^$Rh3!3$9E(J&taf zNyzv65Af#Nz?ovV5Cl23ka`$;T^R`ShpO3~!7(rv#cEkh9Ymbj^Eb=gRmLf zM;8#TV{lwqzSUT)$$TgmkP4Ngsh}7PhNBafHEu_A1L18xe@gYx)yn8llx(u>2=h&2 zX4cb88@-9z^Lw7*;g}vm09j)W({D&vd5=ItY~;5!nb~;NB?&bc9DJgn8}6-olR6IC z9{-$C3@P24oesBoY;W_dlPyZl7U^0~@`)DilW-ezBH{|}UW~`yM^slKVPzG~386Me z|GV>5CFgc)ZqU8$TKJ*a;@l9b+jgy`W&C}HQ%^IZSys4-gRI8ZF^Vvwm_v}^>sgw2 zPQldex-iu3nbOd^^TpJBAIBe(lWqx;zV2_M{07qQxg$J2*Owi=LZ3K4+@v26g{%Hv z^r5u&ZMiY6r*P%`3VoCteBzYvUyAdeb*Qj)2XbOjHzg>o6<<=v$PJK+KCdfS3*l4& zC5lQ{GyrVWFONMp$0+u+h0{51601V^>owoSoW5|S9VLIo9nCz+P`Oq@%QT^=Tmzpq znfLE0l3tB(2LC_iplP?)66`QQQCrh{Bl{*bDvRYyFY9M)4%GW( z2RvAH1EVSd;`h^_U;aK+#Zx3%Icls=Ube7%F%Dw6pOoruhrHmPM@d)5D9lJVz{YOT z(v^izl-)jFE$TIV7P{75+-=~g^Q||El4;>$1BZ@k%=6WbmL8E6{X+4{^{>L;0dRAD zXY-f%=QMWqy|>94uZ6O*(q3q@6z{;2BUoX#o**VH0;&+^!1_Ow5kLG{ttmfeyeR$X42~8G8LRb3FsT)7<8dMAKr;i(tj3mF{!*wwFtds>GJ{7`F;FWylk zSCe=ZO)sAA@Lt_5-x$&Luq7snuv=D9X4MI#eG#@~noPTy*5T1VD<+cy=v_5(d3v0d3un?69#ul6-ITmvX zj<*of?#?YcQ)ja6-4m=l-NnJ)*UbyaNWHy+fDh%)zM3iNT^KLNzDcE-s6Ts#N`7=j zXvTGKq{)r$^_r^xCJM1T=EF&7zH^;PLwwC|_a&>FYO7D zlbet-%=pBL4m8rzHxI+lQ~!lDNZ=tyAC-QuCmB3;bVO{M)lHF9_<d8_0lPWCyIB8PD zbBMxS!|PFm1klVSpSnCqI6=QXEZFtQUtH?vzmJOpa=RgC^GruIrRDrzok}VfwT|&M zf#!0YCG4iCeO#8kIu-d?9J@%QaxPv?6U}S7SJJ5PMr4?5=+9vkV~9MAa4xyV8yv%@ zxPQ_)K}!ZB0e?o@0dENlMAUAez~aE@@@mrA!nRg52-)(>Rf&S?OtSz(pg)w za(A*^%cTp?sLhx$ti_t{!yJl_>+uxDR2;6By?vd7RFF7+p&gOCJ69zGd@YR5^B$^x zeZJ(I)JFP$FuZWIV>iT(z}4vBlJb)LR(|XIUZshVv`;Bb6en9b9NZa02?o6V51sq; zbzWu2s*8&5MaL+WSd)8C*H8|*^pHpVj`(UIq!-!YK*@?IQgZvYdWVXO$?JO`%BJUt zM^e)Ur?bI?x$cDrHA)7qWm8JV;Y@*{7FE+)Dj*mzAXtAGT)P8s9zE1_1tsW9gKpiO z$9$1t^G$cwXDKb_8XZ0aiE|Vko1PvD><+zJSFj!NLqv9fu7KCSfoR+&Dqk|`e1pDT z{o-xn#g-~Rvg>+|j<-oH{X_4Gh^NTyiE`-CeVV5<-bGuj+k1lAkKOb*xZS|U*qg_s zoYTlv1)cDp1~UTL0|PjG-DMz4wg1Qp`ng4x7I)P=3!P)G!W*xfzo6rh61}nnZGlPH zwli{DTz)OPtYpIUif?n6pGe^=s}50YT15UsfxuXr! zr=quSPSfSXN7^+|ll5+M8uu-KSalR=wzsZ5(K};yx4Y}C(|5$fv#7Is|3mEw@xwi~ zf6uvMy@CCKN=Q#4fZ+5uQYpUiWNh%>KEr&tMEu5!8AW*G=d?9@f~@xVILg?`0|X*c z8P&ve`{x~C+|Sh=EU=RBNl5MoESS58viaMfYROYrLTxe0ewVqe8#ZV}5~x(Gf72=- zg^XFLCJEHx(w)c&t@6cDtI6WD=y^))#po^cbmmW62L-Z!nnb=2AHmJi$dSiGGeys8 z{E;goA-QBsj_psYJ$+j|tByWZj(KI?CV1-m^zIPaN4l#n3<>9aV=u32{YzQ?jaNnm z+7!eEOfFw4qG4Y~cOxD|G&E6Dn20ZgokI&YEq7guZeth(Ww~9AC*VQgQ=dg~AON$8 zjdm1Y8CU2kF+Ixh*g7I1P^)TZ&3Rgo>w2Nav2=A(?*AT|#8<~E%Kwh?BRSlA-cbpV zsaldfWY0Fo=Z0@Jk9aKe2H32hlx@?e89# zIrr31ZC|(HR~ojHf1Ye2UAnri(%nuWH*4{44 zH!G}>NA&CU=9@2LYjF=$ZC0$LX9Dj9!p?jbdWG6R`t)j)<+kINiRab`_6?U6&U0G_ z6C?S{mY7KQBf{;=%ZaTcc}3qk#hImq};4xLl*9TaE(uycj+yINNo^wYLVXxsxd!>B%mXn;dSy@nZL%>EhOH z>JrNlTBv&4JAcS$cbliubXAaS`g#?^Lr)EHeDra0NU(+dRnIXe1lJ+X7@VA-L6<0e1!;)RNAIcg~rgeb{ATR0rNyW02Djz#*-aq=jdo*t^o z+psa*ce8a6y&q_<$<{(svSaL+sy82eYtppzk4_Lx24A@RMC1w7nY@fI)EqsmimnZl zTeMT0wv-`LyBqJPMEOJUADVsn7a?kA0Xa^k+x9e5x9*(=|I~*9JPRTVK8qxmb%}ox zkVl;p=-_*O}2I()Zygb@XLey7)%kvIGIA7P*zJ8mH<6}R}(6iXbLhjT{d z>r6O%95(h;RguFo3`@^Cwwa9f%GcQq3QV^=w-q);3Ey z1mRa)C+K4Wq?e*|r4?8(ln zzXD4@#r70w=0;*CP_}qcJhYkC8g%xc6ZLD+^AWSq7fn#M;;-4fjk-KzrkO^&L--W_Qm` z{0D<(Hvk=Yk_9{CS!V%hsuto?hRFryo3Bt0W86t>|1FHf)}fOqfKy2QyBI%5#NknB z?miH5=E(Jy(nEUBG3F;4^6cBgs*>6qQa~Yg=ZMy?PSwu1-Cc<*9e9smb&Q zjl4|VIuelfJQekO=-S+_df-85c5L1`-zC+!;Y&d$dUJqttsTAv_w)BB!@FXX{9m%4 z8pV)BuMc8_Dses{&)6nhEy@pWuozgcW~;H&wOhiqok!jD0>DaW@8u-G#ihr`^wEZ* zXoVWMby_?>lo&?B9@G*N4&~~}f!3U#drx}j3oLLm&ma0kyb!qn1&u_i&fA6g2Vl8nwpSbtjbN1PLAA1IlwShbi?jpIcTER4-SLf}qpDs`D z4!)9W}7ljxU$}OzV;?+ZTJOy`~L%w=oPftcb4ghRnFkoYWf=r!v-PPRum6$6Bi}b}K zz%;9ba-*Y%sE7o9dlrwoHC<^irzoovu;h~baLPyOz~YT`Ti$9!M7Q#POHT(acB1_& z0mEu}C1k8tn&*DZXvAyPyQ+U^r>1;%6j(;-r@Iq&Qk=b$>+|4FpD)FoTM3=fL4L8h zosRgrm1Nk{aOvexZ(Thl?sg9tf(BvV1V0{KKr33yAS3B@1o-zej&J8kUn-0(b%?u9 z+Jr2K)YC4!lf1oSU|_bqZjx9LbY4UttmB~ z=Tk?2P(5Yvok0`UJEdB<^a2rk%du=*8~g8_l$eKK4ET``uLnvJDtq6yxoj#{kd?js zKkuGjLr=fowOLPI$B!CNrn_Q2(!ogJv%13IGXIQP^+!mzwP|MNQumDj=MmQYL@uVS z?z^z<8Q1T66%o&*4t2DvdX^{Ab){0j6 z`ST6)4v2U5y*ORQl|I(GSYD<%5|how>ORHv^X~WYyWl4o zYpsTZm0$#)OEz!ym zE}Su#Hx3*o-!oyTmQa;#FoaMUvmXEG_$SAMlLMDtB3X#{lA>U?scU~ci}49IF{|00 z5gK828i3^ojNGSGFK)-|tHyeRUP^&lbz9!@NzDpv4G!dBba~Nk6dZwcLMn48^w4OX6<*{%T--J5J-xAIs7s zwbDs&YBHAoDJkG#9@f$J{jcY>)%-mz*J(AHlifXmpU;o+%6;of5Wz^%Qt8S`iJiD$ z1o}{}F;l-2Xvj?1el`2Gj|V7!*OGYxde^GucKVH((3F&C=W-N_Q&sN+c4n;*ov_I# zGMjKoz{k>EWIerPJv{pc&Du7aAHU1Y?49#p*iG@U@9>^EM-u6RIUUQ(HSJp7ZfwJZ-W~ zw-b^QAs|C9?Bgmb(#L2{8Qm~7K^7U&E%kp^!BRt5Qr@M{ySz&;{D8<=)`L+}6;h*u z`R`%AR-iX|X$#$Qe4*R}YH^r!e`tmpw`NYxSl`(U7FM>Q%Y)+n7Z+-(3Z4kti{oFe zT+G7@5_ZlRGyT$xE$DeoH-(CR-e(>j{bT?3pJsO)@};U;n+yT{mp1jsfY(wPEA-j+ z&F%59N6le)l=}1(?gNcc;Mrq1EVt0qep{FG-ZHQ))}u;6n}m)w8t`lpI^PD26QZ4o zSldyRWEeXSD{@KE!EQRl(1dw=&XeYZ44tz%wCz3L3Vx~ZuRB`_p?e*2 zr2zebhpaO(=NN;4F1wlVZ!Q$)`^`b!0UlkTtyAg}Yq}J)1TM;ABFh~CiwKAa#y9NC zSbcG6`;efVV##uUxs{aoA(Ly{XT9g~tNk-qgEJx6$re~S7HD$XAE1GNZuM!_W)y7USPx(~a z+g;Fmw}d0M!!ycVT)xzhj})CW1SjOS1uHaIogCr~Z5iZG*Q zqfGGw(J(e*`>j5Ef#M^8JmzlIs&VC27>hgGl9En}yR_6=-M((wti<8?+_X1mq0-cQ z1}`(8WM+PIatsA{Ny&*0KodE&K)Dw_HlJ3q{nRUYP1=}($njn9WR^zDOa!X7_UdS+XL z7?QW}Wc5t&d|k)+-9_`GdYo&Epe)wY{oYB<4bs`KfOgySfDqF%S9GAvpJu-38uG=V zS@W`f+ud+1mQT*zMos<{T0M6!%XvMF{k3c=N8w&N+xmQTXyM{5hgLbrI!CXSk2 zfckvO;x1X{|d`5|80_};v`LUaF^Q| z8;nZ?T?BcUZ*kUR)uNF{g+{dCGGpA`po4l>BmV-V_gxcJH@R~9wVzrkv77T8!g!z= zIh6?DaO?7ZtCwG1N(NdgS#lS8%LAX_0S9NR$rQ}x=M;0O2;qyP3NUDi_z1-_)W?SkJ?VP&%ab;n z5VJWTSR7J-Pu@US4#BicsV(aJ!MB4Rv0djpld{`7zuP_vH9EBMFc(QbHQaC<4s3*! zV>H!LYxtQq(ff$fBJWRL5EuIa);s%uIK*ZMpA^nUI zJW>Hu_ZW-IXUs?H997o9EFXFD6lT1YLi-~AIM4By6;}lV=*QP*S}xn~9nO9z@Auh$ zLtwfSYLK_<%{`N>?65zy2mQ*o?pdzu-X|flt)xI-y1ono$`I@0RUzES&~mAOPn}n1 zK=%b#{5OH_b_+A!`^liPH&#~y$m|ji4)9{$IER$fzqCz{ZMlnu^rV@ZEWolz@ zl>!tMv4Zz0tsO|lTOM(>S{Pa5;l5FST(3~@u^PXreh`%eQ@R$M&G7ZVbVCvz#{D3v zDiUTOFhp;D^v1u2YO52@C+<0c1b!nVcA3`Q2@C#c{{ClE##_h_V%SY}wD`g;y2}gS z>Wxp~MwQ!QmqXP?n?(z*GA4#1h`SD3XS=UK?34O0sWQT@<>m4VjMebJ(IRt~-oyv7 zFIAlH>R@iO+iweaUo)zpqv~>F+wp}jXfCv=%vLfNDY~-zh~eoa{4)MDl~5ntff4E3 z-_@O#Rd+*ZaGGi-(Qfw42d996762QLoFTFdKKgV|+ti&G5j|_8Lm-gB`4>M;w8YsI z?~21Uw2op#nXzcRoDfX?>=PHp72Julz#tcNbYD{UD+9 zfZkPONbMBhLN2${RPk%d>M*qj*p~#_!Wbo}l>NO=1}FUST^_~W9tbynborLQTVI&2 zY^0yhV+%==p(72)l5eHD!m(m#i>+>3o7(Gj5IHA3MaU>XaI}oJeECeusHCDI6r%ov zp>-NhG#a`Tt$5KL`m%II%3&!|#ot_~AcHfgHVoLYszYm6#2UUh8vgtOM3GZhrrhKa zFgvL*!wCmL9j;$j5(-qWwwiY^>_59t8w zsPxfm4m~k7Kx0%O$Q}HjlE$hs*Cx45=8yqn;fn!UxmTdxsp#`(aM~P; z@K|~$r+u?Zl*?}VwAw;J5x5vQXPIg}BZMR5@BDm~N%PUmJEv2=`f=cBVf;5h4Ra{X zKg_6KpL-wJI;B6f)`>1`@>?wU{a{KQI%w~BBQDo%AQqyJGr;p>x91iix-4UOibw>OOa-F5d62{z!`v5DK(^h zv1QSL&uaMIyQnC4s`$*z!4SOLxOjL>tgKt@o~ z7wq@%@$oz8BN^#I)jbhgp}E?L8lS&>32O31IQ^ERaGbWv+pfCmVS}tpSwdF9JYgX2 z=aB$n>1Z0^7%*d(gq$3^Wu+%R<)Jw~#ODAHOoN^AIUGoLXv5>uslZJez-|FES$q2X z&891?(DeMyR$rtFM6#>pqAl!uh+Lj7N4|e=KA0|Q1Fd>bz*B?P&gTL2{xpB;|EhL| zy=?E#wSX+?^R(K)Vo&(tMz{PAZCj8Vs5|GT8QW=_(KcVk4F4nTRn@NtY5Rgzb^r%*aBk)GBDAUgodUM2x^D4EiId~@_W>RFhXnSr%&qlFFP(-ul$pkQD? zzqq)FC~U5%xD(#~_}Q}_zxP1?hWe-h$>2KDgT6MQ_9*7hK-%*By-DfG3G>S5VaBEA zx-0}jc3-y#l1LIDJ^JmurjB|O(+>d48YQEwFckoZI6ouHN5=XfcX0cHt9zZVUY24{ z$A&zc4^ToXGY^FByjQf&fxI5x1V$8*>FKmUylPm_&Bz!4Y&9O(&q);5Ea8Kxq#=E) z)8;RLpt#WsZZg;4N$Y#`yB{LW5Z?ZZW(9+gP7GXkYlG+E#&jhoaG=Q3EHS8j%+mrK z1eBDNh`?M^6Yx~tJOBQ>REu6bQ^M0!ZvHsat2Yf=+5V=Nd5jbCQb_)c_1qGEaeJcR z5&~!R`?yiY4v70Sb9VFitn1IiZdVj6+Dh+?-|e&vr&=_Mw#@ zx|w}Scoa*}{?>f@tK}`)TN}#&=<3ipj3Y|KTNxW29UWZr{CXY6jd$@8f?0};&E}U+1GobyV!h%9<1&2pH44Ch zYg)T=8@w>|^_$NYcb4mKn^iAPUy2tuOVw~O6SXb}MN2P~6STm>GV|I#aQf;efQ^U# z3P`UF!f(<64-X??>QV_!S7s}>7%(~ATSOzI6(RBWztZnCv$QPtIXjqs0GtoLW@m>; zU!Hz->u(Ds0Ar7*%=-^k`+5cki|G!*O!wO)BrRY@Hmr~rEZ)7nJ$?GWYpu+l_Y%o$ zSaL;O(9s(&FVWL-TIav}5lm>Xm74H95~eR{{f_z3b0gcJvRqAcWPop?7!>TA!BD(E z1jfhwdzb8c9^xL>w4c@=*$9j5%T0E@@B#m`();oL1dY!P4e6*M)J=00R=2IJtYqcn z;y!+C0};^k=(qfznOgn~arZT_3s^)%l7Sfm#)5-L&B{l`8ZevSETV>o}u{sgK%OadW)pY?&7ykUwyz4Tj8)QRP1rZn@-Q$1y^3^ z896tq+#yueOWEuvi<4O>4lIf?I@Ft#fNr(9YHo|M@?nTY3*>3u#Dzag0XG`{#JIQu z-yaF5_$nV;?CT4>SI`|=u_*R->UW)BMb)b6>K$OLv(l?qq%vWIi|Y`7RxYl>B z@0-%n(t{F*FY@#ADful3cbgDALTN>A{lN048~AYyo$fEAi-54|`6nmo?FrOI$nSI! zr?~0-E$|?D{PHEqZ8qfN4!w&V z$m{xs=pE|5LrZwqP!;T+<6!g)v@Kic=@(g2D?2^)4`&oMDFkWjkJcay#dEGN90V$8 zZf@TUKfcRY%%&yyI0qyZhUD#hgoYGM%!rczMdHXh&%b%WrMcg@PjRNFpj}B?d41+U zhRjZ3#;_*!P;a5?pr5Z)&X`?T-qXY5&~VZXd#LS9U7Y;F;7}fN9ddiLK8cuvERMCP z?&nt3>_dvG{_w(%1;-sR)_dfj?R6ZU7Mom*Z!f2Ff0ia`{5eQe{(gp;3umf6_B1PZ zZoBd~&3f1|_|ymKF=#Nj$~pb65Y}Y6>TP1-dV5nbYdVmTS^fSu`&KAVGDsa%=P&*;tl#q?gh@i^ z;DOEfET*iL)*mQ`=*a+6WN)S0*xR2 zworgHmmgL+wC^l`5qr|>@J5(WH7uosYz|akod2~;Q!9h=F^ZG@utLW|U7|KS55GdX z?8*^!g%%ylf)3t|H%{q%&@ut9=BF?P5My1lI-1RJV;HX_V@mXStKX0Jky)u%*#=0@ z1tiQr(H?Jh(_w6y7+k2Db--2JyI!zLq5lFuR*5qP!v3q59sK^1G5}ua`P|d+@R;n$ z_U9&^B5gjx;AZ}JXFS|dKuH3mjws@3yV_T(OzL(((r{Id)kA5q27OJLQsmTu_;0OU zF`R^~?BvmGLfp*&|L46-hEbqh8ir2e7Z_U7S_eUIpRt37ub_(uL#t#M@3$o-0P(tj z=)WLO_LPHHI#;(rOEfqCDNw7wvwnvjfgimDcPzPm`_3{HBQ4Oi*4!s8v7=hC>fEz* zYQsFymIuOZUDvgDqnxo&LgjdzM-j1C%7yH~ERYt45}DTN45&B*QMmrwVsC5WV|`z+ z+y?&RSXd1MoqzwVSkj+ABPj_FqMS56x0`^+UCeXQcLZJrkDk|vNt~DgF_T)N*}km~ zIZ9w&jRUof-X$G+hWrS4UgnFrw*B*^?`vuBySa;uTRWeS+i{9&fp)Yn$ZZg&tWB_k&5sM>56vz_p0 zMQXepDGcNdN_JDn4%GpnGz9Dgj+i9m3tfP)o#Rf^>3y}rjC$JLJ*v0!=CeojFFcoFYwp1{hp-*(sXu2mX|kgbywd(p(?pOyNO5Mn>rTS z$=y7lAsCMpyJaI($Nj8*DR1X(oQ!G(mVxxGeEiS5q7Da~rOUhhfC`ToDfK%a+@Dnr zxN8@feTj2vAZY&Kj4hitBpU0(K3fe(zwa^MhCdIj8`V!2u@#`jKV!R&)mN%O^nd+< z^nCALT*M;g2j)L$?8fZ0^ZOp1RWyq05rg;+C+)dG_(1H>!mqK4PC{m~KEuSGKFS-Z z>`26)^Bpqqyt#_>$ePCSW!FS;Qrf3%M$MI%qMVEI&I63X-=)*{W(FB47|rhka++CA z>z1X_*c~lofG%*VJ$X0 zz-F-9?N?9cbb7Ofq)7C~(~uT9lyunYIv@F=zc@Ov&Q{O1LA<|N+)=+rRRgPioAqxU_iq7VH!FJqHN3_Aa~-ddsfNrY*)uvKhn zT0ZTgZ%|(PMv;{Gg?8(3|1C7I-5rMTW~pWci?x-WZTDYmd8LEcNWVkRsrZ)t4$pq5 zZ29J|)XBOA;0?8Z(*+HR(hWKX^(O(C)AUvR4NCO5#~;p%4Zub?j{ooUasW;7r6$jl zANdYsXzlS~&by`F&u%ImJDLy309l*L3;h9MD{Zt8>{G|~z+Y*L>ErmL)@?iB(D)Y%j(_pqJ(0Cn{G&zP!V}G7C~h6I(tld3_D+so{L<>*+|z;w2l+R?9!jytRy*Nw_wVRN1f-#m~YkVR*R^MWqRf3uO0Y4%_02K|dce`x%W3FEPpUA@< zOXoipXr0wGLv%7bjI8%Nt3w4b0iL;BMoXVo_pbj72O4%|)JhYcVd(REcxMHS0_cN23>T@pIO5=cH=F-2xoPD1#<4KQQgQ$cV$dUq-mMmY zc7MQX9v#bReNNbJG(PQ+VWf3 z)RZZe_I!4u@^)>8M;>2L%~sMlY;e}3hNh-cV_+Py%ls{pP%Mqa72ZW)0=74@266D7 zMN1z)6R@LpxxIMoz@RyKg#7XSL!O_`03Gs&m~t%6$h)sLbh%dnr$t&0 zw)&jYn6lKE)#ife7UFT<4;QH7kIylf!)UlDV0{S)6Iu10qs1YffNF-J5X2o^L~E<>ngy& z7OS9ks2XlLMm*-~VqN+k8{6$WcVvx?nfj7=Ejy#BB#wT`=y@!LqJIAD>^!ft`TI~c z*uDw`t4#RxPQaRTN3E1`XpIOKCU15*xmB0{p_(1(A`|k3IrVw0tyjL#jl&FpjJ0Wp zSFYB56^mcMJ#us<>H;k;v`gCxgW?J!&jO=0nbI|!!%A+nI+cKQbAX2k4LoERu?w!D z{{`3LpHZSl(|{GP=ko-{4h5#FDp1{&mmWX84iHkN4+z`$TuGV52|;Jvd#5&hIaZn; z)_k>iP7G}7Rsoj7C?%B%Znl<`^QiG(JFJj!>(qzWH)ACM7N59x5~>;mcD% zX>_zI5*R2GprMZq2cXaIVtsLDcwgrAMJojNf)hD5T{<~QFg8WkLUsE)HY1>H^kgWn z6&73m=4r@?EwG_~$C+`lI{|MH_9qau;m(ohh)+$%+H{?D zmHT#LHgN8038A>N0(N1A>L%C_)(0y+M?14=iafP9V!PVEz51FgY){|X+Uj$KJfZbm ziEHBd%?7M)QHv&Sd|(;AH+EjK=OGE06SC{wgFvSsNy%BrvjT4K^e%$`T5iDFr&;jdfwdZhdr^Ur_124fny% z5H;ECl3xPGRWN>bahQ)AEU3Z4zK11)3#mz=d|XxPHfEXQo!F_~qXuZ@+Qx zgrK4PB16Bb1H0oRb({{(jvKfqz*AznWb&3!sVz@$cDgb#K7N9_r%E|%K&h_O0^2;k z6)%`-%8t_Bfl(q&gh9aUr=ghM>b z;__}53T-4|_ih>+T|8>r;ae49j34@rQ&j zH^2d|lt|{P_X8^@h*Jrinje#syMg_w$JuHUIxtE8X;FSwBlb7!c2?f=$2%FSX9(!? zGVFw77UN{KskeqL5f$NmClMVc#xpgJXk2!c zqHZ)Gg?!@((pG6@C<&gxBB!Bs!;7w?dvdghg8Qv#@tt#e>aH#kf5r+ZsHmvY9XqLR z+_-^eR6bRMJcjz}W&Dk7%ijP%jpUsuFY=o~&KEJ}RZs`0A=sQJ_Gcq+674yf*FS79c&ky8>$9WBu{QYi?QdqnBx{r; z1JIdpH>dgtZGpWYm^obdcvI|?M)z`1^Bg!=g7cp^>*hJ~T^dKI1)~r-0iGyh%CM3s zk~pNMj?TOG#Vl~VJ1Ci=Y)P4izkt9~)I8r?F)$KA7_qW^TZ&awU8TL=K{^mPZrgUJMbRkd&ciCn=lNIhkkQ)(>d+skx2-V+t=R(XOEbdh3r43&(zqz`D);BSHdlvz@8Z2Cuz zLr+J+shl-f!$bZ(?m~xK0Fbclax-08_=K67TKgH;y)26Femv>tU)VR={q%gRa^mf# zSzP13*W!@yVp4ck?&!?8FGjRC$rrKn>xdEO5Bj!Bi6ei^K$oG3N9OOD^vbqix)a4g zO{jlo9NAuD{)@Yb=lfJ2XTjPgG5O&{A~P3xjk%9zvDCv#H|+Z$77N9-RzwocEsFvd zI!|-Kl|+q^2dp6xM&70g&6=5I56gBN;>-T-ONaS!)Lv1=0guj1-|J6~59k`qI1foS@%$~5vR~Cm@YtPivzBp|Sy9Zz zZ3&A?ypD#!7*XhonL%QZISb(X@N<1=~)RV#`~&>-ACQI&2>@Y^JWM zd3X*h;WzCh1kIV?tLAYy;8$DvzD~J*r3y%X!r*WUss5#gj*zqP{iRpDOSlfF0LR@v zY<^e+OIsD0H4y6vJvh$}bcrT{yK2L~oc8hdcin1kl44p8VAPM17$iI%7(+)63)W)%YPR~2y-rh9Edj|wh1q;X<7v7N$AM>J#o<%$(a_^u+x7@iW6qfF~8qzc%xs zCKX7@9EW~+R}}U?J{Pj(toE(_^foE!_;+iA<0Ye5S2&<^%UIOttwm(9_0!Lj+$eIta999C%@o_4%l> zZNYyH)_v@7Q1Hu6OGYpB`f`Eaj?!}*8!l918tiHmg#wHphyeY2F#ds^gTrLCH=#d; zKU_uXEM#Q`SSTS~4U_(^p)z^;lJJXspR(Ta?)>hDK;~!TzkN`rK=^E>_VWjrp3jO|nP) zaOj8Y10P?OJB1Gni5qYM#|{1Sd;cQTvxfgPp$uDuG0R@E^YX@4&v`|mZe_JEX}64* zi!1tvX%`qwki_qI;lZH3p_`MFBSL!|*eBTV3(osIz zN8t<)^7Bi>!ag3IngVA>80-M}ra-N*%L{T_HW{**{nw?gj5Z{0)CwKEZQxG>7PI`03|wN6U~YtaKbjMm95b%Qw{k35nkh{#^8YN=;*MSDhtie=P)rb zQBYE{g{#H<`CEZ1j4U10)Yu-|zL^uF&)>SRG-$MJpv^i1U3O3#quI-`y?}a)_4e{*PdI&*=w}Iv@u85^j~RkD z#Ij(H7C3gBuf*%$o@hSHrP{GeH#bn!J}yRhXX1BBW468uzeECBKC9gSyP#GWd9_`< z);VuyHaISNs*4nDTHdd~vsI%RWesP&O>-w|;O(L7ckZB(?bVFhG!Nr7F^&xSLh@vR z3OeEUyVG2G>T|zCbuXqYKV9tIeQM5vMqZz>XBx`{d?fLx`Lf3Rzt#RGvlS9o2xk5~ zFKei&=KpSF5vgVjt?TsP{pGRY)I{M((;R;IM2wGOx z=)BbVKWL~E35On;-btV9Mam&tVAUf7kxi^HHlh<(ZSL^~IMxhe79R-8G5Hu-g2I(| z()_(_{JX`07zCeL1 zRDU)$bXhWiULW%VM+R{>Yrxnd+};=H%BrHyQ2uLHpZ~=HX|q%<*)<1h-sPMr;_VYJ z0>VkxwQQq6u9yA$S{#Gs1M_F(C`%>8k6965=2?R+`-}YQf zxj{txjc2CwQ?r|8Kw7=cx?2<(t!=;ZxRra0`q#~p_@jA3On|7+_y_M3w;Csq{~41Ws~MQnCn0^PXcUER zkx_QgEYD{tX6K$1+8+wtaRBa$S|_pW2@De7DH=bfjeqLRJit#+6JDOF=<%_clO4z% z0P4ZcZ~4=<4M5AjwedAlLQ%iwJ%^=e;YBB*Bf5_36E$(_>i<3Kp z)+~9`cQE8b@_A8#3C)F1^;yG+2;fyBCCzw4N9Kd7f{C{;{G0HkXD}!&9{EnEEikxz zQ%AKv6z-zViB#zJS~YN@25gcS=^}BZrF>;&Wgt+p2?&f%tfJ0f(5)`3^x;gpbYV|f zP5Ft_b+~paY_DeN-Rg;exJ(abC$j0_G4(OcU!kkqf_kyy{!q;pp~{eG5@hpWobW@Fk3{r3f?hU$7pa#=bbF z?DuN(k=$bzxukL)(7k>+Zd}0Jq>1NAHji$V&0;cuIV6D#MJhEInxP1$f}}`zJ{%hx zYXBKK3S4@wsOTs{i(<3U0|koHbt3@vd$g|DQ`DcM^oC|m;#}#YOgtd@lxu7s zl=@iXMOEGTA<`Hjr~3{VnWMM74Rj8#SWetmGJS5|&UYWVDDTAJO$gxm`mJ(cz_}wV<%!>(BGYI}Qi4-sCB9fjXjG7ZPWbnj^t}D8n zSOgT9ee{3$6T@b+4(&v!G=K$|QPI)q*CRivDK8Ey^1_Y(<}bskh1@!QtI~#pzy#dI z#bxFFzC8&A?K-S1H6#7wrvHs4oR>7uDXb7;g0vrI(xfF-tRCJms+#oMyadQ;9_=SO3lG0Ut z5kWJsj>$7gwGu=n068Xip~Oc8X*(vScZBS)_!PFV_ThcF8iOy zP_PZNR37Lz6pA{p@wxBlZMh+MpwLR|uJIyW-`9Xp1wIw5eFTZl9Y>r%gD}jUPgC;V z`~A0;Z@vtZy}-1sul)I`bve}>&z!2P#xuCxvdI%n%1NG}z-?x#54WC`nBfFoDw%R< zwf`}LitnoK9rRHO3Tkb+nG`p@+lb=rJSdr0%Zbzh8uH4MKR6UCJA6BjwUBqShl0rr zQxG2;@gG1;ja=X3H z)S#2}mq49d8go0JR#j!l?r<6Koe~nwsSm3bDhRd1Gp=mi1`G~RqO}d*$n!4(ZtbEc zvnWso?FKQ;^CjOCWBd8J>d>Cc0?bMD$+k{GJJH~}bq0AjjRc6XxJRh5EnQ`&nOjk2W zXe9(m=4oyr=+4ic>e*xGvrzG!U{U&Z z1wz{S7Q%G_DPddw38ehkH(HWX*$YpM9#74VuYE@IX$yPFlccXq{zMJ_9G@(nXfdas zu>3rc*h7ITve`XllwrnO-pLBfeZ9RXa_6Lt5Lk;{S&xIYs_p2&P??KM#O}|I%0a>W zitc*U`c!C7tu<%8Izvj=H1OP1kxE~W@rilV{KznAEZc_X+czSIiM7NDJL042hgIGZ zx6fH0_VSAR%=4&TC|GrC&|cJ3z!?)n(ij*9eGxF5QD@xY)Y2^|yL0Te&C?%Y{{4g36$u|WMav>?dx z(kpCe!tZ7a;FNfntlU0@Uij*1k9<(q>mXJvKeKyA-dB}4YF7;{jNYW~3u$@=EFdRV z>g}%vfQWDqlUVhEw-6dQBosUr{D8a?^md(oRq=!gKTWglnk&N&+GPJAOz3fP12`La zWnx%1)L(UJB(+^(%V<~C?rd*}6BlE<6TN7rAaAO3)=g_STC((plxc$(g!K#6903`S z0RMU5H6o{awPrc64*JP)`f)@pKkaUx4H;jx4ox=%^_+w7zBjg1qsOeN8J*hH>hxIeP6%~Oq!;VwTLTfNEDf7b+bKCo^uF&YH(Ne~X3JoP!hipe- zffT96`yh9vza#_;$Z)Ye;8;bQm{uQhjVAqufX|eznnR^~#y$G!iJAAC zYKVS0&fBBe(hJ3Iee9?!Vr>0}^&bYYQ|vY#1Imk|zlqeYnZ^}b*KqU6oOdni59rI5 z>J1R`N=Kc_92(d~Ul^3D*V4}{#F3P}Q61W|UwgJamFlMETnm&wsCXic#(Awj) zc&NRt^z=`aLR9&w@1gb8vtKVyZaw*8e5B6@*GNA5Q0upoIlhWK2gi^0Q|koP3iR0`ki}O!MO@{aQyMd=Mtq_pXYyu`IbDU zNK@lpFA1B^3@~Mw_kCd{)bI1lN9tG#H_Co8_3x#CR;kiBOOjq22=s$sdf^UC74-|y zA5#JuDqhs&AfhrdiNBfTE?+Y3_2XF|g_Kwq)fGs{63H3tPPbPLffiJ%Cy2S1{_HtNQ zB@Jy=SKh?HU)@docap)ABl9Fp1df z04~u612m&4AGA%FUq2rOett_BEy@7`NKJp<=-2~2As}oVoiG=y1Ef-vpCFlb4qCcU z7SRc0GPsm=I+9?4o%8F0Kd;(pE6#$ODIPB4`9WVq(~&BeXwt-^lA1rvRW44Rb#?as z>hi9AP(^IkoA{}?`k(1U0j7|UfM1;@*EB?(JE%klm2fwlE=658MP1qdt|~&xuvXo^ z`K9KltEj-okVz>C_Z8=#SY2mz6;D^;)ED!hYa-<;2>R}%t(OvR&+TKjGd5tun=9-* zxm(rq_tT_;-vM8(w^b$U;%yuCOf#tn8PZkf<* znP*6b*3nORz>ZPf5rrreL8lN%27(R!&O&#auQD?wy_a^IVR>E6=bM}i>L^=yK!8#L zD+|cS29CHb+~=$^RF(&s+)V)Zr>DJ)0tZl5_Q!P?Xir@uSAiEd2?hPea^9vghTC@EyXJIHy^h?%{KmZ4mn>fOpP7*d?_H zobph?K@O13l)${a8+n;t`6YeVhVgN%I}q6Nxi+%KbdN553jPA5MjI%1%?v}{ui3qF z0g#0HnBBqb&)cP1TunSgC)Qx!FDxROB!9 z6uM&@7T~bq_;Gi$RL8iDU=N*==t|8@X|39az-i{Z~n)`!c z03q)gS8OhPLUUnLB0ar+HjOe0)MaS&CBr@d+NkU-SsDM^a6sPFC;qUEdQCm^3B8j)_fZ1X_TyPoEAq z`(HIG7lB#2OHT_?Gai6+uN^e)xj40+=HE?-iHVsktiqI%2TQ|yZLWPt*AH7~{k#SQ z^P$Uz#0g9Lp8)ORNM0Y@>}zp*1wWSpuFJiC=P9W~uz_Dy;QIW~cY-ho^PC}Fx)>O^ zq8AQro$pzIc?ocY8@2Ww?&bbBF+Z!LzODnXfzUJcQ@pZRWIzBKnzGcH**rOll?V`E z);#9$iKM2%30PC7Z4El^F+r~73l*=fqg<623|<{a%u;5%v#C@$RC-r1c#)Uy%&M+p z&FUdb;UGKa!dCmV(+Qp=F3~rL;lAW58CWpNe?IMgPnKqAn3IgD6r(-u__^itvvY}} z9_gt^3#>Ivh>rJ1tA`&_bq=y8;-nMnSb~faV72%E>Gz)HMe#NzQy6#zf;!DGY4~13 zV&am6$bEKpCJBj|iPh_fw59%79o?SWJ8Ed$Cv3#p%?ZWx(C{Qr*y)|^?855$&6Z2t zXzD#8o+~W*)%(_#eOO?TukXy;q;Lw0;$`@}Fqjh{8$Ri|H98l)o8r*DE~LlPyFQrX z(tGl0AU*PxzJ5LLH$&+sVZ`mcJcERQf?i#fOj!t(j^-TRxK5#ixzX&jF(1cWyUxf` zCtqvbz(b}@8+hvGCgkW?WL;E%%wf<%J>+59JDL=S$M34o%;0QbEEpPKh<|{c8=`PR zj|O_7L>n{h)`y8}yyl**PUB=H?bch(QS-5WMKG)Rd^ry!t$q=dAB3R17AbV`XdNOwphsWgb7NOun1 z4TAK*(A_cgaQ1-yzO%k{{yX!}t82Z>XFt#0`;P0ruKVtLsfPG;QgeA1jv5>XzF-52 zkCBmxef76ql*0y+?iP`5c-kNJ8?CWIs=4a-PORs(-;MIpROE!Be ze(6+~IzUqMB%=4IZ*dpe?U;z8ngmBTKm;Oqg287 zH}LUkvaYTj$$0b!NB-2jlTgr-@R@$uiPZtP{8~fX)PTGlGW<>~W4|4{9juAKK)LPD zi>lrx&|-}K+=B%Kb!ZW{$a>~85ynoLalXQ-0JeYy(EoHB;jr`VeGaGzLag$P8^6*E z{r&!^t}=xgpjRhfbzTQ*P13*_UUE=C)|DF`2^&s_48Q1!pV&~&I0v47ea9)Uvj&LmV$E_jc4K~ zvlos_+03tt&ghO0inhKp?WMRRpsKqKNlJ2U4vo%gySdRkB$7|$`$J6{730PGu5V)Lmk?#^+ot3|1!O9Gm{ zsIv=0bxQ!<@kx!&%evFxn#`28*Y8reKjP z%lA(%OB~^|uil<8w8Mu6U5PQDuGAhe4PxFdLi>tUbfhz4ukC1Wkz;nIZmo^~Jy81< z2ct~vG+r&H4Ek!V!cQ2S!8eFQE#hwUp0k)zO8nzxm}@C7AYb{G(t8#|jy;bF*X7=63P3bIYtC-i;xQFp5S$*c?yBi=7MN9_836MpCHVM zbgZoQREB&Hov)f=<)dG8*g^FW#8LUHQ^~jk*>Bm27{uL_&mLC5nsN&2y56d4x8|ys zD6Y@|CbZc|ZkCHh#bgzbARf>765r$EGWqlCRZkp`ub-b^HqXh)3CyOQ&JE1yg`f%p zvAQ1d+z(x^;={v^-%;tJ?{3ge!w}qT?5*<4)h;qa@qL26^mfr@TE2v_dL)^qn_Jijm-0LT1`+2c zF}SnOWGcFr>u)QDbsBUrPTybUWja4mra;CWL>^&VoJu{mq@wzj+mZK3*rIQrIN zzAelE1Tt?6+}#w<2NqE*OCZX2JDv>yv5oC^?Gdkj6Q+PA3^3x*W`f!C86Q3jJK0~x z071GSx5dPxrQSr<#0oal-t9pvVVvS)7ie4-9znJyj|ED?)}gxn_Syx_KUox%~%qK55ZvCh`agJgTen@!jG0sDY5&~U)-Op`LqWd#$++o*_N2Kn=7?u ziE#^Z(+V^EPw}X7f7Mjsk%-zZZHATTVVsu?t_7O@Lq?9GQ|I^ixMp}reS3}K>lX%k zWz4|OpT%bn>yd|CphrOS&TMnegqyp2P)LZ#;_jzUpK1M9VvVxq~%t8=gTFBh>XjV#}E>4aVtuCxwy+X@v*#Utc+yiJnU}o0G^!{fsb_7QKKJXl?nl&i4;dc@(8oU2 za#WHzd;NZ$bY)88iq^As2M|3j(~FCv!1@8(=SYt?K6@gTQ~M=o1EH_4Prx9a#FpaZ z6BkDbL2Y95>`anfUluhySDmlgVY4gyZ4RY~0|(&PvOaoL`k(`gQplPyEiElqqwM8% zSC~Il$}jGlea_c6olve5-{DtmmW_BA2t9-KW+0-u6MLpPi*)QNVGCd1M7@5;25sq^ z4t+O`clQ_!tL(Up z6LI9k!ot$BAASqYaeKH4IM8=lS)+h#8jQ*A>4;<=ue4#VtE&S|5@zP-rJS6O@s@+b z!dRG@F}#2vJ$vV98Sn$L+meE(EZZ$BRBJgOoYI})URCdseDo=4IYc{xOUZI&bQ^!> zDhN&WWg~w-e6c^{g%gA)bh141Gb4AfvvEVYI7IA@g0(%gKS#qRDXi^EK?noKg>pL4jSv zd#i?o(Ql&tL*y_5Y&enoPcu9t)MiFXfP|`}pH|#0?pX-=?#XiMy?Rn7jdgaDZoye+n0!IX$&1){pX<_g z=`wq)DmtB5)XN?20cm1YVqNmaDa5?L5`~>DL^{&rb!hd(s3`NHD4zc`p%^DdPJ!e4 zRiVao27u}3J%CFT6cjXDv)^|%Y*STLmGSfEEd~Z+$y9Oo!f|sH^%&L8#Cl_lCn`D` zPzFpOl#kxu1cobDv*I)I;tZqE0ZeAa$In5BzurAOY#mj#@<3UIh0!V)XPxK{i4ErHZff0-~Ifo*`!y-QV_+L1>8Tiyy447fKTMK5cvYtx*#w-e0d;E z>in?4lLfRd2;r>8^%@xXFTWO{u~mDd!^F%CZsJVc*;YDG#9SF^#bjX~OPCM}!$+~N zAeNQ0*sLI02hAVWkp5SJ#BVkCkNo|XPG4(JT+s>>@(#i_*W=w2xnnXSGN=hzX^MNk z-!LwC+;e6Y4n}k0dDZteWr*Wx@n?`(eE0oup770p1C}QA?79J{I0I&pL^hXwm;M;4P*xYN-zIt z(tu@=+E|^t2&!QLFjXz>?R@WAaKSZX2Fj|Ow%VO0e6>84pYrjja$frLusHypG``E4 zW?#QJf-ip-*+Q9XG`+c&pqjldc6&Qtl%E}3q2&E~(CpA_AsJz5V(xz*|`xBB`WZ)mCmCYYr6 z?bokBuvy^v;o;%!I$Y7i=CDr4PI|_8eU%U%KHb*({OVP?^G2|-i|0+}O*Psnqg7Mb z&&Y^u<=DraO9Rz&h>B*dJ>GiOtIVPT9iC)^B8?9w-o z#Fplqr=_&uc)!nUpv!+)ri$kZH@$EYej46Q+I2ir_tMxBu*N?Or{-D-4|@Mj zDllbyp#7z1oIl{w@{FsMs9(H*StE2NMf_;sLFpIAkQ^fx2etq^xlS(o2+a>{1*K8v zgD=7QI=OQ0R%8qgsi??$#AC#swZJvY)#c?^rbBZAO24~4Rm&UEIJh`6JilP5ym5nj z+*}&&E=Z!P(4Mhq(n`~XuQw{Hm__63J%PQn!=t{?h`*x2y2CyHS6B3j+U4XNu?u3p6ABh~SE>*bU869mII zsQ9eu#juU}B0)>41B;4xd%IcD)Y1^^$9la4YDn5K{G7>j5f^lrWi(^Wm(i~40`?Ff zCZJ4*bOyb!ift%`U~NameK`6IXr;N9uWI);HV3y5%c-h*!pO1O$-Wa!N3)tCpqp`Q zv`e>dvt#i>Uzq~{u2h$52T;~m+{FYB6Temthn&$3>y6~nKzFStbg}Wqv zKiLO_llsvLDIBJPTK|aMd7g1|)WdIA;0x3cN{BkR$r_O!)KWheCqN^a2D6+{zYqV^ z(~&NWIUFHpu~YpZ?15-aEq>Tq0j=Qd<~=9Nog7(--6MO7nr=XT9w^KdEITl9G@PCF zQu{wy?fS9+29O)&jJ_$uA)=RV;UB#vWN2NBm-quub`lp3BWy2s(P=;O!|RvY7uR_R zTC1X-sxyE2M)K;987Z2nMJZ=rr(WnhqkmG)NYAh*lz!`lGc;Et_Vv5v)P0A&;gNJm zX(;YYRtS_Q!y+b@9V5Lss>!OJWqUJz>}c!okp_ofD1*`hzv}#GRf!{h%+D+iVvl1s zb2l9B2Ep6U#R%LB&`Me-hp&P>nTP+<&N&v#=HAIptNp#DSQ{EkR4b{Il2kUHyT2!Y z3_k!ciQ8-8aQBjEA6^_|QZ2z;e#daj@cM8^jQh=tOqagIo$m95N%8TJH~`V6iUtL; z7qpDjRH?2g45=)Aex9GU#sVwbs!>gj)l4dRV4bzusJ1>}v3sfwUt}Z!T(z$&G4! zPY;X}4%_MGY`wL1aheg-CF5_k<^88DW%PIQOwIDQ;hWo68UZFId(emnWzGX-=q8gZ zz&u=-f`%-$xG@7g?G9sXDKz8Nc5U^EjCcW;NQX}{6(#nuS}%;hnr@WXEUfn(;)8{M z^OG%2tLXi;97-abr3T6G+f|8$ozXmJPM&ZbQy-Y6j5fxkxR1iN_bj?5W6}i$h+@^u zr~gX#*8X?Sgb!NlxSZZ?l8$LRfEZ=Dsw6dC&XB??_ANV*RIjF(BTF_QX0P|MCtlcx z&Zg}P{}vYR2pM*MvoX>7JAl5a&W-}&-Q3TFjC@hp+U{D#YibMQ6e`Ac==+qc`$YD+ zz3wu;-p1>j*+z9&=~BY~+Q`~}Yf^8FHcMRyxzL4Jt2C*LK0c6r>P`dSt0js}bk+>t zJ1zFz=;Xj|_#j}TU$6wTRxz7s$9AoHYOSggwLf9DP`Aq}lpH4|6?C@l>nEQy_RB;@ zPHf(xF><)jfOF&Y#!KFuGdHQUdFO%s8#2^OWw)+Y&;tFp<9~|(%)QxCcOi!EI~WLn z2CK^!T9ca^J*?ZDTv|gfHx=qWg<%^o|)?zV5w`NsweNzY!DPx7}`6vB@L*e}efBvRUad zTnP6@&^zXy!)?-8ipC)mv0ea9PjluyUyK=xFI&60oi8r0UxnfIi%~b9elR!-;}#y_ zFNQPM>hA7Nk5!{R<6iU%8aczeHpCM09hF7XoC?$;6*Ql7edu%>@|`n@tf5+%vdv^O zSK^`$y#Kv);X%~LrHzE<2Xx0_~8m9gy6&wDrbFe|%L zKW%6aZ+fH+?7FSkrlDVVj68Y!zgPFtr!?=I=-JRNIhpMst_+)>HI`xjX`j;e%z~@Q zIE#VrjakzMe}MBs4xP{xHbm^!(<)OZn!eRr0j*k|h$Q-eUO z*is-aEBPmH#!1BUGQs?Ai=AUZk@%DOI}rc!u(=Tu3#u_;^ysWDDXsM4TP7ajK)aSy zxJ&b>DC)cmDb2CFRNpmyq~TgI1O}J&PG~-W*Dx# zA-g5<&X%@Hee3j>&~QPR<&9+z*%7<`*{*dKGQX<=3FHNqxeJAd8%gk>n1weF_X5$1E8+3V+4bk@3;h=l!1YbG6m`bWZ?F%l zzA3W@o##vYhA2lrXr)gOA9-4cCbbi8Ti&fGjf&ILolcsL-NMtaKRe!ApfeOlP%dg# zpzDQ&G?UZd3$U|>kVOyQP{C)-A&hRd-7`xh<51~&;;qJRlStUR}InLZlvUcrSTHEgE;Z7Zg{-=-kk2G*hqa_#^6nC)}eo@;h@)&56+x zLjtiE9x1ctXG4u;Q_%2n^Naht^+8zg>iNl##hYr_$IryGc{!)I7}hSKpY4~Hqc7$z zU+wI+>ruvGpa)hTk~95OXkM6q-Tfux{6@1^DPcr4HjJ}jr!;w|BWsdfPJi;ne{1TN zNfDToE))j|*a8yUFwi(D&@M`>5(3FkmX&_;29%pL{;f>$PNrzUrTGPM>gEMO=4^{! z(7r}$`$I9yv}ZE-R= zoKk*=l=Y_FrF#lh71Q+GFE6^(=84hSv9Ek0s%lIGP#hO6G?fcmpR3REhv?s7l6bAG z-XtP2Jv)`Wt-Qs7qxXJ44K{qnDJ=bQ$JX9Hy=JhrHr0G~ax-Poz>0d>Um|?dYy5n& zB%)iuigmuIy>J_bMQ+8 zq_;ZnEnSoa1mPZ}sdihtu=RX9TDVe{%RZ>Y}0CQ}9)zu|Y{i_TF)_*KX$LR$7*M$v{g&z}f=$@LE1+VWZJ z2niFSajtqFXa=U&01!7VrMMP8N1hfjl{LL0nw0P^yZqF%IlLJprQbj}Fe_TPGJjRm zATgyp*t&9=(g}9~J2$e<2bB)gox4L?j@zy6`V*@PH$SQM63%ZbYj{u{dDMIF61b3%sK|hw+7Eiujf7TtMSl{7x6%e#en)kqPB@30fM;&UvvI}c_ z*AK(H$&lipIn8R@Bl_fu=v&Ze2m?N`(n^ofg~pp+*1m^DCH#3_y)Q&{HI?!26^W?Z zafkEc>}U54i}s|Ze_Eu(CNQIDWmi35{c{-`Yr;8M=$%BxcTc;F8X~7g`TGc_Fvb$A zSFHBosO=d9#@Qj~y`ddZhCe9Kfc&IKn;K6)a_dx^xc28$Nk2!k>z`=wsjGAOy;qbM0mgcofknzC>I zwM){YXaU}i*ho49s&O9j9gcQ4MyOx!i@hB5>00&H42l>G>&0)k;g0!xyGc9;imlx&69dOmx$>)0B|CT8cV|omjGgmb}!$$@L^sA*p^xi z|J0A6`jjzwItqwTsu-)C9>X?c=8d_KATW%_?N-9*%7rXxY#j*^XAY5-9m1z%?vFtp z^5zuUcaf*^FWyT`@87!$1_lHFX4{d^L3haVMRNm>F1I>~12HfO=B;~LU0SFtZF8l{ z{0hw^g&am=nd%3}JrEO|=xINIY`*hxnjK8}XyIYZ7wmgsPGCx7uM7o?%0G`p?L54O z3KHG>d~88hTE|nY{P>u!I$wsY0w3XqpQGdbho9|8^MWy34D=kMhtYcy$YJhxmULX- zFKW`iW^(Ww5Zd?EBy-59H-Nnt(r_uw<{BgK>G;Y_75nHj+Ac<6yr(n6*s1yatmqc< zJv*w7Q)&7B)=}7|S8Co8hAB{PsF#N(Q5C!@vY>&m>gqQAl)tlAZC2FUHge4WBPg5W z(?dJG!<>lJIa9vLZ_Q4D+pp**{3`~dI+6s*QhPG<@CG_ zQ5DRF*4l*q@E~p6!-A^uR-mdQb44iES+HZJx&^x*SwiHINIzYh$C0C2zWlt!ZTV~p zT1!Oz%3YHZXcf&v$sPKQ`JFTZb? zKON)yS_DY(P{>FVAAqsfi5K_Vf_*tAz69w@s(FR6ajmsgP4$_FYcy~E{J_8j`>Khssp$th8r;SshLXafI=VA&YFuh!h$ zf9xS`t>R)llkb65EZXg0z$=v*#C_}_v$8&QdW9HBQ{(uAsBo>R#P%hH)4`o z@PT2%?cV6eT7S^`jVE4SC%4czW-QsQatoKwQ&bvNkrP+pi#@RHE0cB4_S^oRfO@P^`u?`(S7oJ2?ZQn1wbR?TX%VF- zm`@5!xp!D`trmy({;ug?mZ@wdq(xLGazMuyZBksXCjn83{$i(@+I_$|WXdo--Ay(U znvS(tQ?hoGAy@2a(G;Gf^f%%mY*t>2|Cm6{A=AAtiox^lMLyJqg2I)WgWOG|w7uR; z@Vwf-wcgdy4amX_hbJYouq*{ZzWG%Y@3E^Wh+k7Ktk1Nt{!hH0(KrZoLRCXZc7+2b z8{1vQmo^tFIv;eSGd55+EFhxeC!8PHc-!dY7aHHqq}T&T$E{?OQn3O}a(zWIpJpN< z#8t4pAJP6bwC{39ikIG%R*Ul-jJsN@JKI@@;g!HwANF(DP7q)q9{RP0KWP(CO7s*W zsKN)XQJm0|%k1jeBv${flTO(KcQT~{&jjC3IB0=;;qN|VX31}H$KOo7$))PJ1Q5?3 zuEkCUtxra1dvZQ7j0yX!2b3902T=AbNtE{#&DusD_V6wAx=?sU1TB+Z9?!?QyM4%T z0OP5O(a9xprf>LMAFKPwxWwE_fcP@H)A z^&tl1DQJUGv-^D0lf8_~f|&!!Mys{vY;ov|9Bqz(-r*k1`Ei9Z1wIn^=UElMJnnKb zIHT#A;K2`=^lmkr-TNGC_c}Zg_s}A)TA9pG3>?>Q!mn?gQi$ zbhM-Dnc|$olO>|#-Al$3z6MA%6+k$f8N7C+tyKTI!C(K3yha7H364^pYjEDUCYlWH z%NeA{5#RULK!R%z~At2?^K-HxmT=L6?cC*)^MxUp5ArjlZ=J2nq7Y zWBS}*7xvRY%Q_Eh$X`F=EcG(t!jlW_=10W%BUgkv#}n@|TQO7g2XbP3mN`C?c_8$H zeU5IQKuPi$7NpP2o!;@NF7XO+K013V zJXKRP$H;Y2NDLhc3vcbosKX0gqik*%iNrh|L25p5G-7E-A_Rl$5^yA24pv*vPdwzw z)wh8*NwYPQHkAIa)~_{MvNY{2QqEC-AB3 zoyp>gA{JMCIKyd*)UyD{3hj72&Y6Tve_V=A-uA~lvAAw2yXf)MMZ9#JilBueeCQyn z@Jeal>pHRcCTCrJB7zojQeS=napw@J&;>hGYCdJJ5Z#W%VRJ;=m@A!9*xI$5fI5U ziXp5>ysB{ih;3LEJ!A~QGJ6xlHWL=qMot=X=rm(SbmQ*&s)=>R4}Bsc*4ay)yVg51 z36;-GLt&O3V=kgK+UPGvk}3_0JJIpn#kyGpxAAwU?g;gnEneqW9oy-DYZ)G|K_{|> zq=oDm2e8r`8(3^%W>m1K6dtivk||#s*?HVuysWc#my7^qHk6`P@~8;$;Z?$QX!ZIk z%3aQ!hE_f#9LvlX0t(HN;|cr_%rHuCeok@|6@k7U`6P99Av@cK#l4!op7U0_agEY% zt?QSK753{A9(IF5WORp^6*%P0jV%9tb$#cl##Bm&W%2xJj{Xe8(ih(A@NXgfU)dpZ z!TPZi`^m$vKRJz*rsr!QPG$M{MGOXBK5A)s2y z8Pu%smx4m7f3xwNm-fE}LN^pBo$rGV;+&R?%{x!I>W(wiYyF3U_ymbfzOupW&u{M; z8#|*6Az5t+=1;Pp8b3_sYnu;1Hg}Gp?*^U=pA%T>U9YuQQTG^k81h`P>_+F@wk~UQf+|r%TwjqWZxMcP^SRQQ7Mbgj?ZNa};r1lBvBRpQ z?nl}vUsh^t`n}kpnK-;D#Y(Io4+$I@r4u`*K+pKjRgnDus@g$lEpfOkT!I`OYA_^^ zer=t*9@m?a|LK8#8fL7R)El2RM{#k;&TJv?$=BMMNukz?u|vc;gw2egX3^ntN<{#r zlY4W!H^n9Ro4%A;^+(g-;LlA_YyhLvt86s%o*vRW)@8gq{kL8M3I_iQCWbM_*6`x9 zv4qWWUpwHzVMEI)*!7`%N&qo*tL6y<)m@u=6$Frw@fLn54V%#w1mO$?;y4c^S%0~G^iW!sl1xa80NH|qWLkW(h zmLF=D_@{e%KulD~SrfzJ&bCvRe$-oW3&q}D&!ep!5P0A_=M|$>DpLM1!LE^(6|Hq zZeI3#-r~)lMaBokQeqo!``7O4Z==g-g<94!R$H_Jg;5K zuq#SwO^PY)l==KRc+IN#w+=L*jSwx}y92mW7<#s6ouUJmXl@Vdbn-VU$YS0WFX_>n z5iJ$3NfNp8$tkV~#_NGS$ft^G*+Kj^DUIQELckvC6nX*M6E?r{3Ucm>xQi$to`ct( zQ6+081V(Z6?{&H^H+!@EcT%#g9>R4u8H=v%3AE_uNa4}1E4+>*a^i0+mqEf_O0hSB zsE8|ZB?8HyXO2WTfr}r=FxEE*Jzl-~E`$hP(+8;YLXU8E5};nU1Z)2?{&*7U4H@t;}-JB+qLAq`aN55gMy>r8#; zzFnxjmmtz0#!2PVJk`9un+g9=*0BG8qk9Zp+ELll1a=T(0O&C;DbI;D0?HA#_H3Zf z*W>liJG-ZE$}=hEkf}T67V$pWW_18n18y1#dER>Dj za^B>R!zlI4I`>I(FPz68aNE#c>jb*E`kRYFP@fzRwa$Q=J&d~qs$OZ$2rWBX9 zQoGGGb(nKR@x2^oH!E|Fv_ZC>tJBA6UkwxGwZbVGrOo;v7knc(#d%WLCr+~YY zaEWWXY`gUDl%NAr$4Up2&cwkj0A8RCa1>Hi99D?dxig|wK>@1)q{HtnPZ`mGP-3m@2U^!Su}FA-gV>#h zvZslW11C>Wq>=#FoTt~P)HLJY^R3Oo^A=mfxT2EQ@#34@o2$~!2<2C~u^2+aV{^`o z##_H z`aXH#T1{Oyn+$w}_Sbt;|I)64I@t_`a=^)1eA+KwdBgfTAZx+@w~aSNY#q4G+BxbZ&c!&Ju^Osmmu)o* zCf}35zN_TNC+P%sTL4h|c68^*w&lc%!+R(c{AFw+z~`OzyXvH|Pf~WBr;LnZaEQZEEafMMr0NrnxvgzaH!5QwE+KFj{>lB6QH%D5 zs!RXC47g)W=SMffB*Q{fOd8D?Pj?j zrcZn59jBi6=dK40h9~n+iXPo;r2_ePw8VZ5(dPi0OP@XpCv=UgrJFuF7_WSUDqB-i zUJwJGOomPO{eJzv{KsxJM+P@GKS40hF!`!34D(l3Wcis_T+(b~PFLpt2&f0A$~I zl!O6LM4637Uj7aMcMMaJ4YD-wUlV6d!~j0)++^14Fb=GTgkFo{k|zd!dwj0*k`S^B}2j9gjBk@JMXL)z%&%ePR^aC$#& z4=R9>=p*(;nnhx<7gxxSPc4O9+{Sl}YxSD&Q(jzu^3wnNlkbA5K5t*B@__rN!l0== zJk3|lhO$%AAtY)&_9btuK>@_f*h0_j1Db~bUxC(i;_qZnXY!q*CR=f}*sg%}&k=9U zaT?5hNa)_h3EzwKMJ-z$IkC5|Fy&JG>RX6;P~RmWWwsb9omjJ+)3!mAmHjRj2p2{m3eIfkIH;S!c z=qtvI)!}lKL+nnbq9@ZGp|rkrSw*ge?D+N0`$a>b&ZRzjkZB=5uq{4q%)?iwDLM~r z1%x}lqfz>$p)k|iszR&dOre6AM=TFIjxy%KDEY3K+g%mrS*OL@5|DP!(LW3GQXR*; ze%cQAkz%eNxL`lqxMv1#s2yQ%Ah8KzGsQ&l`drB;J|iqqbBjS|XzDBij?jz%Oie+BwJfzoLClhAP-2jsKW{9yS7F;Cqjd0D=JCzxs%nO!J0^9P z=FUGt9%f-3C=xV}uBjtO-fGDMpbSVJ@?xx}f}y`wG7Q`&O7EBt-fiNnzA2|RMm5Sr z7+OmSC>x-(xG{w)g{EEF57?js#?*BKAnBUtsbO-jf5cyp^D6t*^Qx_fjxQb<-Nimz z$ny%?-sIZtjJNOE3x@d}?Szlqi^(!4^{f+RkbHT>cRct>qfW+q4g|=Qk&DWEiahHG zHdYCVbErdWy{ZxjL0jry5a+&n#jou9hmPzJnoFhbStPW3Yjm9KRH}PIeMT(dy+sE+bs{3Nu z#skP#fHpSnPk5V4=V|9$tI*((619QZZ}dxgF;EBSPdT=KAKnSZgerXP#&fOr1+|%& z#o^7!&2Mn~fqh#5KZ_VX>NvY1KOK6c=c4#t38t_*I2j5e#^NDH=0WJpJ(Z=R&YUe1$rRCJ4^>Q9L zIIgC+SJ$on!FF}>SSiL$N`yZ&-)AwnXeZnmeN;wD~g zrWD+aF}F27^_n&#oe}vL%(V4KX_9(3t#~g7+#nz`kzW@LGpp8-DpV?r&GE$;XMtV( zCI@Eo9e<*egDo-V#_+i#omu77o4ahU0d&I>5~~M?9{G8smRsP`^F)1%WZv1HrUUcq zznXn@0lEf(K0iV$DcPTyy>l4aoc?2+GufE27+Q#Vpd;ZjF*@8&tvh4}bv42@=cy4vEu05{gt61i#0*VUb)^r7hHKqm1M z<`*|b-(iXe1?g0aWRaTE=xwfpw82_L)Z&TFz_!MU9T{e;QyG}1d1Z~-fRG3U;B=VY zvyb6*ywsY8ABtzSWg$Lu|=Q8o&%I zJax+Z_xzvIf1ke{p%c}Yq-}TX249X5dIE+VK@Oz<0@#OJnRIW>T^GuYR6%4lf0HKyaO{=?%uuoCakl+|4Ow0bd%^;ss-RD z{62jeMk)YQw8IpnfW7L8@wH|G60|316|>kVuE|e_gsu~dKDGw(nZ*Y=WU4|=3pvSd z<@X7_ID4NurIAt+!#+WC2`=m0aT6cmX`0(x18la*kk`4&cK1dF4R7=vqsJK>z8E2m zn+FG2?XF*yx7^7vpShOF|J~%D@<3o@qh0+`A4r4V7Ca=E8{RibarQ@bQ*)el4nS;9 z?t>0pe8xSLh>dY6Yin+ZllOEY=q;T zfk8Z<2@%jQGXMWjJObwDIw)m5G9v4{v9yuW3|_92^Js&A-E7zB={g?j{mN%8YPDuN zK?RG81J=IYO{_;bz|@qwoOzI8H{zjeRZW$i8`{w5E8}$d7OP4j49qc4o1fjZ6)Hu4 z$*V*=Pl_2N#b`=dN`(cyjdJ!iz8aVWre;LWgAIBC2DM3-7lCB($s z=H=xTT28XdZaY0a<#ju@R>{+74HKO1XbYnO9VyvDO-FL6P{WeJDCJN(k*~u!s-)D^ z8f0M1Fs)DoP_Kah|1d;9|9|Sg2ic#X0QoYVfcYm{y{=pQp}=L6dq4>RY6x%>ZGroj zuG9r|Q_(Ups#e(HZ*m8^{c|_&A6Dpqx)bW$&8lowN0nZa)Nn@%yeCv- zCBh8{C)ODq*2K()0M@Y;A|s3+PlLgR$0&K*AkFA+@EIQECTo~Nw=NOavF{A*B&q_Lf z!fdqX?`hX2{7JNG{Pl~`dW`#)jx$wBK|zJw*9k+)h;n*?UY`Z7hF2O>Cgo3`)`Lw{ zAE@CPyS;G@(FZ<4wRZK|oo`na+aAfI@x>mc<&Y;{4TbhzVtue$M!1ye7RIPYX{^|3wbJHX_Mx$Vd>tAkMUguu{9!R_ryOQE!N>L~4;kcfj%kgxA zj=nx|(~<4|lhf0=9AbT77e2@X;IzQPIqa`Aibp-}kH;;+qsn-h%MRf@qs2N}px25? ziUR7R4KM{DN>y35XzC=f{dAH;^rH?N^3gXI*65%pGIm+$p-O1iOP@aR#3il^24jX) z;Y$3h*Or1A9EX^d&^l~DApx^PIVqlOv!^Xe9*5})-~MX|{XuoF3U1 zQmtra18}zrYp#NaVml!QfP5ACL|hv4^cLBIl;O8!XTu2MS5L$Nt?AiQCkTXvT_wU{ z-6Dn2aX}`b{@BL{*7lQ|5NLuGwv#J~E!~s=Xku~e_>;>&S4xsahdOp(U_>|=;hg&Q zp=Q*VFRfsxmg1{dBtw}>?S{NIquP$U3(-o0V73!jb$hguxU8fkL{-ZM3j#FHTCSUA zFktC{?j7W)w>5v>PyBM})W}qT$^ho@){itByr8xLO<%Mr=u0khO8SP5KhXJ_XfVc`UD&x%1eC7_^1JKj&dlm||_0%nU3 zdJ_OKyBDf`)y&LHwq4EtxB9T?O_(zn9fj)Rhcd2^I3XLRf||XTQ`5O1DIzVtV}OA& zCv;UJkU+w~#lC4rTb=cNAO*MA>CeV^3}6Lv+m{=dr)o~d%ETx}_9PC{XRcLF2D-0k zErd(Y=fBi15zuLz(-{0iv1%%!icVRjA&t!1iEJz+`;0UI$gUhxa0NWKhwuN59qro; zLErjKCh3JE_6HA`9zBX_YI+KOHQJxSifZQsV0V}AmfW?+ll#muE170OH4ia^jM_s# zXC-IOS>>JG?Aa7>vKU88IrAX4#1L-5<}>(UH6e|2F>6PDxr1TqIJJpq+a8vFQlI)N zVsfBzDxx+=xJIn>)`J_0w4{_6Vg-N-6=_kUeAP?=bW`|-N@)jsuH*%#0~?$o0B$vs zUAy)52PZRB6q?=tq1e_28d6oY+$(+Z!udxXP!(>SIN{47oYoTluz9z0t_0VIFA9D> zH+qIo5#@0tHuLe8?Uqx5*ggSkjz?+15dnrRqA_i87|l|BE6Bjj=Z?+IQfh43X2yJx zxXa_C>l!og$mXXlSFO{ilR&*5q|~UdAo253CcY#$n+wo;fWDdPw=HIK0x|O+!9Qm9 zma-3L0NN6%^WW!!;T{8uk47)+$ur&Qo4E_O$E8rvD)=CXDJUB5<89Fdu?sG&s>8SH z^oHgEJ%%#yg?MMpD4RJ-O-L!NlW2_?{+z4NGtbn&+ccM^gm-l$pUAK)?sKFjRr@K# zCt6eGXV+0)QubNe2rz4W{^qIW>Bb?hllzCXt`2(29qw5|8qodits#UD`6r;S*W;4+ zKQJ41{HFrwNRQDP;?WS9qBCVGKq}zOYeRgg@Wj%6#zD#>n62{SeogNf(X&;y@Ur8l zAxKc29p-*Njgvcl;c-o^0OLyKQqNJ5giLKYaDrUsZr+=ZCzak?(Tsd0dH9^Wcu_|9 zg+rS;uWMEl>6fu&l)kZU+=0MrS9{*cMcMJ`xreKSrsFfLA2}+oYOF~>3+R~#_kOMM zot%&eeZ*}{e@^-lVVyfWTV{{HXZE0*(TvT|+&2_70azlkj!AKGb7BwNTvO+KY{Px` z03%U1`Rm_=k%=(&IvdK0RSr>h_L$%25H7}rgmgaL9-9t*&*M{~nWPXhGo+heS-uG< z;Y&w?w%pL$IpZz9%MNo1ck;O7|RRy$y}+1FWnaQ_f znObEn^&XnZX+1>#H~{Q8Sn;DLm6m?e3zDodtZwcpc5)MlPsa4Ymn<`zW?4ax1J(SM zXQ?fLx}rbb)>Ujlr;I2TxyHA(hNXGxd_K>^nVkN-M?XCn;q99K8cC3&glZ&C17Lhs)o)*v5?ZY< zt|{jIYH9>RhMM{%T%i3xqa5K3zJ%sdka)9g`+lIr{vnai1O}@8FrTWGWd% z4`E*!RaN(WeNho5`TPL6GiF0}znzmX;PS-QAtS<vu9)fmlxyngXGXAo+JQ4m4qrE9 ziB8({1eB9cBc0jTy79nV2XC+=Rf`t=Itj3CQVF?8$bEn-VBj;?5%;G3)5Q*;a>={m z1bZc93m0tOe*u=0jMU#VZ{w8zRQlB# zXR@x8|FPP*`W!S(&Y%Xy03B9)7zQ3XPq=Wi(;|7FJy3@dI-BK~<6{p>+*K8wK- zX`C4ieyC?Bw`NN>pBXi{RA3A7+U`m(Ks#*)Dut-ZA^ld7{INycJM`IS-x$wrU|mO9 zj24-~U2>9VYr3oBRvjs^c+*hkH<=5Zk?n2nT5K-QLf-dR)H$wX9ag-imot4=!prV_ zcZ3~F`L83F2Zp=Lc;;{!BhT@~LoUdpJwmmsv^*+0cOUf%jEXn-(GFkcCA+sUng3}Fk~y*E2nYXJyMKtPXk z5dmH+I(fH+f5g&^hc&4l+;C=$9V#z}>M?dFg}eEst@e|~abX?y#47K6&=j92olKpc zlVPT#gKQfP`?js+Kb=3{dvSI=wBp*v1XPNiYklk9`rNs9B%#hhXccLorS3OL{?AG; zl4YL%y=+GS?sd0l0m1n>oZmuv)Wz{b&1td$;5rLp)>;Eo@URHLr&%1PIs?T6$bFpk z&W{&rR*qNrP2Q)8yPO7^Zv%B%YQvysoUsFFR-$s<6dVD zUkN?}rmbvK@g=)bT`Ec|%HEHshZzHZvuhrZ>3=f;-geo2flczk00}1=?TfVgrK#Vl z?5C*A7kSG3{E&JjCzgSZuf_5^&$0s{;g|GR9P8%~nR!h?yGi9puoFp>K??EC;5Tn` zUH%IuE}${T&Np%MOf!@~NKYVoiEEV_GB&S@?ETK7i&3l{oi5GT$pC?VXsRXm={N$M zay%woOyY>l%X8fOL7 zoXozaPJ^|vZ&0-clxfVKL~8oXh^k)~H48yexks$i#9Qc3ea*bQ@jP82UKV!_i9@~H z(*`Wo8-0{!oY|O3mnHJ#bAYgaysT?=d8Vb#1<+8GR1aLwOz#Aec(=Q(5>?50W84nN z0h`}&Dbz|L)wl45(2kP-^I&6-_!VnT4Tv7hC&xo77rO#+cARAxcD-NWQ*TtHZ4<%Z zU(H*Mo1edrOlHeoTf^H_uWP7M@RTWl`;n_0+&e=*yxk{|Ct$x{^A&LUtJGDB_rF+a zYT0>Uk7mfN>~|6JXS=exlfypebqmT6Z?$zKJM=&CC2)}$J3W{_B-Qo#LAlyOa<6h< zuB)a7+}u`iprYWq742GS{#XHD`RK&+wf9Z}pC#B+6P;Fdn{OeO-SJR^uP0xE;0=%?JRhKqx{Z5(qxUoiAIomzT~RrDl9Hq?de7_j&E;>z97i(>zYf zGf!H1iP6S$Z-wNs>Frc=kCfP%WAZM@+oI3XIH2VEX@sOpe{1-r)bd2G^=4ye7Zm4r z_A4?@*ca3w2m<=n?W>;Y#jn-s(IQq(kMrp#d(X*;6irjOTP)VvO7_i&uwE_9G~zNG zC(I(F{{m&1Q|(aHtI29qB4@06-4+B;WNkM#efNB>enVKsBDMsnV^5l#U=+@BRx)^U zAO2vqeck-Vrv+C4RbhnDNNW?`)dDle4Mqe60lfs;-c=+$SeCZLaOY1|?fQ00<4IMa z0|nyjCd8S$jB=WBRWfMAde1U4WlZ~(`MpsZ4U#~g?*0P1BC7SBt~+m18AEM5`SaoX?8xZGlRPlgzBUckhkjU0v&FgjI`(5b#mBP-JD{8Am)}ePz$!KP zz19NRQ(_kgX7c=m9^|y;aDn3Mb!`;ahLidkAjWxXcO3P%VqArnP)m@l&8M8pf5C;Kq--hbKH@5E zkEOHnj|FukO{^|Bs)?YyOfyGkT*dvo<=Z?zbxcUBR;qXaQ!PU9#}Um)V;h_JQFyA} z)&YG|)dfx)&wKbL!Cei;Z+W4QESaMiCbO<*FN3Os>~*_oz#}a()%vRNY%Bpv=CKl= z!IHdiZ(W)PFAoi5#h_Z;yLV*>tz1{^eR}b(DvO3#>hzyF3_WYekfhe0e%0NODig({x<*tpH_!pH(#CBgGwye5}r20mXTEztx!#l?O;LR z$rU?WGgs-3@2t1*51+>|a=-@BRRF@_q@Bn_hKcf5;SXs??-k{kj_F;SCxPqU;yjRr z)PxgQx#kmpNRxt{&jQ0^9U5S_6CfPWHqGHt zMuBjYBgUVj1#lYDxzMQZ?puhpz>@qR5Yc%Vy;`xKp397>#ETs}d7<*%89(mg=bLL; z2XKutT`wos%LSK4WCTF)497$ILA=A}`Vs(1HDuf3DRREIestvE5!-p06M}Q%*#X2($KN;Wtf4stELSs)YN-*PP?8D-_~*aMDK}W) zCr_?>&%sU%Kq5zg>57Gfh2xfmp|?bN?bOAwYE|jJ1&~%->%@AgyW+MkZLe6_eg_`w z{j$sy*We^#;JkAz%#C|$5EL{(aFc9Sj-1%^mPwHjf}2h;g>z)^*eqKoVIfQn^FQJe zh-hwICmjbvt0~zhoxZgoB^LR~5F~P!uK{onHFFJD62J(|VJxhr2&5ofytcj)Sx`r9 zM=(R?^@8?RG0>K}Q-(HBoxZjPK0PggZJQ3Z#HLAXBE8=uHi@zQ@SW!z2}qQ{$8SQI zxAS4wx8M*9K)ZHLa>d%)*8ti5v+YA(j&m+m&yrnLsTJe}UUqYuJ$pR}kjd+u>RIdh zwz(4}Nlhve7_v7sM|w7kZo!RokC@GO8D`#?uPc&244+rTZ3tk}?nDWyNUz|t{B9tl z?s+Yg0dD^T(Ch&pHQ1?c#jfzBD^=q9#kcU4=awW1D!D+F=3DLl6*`!zoIj)pSf7g> zU#rd=-8#q^>Gg3&F$|mIQ(!pr#?8UuLYwYWKc`aynMtuA2ra_X0NBpfB>XuWhocz* z>HAx1OLd#(bt*H49MMVLq9C#Q&z^$s-U#Cmd<@gy9;@j^bYu0xKPna<1+MiDNy~#$ z+P6_7HQPtt-b>Whk1B`c<+JaRSN?uZHv7d=Pd|ifO=EYdtNz#aH&3LC(+94j@ptxD z=89uti*hu6f5ZaFMDdqdK=&#v6J@fXn6+J5(TRX#B{lv z)S0XVAp!uV&|0EUdM5I!RIG2#>eC4N{t+TXM*IdIU5BZePixuH?Ln&=1lx!=6BW~T zuf?cw$vlBrXSKx+X zgr6nPE{^A}c$s=2jkdc5JA6M|@e-oTKFiu_{hbkoaF#OaL1h9k>KyeiSOBD98+vRBT0sa!z$mFnR6)!}?TaKA{>h+@ zQdpp@(#n&v!Z4`Sp>-Z#I3pO%-QDqv*nD>fT+cpl)g7s7HpU&(7KJmIF-K~^@Y~PT zeS?bxcU|*8UyeHKPy7pGzn|Y+l?KlMqfbPcuVbJn4YL1zvmQq<@evU7dVT=>&rMV$ z?xge}eorncq&V>N$(dnvtZ)1A*klen2@=RHIM3-D7|ZV%zx}3cWM(tK(Xgtl)2hy_ zo>20g9q@6MExC?CALj-Q)x*q$HY7znC`EeLGi-ou$KAd53huAmg!pB0T)!ZD<3svrlW`DXj@^uHC9kEW z=T{l_)SZI19iRs~V?>Qfg^X3KWB+5K{R zj5wn-8Y;7~p*CYmEnDhcI3go6M}rvZ0s^M)S;O@M#lREy3|}*^TW?*xfZyhm|s+P+L*1` zlGNZ&sn)t>!rKjE2OO4Kac|k1>h9K1?RSpL4^uFIx-UDbB~thEbsdvlFJvh@PWXS)wz4gRD;`*q{TL9e+5IAL=@qYwzwG*udwbXa0wvYQ- zS8!k%BgUMdf|4`reXO^kQ$ar2v2lh!_(EV95liqMk^-SWtgAd*7M3zGi*cPR?BCXm z>(SVU4XgZD_Yf(04J5?tt0FYK*)$ZB>oJ1$;&$!iWSr>K`W{sb<9vJ*{1`->d z4nPd8xe|Kp;7ZqNPyTT}*q^u5ofeg9ECGq1|C@%(1B8ZwOlL%~l1S*RRYTH3(0Q~0 z_JnUDav6YI8GbRiYc_lT_j0SjP0sruljoFG9N17y6=K!GBOIWG-c$#9G{F&vKCW3u zwZWLA_$ga8S4T_#1%WE8g{p?H5 z?y5@J?b*A`nHQA8C8R3ZPzygmU#s3A1Z#inoZ)rS+gkDxG$yp6CtBP27@u2E@K)Ux zPbZW{7Zok17_8ms@xv6vvM1KhBy%_S0zDWB-i(U%Sq0ttFGkHI_oh9YnnKnNg# z75xa%%@O@UV_W<@z#EfjpPR!pbg8@`w&6-uaMD5;(9U3&R*JiW}9P@98N+5iazozI(2^-1M^_sc_Pz0R6 z8)gR=e<-))2R*;>c+Xhb_w~Sb0o#<$+gf}%*xG{!J6ETzKrhFP0J8Y=(HoisnLlB) z$F}S5jf+{G%s5D47-#qmo94VwOZN{4Uk`QpkjyGyXzv~UZ-1ZEUQ>rzov6a8&h26D z2$UCA>21IE1|Sq3HR4F@^Vp}@P6Oc7XW=Rc9fr5rG-16uB}~mA~T5xKK{^lGre~N~)dk z&9omOAlEJ(xaZuqS;eZv42>RLdVh|pY3igjP`t7$rf3Mqe|Xp}Ioz746WzL=qKdGr zU6gC95;k;gaYFQpfSBLy|I;f18H~}nlXPS(g`L4p{f0(+@cM*eRJ~1H4Q0g_@ zX<&-~qP5h+rYV@B6oFD%>owmy(p?Oy;B5P!Qysc?ssqo$6e6}; z4mljmmz+Uk5LB5FjX?k>dbmlTnKEicK80@IQ}Hwh7ThttzcCSB;zK@m_CnX;u1fA5 zOcLScrae^R7q_5^TK*$_zsCG@dhLVGiPo=Xnjjp!sN;bEz2YNSpDv*M@3R_KU7wt< zi&mA#yLFL>WE!{}Btl$)?`LOlnaXWDHm6)rO66C#|JFN_-uK~(T{zWrHcyvl+mX$T#d|%P|e}&5LLmYqa z|J2u@Xj(AccME|Cb>2OK1QCWHYL!bl-=Ib|S`!+rzQ?@-7wcLTUeG|3Y0skEZ=4-j zr>?4{)Hbsx-z1|vWZt~-*C_3`R%)oHN`TlOalBKJgA?@Mt&sY{NFXRFvNe1yhXBlI zR_J=odXSfc4#o*cJGul|6Tu7x2*{qzRxNQN?W?L<4x7QaL0ekKs&WgIk>)9u#~<-H z@W`@POWz7TaGG@d7U$0Irolb>$zkFbqT1yNYUU?+3b+bKo+aB|bsJ8oO|~c((f_`y zD9&}EVzoMMmvoUVs+HiZ_E8#hS{C06%3!~7&8FrJ#=HVoOSsurp~{yh`+j&uCzePY zX=ab=3{mQ~cff40_iw1BDJ`a70i6MVb!a~j9V4Ey`E-=l+nok0T`t)`sc?V@r+m|4pRM% zb*5$L#~1cXq@eXqRYd8uy6{cI=0QYXA91;6XpsH=l56Ef#nLlx!6kHFB;a$HpW|Lr zSi#C%cz+`$xqMPOUWCNM3FuGgMH(m<+Xt@p2yHNaP|vmm%(LM?2ME>8D>s%EsDSoz z0!4XA@;ykSUW>u8#ccY84+4%I-OXm#Eu2e9V&{Sc6YwfJxRIf*kogR{Vyko2|6n-) z5_GLhGi&R4_y(Usr3)+!n7f%-e8AQ1!Qy&>;$*U^1B|#@AMi*Vx4OPE38a~i+no}d zLFfb5m42K&GbSeZYW^C78k#+qX~utc z4?Z-EG8nwFR8rKk^foK1*%W`$n((z<1S;$vI*5f5*#HR2M;z17vNw%KU@W&wJDY*x z_Klz^BHbY7zTRL1y12i?66|TG5D0I($m*mA|IK8ihA5Xde^|yF~7i`32Iacd77wg#t1F=y4c;kIPp0qcFQHs?eW= zR;@On@PGtV?r*CnP`SIu7{|^Lh}*686cM`OSEp-yVS6ueb(uAw4qPj^7jH{U8zAw5 z670z>neVVFjws2=?0?YPx2X@Vdv9z#pj-ib`yO_;LH~>pt|GqTK{HAVOWrVN3zdJ0 z{977HgZmI-X&QiOdsm{5nYK2nJ5`M`v5C{7cjp_FuMqQW7S``H|Bf+%*+WP6v-@$3 z)SK5?1}pP$t;QLO`s1-g!?z^8m!)LA-ixkv|2L?4;(wjwWxjC4b95;?6Xc)Vdr^*8 zuDAijGJlw|MOfyx^z&8l=nqCCdjR}A8vj*XRrJ=hs02?ElK^jo?PDJkKa*z(PBPEv>4t(um z9AJ=?OXPT&1o^RizZ)tTLO8;X2347vLj?*OW9TAE^}%cw4s5vOCu0ztB2pWdyPJ3J z$?U6UA{_7EpVT#{;H1%RaZ^u!R}w*!+?`AnGbplpAKgojm9J_qGG%Vn1D4Jsj!$?( zK_!zor{Y1@7n%q{RTJY&jhDftXn1R zmNxFzeJEsRG$d8FFOR``KxQ=0?WOas#EGp{)BSeq`08&5T}fwtQ;shTvZgPhrEFyG z>Av;;)U$bC@MtkfRh(<<5vBX)*b%!f327p&2Gyfo2MeD2s#spfo7%G5|FA+&HT26502=Gx!H<@z5r z`Lng$&^wj2?yJOjGriL(D0pNEsq{(^33Q8hED>bod)V-s^*VRw!Bq9 znJcP>2xM#d5523=MQP8k@$4-WYAPdz;GWzqbnbI_!&Ldh_^gPE`#sbg=^2v;e9A$8 znp_F`k^(AcTN1})eTgy8>sA=H7tK4zOUjmsLz=ta z?p&;L#b7w2uE%eI%-H>L8C~{S%mI*6)?ob7cjy0vC{L~j0*O8?1zSDp?#>6U8JeOq zwF^VMfh@WrDYOHZVhlr{+TmJZV~fT4psRinz1pkC=~bjA9)o)NQg5)kBGo&nlmlq! z>oR~#n=T^_ssTdw>>r6z^KO@>R0vc&wTYis5#}oNAMLn7EQ4&O0u+<(IIL!79G~y? zj#WEzTwY#ckn=`mB)Y`__^pC}`D#{n6r1q~YAYrHw}L+us!L!S6ZTWCE?_E5SY#xN z(a^Tgf<1$%jX1cd^U&MA5J6-JNs

n@C!}3qDa$FKkDU(Le52b;LuK)SN_v|P(yr- z8NmNY)fZ9Cv2(w5gy6J(qjA)qwyVDLfyX)Hzf|SH4x%JkSNO5B3{0O|8O^7V&It7; zclvJK!{r^%WB-tl@I9Luz#4bOaY0v$1ABd-ZJQNqj9|=Gt2c$4sGc4rm{`SxLoKNd zCU?E3PgoGkFPlXJ_}?f2cYX-RgvIT_bSYgh!pqho0}Nv}>6mEB6_^nBN%>|b3wJQx zH~x0&HF9bTx8rHvTMFekbEPXW&o`RFOK7WN7yKS;L0;;=_IB@gO#B7x5iaRYR~26w zhFpZ8;fT-0a%arb+xI#{?EXX%xDt)U}1xU{^5!8dFhV$g?*om#_SYLsy_T< z7)rutUp{Br<9Qs=_h{63f6t@QM8|MXv&)$8+hOCGb#K&Rk&oFM=UMKJgl)TC`-Il> zFq|_}q&}GZnDcsNg^SSTqRA#;2U zSb7cX58@;|-;YiC7YkgABArl_!tF?4C8oLy9pN-ZS4B22UxC+Jft50WQA;j+-5lyJ zJI%EY{Ef`a7bdlWgS3bI=Tk2Pj=(5CD=%)2e0>NKAIzdv-i8zkYV8SiB_E1d6^C_{HmjN#@Lr<3caa*4Z(P z$WHvOOpS4US#)|ie(ya8pwo$-)tYU}W!?weQs4Bei*5eSs{8vv&L4ve&~5P$X1)Zt zb01E27XY8`eD%-GAS`>{zVCj1h&gZP=jS;3OZp!_zHr!{&Uz6Y9ZeJeoQEeCkb~qk zTSrF;w6qxNX`j??UTAFX<=bA}(gx)`Ufyk;u5=dc`#|&zi0(c+KF0ASU~IDBF{%pu=m=dod=S8beYln9|X0xTp5;V93PQ zLI1}ggRa@Vgy@3ODK{Q4cnleFHfU*AI0DDOoU^m_0L+x@L63XfvrQ8{oU;~o2ckIUmIt!=+DJr#f;H2OjI zEs#P~;02R98Ogs;lNl-y;Yv}J3zrPmb9|2&^bEV!stY!$Rg!N+A3~&vp zg5Fq)8-N>fe0JsTd_<;c>v-jUZYzAq`S{i0hdT|EPunKjg8aXrsUEhP5~$^pl?jL(qNd)V{iU&Qxq5kmvlpz{+-LHkuV?rN&3K(kzP;G`!sR zNvr0(LUp8szXthE*EXi@RCQUyC{LWCZJkRw;ZvoV$%5y3-I$IsabyD#N2&SzK^=R> z<8$Vg{QTv^&)V%yGB_cBf79dB_H)1T?^z>hoRg}F#c)}t1Gk)1SoqSPj7JHK_)>Ip zs{up5*tF{)d{^gtW=o?Hk&$bF12-DSWesM)rGp8KD}df-L1Mi*!Ns@VCkO;tgDDNc z@J*+SgHgPP53PiXcQMgD<}s|UqIN{8YnNQb26`*c)sIT5kIuSfHF5`}Vin3<%6$iv zJKPq3WcQNZf3(GaQB*8ObCLTyDIkoKQmnp4Nop(nCsFmoAt3AOa>qrbrpUU6rHQXR zH=U1Dc$HOZl~c;-zLxSZ(%;t_Qad*zJ;2jpwD>whf)A-|%v%}}$UsKH7Y#{R-$^x- zskrdXW6R1?D0KVkt364N{385^h$0kfq9Q&x$;)N!3AZ zWOVee{w0cxPC#qEsjf)QJ#SRXYLxo(@mD-%hwtonTa70pLRE{YmF-$}#N>hk6-#Y> z2R7idL+s;r@U2{ca}KK%;f`V?6O9bW3&mLK(RD--H>DAc--<}C6jip|WWIh5h`RAN zunP{)8kvh;7^LWL#H95?1?-FMO(tZqZQVrSPbxI_D|V}$!#V5|(D0ceWL4?JUY?yj z2e7#@;lP2FvIr;lHB{HK#VBb!Gi!}ehNREwHhzP-8&Br9Ttm;lzmugT)3oNV)1bv8 zx8DlfSi!J>{RpqRy_)*=<_XHeV&^%E!I$98B2`qi)bpH#ALJdz!Jdk}Y)^e{`IWW0 z+r}1S&7qzxphFywK`W`M+*+~ZqhB_>(vgKNid*rrG(hgO|3i0Y+d##MvBpIb(qv2@ zm#Tb4bC%=#KHJ*TwI1fwLFafLbL?~pk=ig)MYaniE!w2gFir(=(kGtmxs|Hd<_VeR zxxaV|GX2>1x!*zm=fM3bzAHs(u>i{U(b?>R?$*`35qnxj&do2zS%uK>qx!2b0r#5q zr5-MlTqR^oqMW`=dBw4cuZwzmh9d&(bfv%EgzTX2gtVIl1?q#nigj_-6Z3 ziD9~utOlg=u%<2GdLDa~`E!tBh3BYcRB>4=Ryh@0b7WD1AuoW4sMOZv(@}7Db-_0J zRC_0bF1JV`q~WV8YnoadwXKh=$uD=)$=PCMC+YE0$#JMC_kN~ce$EQ?SXAm%wA-8W z_JmjWYTkbjgY@@do;vqz_OHXC;Stg4Mk%TxLqj79gD}a_w)Ce9x;vI6TDG&_cID+2 zgF>>hblECpZaYyupAX={W!3huo5x)n3->OzX%*uFlII~$zSy`YrW3;-ueMBjs@aH- zS2ht%>$_1C9mdq$MeTu?cK2@89Mse|8r|&2eH}&!q_|`Aw=t+)Ihpr5kGmK_v#Xuo z+Dn-cba6Os*^1&(1~khehEXSJF%)ZCdlJ@Ci-};l~%7~V^>_XFUz&uX-$A= zJjk)f)-eR_dpoNv;mYo(M`6DJ4uX!sHdx^lYg{_PhcwonJ0zb_*G) zSr#jDT)w{Qt^kJnOz)f%8IvqaJiAn`M1O4~jE&o-qKPYGEcFFhijCG*x)B+kdL@Tr zZXDnIglna9u+0ZQXDtN-0|%H9Mxe~y>qoE{{CjzDchGeWoH}6D@kn-Wq`XJ*KjWz9($gIA=q)UdQMd4mnP3s+iw^$8xoIXHt>v=vZSZu z&h?{sj0;DhL+aS{3BA}CO@`dXKLAmYs5 z%AZzd(h%0d9b{iOJjs!sziDEd;Us)$6R)9Wxg4~6b(DmL<uhFvT_kU{_-;f%4nm z9~9m}&MX{H64HtvT4xG0+Uw^XEn}Chclv2A4mce zXkX9~-QlT}qk6Nd$IBRRuWl=ad^O<+8aCD|~WE0TX2eq&l{uw1BHNU1w~ z81?3f$iFiaKs>f)*0$N7(g+f95slk9#dc(Ms$T>n1;@m&D$YG@ZC}(4rBo#4{8_bE zX+h@c+4C9S55N+X+fsed*5PW@*@|8|pDt#gF&7ID7^ZB+?Y#GPx@PM6W5)S3?QH@T z-~Tqxo!UE!s8k-0r`x#r!DjThm=ye@ZMF&Tir}VwaPvH7cMv{ET{yg2oTqm) z2i4rVG;>08lRf>j%xzoLt>hUgFXML;k5syqxH>w*5<{}iuP$Uj%vI6iBqT(uH}DpG zwMgZ%J^DW(zD8*#+*wC8yjiXpzUsP_9H_(l^LH>!aW+o^<@oL2kC)e-bifb%u|jcS zbLVrRBI5orqbffC>?Y+g!Yh*iM>OuZSlI~6d!RAQR+U{LWFrp^(tjBnr(=9lbHTk= zdzGo(|Afo82L+1n_vJ2@Lfd>h+HyF3XmdGBF<**jJs+Bzh4U8P?>2cDzEJDTr42u;X($3{bmEa1`dumPD+qis2&N2 zlBSMMNNNr=P4#>jm0{ej!IZ!(R2Zou+n|ct#wWPDca3{$1N&Xv^9{{q3=3#Y4k+Qp zFHM$^F;V%4oC~hy3E%8VnHa()u2wf9dmjvVMeZ+%8E_iz6=XWUJ(BP$4bkHyrGpoV zA=75ksn@6r8)iZqjTAv80xgU;`=A*RdAQSyeWM5NFF#M=pS&HP9$HFvbkDT$03=m!BXpfS7iTZCU1b5csOOJX1xX2 zRr#$AH<@AK;;Qb+ii{1uQ`t(2_TE+deq*{ogKTY`EHpVeMcebTY&Z|UW(g_|?n}40 z9Dick{8Tw>mH^}aLle_BUYbUW0G8NP&2C~tN$+Qv#w0V*l@^$S9q^}Qnp9-xZ#&eV za%CBxrc{c8&?&c7ykwdCInF<$wfp-tt;`r{WMYGfESEVGh3aB*Q&BZe$uJyW%z$d` zs+1xHp_P>mt)S!qOcM2tMGpw_lvB3JTuXbtyhymhc(H?h06tTD-}ps_;s!G?*Cvj> zC@k5EVvST{loR!<*z+1+83}J?32%Pe8ei*)vql(~{d5TtjVF6%=);?s|!kg6-zpBq(g9V2vcY(1d`keE+$%typjsLW5W|el9N9gTDe>hehd`@5?{aJy%8)L_foR_N|v?s{ZZHJ@eC4+xZA$y*zwgyNPFI6&9+GIyX1d>P@^KYxxnZY*SR&6S2BctP)duQf7tL zsWBJBiq^M`B}+W`SgyPA%j&EW)8?88jXP*NT)fF*w5Gu6?;)CGCwbO<7*^%7macU3 zg*+(R0Tq4+-UxB<1swP>6LvgY+-IDeWqF-Qyb&omlFh~=zgG7RH@HHQOua|i<>b;m ztY};A$rkB^mZz#8HoPIy+N!v~ht}495ynt%E3@2P8xX=9#!B1h>PI1J-Cvl2=2q41mYZ9j`h z@cu-jL&{ddHpbI%0{QYfx+KNq1jW8i2+y}C@p9GJ#&a>hi@Lr`Q69iWjad5h6*QX}>2NGr*uEsOsI>YLw~8Q+W%^+r}k@r3zjxO2?}? zXmAkz&?yny97R+oH;&`xih*p4B1|~eYsO-Ef@ka5QGUMI@Nfru&|yoA!i<69URi+A z6s5}Kv`v0X3sq$Em9HFHc2dQhJ}H*Q_nH%v}8o6)YJ z%a$Zjv=sMs?YD%A*2tZ*W-d0@$oA85@7`7^@Z`Ahw ziuwAOAK9Jj%#@sqZRS}FJSy#d6s#)JduiSqIcBrenX(6gw!!tTPu~>+;Y!&I@Ultk zQ+%{|_}LQ@F>HTw1YIBQM<&Q*DJ$eZkI@|rwm$9jy)ZMFDG9(B2{S9G$kh#db6%aV ze4?C}EXrM_Ivz>Ap+*-TpS`k&85|b*%TG3);bi`TgU!pO3 zn%_1iIPe*7;F5Kvjk{e|ad2r$)X0{&u7JooCK^0_t`s`Dw@Hd@(w@tF+XO8)aBQROwh2*2~ZW7(R(z~_4pXu9%^;FPB;MF^ea>0+2a;M+!zz?Uh#f_qD#@4Xn z8ApttV}IIFrqLq|X{YozA;=WDO9OJtcMOW|nlq?|%2~jd(>jMbYw4jZ^}xW+DbTc= zp7J-m^17AK}fKjP&CLq>7V}F(Qt$QpaRq%zI@e@5aktaaTwWoP3bfr%ehR(vM?l!VJi% zj`_C~#~l!DdWgKh5Tt^Y7;arnM(ngNq0#5aeWCOg8|SO=zbkOS#CFfbrrs8B*v{2* zIY()|L-ur2o?BjhWt9ZvsDT*L3b18WCv{85&wD%VJOUwD`4Je-Qd%b1nHz624@~9W zIcyBwzFDyB@dI#xdEcB|UT{O7DH`Bsv@I#r)bKZ#{88o}VN>chIDZ@J6lhzSUY4wy zeY9Y7k|(cP%%R+jH=I|at(ASZ7;W^2ChF>a5~~aIpM`J76Bj2wJ8OID<)en;jlDMF zsV_(8pxiti{dZ}V(f*A`Bo}t(=+t)$dg!IYEtkJjwu{J>M;0-(tBoXGuvyHetd2aI zwCx_7Ma!MA7Vor=A6P=^{Z%+Vvx<(s+uz4NLp(zLhA);qEOLQ3kw-0pX@M+wH<0_P zo9EO&KTtd%E2h9-ReXb5+_Xi)KSm42{cnE{ZXtY}lH$T*)-whvWC?zy6J@RP@$Bw_ z5q)a1W#Xhm-L2uUk-3Gf1tu}>V6F6zJk~`n$^qy@A47*oL9LDHBbyo$ZIHC zpo5pmT5;MBa!U^MIE0QAv$qe_MpE0Bi`WZMb=vUXfk$inIvxsm~2RSlpBE|U`=CV9s$f{PR&4SDa9`guS0;t9a$I11qRr$uxDz*2D&NP8mF_H)NCRWT}EdkrG_Q4;oCNcicqnp(? z7d4~|1K4pLn|yp^M)JN5URqkFUZZfknf(FTkD!s#musDrp;fvcY(xggPEBVyk)2T_ zLbBGe7$)7`nCJ54RC5W1Q2LFf_HR73b)QN%!ueQP(u|+LNio|KvX0kN616FJr6tyV zx1bUK-~KKkE&>5jTg?Ptr96fHLe_ATKhyZrze+juJpDo+_;0%F0 zl3w4BG85SJ9=rZZd@qY_a$Pyg$P_FYR@uBVIf?3PXn|=zBQE#4Wd9_4AYzQ|v6+dC z!FQMq9cc|`%YmiV%{{(vdAcC?tGV!CX9>^Ufb zQaYzW8S)}onoI`*?}Jq0?{C@?@tVp_zhR1nZq=@-` zg-@Pc)Y;YqW`1H7RHyhV-E324Sc~{;8^zw?g=}i!c1v6pQY0wLpZTTOO5}@Ns_92d zw$F3+9&fr+iG)KLYD!s}q?QH0qu(sL{T>l#bY^kJWquh_z@u0HwJM*Xz7bw9qdL{2 zwx=uejHc*S2<|3DQX-{vUs;nSaQPPgxrIFYARvu_?nI4j3Tzl{5l_9s-ZurqofbNkFBAH=f zjkIfaA80mMnqqK0jh1{FOTS71SH@A3RM=Xc%!67`t+Yiy?C#`DKZy-olPuVCQ4JL% z9-vdd8qLqFX!6#qOwN9u_B2tz&A>3DbWS?zi3Bz*ES)=mk-?cc+ji^9~hWuDH z3U}G@M3a+OEZW5(3Sa6CFMdA{&#rvQjk4lj=ig!NLM3Lj3=@@Cl`hvNFcT`)cy1Rz zQ1yd8m&ajbc#^YCB($Pw`OwVL*Ld08)Hm;02v(lW-Lf-fQ9NW2R=t*+y`On@Th3*- z*iqo$iyJ)vchrzIo;OzJBPt3$mI`Vi+MMZXLMTl=uLfl}6hEG<{+x9K~G z@>xo(e?(w&E8At?%7<=PR9aw(-kQ1(%RTn!R5u1x^41xF08Vl$cl+tG#)H z%j;BRbyhqQ8=k$tQegjao;W1+&>yxoS#o6bY8?_S)$^{Tsw1x`o+}3WLV|>)w|vp( z-r?}PSwYMMoA3+Fyn4n7sCQhY`H>qv8SGK}uN8DtI*_%h`h(iG_@eQB!vDSkqHOt- zoOTK-0z|HVeQB1Me@17;u1b%#4pXk5YcVpmhHCyfN+=X~Y4DU8bhV34CDnsLO{heVR{0eV)o?l+y#$bHRl|ZyP7}8h~PML7$*O%UO310oG7hz^IZ*lqq`-| zW_=Ko1EM6GMy`?6B~ia#ZM_21LktfiMOf|UUTkowEXQPsr9co>!kzdOJpB2y3-p}4 zumBh84XsTKi@m^#Bk$s1Rg6$ojK~ia;`*J6u2}!JWP$n;%vl4izslPrg zh!cf}hfszF27d9zmTyZHLu7r?p3$eUywRfLz7L9AaZ3~IP`1GzB`mCk?V_M8W!lA? zf&CI|b&iZiQFdd3YR!~wZKUJ@NXex6V!bMQx~o4dAP;=DG2CkHaewY-bV|=J7h1D) zdqPJ}bb{?f^54^x5dn`-hne++MIKR5d0+N!I77O8+%+Tw_oZR7Ns4g$2dJUiCVMq> zRVSCbq=PNp`n>@hcBpyavyxI3Lf5SxndV5;YIAJkV=O86HppxXKf5448E zMnm3X!KqMTnX*ej|E}NHhG=1-2Mel#*jVxz5}g(7dTME4}`X!*YGAQ^m)HA^t;mTTU&+SkSz4AWXH zi(Yb@t-uvG{yH*RHu0*vi8rNf2;=}A+@lV^I&@n>aZXxFao7hZ&u%MS3J=thfNEH< zvO^RlZ6&7~ZKYh8)gz(ukL4k$ukv3>nQ^HMs!D~*lI0wYQVhrWXWOKgHE;zs=g5L^ z#6JIy?GMcI!elfVac^ZYkOG1F4pljuEB^m$?>nQS%9j0GxsG#HV8#JaP#CWSB`QG> zB@5Uj$vKRQgeFRqjCm9UX+V->i4BdCg9Jq+2}o#~32u+Eu@*y{mpMIcPaZ^t(M|VYwqD`(r*xLSR7_eh(`YMfR6B!;fWq zjH?(`!N$h>vXR^ui{lf6HPsrtk^Hl)rY|cr4l@aUc^t`M-SmR{(fXsA_Fiwy&2Lxd zWK1$_^}_Ae+fN!?ezo=M`j<8*@RogN!IL;b9-;gu$iw9M zQ+eA#^_urY>hj*Kq{xC(3zmjle~b6L{`O|L{@P-r8w=az%No1~s3c@_;Sl?kYc^I^ z=&l;~jpDJo{X&=CU40b&2=4&tSw z4cl9IuYzg2e%{dCT+Or4C~j7RWA^#I`Ex$m?Ouc3! zmAope7nma!Orwc9m}l7y6T}qq(}mwUl#Z2q{P9SvuFd>RG+X)VlaBxwrRxWI19*16 zIBY2F4I?<@Umz1x>%R=hWDqstncVtSm1r>!2_HWJJ7|fd@#^=T`Qh853AbU7WYST$ zG`G1r9u=Z#zJYcul`cQxnPalh<@ z%)V;749TQv|JyEZl;yW*O?uC44Wko(oCa}DY|rDO*pM_pNy^gN9ah0>I)Q4>a<3EhxreQ+fq($d9Map*nWj- z28p!hpPxHjG~{{Isn+kMD6-=c@=PGtg6R1tW9OPyCp$q_mysc0C`8H+9yzZT?N*Zu z8S9KSv)8?4=zJA*g_hW zo6oWmspS5`B43wPzxXnjB(+>MZZs4fA)far1KqCQ$cG+8u_jw9l#=87wB??YkLM3c zE8|SYQ40F+`C)7|tC|IQs1XC9(O4Dqy&J^wmA$E`lTd`IAYLQnm`_&k)GW!a z$%pNqS}(Cl&}8JjZrBucZYk`k7e}%lHr?C18n?bNRn=av>G&c$M`+$)dxpDB<8qD# zAEv#Cais)fy>a$AtE8dNCj7>g`nkDSZXd|8deDatosiVB2?{D(Yrdn|aLsEMF6@nnnK>mbTn z*~{C)k;8A)vC`tCJgH@nZohoc6*Jy*s@NW0eq-3Y$9Qah#W>cxFWMV(HqW*<`raTwUnS4Csa%E$VQ*pk{ z{nnq#84_*BN>3^T?*%h;n#hCj@(u4F@B?AZWYB_Ke@9{@cO1ih7Ezx%zUnie=0Q6jw++|E$?$~qE+A7ldiTc;+T)}GjZ)YW;J!ahI?ud>JC2?cDYDTGfs-=YZA|7?342eiYYRsNn+ljj+1{St{AK2|tqlk1 zckfvGa50XzT=c%YI4x>29McgnwPFvO;q^GT8k6H~#8Pc6{HjVsT_|jWjL5rC+ zxLRw|y}13l3$hVwAQ5>$Sq*(AvEZRBwt-9^`TK|$3RQjs;9j;7 zm`c86U$p~VLfQ7k#_b2o>sh4iUgR;dn^OlYY`yKrP#w`ncfO7Hb?@8I7KJYZnffCqkYdC6nVAj zdfh37ou9k7e-$Lm+WO^0ZWZ$$u(h)r8$5JQmiu3B7Mu{TV=?Dnywu2Lb+Jh(`|OvYYIg~5ig}`d+>~SS!KOfbg75c(cA-95kJql` zp!`zxPfxX4M|{I(98*d>?VNrL+pLdU{b81zEkPd6rbb66zDG^it<3i$2YFzxog1C0 zmS8%mit*LK{}eaX(r7w)(lKU&D6e*sG!!uCn6m7!_qM_0;PY&Cn$6kx-ltaEYLC=o z)C_Sqx9Pd}e`5Bcae+Pc_Nqw_XATmqx)H+c!kuOZsk z$BFINJ?Q-d-I6!}K}jaI9;g^}D+5oklTK(ftol?YBu4GN-(8uJXU>ZjML#1=9C0xV zi~3-?xMsaKqTQ_dkiPKGZdMz({Rf$PDrY@?9X19B+omI z7%zjhy@W1o##o2o$1m@R8%2ZsKI}e;HEm@aiV=HkB*D2bol?@2Fx;&7RsjIru%j^ra`YI1DR z3W5xhWdlf+c^ogzUO1GHnw08k3(Z*`OIP1=H$x5Y!?c^4!rA%;>H9EJzVZHM%r6TF zSz!V{?prSP!90Ztsf+NPh)|^>_kU^T+?n7~lk@8t6}#2>VK{z@BQH5isd$zYas`fx3_3OPhq(-@b5d9YrZk0#n5l=Et}0UxqanU1e+O= z@wS0ic82354CC1&`crQfNwO1`5=@5+$hv!iHhMbxJiX?ot*~}0bgeJ(S+BeJ%d>NiKC%3yf?dk{rA2a$Mrb`2CA$-^B(t+H6rruc3)#R84Jwg&EUO z=KaM;TFgPtm>7aCk!SCoi7wO9vK-X^53TV^m;gvPQ zf`a;vj?Qavcjg9gBkKcFp_+BZD%655IT}{YPXUoXSsw&CK%EB2HSh9t# zE-vc0y1p4aEb+73-fz^kJxi>RKXsSdsp<*s@pBxAcr`7pUNe{KjJ!O-t+hruJh^Lc zdf^ly@@nUAx3D1Rjp4lfE3Kp}Ii*g67$Amu77oo1|NUA>u^jib_(!mSk+JdFgtknm z1L3SV^7qZM+17@oNCNGUQvC5@z6uEQ$7lCQ&yR0cb`Q(#eZ7l>N~Zg%|6qSM1Q`}u(L zdEl|Am9G2~I0zEHKRJpjc~ZhqN4U9#a+NT?j4~JMWkwm1ZOr5l{W!Dju{UU#wf~O} zNQ!fDamj2^yO$OhbI7`I_W8#>9_-z=#8@sk;R&4YPsjgow{W-eTef@K7VzzVs8QuN zsuw?TV7gvEg}NAIsRgX`+j?3Y4K^+InlpXQDPyXmqazxpp{A+nNtQgK)Ny4wG%YP{ zVrnXD8?YwSq&VN==jW#uC2wgwXP3~Gmk$OGrS$Q}@T%v{t*zY_-orczZM?8*s^%-z zfw_UWK94dN0VegdN>6fTO3LqGknDjNW}wU^dGI*MjBU9iXj^Y?u*?Y7`27bDqF=qr zyWRS-f^GsreTo=G-bggiJpGA#PGhKRxU&3N494eN@aLaD8_78w)D8mRR(?8Q&o=;1 z28P_5PwLJJR|!3ynwOVXDadC zhmVh(fcN|tF;N9 z;9DYk*2 z8h8y<7o^fbXZNkHD41?!aYJX{cwy6T?njHV?=tkRJZSS)S?TN7+~ZIAlCsmEp?Y}GDr#!a$PQ2HZ$O#Xagk~&7MK6--O!tU$4_8_ zMW9&fjGWx)!qSo`6y!~@M7mh2v5}FWKmJ+C+te)fOKz`!V&TjyXCv^VW`2J;)7>#nkW0pHl0SB)t6JPb zoD>xQ9R37LNJ}dWOq6h}oSIvNz9UoMbzPT5xI%JJk(bVR@_qhD}7`Dt6ph4&^`i=dWkX zcPfB@3S6oo6zfput0=j)9Z6W@%fa;fje-p2U&S#!*N%lu-mhh9ZELF@E9gY^T!)qw zSdV_BzqVp@baYE=Yt?KlEE$XQJ2Tx`CN9AoLmh!DVnU|H*KmgUx*8gxxJ1yY$-91j zIG^S3q=6EgrT?O`=kynag6b7^kdFGmJD(yqcXz~2ndBS7pL`SO?XWR8YF%P#u`_71 zg<7!Kzkh!Z5aXPZat%(F3HF7IKpkV_;Gh}srs=>!H1mVMd}$;DRfByC+?w&?(C_-; zpfpe*fy_fL2S~r?iN%6BE{OI?WF1RPh%$E;?!}DC{FMx;}tC z8)n(Hlw)ve8q`}KZgq!j3nK`CIR~iK%Y=#%xBK$@T;E$In0oi>O0T(G`|eD8_<|WI zJ_mClpbMx>#&6{;P_ylh6%plW8Txd3B^h7UQ{rI6!^cO?FB{P{G<+GjInG7&v`1mk zckaAp;=D3Vmxgr$H`9aCsc+xDQJc<$PcsLtJpj6#=-Ak7xy`T4ORKBIo*X?MG*nB; z(L2MbAy%7;j2svB|E{)z8a1s42bo`TmtY8L^-q|ITdSi5lB525SZW;uvmMwuOn>3+ zxl!?8uGuWPt(@)44oM*SMRgOsn&^^GM)qiz8 zju;uxxf^S1YsZ1>O2TWl@9RZX6O*__SOx4*{q{IHIr#!qQJ)bIfcfn&vV9KoaY8{s zK?R0)!D&GJjEG3V%lV^qC0=hmm9Q7wziSY8U6MPcdbM(UM-^1yITUZ55HQShr4<1{ z(A}cb#5e=jZV-ux5Nuka&Z$^izy3NodHbre@(FN*lE6_li7YM>bL5TVDyJr!{tLDR ztB-yD--3U2>20wWl%QU*dY;l<3w7^HO=pN(0r-z30`9hGTvT%MPIbW+xZZRy)0H*& z{0_>7X`%H~X-^XOlX@Lu1~Tm6#=l@^aKejb>&jUNaP>wq-inI%x9P;%?G$=V$4OYK z@iuMovPozqCeXy7ZJ0P}kKT3r(V77KMLD_J%Cls@w}W$_bA|nmo)#^PKYzxfK)pq-6TT3UZ7ip&sYRC`9Om%Jmu&*;nTtan&c`HM_$ zv|j*9!bcAu+BIW&FvFE4{{H?RV5bjr{x*b&7ApGalOjPmz|05T7N&u1><;j8`K{)9 zQ%06(Gy}jRC2o^yaT>fCnVFW0w#Hz5thSe8o`r=O0)XR>f|8I)Ye3ME>L=DYuC~$@I1a zNgO~lumXt37}~$S>t0~e+&gQK_q}oB#vwRzv9mS0lT%ozixu}wQ>H(IyLs~_b;!MA2EdT>`$wvUS;5$VwVOuZU6SAYB?u$cu_u|HdPyJa&OL?H(!Lb1LsPJQ2<&uD7B+BlaHT1Rnn9Fm(W|F5uL!X39iZ$ z%!y^`_YT<&4RET}DOwcYsx{)cL-7t#=<#rsIcYd<5PvAWdghbp~BskkzM@SR6FFqfwoZd!i5Wf zY`?&dXdi#Oj(9klEU*AVD}!!O1+Pat`N+J;Z+*D+5}B!#Bp;XwDqLy@OAGrN22NU^ zN+yZ~t*awpN=r+NE;vqrQGy~OBCuX^0EuE>gT|W(9)rSM=;ibcOSx0xu5Vy~)VgW| z*cSF<1|=ePUzZa?t7&NTkPB+@*JanQDm^~Z`HWS-WBSYKe9P(qiJikD?@~@HJvLvo zMg9+w2vqYM>FY;v&%ABq)H5}WM+A;IIK1x;B$IMXifpj2fyPxE3FRG# z;5kKOErYf^g)Az22rfna6LWJyK|wnqfk`6o7VZPKM@B|`K}RPjlmY~PS4<^!0}&q{u#_b@zIbS{hl~Se35^{I+6jQ(0og%2 z+hCjk*F_O9p14JLR{{X`sDuOoi0{x{$vd02u;ww_o9n(~_YOuOngr=7G#ZV4wPO)r z=HXF1=)9ZDlV|kWjrZkcijb_(>X19!)T6p)Y@iS=Q$26> z6qi^JNC$+x(|%`^^S2Wxa)yS?VZ%3IgN1{GeC$f#DQ>GAA+yq^^G8bTIzP<0n-{Ap9<&aygg(|FWtwia`m62m1%3vNVzDd{kBu7L8G0xu5b_Q~ zV-xl(ci&k0&hV6V%sYTU`Gth4XQvP~MA29wMA%hB;6Fvyf<)lv+F?2XY*r2q960xL zGBOqdM);oVflI$t17jfaB7reZ?kZ*d z*0>m?2`XAvQ&(5l+I!>prvpx-)Vb}}_3xWj9m}+UK(qSCjEF;wiSce&4wA9W(n{<} zRXW&~B!m2<8)mZ@iqKmv$*xi?Cr-?Gg)I=l7;|6h&`bh_klkLp1p?MUum}=b4de)- zVGZg5awsUbL0&EU`d?|Cl%$!ViXyO|S#X_|TPR=?ByzrR>(ev>wXj%h@vTNCB=rbt z2;t`Fx-9W#7%n0z>NRAvfXPwq>({T?*AOUBBvfIL)@6gy2?;pa0J^!sDS&41(}D6k z=?+X)!}xqCf(NIIze6My0gy689FX6t^KR(n0vxRnib3&0GPgaz86+kFEbj0bh$FL% ztO5-B`}>iJ8tkuT!@YH%YHw+7jv!zR6cs=4kTIQUkDz!x74&+l5{MSX0WulInps-n zA%mF%U|){9yYV`f`SFKcfgU)BqmhBY9gJxVP!*>Gj+U?8nsebnBi<%xdzou)s6r3? zMlbkHJ~=tLhQ>y9?9rn~k)*_JTU+wyI5D<>aEA+x1a?vDKOxr6gph)a1UisaphC>A zR_Piun*m)}6rqhwHz-^Ffy2kn0$_$dAM|mqooTP{bKdLy9f6rhM&U4OwuU zfQU#(e%Ql@|3JKhYS_unI5At{iscoxBODhsl7qI_56pr62P_@s{e*yhScd%;tXy#fFjiHeDpI1OG*yyUI|UKNoeM52I9jfJdg%#qu}<5Nes zSIUq?04y&mARY{jM3DBSX7}csWrc14SbvZsuD<2myctx(mEr)*02X zY_Od%{#WKpV#hJCF2FeDmX{kt6N_$`|EWW{B3?57uj0;9`hXHY8)%#cV<^ z!WrDsTePZ81cIFM9!f>P0uXnC{s1zmA0pkIecK2NuBXz|0XhKz#xXGpEE;tKN=^sJ zvO)~u>cAy#_X5HdLYa$|X3`atbk*=)Xr(cJkylE}7+M2q1F!>MP41Pv@!=ngT(af} z$bgk3;XQ8-;0cVnK9~Xm2pb1%yVKBgga}@cg_Bb_q#+GrW)j4yNZc&$vt<4J_yt99 zxOomE74B0If7v@vt?%YjF|nZ(cjLeI$t6<|FAgY8`tCvsXqBO@r_@O%BshxXyWR_Y ztU(qdx0WWFNj*7{fm>v&Ad15i$P+;*GUEbasAu-)VbDWJ^1KGij5r43))q2XV=5n! zh6Vtj6SN@S2Q-I7Xb^dkzCPhXrbm~oFb{!H$<2mCG&1ozs0z{vB04TE2NscK*{c8g zWDHpBG>T^%48IsI3!u+rA=eb>-JS;}qro1?FB8ZM)!lw0w!3fY+6|4rN|S=NeUJnv zB=$k_Nqua$H7hN=zHQ(bukNTUsU| zs2y>+II #include +#include -#ifdef iconv -#warning iconv is defined. Please make sure you are including glibc iconv instead of libiconv. -#warning Trying to link with glibc iconv. This may cause linker errors. -#endif +extern "C" +{ + typedef void* iconv_t; + void* iconv_open(const char* tocode, const char* fromcode); + int iconv_close(void* cd); + size_t iconv(void* cd, char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft); +} -constexpr const std::size_t tmpbufsize = 4096; +void* glibc_iconv_open() +{ + return iconv_open("GB18030", "UTF-8"); +} -// iconv_string without autodetection. With glibc iconv. -// See https://git.savannah.gnu.org/cgit/libiconv.git/tree/extras/iconv_string.c -int glibc_iconv_string(const char *tocode, const char *fromcode, const char *start, const char *end, char **resultp, - std::size_t *lengthp) +int glibc_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length) { - iconv_t cd = ::iconv_open(tocode, fromcode); - std::size_t length; - char *result; - /* Determine the length we need. */ - { - std::size_t count = 0; - char tmpbuf[tmpbufsize]; - const char *inptr = start; - std::size_t insize = end - start; - while (insize > 0) + char *inptr = (char *)input_data; + size_t insize = input_length; + char *outptr = output_data; + size_t outsize = output_length; + while (insize > 0) + { + size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1)) { - char *outptr = tmpbuf; - std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); - if (res == (std::size_t)(-1) && errno != E2BIG) + if (errno == EINVAL) { - int saved_errno = (errno == EINVAL ? EILSEQ : errno); - ::iconv_close(cd); - errno = saved_errno; - return -1; + break; } - count += outptr - tmpbuf; - } - { - char *outptr = tmpbuf; - std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (std::size_t)(-1)) + else { - int saved_errno = errno; - ::iconv_close(cd); - errno = saved_errno; return -1; } - count += outptr - tmpbuf; } - length = count; } - if (lengthp != nullptr) + if (iconv(cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1)) { - *lengthp = length; - } - if (resultp == nullptr) - { - ::iconv_close(cd); - return 0; - } - result = (*resultp == nullptr ? (char *)malloc(length) : (char *)realloc(*resultp, length)); - *resultp = result; - if (length == 0) - { - ::iconv_close(cd); - return 0; - } - if (result == nullptr) - { - ::iconv_close(cd); - errno = ENOMEM; return -1; } - ::iconv(cd, nullptr, nullptr, nullptr, nullptr); /* return to the initial state */ - /* Do the conversion for real. */ - { - const char *inptr = start; - std::size_t insize = end - start; - char *outptr = result; - std::size_t outsize = length; - while (insize > 0) - { - std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); - if (res == (std::size_t)(-1)) - { - if (errno == EINVAL) - { - break; - } - else - { - int saved_errno = errno; - ::iconv_close(cd); - errno = saved_errno; - return -1; - } - } - } - { - std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (std::size_t)(-1)) - { - int saved_errno = errno; - ::iconv_close(cd); - errno = saved_errno; - return -1; - } - } - if (outsize != 0) - std::abort(); - } - ::iconv_close(cd); + memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. return 0; } - -void glibc_static_size_convert(const char *tocode, const char *fromcode, const char *data, std::size_t size, - char **resultp, std::size_t result_size) -{ - iconv_t cd = ::iconv_open(tocode, fromcode); - if (cd == (iconv_t)(-1)) - { - *resultp = nullptr; - std::abort(); - } - *resultp = (char *)malloc(result_size); - char *inptr = (char *)data; - char *outptr = *resultp; - std::size_t insize = size; - std::size_t outsize = result_size; - std::size_t res = ::iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (std::size_t)(-1)) - { - ::iconv_close(cd); - std::free(*resultp); - std::abort(); - } - ::iconv_close(cd); -} diff --git a/benchmark/libiconv_iconv.cpp b/benchmark/libiconv_iconv.cpp index 969e7ec2..3ba779da 100644 --- a/benchmark/libiconv_iconv.cpp +++ b/benchmark/libiconv_iconv.cpp @@ -1,18 +1,7 @@ #include "benchmark.hpp" - -#include "/usr/local/include/iconv.h" - #include #include - -#ifndef iconv -#warning iconv is not defined. Please make sure you are including libiconv instead of glibc iconv. -#warning Trying to link with libiconv. This may cause linker errors. - -#undef iconv_t -#undef iconv_open -#undef iconv -#undef iconv_close +#include #define iconv_t libiconv_t #define iconv_open libiconv_open @@ -26,137 +15,38 @@ extern "C" extern iconv_t iconv_open(const char *tocode, const char *fromcode); extern size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); } -#endif -constexpr std::size_t tmpbufsize = 4096; +void* libiconv_iconv_open() +{ + return iconv_open("GB18030", "UTF-8"); +} -// iconv_string without autodetection. Link with libiconv. -// See https://git.savannah.gnu.org/cgit/libiconv.git/tree/extras/iconv_string.c -int libiconv_iconv_string(const char *tocode, const char *fromcode, const char *start, const char *end, char **resultp, - std::size_t *lengthp) +int libiconv_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length) { - iconv_t cd = ::iconv_open(tocode, fromcode); - std::size_t length; - char *result; - /* Determine the length we need. */ - { - std::size_t count = 0; - char tmpbuf[tmpbufsize]; - const char *inptr = start; - std::size_t insize = end - start; - while (insize > 0) + char *inptr = (char *)input_data; + size_t insize = input_length; + char *outptr = output_data; + size_t outsize = output_length; + while (insize > 0) + { + size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1)) { - char *outptr = tmpbuf; - std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); - if (res == (std::size_t)(-1) && errno != E2BIG) + if (errno == EINVAL) { - int saved_errno = (errno == EINVAL ? EILSEQ : errno); - ::iconv_close(cd); - errno = saved_errno; - return -1; + break; } - count += outptr - tmpbuf; - } - { - char *outptr = tmpbuf; - std::size_t outsize = tmpbufsize; - std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (std::size_t)(-1)) + else { - int saved_errno = errno; - ::iconv_close(cd); - errno = saved_errno; return -1; } - count += outptr - tmpbuf; } - length = count; - } - if (lengthp != nullptr) - { - *lengthp = length; - } - if (resultp == nullptr) - { - ::iconv_close(cd); - return 0; - } - result = (*resultp == nullptr ? (char *)malloc(length) : (char *)realloc(*resultp, length)); - *resultp = result; - if (length == 0) - { - ::iconv_close(cd); - return 0; } - if (result == nullptr) + if (iconv(cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1)) { - ::iconv_close(cd); - errno = ENOMEM; return -1; } - ::iconv(cd, nullptr, nullptr, nullptr, nullptr); /* return to the initial state */ - /* Do the conversion for real. */ - { - const char *inptr = start; - std::size_t insize = end - start; - char *outptr = result; - std::size_t outsize = length; - while (insize > 0) - { - std::size_t res = ::iconv(cd, (char **)&inptr, &insize, &outptr, &outsize); - if (res == (std::size_t)(-1)) - { - if (errno == EINVAL) - { - break; - } - else - { - int saved_errno = errno; - ::iconv_close(cd); - errno = saved_errno; - return -1; - } - } - } - { - std::size_t res = ::iconv(cd, nullptr, nullptr, &outptr, &outsize); - if (res == (std::size_t)(-1)) - { - int saved_errno = errno; - ::iconv_close(cd); - errno = saved_errno; - return -1; - } - } - if (outsize != 0) - std::abort(); - } - ::iconv_close(cd); + memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. return 0; } - -void libiconv_static_size_convert(const char *tocode, const char *fromcode, const char *data, std::size_t size, - char **resultp, std::size_t result_size) -{ - iconv_t cd = ::iconv_open(tocode, fromcode); - if (cd == (iconv_t)(-1)) - { - *resultp = nullptr; - std::abort(); - } - *resultp = (char *)malloc(result_size); - char *inptr = (char *)data; - char *outptr = *resultp; - std::size_t insize = size; - std::size_t outsize = result_size; - std::size_t res = ::iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (std::size_t)(-1)) - { - ::iconv_close(cd); - free(*resultp); - std::abort(); - } - ::iconv_close(cd); -} diff --git a/benchmark/reiconv_iconv.cpp b/benchmark/reiconv_iconv.cpp new file mode 100644 index 00000000..02db3912 --- /dev/null +++ b/benchmark/reiconv_iconv.cpp @@ -0,0 +1,53 @@ +#include "benchmark.hpp" + +#include +#include +#include + +#define iconv_t reiconv_t +#define iconv_open reiconv_open +#define iconv reiconv_iconv +#define iconv_close reiconv_handle_close + +extern "C" +{ + typedef void *iconv_t; + extern int iconv_close(iconv_t cd); + extern iconv_t iconv_open(const char *tocode, const char *fromcode); + extern size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +} + +void* reiconv_iconv_open() +{ + return iconv_open("GB18030", "UTF-8"); +} + +int reiconv_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, + size_t output_length) +{ + char *inptr = (char *)input_data; + size_t insize = input_length; + char *outptr = output_data; + size_t outsize = output_length; + while (insize > 0) + { + size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); + if (res == (size_t)(-1)) + { + if (errno == EINVAL) + { + break; + } + else + { + return -1; + } + } + } + if (iconv(cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1)) + { + return -1; + } + memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. + return 0; +} diff --git a/benchmark/run.py b/benchmark/run.py new file mode 100755 index 00000000..76d26578 --- /dev/null +++ b/benchmark/run.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 + +"""Run the benchmark and plot the results.""" + +from __future__ import annotations + +import json +import sys +from pathlib import Path +from subprocess import PIPE, Popen + +import rich +import rich.progress +from matplotlib import pyplot as plt + +TEST_STRING_LEN = 50 +MAX_REPET_TIME = 100 + +data: dict[str, list[list[float]]] = {} + + +def command(args: list[str] | str) -> str: + """Generate shell command from a list of arguments. + + Args: + args (list[str] | str): The list of arguments. + + Returns: + str: The shell command. + + """ + if isinstance(args, str): + return args + + res_command = "" + for arg in args: + if " " in arg: + if '"' in arg: + arg = arg.replace('"', '\\"') # noqa: PLW2901 + res_command += f'"{arg}" ' + else: + res_command += f"{arg} " + return res_command.strip() + + +def add_data(str_repet_time: int, benchmark_name: str, time: float) -> None: + """Add data to the data dict. + + Args: + str_repet_time (int): The number of times the test string is + repeated. + benchmark_name (str): The name of the test. + time (float): The time taken to run the test. + + """ + if benchmark_name not in data: + data[benchmark_name] = [] + data[benchmark_name].append([str_repet_time * TEST_STRING_LEN, time]) + + +if __name__ == "__main__": + cwd = (Path(sys.argv[0]) / "..").resolve() + executable = cwd / "benchmark" + executable.chmod(0o755) + + with rich.progress.Progress() as progress: + task = progress.add_task("Running", total=MAX_REPET_TIME) + for test_string_repet_time in range(MAX_REPET_TIME): + with Popen( # noqa: S603 + [str(executable), str(test_string_repet_time)], + cwd=cwd, + shell=False, + stdout=PIPE, + ) as proc: + arg1 = command([str(executable)]) + rich.print( + f"Running benchmark: [green]{arg1}[/green] " + f"{test_string_repet_time} ...", + ) + if proc.wait() != 0: + rich.print( + f"[red]Error: Process failed with code " + f"{proc.returncode}[/red]", + ) + sys.exit(1) + proc.stdout.flush() # type: ignore[attr-defined] + test_data = json.loads( + proc.stdout.read().decode( # type: ignore[attr-defined] + "UTF-8", + ), + ) + for unit_data in test_data["benchmarks"]: + add_data( + test_string_repet_time, + unit_data["run_name"], + unit_data["real_time"], + ) + progress.update(task, advance=1) + + rich.print("[green]All benchmarks have been run successfully.[/green]") + rich.print(data) + + for name, values in data.items(): + plt.plot(*zip(*values), label=name) + plt.legend() + plt.xlabel("Test string length (bytes)") + plt.ylabel("Time (ns)") + plt.title("Benchmark") + plt.show() diff --git a/benchmark/test_string.hpp b/benchmark/test_string.hpp deleted file mode 100644 index 53c8e1d9..00000000 --- a/benchmark/test_string.hpp +++ /dev/null @@ -1,34 +0,0 @@ -constexpr const char* simple_test_string_utf8 = "S"; - -#define _big_test_string_utf8 "The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ -"The quick brown fox jumps over the lazy dog.0123456789你好,世界!" \ - -constexpr const char big_test_string_utf8[] = _big_test_string_utf8 _big_test_string_utf8 _big_test_string_utf8; diff --git a/lib/iconv.c b/lib/iconv.c index 305dbccc..d6fb7b06 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -264,6 +264,7 @@ _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. return 0; } + _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, size_t *output_length_ptr) { From 01c608976f6b108424ad8597c396a6fcbeff256d Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 1 Dec 2024 00:15:06 +0800 Subject: [PATCH 54/77] Fix compilation errors on MSVC. --- lib/iconv.c | 2 +- tests/buffer.hpp | 8 ++++---- tests/check-stateless.cpp | 6 +++--- tests/sort.hpp | 3 ++- tests/table-from.hpp | 4 ++-- tests/table-to.hpp | 2 +- tests/tests.cmake | 13 +++++++++++-- tests/uniq-u.hpp | 17 +++++++++++------ tests/utils.hpp | 6 +++--- 9 files changed, 38 insertions(+), 23 deletions(-) diff --git a/lib/iconv.c b/lib/iconv.c index d6fb7b06..d022a76f 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -44,7 +44,7 @@ */ #include "generated/aliases.h" -const size_t TEMP_BUFFER_SIZE = 4096; +#define TEMP_BUFFER_SIZE 4096 _CPPP_API struct VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; diff --git a/tests/buffer.hpp b/tests/buffer.hpp index ad5e4b29..18f09eca 100644 --- a/tests/buffer.hpp +++ b/tests/buffer.hpp @@ -78,7 +78,7 @@ class Buffer std::ofstream output_file{output_file_path, std::ios::binary | std::ios::trunc}; if (!output_file.good()) { - error(output_file_path, "Unable to open output file."); + error(output_file_path.string(), "Unable to open output file."); } output_file.write(buffer, size); @@ -156,9 +156,9 @@ class Buffer { if (*this != other) { - error("compare_data", "The data is different."); + error("compare_assert", "The data is different."); } - success("compare_data", "The data is the same."); + success("compare_assert", "The data is the same."); } void write_stream(std::ostream &stream, bool newline = false, bool flush = true) const @@ -199,7 +199,7 @@ class Buffer std::ifstream input_file{input_file_path, binary ? std::ios::binary : std::ios::in}; if (!input_file.good()) { - error(input_file_path, "Unable to open file " + input_file_path.string()); + error(input_file_path.string(), "Unable to open file " + input_file_path.string()); } std::size_t size = std::filesystem::file_size(input_file_path); diff --git a/tests/check-stateless.cpp b/tests/check-stateless.cpp index c32f7deb..b8d78f5d 100644 --- a/tests/check-stateless.cpp +++ b/tests/check-stateless.cpp @@ -39,12 +39,12 @@ void check2_pre_process(const std::filesystem::path &input_file_path, const std: std::ifstream input_file {input_file_path}; if (!input_file.good()) { - error(input_file_path, "Unable to open input file."); + error(input_file_path.string(), "Unable to open input file."); } std::ofstream output_file {output_file_path, std::ios::trunc}; if (!output_file.good()) { - error(output_file_path, "Unable to open output file."); + error(output_file_path.string(), "Unable to open output file."); } std::string line; @@ -70,7 +70,7 @@ int main(int argc, char *argv[]) print_stderr("Usage: check-stateless DATADIR CHARSET [--debug]\n"); return EXIT_FAILURE; } - bool debug; + bool debug = false; if (argc == 4) { debug = true; diff --git a/tests/sort.hpp b/tests/sort.hpp index 5ab92cae..fe537a97 100644 --- a/tests/sort.hpp +++ b/tests/sort.hpp @@ -26,13 +26,14 @@ #include #include +#include #include #include #include "output.hpp" #include "utils.hpp" -inline void sort_file(const std::string &file_name, const std::string &output_file_name) +inline void sort_file(const std::filesystem::path &file_name, const std::filesystem::path &output_file_name) { std::vector lines; diff --git a/tests/table-from.hpp b/tests/table-from.hpp index 7d7349f4..c608192c 100644 --- a/tests/table-from.hpp +++ b/tests/table-from.hpp @@ -199,7 +199,7 @@ inline void table_from(const std::filesystem::path &save_file_path, const std::s std::ofstream save_file{save_file_path, std::ios::out | std::ios::trunc}; if (!save_file.good()) { - error(save_file_path, "Cannot open save file."); + error(save_file_path.string(), "Cannot open save file."); } iconv_t cd = iconv_open("UCS-4-INTERNAL", charset.c_str()); @@ -211,7 +211,7 @@ inline void table_from(const std::filesystem::path &save_file_path, const std::s unsigned int out[3]; unsigned char buf[4]; unsigned int i[4]; - int result; + run_table_from_test(cd, i, 0, out, buf, bmp_only, save_file); iconv_close(cd); diff --git a/tests/table-to.hpp b/tests/table-to.hpp index 4fb3b680..d0b6312e 100644 --- a/tests/table-to.hpp +++ b/tests/table-to.hpp @@ -44,7 +44,7 @@ inline void table_to(const std::filesystem::path &save_file_path, const std::str std::ofstream save_file{save_file_path, std::ios::out | std::ios::trunc}; if (!save_file.good()) { - error(save_file_path, "Cannot open save file."); + error(save_file_path.string(), "Cannot open save file."); } iconv_t cd = iconv_open(charset.c_str(), "UCS-4-INTERNAL"); diff --git a/tests/tests.cmake b/tests/tests.cmake index 7a240b95..95164cfa 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -26,6 +26,10 @@ set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +macro(convert_to_crlf input_file output_file) + file(READ ${input_file} file_content) + file(WRITE ${output_file} "${file_content}") +endmacro() # Test macro macro(test state encoding) @@ -39,14 +43,19 @@ endmacro(test) set(TEST_DATA_DIR "${output_testsdir}/data") # Copy data directory. -if (NOT EXISTS "${TEST_DATA_DIR}") +if (NOT EXISTS "${TEST_DATA_DIR}" OR TRUE) file(MAKE_DIRECTORY "${TEST_DATA_DIR}") file(GLOB_RECURSE TEST_DATA_FILES "${CMAKE_CURRENT_SOURCE_DIR}/tests/data/*") foreach(TEST_FILE ${TEST_DATA_FILES}) if(NOT IS_DIRECTORY "${TEST_FILE}") get_filename_component(TEST_FILE_NAME "${TEST_FILE}" NAME) - file(COPY_FILE "${TEST_FILE}" "${TEST_DATA_DIR}/${TEST_FILE_NAME}") + if ("${TEST_FILE_NAME}" MATCHES "\\.TXT$" AND (WIN32 OR WINCE OR WINDOWS_PHONE OR WINDOWS_STORE)) + # On Windows, copy the text-only file as CR LF. + convert_to_crlf("${TEST_FILE}" "${TEST_DATA_DIR}/${TEST_FILE_NAME}") + else() + file(COPY_FILE "${TEST_FILE}" "${TEST_DATA_DIR}/${TEST_FILE_NAME}") + endif() endif() endforeach() unset(TEST_DATA_FILES) diff --git a/tests/uniq-u.hpp b/tests/uniq-u.hpp index d0fa0f4e..5336abde 100644 --- a/tests/uniq-u.hpp +++ b/tests/uniq-u.hpp @@ -188,18 +188,21 @@ static void uniq_u(const std::filesystem::path& infile, std::filesystem::path& o char *prevfield, *thisfield; size_t prevlen, thislen; int match_count = 0; + std::string tmp; - FILE *istream = std::fopen(infile.c_str(), "r"); + tmp = infile.string(); + FILE *istream = std::fopen(tmp.c_str(), "r"); if (istream == nullptr) { - print_stderr("uniq-u: Error while opening {}\n", infile); + print_stderr("uniq-u: Error while opening {}\n", tmp); error("fopen", "File open error."); } - FILE *ostream = std::fopen(outfile.c_str(), "w"); + tmp = outfile.string(); + FILE *ostream = std::fopen(tmp.c_str(), "w"); if (ostream == nullptr) { - print_stderr("uniq-u: Error while opening {}\n", outfile); + print_stderr("uniq-u: Error while opening {}\n", tmp); error("fopen", "File open error."); } @@ -254,13 +257,15 @@ static void uniq_u(const std::filesystem::path& infile, std::filesystem::path& o closefiles: if (std::ferror(istream) || std::fclose(istream) == EOF) { - print_stderr("uniq-u: Error while reading {}\n", infile); + tmp = infile.string(); + print_stderr("uniq-u: Error while reading {}\n", tmp); error("fclose", "I/O Error."); } if (ferror(ostream) || fclose(ostream) == EOF) { - print_stderr("uniq-u: Error while writing {}\n", outfile); + tmp = outfile.string(); + print_stderr("uniq-u: Error while writing {}\n", tmp); error("fclose", "I/O Error."); } diff --git a/tests/utils.hpp b/tests/utils.hpp index 7e667f76..3040a74c 100644 --- a/tests/utils.hpp +++ b/tests/utils.hpp @@ -66,7 +66,7 @@ inline void write_all(const std::filesystem::path &output_file_path, const std:: std::ios::binary | std::ios::ate | (append ? std::ios::app : std::ios::trunc)}; if (!output_file.good()) { - error(output_file_path, "Unable to open output file."); + error(output_file_path.string(), "Unable to open output file."); } output_file.write(buffer.data(), buffer.size()); @@ -86,7 +86,7 @@ inline void write_all(const std::filesystem::path &output_file_path, const Buffe std::ios::binary | std::ios::ate | (append ? std::ios::app : std::ios::trunc)}; if (!output_file.good()) { - error(output_file_path, "Unable to open output file."); + error(output_file_path.string(), "Unable to open output file."); } output_file.write(buffer.data(), buffer.size); @@ -103,7 +103,7 @@ inline void merge_files(const std::vector &files, const s std::ofstream output_file{output_file_path, std::ios::binary | std::ios::trunc}; if (!output_file.good()) { - error(output_file_path, "Unable to open output file."); + error(output_file_path.string(), "Unable to open output file."); } for (const auto &file : files) From 3aa7c01e52c3de808896cda8183ad9060cf9959d Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Dec 2024 10:08:44 +0800 Subject: [PATCH 55/77] Add `locale_charset` definition. --- include/cppp/reiconv.hpp.in | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 49269d2a..72a70025 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -141,6 +141,19 @@ namespace reiconv */ extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, bool strict = true); + /** + * @brief Determine the current locale's character encoding, and canonicalize it into one of + * the canonical names. + * @note The result must not be freed. It is statically allocated. + * @note The result becomes invalid when `setlocale` is used to change the global locale, or + * when the value of one of the environment variables `LC_ALL`, `LC_CTYPE`, `LANG` is changed. + * Threads in multithreaded programs should not do this. If the canonical name cannot be + * determined, the result is a non-canonical name. + * @return The name of the current locale's character encoding. + * @see Libiconv's `locale_charset`. + */ + extern _CPPP_API std::string_view locale_charset(); + } // namespace reiconv #endif // _CPPP_REICONV_HPP_ From 2d38ac3badde1976fad7d4bef5f63514ed619acf Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Dec 2024 11:06:16 +0800 Subject: [PATCH 56/77] Sync from libiconv: a4c1470b9f603056cb74de97c199802f9dfefb36. Message: ```text Reported by Tomas Kalibera in . * lib/converters.h (struct conv_struct): Add field 'ibyteorder'. * lib/iconv_open2.h: Initialize the ibyteorder field. * lib/ucs2.h (ucs2_mbtowc): Use the ibyteorder field instead of the istate field. * lib/ucs4.h (ucs4_mbtowc): Likewise. * lib/utf16.h (utf16_mbtowc): Likewise. * lib/utf32.h (utf32_mbtowc): Likewise. * tests/test-bom-state.c: New file. * tests/Makefile.in (check): Run test-bom-state. (test-bom-state, test-bom-state.@OBJEXT@): New targets. (clean): Remove test-bom-state. (SOURCE_FILES): Add test-bom-state.c. * NEWS: Mention the change. ``` --- lib/converters/ucs2.h | 10 ++-- lib/converters/ucs4.h | 10 ++-- lib/converters/utf16.h | 12 ++-- lib/converters/utf32.h | 125 +++++++++++++++++++++------------------ lib/iconv.c | 1 + lib/reiconv_defines.h | 1 + tests/test-bom-state.cpp | 120 +++++++++++++++++++++++++++++++++++++ tests/tests.cmake | 34 +++++++---- 8 files changed, 227 insertions(+), 86 deletions(-) create mode 100644 tests/test-bom-state.cpp diff --git a/lib/converters/ucs2.h b/lib/converters/ucs2.h index 36a8cde0..b70c9b9d 100644 --- a/lib/converters/ucs2.h +++ b/lib/converters/ucs2.h @@ -1,7 +1,7 @@ /** * @file ucs2.h * @brief UCS-2 - * @copyright Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 1999-2024 Free Software Foundation, Inc. * @copyright Copyright (C) 2024 The C++ Plus Project. */ /* @@ -34,7 +34,7 @@ /* The state is 0 if big-endian, 1 if little-endian. */ static int ucs2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; + state_t state = conv->ibyteorder; int count = 0; for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX - 2;) { @@ -48,20 +48,20 @@ static int ucs2_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t } else if (wc >= 0xd800 && wc < 0xe000) { - conv->istate = state; + conv->ibyteorder = state; return RET_SHIFT_ILSEQ(count); } else { *pwc = wc; - conv->istate = state; + conv->ibyteorder = state; return count + 2; } s += 2; n -= 2; count += 2; } - conv->istate = state; + conv->ibyteorder = state; return RET_TOOFEW(count); } diff --git a/lib/converters/ucs4.h b/lib/converters/ucs4.h index ad72adbe..d50f903a 100644 --- a/lib/converters/ucs4.h +++ b/lib/converters/ucs4.h @@ -1,7 +1,7 @@ /** * @file ucs4.h * @brief UCS-4 - * @copyright Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 1999-2024 Free Software Foundation, Inc. * @copyright Copyright (C) 2024 The C++ Plus Project. */ /* @@ -34,7 +34,7 @@ /* The state is 0 if big-endian, 1 if little-endian. */ static int ucs4_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; + state_t state = conv->ibyteorder; int count = 0; for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX - 4;) { @@ -50,19 +50,19 @@ static int ucs4_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t else if (wc <= 0x7fffffff) { *pwc = wc; - conv->istate = state; + conv->ibyteorder = state; return count + 4; } else { - conv->istate = state; + conv->ibyteorder = state; return RET_SHIFT_ILSEQ(count); } s += 4; n -= 4; count += 4; } - conv->istate = state; + conv->ibyteorder = state; return RET_TOOFEW(count); } diff --git a/lib/converters/utf16.h b/lib/converters/utf16.h index 8f845c1f..63fbb93f 100644 --- a/lib/converters/utf16.h +++ b/lib/converters/utf16.h @@ -1,7 +1,7 @@ /** * @file utf16.h * @brief UTF-16 - * @copyright Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. + * @copyright Copyright (C) 1999-2024 Free Software Foundation, Inc. * @copyright Copyright (C) 2024 The C++ Plus Project. */ /* @@ -40,7 +40,7 @@ /* The state is 0 if big-endian, 1 if little-endian. */ static int utf16_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; + state_t state = conv->ibyteorder; int count = 0; for (; n >= 2 && count <= RET_COUNT_MAX && count <= INT_MAX - 2;) { @@ -60,7 +60,7 @@ static int utf16_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) goto ilseq; *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); - conv->istate = state; + conv->ibyteorder = state; return count + 4; } else @@ -73,18 +73,18 @@ static int utf16_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t else { *pwc = wc; - conv->istate = state; + conv->ibyteorder = state; return count + 2; } s += 2; n -= 2; count += 2; } - conv->istate = state; + conv->ibyteorder = state; return RET_TOOFEW(count); ilseq: - conv->istate = state; + conv->ibyteorder = state; return RET_SHIFT_ILSEQ(count); } diff --git a/lib/converters/utf32.h b/lib/converters/utf32.h index 6076a794..80b04dd4 100644 --- a/lib/converters/utf32.h +++ b/lib/converters/utf32.h @@ -1,7 +1,7 @@ /** * @file utf32.h * @brief UTF-32 - * @copyright Copyright (C) 1999-2001, 2008, 2011, 2016, 2024 Free Software Foundation, Inc. + * @copyright Copyright (C) 1999-2024 Free Software Foundation, Inc. * @copyright Copyright (C) 2024 The C++ Plus Project. */ /* @@ -38,70 +38,81 @@ only for strings containing U+FEFF characters, which is quite rare.) The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ -static int -utf32_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int utf32_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - state_t state = conv->istate; - int count = 0; - for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX-4;) { - ucs4_t wc = (state - ? (ucs4_t) s[0] - + ((ucs4_t) s[1] << 8) - + ((ucs4_t) s[2] << 16) - + ((ucs4_t) s[3] << 24) - : ((ucs4_t) s[0] << 24) - + ((ucs4_t) s[1] << 16) - + ((ucs4_t) s[2] << 8) - + (ucs4_t) s[3]); - if (wc == 0x0000feff) { - } else if (wc == 0xfffe0000u) { - state ^= 1; - } else { - if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) { - *pwc = wc; - conv->istate = state; - return count+4; - } else { - conv->istate = state; - return RET_SHIFT_ILSEQ(count); - } + state_t state = conv->ibyteorder; + int count = 0; + for (; n >= 4 && count <= RET_COUNT_MAX && count <= INT_MAX - 4;) + { + ucs4_t wc = (state ? (ucs4_t)s[0] + ((ucs4_t)s[1] << 8) + ((ucs4_t)s[2] << 16) + ((ucs4_t)s[3] << 24) + : ((ucs4_t)s[0] << 24) + ((ucs4_t)s[1] << 16) + ((ucs4_t)s[2] << 8) + (ucs4_t)s[3]); + if (wc == 0x0000feff) + { + } + else if (wc == 0xfffe0000u) + { + state ^= 1; + } + else + { + if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) + { + *pwc = wc; + conv->ibyteorder = state; + return count + 4; + } + else + { + conv->ibyteorder = state; + return RET_SHIFT_ILSEQ(count); + } + } + s += 4; + n -= 4; + count += 4; } - s += 4; n -= 4; count += 4; - } - conv->istate = state; - return RET_TOOFEW(count); + conv->ibyteorder = state; + return RET_TOOFEW(count); } /* We output UTF-32 in big-endian order, with byte-order mark. */ /* The state is 0 at the beginning, 1 after the BOM has been written. */ -static int -utf32_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int utf32_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) { - int count = 0; - if (!conv->ostate) { - if (n >= 4) { - r[0] = 0x00; - r[1] = 0x00; - r[2] = 0xFE; - r[3] = 0xFF; - r += 4; n -= 4; count += 4; - } else - return RET_TOOSMALL; - } - if (wc < 0x110000) { - if (n >= 4) { - r[0] = 0; - r[1] = (unsigned char) (wc >> 16); - r[2] = (unsigned char) (wc >> 8); - r[3] = (unsigned char) wc; - conv->ostate = 1; - return count+4; - } else - return RET_TOOSMALL; + if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) + { + int count = 0; + if (!conv->ostate) + { + if (n >= 4) + { + r[0] = 0x00; + r[1] = 0x00; + r[2] = 0xFE; + r[3] = 0xFF; + r += 4; + n -= 4; + count += 4; + } + else + return RET_TOOSMALL; + } + if (wc < 0x110000) + { + if (n >= 4) + { + r[0] = 0; + r[1] = (unsigned char)(wc >> 16); + r[2] = (unsigned char)(wc >> 8); + r[3] = (unsigned char)wc; + conv->ostate = 1; + return count + 4; + } + else + return RET_TOOSMALL; + } } - } - return RET_ILUNI; + return RET_ILUNI; } #endif /* _UTF32_H_ */ diff --git a/lib/iconv.c b/lib/iconv.c index d022a76f..13b7dd1c 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -108,6 +108,7 @@ _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool disca // Initialize the states. cd->istate = 0; cd->ostate = 0; + cd->ibyteorder = 0; // Initialize the operation flags. cd->discard_ilseq = discard_ilseq; diff --git a/lib/reiconv_defines.h b/lib/reiconv_defines.h index 1fb5c4b4..9d2b665c 100644 --- a/lib/reiconv_defines.h +++ b/lib/reiconv_defines.h @@ -130,6 +130,7 @@ struct conv_struct /* Input (conversion multibyte -> unicode) */ int iindex; struct mbtowc_funcs ifuncs; + state_t ibyteorder; state_t istate; /* Output (conversion unicode -> multibyte) */ int oindex; diff --git a/tests/test-bom-state.cpp b/tests/test-bom-state.cpp new file mode 100644 index 00000000..943d1d96 --- /dev/null +++ b/tests/test-bom-state.cpp @@ -0,0 +1,120 @@ +/** + * @file sort.cpp + * @brief Checks that iconv does not forget about the byte-order state. + * @author Bruno Haible + * @copyright Copyright (C) 2024 Free Software Foundation, Inc. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +#include "cppp/reiconv.h" + +#include +#include +#include + +/* + * This test checks that iconv(cd, nullptr, nullptr, ...) does not forget about + * the byte-order state in conversions from UCS-2, UCS-4, UTF-16, UTF-32. + * + * The POSIX specification + * + * is clear that iconv(cd, nullptr, nullptr, ...) has an effect for state-dependent + * encodings only. The manual page + * + * is not so clear about it. But Ulrich Drepper states it correctly in + * : + * "Flushing using iconv() only resets the shift state. This is needed + * for stateful encodings with states where the caller wants a converted + * string to end in the initial state. The BOM recognition has nothing + * to do with shift states. Once the byte order is determined this is + * a property which stays with the iconv_t descriptor for its lifetime." + * + * Based on a bug report from Tomas Kalibera in + * . + */ + +static void test_one_input(const char *fromcode, const char *input, std::size_t input_size) +{ + char outbuf1[3]; + char outbuf2[3]; + + ::reiconv_t cd = ::reiconv_open("UTF-8", fromcode); + if (cd == (::reiconv_t)(-1)) + { + std::abort(); + } + + // Convert the first character. + char *inbuf = (char *)input; + std::size_t inbytesleft = input_size; + char *outbuf = outbuf1; + std::size_t outbytesleft = sizeof(outbuf1); + std::size_t ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != (size_t)(-1) || errno != E2BIG || outbytesleft != 0) + { + std::abort(); + } + if (std::memcmp(outbuf1, "\xe2\x94\xa6", 3) != 0) // Should be U+2526. + { + std::abort(); + } + + // Reset the shift state. + ret = ::reiconv_iconv(cd, nullptr, nullptr, nullptr, nullptr); + if (ret) + { + std::abort(); + } + + // Convert the second character. + outbuf = outbuf2; + outbytesleft = sizeof(outbuf2); + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != 0 || outbytesleft != 0) + { + std::abort(); + } + if (memcmp(outbuf2, "\xe2\x98\xa9", 3) != 0) // Should be U+2629. + { + std::abort(); + } + + ::reiconv_handle_close(cd); +} + +static void test_both_inputs(const char *fromcode, const char *be_input, const char *le_input, std::size_t input_size) +{ + test_one_input(fromcode, be_input, input_size); + test_one_input(fromcode, le_input, input_size); +} + +int main() +{ + static const char ucs2_be_input[] = "\xfe\xff\x25\x26\x26\x29"; + static const char ucs2_le_input[] = "\xff\xfe\x26\x25\x29\x26"; + test_both_inputs("UCS-2", ucs2_be_input, ucs2_le_input, sizeof(ucs2_be_input) - 1); + test_both_inputs("UTF-16", ucs2_be_input, ucs2_le_input, sizeof(ucs2_be_input) - 1); + + static const char ucs4_be_input[] = "\x00\x00\xfe\xff\x00\x00\x25\x26\x00\x00\x26\x29"; + static const char ucs4_le_input[] = "\xff\xfe\x00\x00\x26\x25\x00\x00\x29\x26\x00\x00"; + test_both_inputs("UCS-4", ucs4_be_input, ucs4_le_input, sizeof(ucs4_be_input) - 1); + test_both_inputs("UTF-32", ucs4_be_input, ucs4_le_input, sizeof(ucs4_be_input) - 1); + + return EXIT_SUCCESS; +} diff --git a/tests/tests.cmake b/tests/tests.cmake index 95164cfa..56ca1b50 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -10,21 +10,24 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/tests") include_directories("${output_includedir}") # Test executables -add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") -add_executable(check-encoding "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-encoding.cpp") -add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") -add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") -add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") +add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") +add_executable(test-bom-state "${CMAKE_CURRENT_SOURCE_DIR}/tests/test-bom-state.cpp") +add_executable(check-encoding "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-encoding.cpp") +add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") +add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") +add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") -target_link_libraries(check-encoding libcppp-reiconv.static) -target_link_libraries(check-stateful libcppp-reiconv.static) -target_link_libraries(check-stateless libcppp-reiconv.static) +target_link_libraries(test-bom-state libcppp-reiconv.static) +target_link_libraries(check-encoding libcppp-reiconv.static) +target_link_libraries(check-stateful libcppp-reiconv.static) +target_link_libraries(check-stateless libcppp-reiconv.static) -set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-encoding PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(test-bom-state PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-encoding PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) macro(convert_to_crlf input_file output_file) file(READ ${input_file} file_content) @@ -103,6 +106,11 @@ add_test(NAME check-encoding COMMAND "$" ) +add_test(NAME test-bom-state + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$" + ) + # General multi-byte encodings. test("stateless" "UTF-8") test("stateful" "UTF-16") From e1f854028ebf5ae1358f41d8099e1fb66197a998 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Dec 2024 11:08:38 +0800 Subject: [PATCH 57/77] Update `.gitignore` after last commit. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 554d2996..1b2b9309 100644 --- a/.gitignore +++ b/.gitignore @@ -16,11 +16,12 @@ CPackConfig.cmake CPackSourceConfig.cmake _CPack_Packages pdb -tests/check-ascii-converters +tests/check-encoding tests/check-stateful tests/check-stateless tests/data-generator tests/sort +tests/test-bom-state windows/cppp-reiconv.rc *.inst *.log From e4d4f72aa12a4000f2ab3b51ca8a082cfded7875 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Dec 2024 12:37:01 +0800 Subject: [PATCH 58/77] Sync from libiconv: ef2f457f0b409da5a682fc3387d7dbeb55147483. Message: ```text Support multiple suffixes in iconv_open, like glibc does. * lib/iconv_open1.h: Use a loop when looking for the common suffixes. * tests/test-discard.c: New file. * tests/Makefile.in (check): Run test-discard. (test-discard, test-discard.@OBJEXT@): New targets. (clean): Remove test-discard. (SOURCE_FILES): Add test-discard.c. * NEWS: Mention the change. ``` --- lib/iconv.c | 4 +- tests/test-bom-state.cpp | 6 +- tests/test-discard.cpp | 258 +++++++++++++++++++++++++++++++++++++++ tests/tests.cmake | 20 ++- 4 files changed, 277 insertions(+), 11 deletions(-) create mode 100644 tests/test-discard.cpp diff --git a/lib/iconv.c b/lib/iconv.c index 13b7dd1c..d7657ba4 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -154,7 +154,7 @@ _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) for (size_t i = 0; i < fromcode_len; i++) { - if (i < fromcode_len && fromcode_buf[i] == '/') + if (fromcode_buf[i] == '/') { fromcode_buf[i] = '\0'; if (i + 7 < fromcode_len && memcmp(fromcode_buf + i + 1, "/IGNORE", 8) == 0) @@ -169,7 +169,7 @@ _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) if (tocode_buf[i] == '/') { tocode_buf[i] = '\0'; - if (i + 7 < fromcode_len && memcmp(tocode_buf + i + 1, "/IGNORE", 8) == 0) + if (i + 7 < tocode_len && memcmp(tocode_buf + i + 1, "/IGNORE", 7) == 0) { discard_ilseq = true; } diff --git a/tests/test-bom-state.cpp b/tests/test-bom-state.cpp index 943d1d96..bd8916d4 100644 --- a/tests/test-bom-state.cpp +++ b/tests/test-bom-state.cpp @@ -1,7 +1,7 @@ /** - * @file sort.cpp + * @file test-bom-state.cpp * @brief Checks that iconv does not forget about the byte-order state. - * @author Bruno Haible + * @author Bruno Haible, ChenPi11 * @copyright Copyright (C) 2024 Free Software Foundation, Inc. */ /* @@ -66,7 +66,7 @@ static void test_one_input(const char *fromcode, const char *input, std::size_t char *outbuf = outbuf1; std::size_t outbytesleft = sizeof(outbuf1); std::size_t ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); - if (ret != (size_t)(-1) || errno != E2BIG || outbytesleft != 0) + if (ret != (std::size_t)(-1) || errno != E2BIG || outbytesleft != 0) { std::abort(); } diff --git a/tests/test-discard.cpp b/tests/test-discard.cpp new file mode 100644 index 00000000..d6987433 --- /dev/null +++ b/tests/test-discard.cpp @@ -0,0 +1,258 @@ +/** + * @file test-bom-state.cpp + * @brief Checks the behaviour of iconv() with suffix //IGNORE. + * @author Bruno Haible, ChenPi11 + * @copyright Copyright (C) 2024 Free Software Foundation, Inc. + */ +/* + * This file is part of the cppp-reiconv Library. + * + * The cppp-reiconv Library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv Library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv Library; see the file LICENSE. + * If not, see . + */ + +#include "iconv.h" + +#include +#include +#include +#include + +static const char input1[8] = "3\xd4\xe2\x84\x83\xc3\x9f"; +static const char input2[8] = "3\xe2\x84\x83\xd4\xc3\x9f"; + +static void test_default(::reiconv_t cd) +{ + char output[10]; + char *inbuf; + std::size_t inbytesleft; + char *outbuf; + std::size_t outbytesleft; + std::size_t ret; + + inbuf = (char *)input1; + inbytesleft = sizeof(input1) - 1; + outbuf = output; + outbytesleft = sizeof(output); + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != (size_t)(-1) || errno != EILSEQ || sizeof(input1) - 1 - inbytesleft != 1) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 1 || output[0] != '3') + { + std::abort(); + } + + inbuf = (char *)input2; + inbytesleft = sizeof(input2) - 1; + outbuf = output; + outbytesleft = sizeof(output); + ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != (std::size_t)(-1) || errno != EILSEQ || sizeof(input2) - 1 - inbytesleft != 1) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 1 || output[0] != '3') + { + std::abort(); + } +} + +static void test_translit(::reiconv_t cd) +{ + char output[10]; + char *inbuf; + std::size_t inbytesleft; + char *outbuf; + std::size_t outbytesleft; + std::size_t ret; + + inbuf = (char *)input1; + inbytesleft = sizeof(input1) - 1; + outbuf = output; + outbytesleft = sizeof(output); + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != (std::size_t)(-1) || errno != EILSEQ || sizeof(input1) - 1 - inbytesleft != 1) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 1 || output[0] != '3') + { + std::abort(); + } + + inbuf = (char *)input2; + inbytesleft = sizeof(input2) - 1; + outbuf = output; + outbytesleft = sizeof(output); + ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != (std::size_t)(-1) || errno != EILSEQ || sizeof(input2) - 1 - inbytesleft != 4) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 3 || output[0] != '3' || output[1] != '\xb0' || output[2] != 'C') + { + std::abort(); + } +} + +static void test_ignore(::reiconv_t cd) +{ + char output[10]; + char *inbuf; + std::size_t inbytesleft; + char *outbuf; + std::size_t outbytesleft; + std::size_t ret; + + inbuf = (char *)input1; + inbytesleft = sizeof(input1) - 1; + outbuf = output; + outbytesleft = sizeof(output) - 1; + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != 1 || inbytesleft != 0) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 3 || output[0] != '3' || output[1] != '\xdf') + { + std::abort(); + } + + inbuf = (char *)input2; + inbytesleft = sizeof(input2) - 1; + outbuf = output; + outbytesleft = sizeof(output) - 1; + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != 1 || inbytesleft != 0) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 3 || output[0] != '3' || output[1] != '\xdf') + { + std::abort(); + } +} + +static void test_ignore_translit(::reiconv_t cd) +{ + char output[10]; + char *inbuf; + std::size_t inbytesleft; + char *outbuf; + std::size_t outbytesleft; + std::size_t ret; + + inbuf = (char *)input1; + inbytesleft = sizeof(input1) - 1; + outbuf = output; + outbytesleft = sizeof(output); + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != 1 || inbytesleft != 0) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 4 || output[0] != '3' || output[1] != '\xb0' || output[2] != 'C' || + output[3] != '\xdf') + { + std::abort(); + } + + inbuf = (char *)input2; + inbytesleft = sizeof(input2) - 1; + outbuf = output; + outbytesleft = sizeof(output); + ret = ::reiconv_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (ret != 1 || inbytesleft != 0) + { + std::abort(); + } + if (sizeof(output) - outbytesleft != 4 || output[0] != '3' || output[1] != '\xb0' || output[2] != 'C' || + output[3] != '\xdf') + { + std::abort(); + } +} + +int main() +{ + ::reiconv_t cd; + +#pragma region Default conversion + + cd = ::reiconv_open("ISO-8859-1", "UTF-8"); + test_default(cd); + ::reiconv_handle_close(cd); + + cd = ::reiconv_open_from_index(ENCODING_UTF8, ENCODING_ISO8859_1, 0); + test_default(cd); + ::reiconv_handle_close(cd); + + cd = ::reiconv_open_from_codepage(65001, 28591, 0); + test_default(cd); + ::reiconv_handle_close(cd); + +#pragma endregion + +#pragma region Ignore conversion + + cd = ::reiconv_open("ISO-8859-1//IGNORE", "UTF-8"); + test_ignore(cd); + ::reiconv_handle_close(cd); + + cd = ::reiconv_open("ISO-8859-1", "UTF-8//IGNORE"); + test_ignore(cd); + ::reiconv_handle_close(cd); + + cd = ::reiconv_open_from_index(ENCODING_UTF8, ENCODING_ISO8859_1, 1); + test_ignore(cd); + ::reiconv_handle_close(cd); + + cd = ::reiconv_open_from_codepage(65001, 28591, 1); + test_ignore(cd); + ::reiconv_handle_close(cd); + +#pragma endregion + +#if TEST_TRANSLIT +#pragma region Translit conversion + cd = ::reiconv_open("ISO-8859-1//TRANSLIT", "UTF-8"); + test_translit(cd); + ::reiconv_handle_close(cd); + + cd = ::reiconv_open("ISO-8859-1", "UTF-8//TRANSLIT"); + test_translit(cd); + ::reiconv_handle_close(cd); + + // TODO: Translit support. + +#pragma endregion +#endif + +#if TEST_TRANSLIT + { + iconv_t cd = iconv_open("ISO-8859-1//IGNORE//TRANSLIT", "UTF-8"); + test_ignore_translit(cd); + iconv_close(cd); + } + { + iconv_t cd = iconv_open("ISO-8859-1//TRANSLIT//IGNORE", "UTF-8"); + test_ignore_translit(cd); + iconv_close(cd); + } +#endif + + return EXIT_SUCCESS; +} diff --git a/tests/tests.cmake b/tests/tests.cmake index 56ca1b50..4d0705af 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -12,22 +12,25 @@ include_directories("${output_includedir}") # Test executables add_executable(data-generator "${CMAKE_CURRENT_SOURCE_DIR}/tests/data-generator.cpp") add_executable(test-bom-state "${CMAKE_CURRENT_SOURCE_DIR}/tests/test-bom-state.cpp") +add_executable(test-discard "${CMAKE_CURRENT_SOURCE_DIR}/tests/test-discard.cpp") add_executable(check-encoding "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-encoding.cpp") add_executable(check-stateful "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateful.cpp") add_executable(check-stateless "${CMAKE_CURRENT_SOURCE_DIR}/tests/check-stateless.cpp") add_executable(sort "${CMAKE_CURRENT_SOURCE_DIR}/tests/sort.cpp") target_link_libraries(test-bom-state libcppp-reiconv.static) +target_link_libraries(test-discard libcppp-reiconv.static) target_link_libraries(check-encoding libcppp-reiconv.static) target_link_libraries(check-stateful libcppp-reiconv.static) target_link_libraries(check-stateless libcppp-reiconv.static) -set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(test-bom-state PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-encoding PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) -set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}" ) +set_target_properties(data-generator PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") +set_target_properties(test-bom-state PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") +set_target_properties(test-discard PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") +set_target_properties(check-encoding PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") +set_target_properties(check-stateful PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") +set_target_properties(check-stateless PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") +set_target_properties(sort PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${output_testsdir}") macro(convert_to_crlf input_file output_file) file(READ ${input_file} file_content) @@ -111,6 +114,11 @@ add_test(NAME test-bom-state COMMAND "$" ) +add_test(NAME test-discard + WORKING_DIRECTORY "${output_testsdir}" + COMMAND "$" + ) + # General multi-byte encodings. test("stateless" "UTF-8") test("stateful" "UTF-16") From 92af7a5adbf52e6a85bd0d768f7ea44741578d00 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 22 Dec 2024 12:39:07 +0800 Subject: [PATCH 59/77] Update `.gitignore` after last commit. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1b2b9309..204f6e57 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ tests/check-stateless tests/data-generator tests/sort tests/test-bom-state +tests/test-discard windows/cppp-reiconv.rc *.inst *.log From 649be432f39ee5daa62da58c90e4bfb0f4e51628 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 17 Jan 2025 21:23:16 +0800 Subject: [PATCH 60/77] Add `locale_charset()` function. --- .gitignore | 1 + CMakeLists.txt | 14 +- include/cppp/reiconv.h.in | 7 + include/cppp/reiconv.hpp.in | 12 +- lib/locale_charset.c | 140 ++++++++++++ lib/locale_charset.cpp | 37 ++++ lib/localecharset/lc_types.h | 35 +++ lib/localecharset/lc_utils.h | 59 +++++ lib/localecharset/locale_table.h | 118 ++++++++++ lib/localecharset/windows_getcp.h | 347 ++++++++++++++++++++++++++++++ 10 files changed, 760 insertions(+), 10 deletions(-) create mode 100644 lib/locale_charset.c create mode 100644 lib/locale_charset.cpp create mode 100644 lib/localecharset/lc_types.h create mode 100644 lib/localecharset/lc_utils.h create mode 100644 lib/localecharset/locale_table.h create mode 100644 lib/localecharset/windows_getcp.h diff --git a/.gitignore b/.gitignore index 204f6e57..5ab9e39b 100644 --- a/.gitignore +++ b/.gitignore @@ -83,6 +83,7 @@ lib/generated/check-encodings # Submodules. build-aux/ +cppp-platform/ # Temp tests files. tests/data/UTF-8.TXT diff --git a/CMakeLists.txt b/CMakeLists.txt index 913128af..e42ce975 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,8 @@ get_filename_component(BUILD_AUX "${BUILD_AUX}" ABSOLUTE) include("${BUILD_AUX}/cmake/cppp.cmake") # ---------------------------------------------------------------------------------- +add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/cppp-platform") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wno-unused-parameter) add_compile_options(-Wno-missing-field-initializers) @@ -99,12 +101,22 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/iconv.h.in" "${output_includ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib") include_directories("${output_includedir}") +# Add definitions. add_compile_definitions(VERSION_MAJOR=${PROJECT_VERSION_MAJOR}) add_compile_definitions(VERSION_MINOR=${PROJECT_VERSION_MINOR}) add_compile_definitions(VERSION_PATCH=${PROJECT_VERSION_PATCH}) +include(CheckFunctionExists) +check_function_exists(nl_langinfo HAVE_LANGINFO_CODESET) +if(HAVE_LANGINFO_CODESET) + add_compile_definitions(HAVE_LANGINFO_CODESET=1) +endif() + # Add library. -set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.c" "${CMAKE_CURRENT_SOURCE_DIR}/lib/reiconv.cpp") +set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.c" + "${CMAKE_CURRENT_SOURCE_DIR}/lib/reiconv.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/lib/locale_charset.c" + "${CMAKE_CURRENT_SOURCE_DIR}/lib/locale_charset.cpp") cppp_build_library(${PROJECT_NAME} SOURCES TRUE TRUE "${CMAKE_BINARY_DIR}/windows/cppp-reiconv.rc") # Include test suite. diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in index a07e9de4..e0c50667 100644 --- a/include/cppp/reiconv.h.in +++ b/include/cppp/reiconv.h.in @@ -201,6 +201,13 @@ extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbyte */ extern _CPPP_API int reiconv_handle_close(reiconv_t cd); +/** + * @brief Determine the current locale's character encoding. + * @note The result is statically allocated. + * @return The canonicalized encoding name. + */ +extern _CPPP_API const char *locale_charset(); + #ifdef __cplusplus } #endif diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 72a70025..94170217 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -142,15 +142,9 @@ namespace reiconv extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, bool strict = true); /** - * @brief Determine the current locale's character encoding, and canonicalize it into one of - * the canonical names. - * @note The result must not be freed. It is statically allocated. - * @note The result becomes invalid when `setlocale` is used to change the global locale, or - * when the value of one of the environment variables `LC_ALL`, `LC_CTYPE`, `LANG` is changed. - * Threads in multithreaded programs should not do this. If the canonical name cannot be - * determined, the result is a non-canonical name. - * @return The name of the current locale's character encoding. - * @see Libiconv's `locale_charset`. + * @brief Determine the current locale's character encoding. + * @note The result is statically allocated. + * @return The canonicalized encoding name. */ extern _CPPP_API std::string_view locale_charset(); diff --git a/lib/locale_charset.c b/lib/locale_charset.c new file mode 100644 index 00000000..6be12970 --- /dev/null +++ b/lib/locale_charset.c @@ -0,0 +1,140 @@ +/** + * @file locale_charset.c + * @brief Detect the locale charset. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#include "cppp/cppp-platform.h" + +#include +#include +#include +#include +#include + +#include "localecharset/lc_types.h" +#include "localecharset/lc_utils.h" + +#if IS_DARWIN7 +#include +#endif // IS_DARWIN7 + +#if HAVE_LANGINFO_CODESET +#include +#endif // HAVE_LANGINFO_CODESET + +#if IS_WINDOWS_NATIVE || __has_cygwin__ +#define WIN32_LEAN_AND_MEAN +#include "localecharset/windows_getcp.h" + +#include + +/* + * For the use of setlocale() below, the Gnulib override in setlocale.c is + * not needed; see the platform lists in setlocale_null.m4. + */ +#undef setlocale +#endif // IS_WINDOWS_NATIVE || __has_cygwin__ + +#if !HAVE_LANGINFO_CODESET && !WINDOWS_NATIVE +#include "localecharset/locale_table.h" +#endif // !HAVE_LANGINFO_CODESET && !WINDOWS_NATIVE + +const char *locale_charset() +{ +#if IS_WINDOWS_NATIVE + return windows_getcp(); +#endif // IS_WINDOWS_NATIVE + +#if IS_MACOSX || __has_beos__ || __has_haiku__ || __has_android__ + /* + * On Mac OS X, all modern locales use the UTF-8 encoding. + * BeOS, Haiku and Android have a single locale, and it has UTF-8 encoding. + */ + return "UTF-8"; +#endif // IS_MACOSX || __has_beos__ || __has_haiku__ || __has_android__ + + const char *codeset = NULL; + +#if HAVE_LANGINFO_CODESET + return nl_langinfo(CODESET); +#endif // HAVE_LANGINFO_CODESET + +#if __has_cygwin__ + return windows_getcp(); +#endif // __has_cygwin__ + + const char *locale = NULL; + GET_LOCALE(locale); + +#if locale_table_defined + // The locale_table is sorted. Perform a binary search. + size_t hi = LOCALE_TABLE_SIZE; + size_t lo = 0; + while (lo < hi) + { + /* + * Invariant: + * for i < lo, strcmp (locale_table[i].locale, locale) < 0, + * for i >= hi, strcmp (locale_table[i].locale, locale) > 0. + */ + size_t mid = (hi + lo) >> 1; // >= lo, < hi + int cmp = strcmp(locale_table[mid].locale, locale); + if (cmp < 0) + { + lo = mid + 1; + } + else if (cmp > 0) + { + hi = mid; + } + else + { + // Found an i with strcmp (locale_table[i].locale, locale) == 0. + codeset = locale_table[mid].canonical; + goto done_table_lookup; + } + } +#endif // locale_table_defined + // Cannot find the locale in the table, try to split it. + const char *p = strchr(locale, '.'); + if (p == NULL) + { + // No dot. + return DEFAULT_CHARSET; + } + + // Split the locale into two parts. + codeset = p + 1; + return codeset; + +done_table_lookup: + +#if IS_DARWIN7 + /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8" + (the default codeset) does not work when MB_CUR_MAX is 1. */ + if (strcmp(codeset, "UTF-8") == 0 && MB_CUR_MAX_L(uselocale(NULL)) <= 1) + { + codeset = "ASCII"; + } +#endif // DARWIN7 + + return codeset; +} diff --git a/lib/locale_charset.cpp b/lib/locale_charset.cpp new file mode 100644 index 00000000..b95b8264 --- /dev/null +++ b/lib/locale_charset.cpp @@ -0,0 +1,37 @@ +/** + * @file locale_charset.cpp + * @brief Detect the locale charset. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#include + +#include + +#include + +namespace reiconv +{ +_CPPP_API std::string_view locale_charset() +{ + // The return value of C function is statically allocated. + return ::locale_charset(); +} +} // namespace reiconv diff --git a/lib/localecharset/lc_types.h b/lib/localecharset/lc_types.h new file mode 100644 index 00000000..6a51878d --- /dev/null +++ b/lib/localecharset/lc_types.h @@ -0,0 +1,35 @@ +/** + * @file lc_types.h + * @brief Types for locale charset. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _LC_TYPES_H_ +#define _LC_TYPES_H_ + +#define DEFAULT_CHARSET "UTF-8" + +struct locale_table_entry +{ + const char locale[17 + 1]; + const char canonical[11 + 1]; +}; + +#endif // _LC_TYPES_H_ diff --git a/lib/localecharset/lc_utils.h b/lib/localecharset/lc_utils.h new file mode 100644 index 00000000..f396175b --- /dev/null +++ b/lib/localecharset/lc_utils.h @@ -0,0 +1,59 @@ +/** + * @file lc_utils.h + * @brief Utilities for locale charset. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _LC_UTILS_H_ +#define _LC_UTILS_H_ + +#include + +#if defined(__APPLE__) && defined(__MACH__) +#define IS_MACOSX 1 +#else +#define IS_MACOSX 0 +#endif // defined(__APPLE__) && defined(__MACH__) + +#define IS_DARWIN7 (__has_macos__ && IS_MACOSX && HAVE_LANGINFO_CODESET) + +#define IS_WINDOWS_NATIVE (__has_windows__ && !__has_cygwin__) + +#define IS_INVALID_LOCALE(locale) (locale == NULL || locale[0] == '\0') + +#define GET_LOCALE(locale) \ + do \ + { \ + locale = getenv("LC_ALL"); \ + if (IS_INVALID_LOCALE(locale)) \ + { \ + locale = getenv("LC_CTYPE"); \ + if (IS_INVALID_LOCALE(locale)) \ + { \ + locale = getenv("LANG"); \ + if (IS_INVALID_LOCALE(locale)) \ + { \ + locale = setlocale(LC_CTYPE, NULL); \ + } \ + } \ + } \ + } while (0) + +#endif // _LC_UTILS_H_ diff --git a/lib/localecharset/locale_table.h b/lib/localecharset/locale_table.h new file mode 100644 index 00000000..d6edd5ac --- /dev/null +++ b/lib/localecharset/locale_table.h @@ -0,0 +1,118 @@ +/** + * @file locale_table.h + * @brief A mapping from locale name to canonical encoding name. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _LOCALE_TABLE_H_ +#define _LOCALE_TABLE_H_ + +#include "lc_types.h" + +#include + +#define locale_table_defined 1 + +// Table of platform-dependent mappings, sorted in ascending order. +static const struct locale_table_entry locale_table[] = { +#if __has_freebsd__ + {"cs_CZ.ISO_8859-2", "ISO-8859-2"}, + {"da_DK.DIS_8859-15", "ISO-8859-15"}, + {"da_DK.ISO_8859-1", "ISO-8859-1"}, + {"de_AT.DIS_8859-15", "ISO-8859-15"}, + {"de_AT.ISO_8859-1", "ISO-8859-1"}, + {"de_CH.DIS_8859-15", "ISO-8859-15"}, + {"de_CH.ISO_8859-1", "ISO-8859-1"}, + {"de_DE.DIS_8859-15", "ISO-8859-15"}, + {"de_DE.ISO_8859-1", "ISO-8859-1"}, + {"en_AU.DIS_8859-15", "ISO-8859-15"}, + {"en_AU.ISO_8859-1", "ISO-8859-1"}, + {"en_CA.DIS_8859-15", "ISO-8859-15"}, + {"en_CA.ISO_8859-1", "ISO-8859-1"}, + {"en_GB.DIS_8859-15", "ISO-8859-15"}, + {"en_GB.ISO_8859-1", "ISO-8859-1"}, + {"en_US.DIS_8859-15", "ISO-8859-15"}, + {"en_US.ISO_8859-1", "ISO-8859-1"}, + {"es_ES.DIS_8859-15", "ISO-8859-15"}, + {"es_ES.ISO_8859-1", "ISO-8859-1"}, + {"fi_FI.DIS_8859-15", "ISO-8859-15"}, + {"fi_FI.ISO_8859-1", "ISO-8859-1"}, + {"fr_BE.DIS_8859-15", "ISO-8859-15"}, + {"fr_BE.ISO_8859-1", "ISO-8859-1"}, + {"fr_CA.DIS_8859-15", "ISO-8859-15"}, + {"fr_CA.ISO_8859-1", "ISO-8859-1"}, + {"fr_CH.DIS_8859-15", "ISO-8859-15"}, + {"fr_CH.ISO_8859-1", "ISO-8859-1"}, + {"fr_FR.DIS_8859-15", "ISO-8859-15"}, + {"fr_FR.ISO_8859-1", "ISO-8859-1"}, + {"hr_HR.ISO_8859-2", "ISO-8859-2"}, + {"hu_HU.ISO_8859-2", "ISO-8859-2"}, + {"is_IS.DIS_8859-15", "ISO-8859-15"}, + {"is_IS.ISO_8859-1", "ISO-8859-1"}, + {"it_CH.DIS_8859-15", "ISO-8859-15"}, + {"it_CH.ISO_8859-1", "ISO-8859-1"}, + {"it_IT.DIS_8859-15", "ISO-8859-15"}, + {"it_IT.ISO_8859-1", "ISO-8859-1"}, + {"ja_JP.EUC", "EUC-JP"}, + {"ja_JP.SJIS", "SHIFT_JIS"}, + {"ja_JP.Shift_JIS", "SHIFT_JIS"}, + {"ko_KR.EUC", "EUC-KR"}, + {"la_LN.ASCII", "ASCII"}, + {"la_LN.DIS_8859-15", "ISO-8859-15"}, + {"la_LN.ISO_8859-1", "ISO-8859-1"}, + {"la_LN.ISO_8859-2", "ISO-8859-2"}, + {"la_LN.ISO_8859-4", "ISO-8859-4"}, + {"lt_LN.ASCII", "ASCII"}, + {"lt_LN.DIS_8859-15", "ISO-8859-15"}, + {"lt_LN.ISO_8859-1", "ISO-8859-1"}, + {"lt_LN.ISO_8859-2", "ISO-8859-2"}, + {"lt_LT.ISO_8859-4", "ISO-8859-4"}, + {"nl_BE.DIS_8859-15", "ISO-8859-15"}, + {"nl_BE.ISO_8859-1", "ISO-8859-1"}, + {"nl_NL.DIS_8859-15", "ISO-8859-15"}, + {"nl_NL.ISO_8859-1", "ISO-8859-1"}, + {"no_NO.DIS_8859-15", "ISO-8859-15"}, + {"no_NO.ISO_8859-1", "ISO-8859-1"}, + {"pl_PL.ISO_8859-2", "ISO-8859-2"}, + {"pt_PT.DIS_8859-15", "ISO-8859-15"}, + {"pt_PT.ISO_8859-1", "ISO-8859-1"}, + {"ru_RU.CP866", "CP866"}, + {"ru_RU.ISO_8859-5", "ISO-8859-5"}, + {"ru_RU.KOI8-R", "KOI8-R"}, + {"ru_SU.CP866", "CP866"}, + {"ru_SU.ISO_8859-5", "ISO-8859-5"}, + {"ru_SU.KOI8-R", "KOI8-R"}, + {"sl_SI.ISO_8859-2", "ISO-8859-2"}, + {"sv_SE.DIS_8859-15", "ISO-8859-15"}, + {"sv_SE.ISO_8859-1", "ISO-8859-1"}, + {"uk_UA.KOI8-U", "KOI8-U"}, + {"zh_CN.EUC", "GB2312"}, + {"zh_TW.BIG5", "BIG5"}, + {"zh_TW.Big5", "BIG5"} +#else +#undef locale_table_defined +#define locale_table_defined 0 + {"", ""} +#endif // __has_freebsd__ +}; + +#define LOCALE_TABLE_SIZE (sizeof(locale_table) / sizeof(struct locale_table_entry)) + +#endif // _LOCALE_TABLE_H_ diff --git a/lib/localecharset/windows_getcp.h b/lib/localecharset/windows_getcp.h new file mode 100644 index 00000000..7c0d6436 --- /dev/null +++ b/lib/localecharset/windows_getcp.h @@ -0,0 +1,347 @@ +/** + * @file windows_getcp.h + * @brief Get the current code page for Windows. + * @copyright Copyright (C) 2024 The C++ Plus Project. + */ +/* + * This file is part of the cppp-reiconv library. + * + * The cppp-reiconv library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * The cppp-reiconv library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the cppp-reiconv library; see the file LICENSE. + * If not, see . + */ + +#ifndef _WINDOWS_GETCP_H_ +#define _WINDOWS_GETCP_H_ + +#include + +#if !__has_windows__ +#error This file is only for Windows. +#endif + +#include + +static const char *windows_getcp(char *resultbuf) +{ +#ifdef _CONSOLE + UINT cp = GetConsoleOutputCP(); +#else + UINT cp = GetACP(); +#endif + switch (cp) + { + // Unicode + case 65001: + return "UTF-8"; + case 1200: + return "UCS2-LE"; + case 1201: + // On .NET, it's unicodeFFFE. But IANA says it's UNICODE11. + return "UNICODE11"; + case 12000: + return "UCS4-LE"; + case 12001: + return "UCS4-BE"; + case 65000: + return "UTF-7"; + + // CJK + case 936: + // cppp-reiconv's GB2312, GBK, CP936 is different. + return "CP936"; + case 950: + return "BIG5"; + case 10002: // We don't support it yet. + return "X-MAC-CHINESETRAD"; + case 10008: // We don't support it yet. + return "X-MAC-CHINESESIMP"; + case 20000: // We don't support it yet. + return "X-CHINESE_CNS"; + case 20002: // We don't support it yet. + return "X_CHINESE-ETEN"; + case 20936: // We don't support it yet. + return "X-CP20936"; + case 50227: + return "ISO-2022-CN"; + // case 50229: abort(); + // case 50935: abort(); + // case 50936: abort(); + // case 50937: abort(); + case 51936: + return "EUC-CN"; + // case 51950: abort(); + case 52936: + return "HZ-GB-2312"; + case 54936: + return "GB18030"; + case 932: + return "SHIFT_JIS"; + case 10001: // We don't support it yet. + return "X-MAC-JAPANESE"; + case 20290: // We don't support it yet. + return "IBM290"; + case 20932: + // .NET says it's EUC-JP. But EUC-JP is CP51932. + return "EUC-JP"; + case 50220: + return "ISO-2022-JP"; + case 50221: + return "ISO-2022-JP-MS"; + case 50222: + return "ISO-2022-JP"; + // case 50930: abort(); + // case 50931: abort(); + // case 50939: abort(); + case 51932: + return "EUC-JP"; + case 949: + return "KS_C_5601-1987"; + case 1361: + return "JOHAB"; + case 10003: // We don't support it yet. + return "X-MAC-KOREAN"; + case 20833: // We don't support it yet. + return "X-EBCDIC-KOREANEXTENDED"; + case 20949: + return "X-CP20949"; + case 50225: + return "ISO-2022-KR"; + // case 50933: abort(); + case 51949: + return "EUC-KR"; + + // Others + case 37: + return "IBM037"; + case 437: + return "IBM437"; + case 500: + return "IBM500"; + case 708: + // ASMO-708 alias to CP28596, but .NET uses it for CP708. + return "ASMO-708"; + // case 709: abort(); + // case 710: abort(); + case 720: // We don't support it yet. + return "DOS-720"; + case 737: + return "IBM737"; + case 775: + return "IBM775"; + case 850: + return "IBM850"; + case 852: + return "IBM852"; + case 855: + return "IBM855"; + case 857: + return "IBM857"; + case 858: + return "IBM00858"; + case 860: + return "IBM860"; + case 861: + return "IBM861"; + case 862: + return "DOS-862"; + case 863: + return "IBM863"; + case 864: + return "IBM864"; + case 865: + return "IBM865"; + case 866: + return "CP866"; + case 869: + return "IBM869"; + case 870: + return "IBM870"; + case 874: + return "WINDOWS-874"; + case 875: + return "CP875"; + case 1026: + return "IBM1026"; + case 1140: + return "IBM1140"; + case 1141: + return "IBM01141"; + case 1142: + return "IBM01142"; + case 1143: + return "IBM01143"; + case 1144: + return "IBM01144"; + case 1145: + return "IBM01145"; + case 1146: + return "IBM01146"; + case 1147: + return "IBM01147"; + case 1148: + return "IBM01148"; + case 1149: + return "IBM01149"; + case 1250: + return "WINDOWS-1250"; + case 1251: + return "WINDOWS-1251"; + case 1252: + return "WINDOWS-1252"; + case 1253: + return "WINDOWS-1253"; + case 1254: + return "WINDOWS-1254"; + case 1255: + return "WINDOWS-1255"; + case 1256: + return "WINDOWS-1256"; + case 1257: + return "WINDOWS-1257"; + case 1258: + return "VISCII"; + case 10000: + return "MACINTOSH"; + case 10004: + return "X-MAC-ARABIC"; + case 10005: + return "X-MAC-HEBREW"; + case 10006: + return "X-MAC-GREEK"; + case 10007: + return "X-MAC-CYRILLIC"; + case 10010: + return "X-MAC-ROMANIAN"; + case 10017: + return "X-MAC-UKRAINIAN"; + case 10021: + return "X-MAC-THAI"; + case 10029: + return "X-MAC-CE"; + case 10079: + return "X-MAC-ICELANDIC"; + case 10081: + return "X-MAC-TURKISH"; + case 10082: + return "X-MAC-CROATIAN"; + case 20001: // We don't support it yet. + return "X-CP20001"; + case 20003: // We don't support it yet. + return "X-CP20003"; + case 20004: // We don't support it yet. + return "X-CP20004"; + case 20005: // We don't support it yet. + return "X-CP20005"; + case 20105: // We don't support it yet. + return "X-IA5"; + case 20106: // We don't support it yet. + return "X-IA5-GERMAN"; + case 20107: // We don't support it yet. + return "X-IA5-SWEDISH"; + case 20108: // We don't support it yet. + return "X-IA5-NORWEGIAN"; + case 20127: // We don't support it yet. + // .NET says it's US-ASCII. But US-ASCII is CP367 in IANA. + return "CP20127"; + case 20261: // We don't support it yet. + return "X-CP20261"; + case 20269: // We don't support it yet. + return "X-CP20269"; + case 20273: + return "IBM273"; + case 20277: + return "IBM277"; + case 20278: + return "IBM278"; + case 20280: + return "IBM280"; + case 20284: + return "IBM284"; + case 20285: + return "IBM285"; + case 20297: + return "IBM297"; + case 20420: // We don't support it yet. + return "IBM420"; + case 20423: + return "IBM423"; + case 20424: + return "IBM424"; + case 20866: + return "KOI8-R"; + case 20871: + return "IBM871"; + case 20880: + return "IBM880"; + case 20905: + return "IBM905"; + case 20924: + return "IBM00924"; + case 21025: + return "CP1025"; + // case 21027: abort(); // CP21027 is deprecated. + case 21866: + return "KOI8-RU"; + case 28591: + return "ISO-8859-1"; + case 28592: + return "ISO-8859-2"; + case 28593: + return "ISO-8859-3"; + case 28594: + return "ISO-8859-4"; + case 28595: + return "ISO-8859-5"; + case 28596: + return "ISO-8859-6"; + case 28597: + return "ISO-8859-7"; + case 28598: + return "ISO-8859-8"; + case 28599: + return "ISO-8859-9"; + case 28603: + return "ISO-8859-13"; + case 28605: + return "ISO-8859-15"; + case 29001: // We don't support it yet. + return "X-EUROPA"; + case 38598: + return "ISO-8859-8-I"; + case 57002: // We don't support it yet. + return "X-ISCII-DE"; + case 57003: // We don't support it yet. + return "X-ISCII-BE"; + case 57004: // We don't support it yet. + return "X-ISCII-TA"; + case 57005: // We don't support it yet. + return "X-ISCII-TE"; + case 57006: // We don't support it yet. + return "X-ISCII-AS"; + case 57007: // We don't support it yet. + return "X-ISCII-OR"; + case 57008: // We don't support it yet. + return "X-ISCII-KA"; + case 57009: // We don't support it yet. + return "X-ISCII-MA"; + case 57010: // We don't support it yet. + return "X-ISCII-GU"; + case 57011: // We don't support it yet. + return "X-ISCII-PA"; + default: + return "ASCII"; + } +} + +#endif // _WINDOWS_GETCP_H_ From a4fa5d7b271150942718ab8ac1b031d1b0baebce Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 17 Jan 2025 21:24:03 +0800 Subject: [PATCH 61/77] Add some codepages alias. --- lib/encodings.h.snippet | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/lib/encodings.h.snippet b/lib/encodings.h.snippet index df8c65f9..43e02df7 100644 --- a/lib/encodings.h.snippet +++ b/lib/encodings.h.snippet @@ -34,7 +34,7 @@ * an alias. By convention, the name is chosen as the preferred MIME name or the standard name.) * All names and aliases must be in ASCII. Case is not significant, but for the "cs*" aliases mixed * case is preferred, otherwise UPPERCASE is preferred. For all names and aliases, note where it - * comes from. + * comes from. * xxx is the name as used in the C code (lowercase). xxx_index provides a unique index for the * encoding. It will be used in a enum for fast access to the encoding. xxx is for reiconv's * internal use only and xxx_index is for the user's @@ -94,6 +94,7 @@ DEFENCODING(("UCS2BE", /* glibc */ "UNICODEBIG", /* glibc */ "UNICODE11", /* IANA */ "CSUNICODE11", /* IANA */ + "UNICODEFFFE", /* .NET */ "CP1201", /* Windows */ "1201" /* Windows */ ), @@ -219,8 +220,14 @@ DEFCODEPAGE(932, cp932) DEFENCODING(("ISO2022JP", /* IANA, RFC 1468, JDK 1.1 */ "CSISO2022JP", /* IANA */ + "CP50220", /* Windows */ + "50220", /* Windows */ + "CP50222", /* Windows */ + "50222", /* Windows */ ), iso2022_jp, ISO2022_JP, {iso2022_jp_mbtowc, NULL}, {iso2022_jp_wctomb, iso2022_jp_reset}) +DEFCODEPAGE(50220, iso2022_jp) +DEFCODEPAGE(50222, iso2022_jp) DEFENCODING(("ISO2022JP1", /* RFC 2237 */ ), @@ -280,8 +287,12 @@ DEFCODEPAGE(54936, gb18030_2022) DEFENCODING(("ISO2022CN", /* IANA, RFC 1922, JDK 1.1 */ "CSISO2022CN", /* IANA */ + "CP50227", /* Windows */ + "50227", /* Windows */ + "XCP50227", /* .NET */ ), iso2022_cn, ISO2022_CN, {iso2022_cn_mbtowc, NULL}, {iso2022_cn_wctomb, iso2022_cn_reset}) +DEFCODEPAGE(50227, iso2022_cn) DEFENCODING(("ISO2022CNEXT", /* IANA, RFC 1922 */ ), @@ -348,9 +359,10 @@ DEFENCODING(("EUCKR", /* IANA, RFC 1557, glibc, HP-UX, IRIX, OSF/1 */ euc_kr, EUC_KR, {euc_kr_mbtowc, NULL}, {euc_kr_wctomb, NULL}) DEFCODEPAGE(51949, euc_kr) -DEFENCODING(("UHC", /* glibc */ - "CP949", /* Windows */ - "949", /* Windows */ +DEFENCODING(("UHC", /* glibc */ + "CP949", /* Windows */ + "949", /* Windows */ + "KSC56011987", /* Windows */ ), cp949, UHC, {cp949_mbtowc, NULL}, {cp949_wctomb, NULL}) DEFCODEPAGE(949, cp949) @@ -476,6 +488,7 @@ DEFENCODING(("ISO88598", /* IANA, X11R6.4, glibc, FreeBSD, AIX, OSF/1, S "ISOIR138", /* IANA */ "HEBREW", /* IANA */ "CSISOLATINHEBREW", /* IANA */ + "ISO88598I", /* .NET */ "CP28598", /* Windows */ "28598", /* Windows */ "CP38598", /* Windows */ @@ -722,8 +735,7 @@ DEFENCODING(("MACCENTRALEUROPE", /* JDK 1.1 */ "CP10029", /* Windows */ "10029", /* Windows */ ), - mac_centraleurope, MAC_CENTRALEUROPE, {mac_centraleurope_mbtowc, NULL}, - {mac_centraleurope_wctomb, NULL}) + mac_centraleurope, MAC_CENTRALEUROPE, {mac_centraleurope_mbtowc, NULL}, {mac_centraleurope_wctomb, NULL}) DEFCODEPAGE(10029, mac_centraleurope) DEFENCODING(("MACICELAND", /* JDK 1.1 */ @@ -1172,6 +1184,7 @@ DEFENCODING(("IBM273", /* IANA */ ), ebcdic273, EBCDIC_273, {ebcdic273_mbtowc, NULL}, {ebcdic273_wctomb, NULL}) DEFCODEPAGE(273, ebcdic273) +DEFCODEPAGE(20273, ebcdic273) DEFENCODING(("IBM277", /* IANA */ "EBCDICCPDK", /* IANA */ @@ -1182,6 +1195,7 @@ DEFENCODING(("IBM277", /* IANA */ ), ebcdic277, EBCDIC_277, {ebcdic277_mbtowc, NULL}, {ebcdic277_wctomb, NULL}) DEFCODEPAGE(277, ebcdic277) +DEFCODEPAGE(20277, ebcdic277) DEFENCODING(("IBM278", /* IANA */ "EBCDICCPFI", /* IANA */ @@ -1192,6 +1206,7 @@ DEFENCODING(("IBM278", /* IANA */ ), ebcdic278, EBCDIC_278, {ebcdic278_mbtowc, NULL}, {ebcdic278_wctomb, NULL}) DEFCODEPAGE(278, ebcdic278) +DEFCODEPAGE(20278, ebcdic278) DEFENCODING(("IBM280", /* IANA */ "EBCDICCPIT", /* IANA */ @@ -1201,6 +1216,7 @@ DEFENCODING(("IBM280", /* IANA */ ), ebcdic280, EBCDIC_280, {ebcdic280_mbtowc, NULL}, {ebcdic280_wctomb, NULL}) DEFCODEPAGE(280, ebcdic280) +DEFCODEPAGE(20280, ebcdic280) DEFENCODING(("IBM282", /* (Unknown) */ "282", /* cppp-reiconv */ @@ -1217,6 +1233,7 @@ DEFENCODING(("IBM284", /* IANA */ ), ebcdic284, EBCDIC_284, {ebcdic284_mbtowc, NULL}, {ebcdic284_wctomb, NULL}) DEFCODEPAGE(284, ebcdic284) +DEFCODEPAGE(20284, ebcdic284) DEFENCODING(("IBM285", /* IANA */ "CP285", /* IANA */ @@ -1226,6 +1243,7 @@ DEFENCODING(("IBM285", /* IANA */ ), ebcdic285, EBCDIC_285, {ebcdic285_mbtowc, NULL}, {ebcdic285_wctomb, NULL}) DEFCODEPAGE(285, ebcdic285) +DEFCODEPAGE(20285, ebcdic285) DEFENCODING(("IBM297", /* IANA */ "EBCDICCPFR", /* IANA */ @@ -1235,6 +1253,7 @@ DEFENCODING(("IBM297", /* IANA */ ), ebcdic297, EBCDIC_297, {ebcdic297_mbtowc, NULL}, {ebcdic297_wctomb, NULL}) DEFCODEPAGE(297, ebcdic297) +DEFCODEPAGE(20297, ebcdic297) DEFENCODING(("IBM423", /* IANA */ "EBCDICCPGR", /* IANA */ @@ -1244,6 +1263,7 @@ DEFENCODING(("IBM423", /* IANA */ ), ebcdic423, EBCDIC_423, {ebcdic423_mbtowc, NULL}, {ebcdic423_wctomb, NULL}) DEFCODEPAGE(423, ebcdic423) +DEFCODEPAGE(20423, ebcdic423) DEFENCODING(("IBM424", /* IANA */ "EBCDICCPHE", /* IANA */ @@ -1253,6 +1273,7 @@ DEFENCODING(("IBM424", /* IANA */ ), ebcdic424, EBCDIC_424, {ebcdic424_mbtowc, NULL}, {ebcdic424_wctomb, NULL}) DEFCODEPAGE(424, ebcdic424) +DEFCODEPAGE(20424, ebcdic424) DEFENCODING(("IBM425", /* (Unknown) */ "CP425", /* cppp-reiconv */ @@ -1299,6 +1320,7 @@ DEFENCODING(("IBM871", /* IANA */ ), ebcdic871, EBCDIC_871, {ebcdic871_mbtowc, NULL}, {ebcdic871_wctomb, NULL}) DEFCODEPAGE(871, ebcdic871) +DEFCODEPAGE(20871, ebcdic871) DEFENCODING(("IBM875", /* glibc */ "EBCDICGREEK", /* glibc */ @@ -1316,6 +1338,7 @@ DEFENCODING(("IBM880", /* IANA */ ), ebcdic880, EBCDIC_880, {ebcdic880_mbtowc, NULL}, {ebcdic880_wctomb, NULL}) DEFCODEPAGE(880, ebcdic880) +DEFCODEPAGE(20880, ebcdic880) DEFENCODING(("IBM905", /* IANA */ "EBCDICCPTR", /* IANA */ @@ -1323,6 +1346,7 @@ DEFENCODING(("IBM905", /* IANA */ ), ebcdic905, EBCDIC_905, {ebcdic905_mbtowc, NULL}, {ebcdic905_wctomb, NULL}) DEFCODEPAGE(905, ebcdic905) +DEFCODEPAGE(20905, ebcdic905) DEFENCODING(("IBM924", /* SUSE Linux Enterprise Server */ "IBM00924", /* IANA */ @@ -1335,6 +1359,7 @@ DEFENCODING(("IBM924", /* SUSE Linux Enterprise Server */ ), ebcdic924, EBCDIC_924, {ebcdic924_mbtowc, NULL}, {ebcdic924_wctomb, NULL}) DEFCODEPAGE(924, ebcdic924) +DEFCODEPAGE(20924, ebcdic924) DEFENCODING(("IBM1025", /* glibc */ "CP1025", /* AIX */ From d4c79b15c1d355212c35796e23ee0600b4e5b32b Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Fri, 17 Jan 2025 21:24:32 +0800 Subject: [PATCH 62/77] Compare buffer but ignore CR and LF. --- tests/buffer.hpp | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/tests/buffer.hpp b/tests/buffer.hpp index 18f09eca..d1a87aa3 100644 --- a/tests/buffer.hpp +++ b/tests/buffer.hpp @@ -140,11 +140,30 @@ class Buffer constexpr bool operator==(const Buffer &other) const { - if (size != other.size) + // Check if the buffer is the same, but ignore CR and LF. + std::size_t i = 0, j = 0; + while (i < size || j < other.size) { - return false; + i = std::min(i, size); + j = std::min(j, other.size); + if (buffer[i] == '\r' || buffer[i] == '\n') + { + i++; + continue; + } + if (other.buffer[j] == '\r' || other.buffer[j] == '\n') + { + j++; + continue; + } + if (buffer[i] != other.buffer[j]) + { + return false; + } + i++; + j++; } - return std::memcmp(buffer, other.buffer, size) == 0; + return true; } constexpr bool operator!=(const Buffer &other) const @@ -156,6 +175,12 @@ class Buffer { if (*this != other) { + std::string str_cwd = std::filesystem::current_path().string(); + print_stderr("DEBUG: Dumping 'this.dmp' and 'other.dmp' into '{}' ...\n\tThis: {}\n\tOther: {}\n", + colorize(str_cwd, CONTROL_UNDERLINE), colorize(id, CONTROL_UNDERLINE), + colorize(other.id, CONTROL_UNDERLINE)); + dump(std::filesystem::path("this.dmp")); + other.dump(std::filesystem::path("other.dmp")); error("compare_assert", "The data is different."); } success("compare_assert", "The data is the same."); From 5540f92505350ea164f90cb87a4d17714f9dc25b Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 18 Jan 2025 23:04:11 +0800 Subject: [PATCH 63/77] Support running tests with qemu-user. --- tests/test-discard.cpp | 2 +- tests/tests.cmake | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/test-discard.cpp b/tests/test-discard.cpp index d6987433..d517f1bb 100644 --- a/tests/test-discard.cpp +++ b/tests/test-discard.cpp @@ -26,8 +26,8 @@ #include #include +#include #include -#include static const char input1[8] = "3\xd4\xe2\x84\x83\xc3\x9f"; static const char input2[8] = "3\xe2\x84\x83\xd4\xc3\x9f"; diff --git a/tests/tests.cmake b/tests/tests.cmake index 4d0705af..0f5cc1f7 100644 --- a/tests/tests.cmake +++ b/tests/tests.cmake @@ -41,7 +41,7 @@ endmacro() macro(test state encoding) add_test( NAME "check-${state}-${encoding}" WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" "${TEST_DATA_DIR}" "${encoding}" + COMMAND ${EXECUTOR} "$" "${TEST_DATA_DIR}" "${encoding}" ) endmacro(test) @@ -69,7 +69,7 @@ endif() # Generate UTF-8 test data. add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "utf-8" > "${TEST_DATA_DIR}/UTF-8.TXT" + COMMAND ${EXECUTOR} "$" "utf-8" > "${TEST_DATA_DIR}/UTF-8.TXT" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating UTF-8 test data ... " ) @@ -77,12 +77,12 @@ add_custom_command(TARGET data-generator POST_BUILD # Generate GB18030:2005 test data. add_custom_command(TARGET data-generator POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2005-BMP.TXT" "${TEST_DATA_DIR}/GB18030-2005.TXT" - COMMAND "$" gb18030z >> "${TEST_DATA_DIR}/GB18030-2005.TXT" + COMMAND ${EXECUTOR} "$" gb18030z >> "${TEST_DATA_DIR}/GB18030-2005.TXT" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating GB18030:2005 test data ... " ) add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "${TEST_DATA_DIR}/GB18030-2005.TXT" "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" + COMMAND ${EXECUTOR} "$" "${TEST_DATA_DIR}/GB18030-2005.TXT" "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" "${TEST_DATA_DIR}/GB18030-2005.TXT" COMMAND "${CMAKE_COMMAND}" -E remove "${TEST_DATA_DIR}/GB18030-2005.TXT.tmp" WORKING_DIRECTORY "${output_testsdir}" @@ -92,12 +92,12 @@ add_custom_command(TARGET data-generator POST_BUILD # Generate GB18030:2022 test data. add_custom_command(TARGET data-generator POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2022-BMP.TXT" "${TEST_DATA_DIR}/GB18030-2022.TXT" - COMMAND "$" gb18030z >> "${TEST_DATA_DIR}/GB18030-2022.TXT" + COMMAND ${EXECUTOR} "$" gb18030z >> "${TEST_DATA_DIR}/GB18030-2022.TXT" WORKING_DIRECTORY "${output_testsdir}" COMMENT "Generating GB18030:2022 test data ... " ) add_custom_command(TARGET data-generator POST_BUILD - COMMAND "$" "${TEST_DATA_DIR}/GB18030-2022.TXT" "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" + COMMAND ${EXECUTOR} "$" "${TEST_DATA_DIR}/GB18030-2022.TXT" "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" "${TEST_DATA_DIR}/GB18030-2022.TXT" COMMAND "${CMAKE_COMMAND}" -E remove "${TEST_DATA_DIR}/GB18030-2022.TXT.tmp" WORKING_DIRECTORY "${output_testsdir}" @@ -106,17 +106,17 @@ add_custom_command(TARGET data-generator POST_BUILD add_test(NAME check-encoding WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" + COMMAND ${EXECUTOR} "$" ) add_test(NAME test-bom-state WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" + COMMAND ${EXECUTOR} "$" ) add_test(NAME test-discard WORKING_DIRECTORY "${output_testsdir}" - COMMAND "$" + COMMAND ${EXECUTOR} "$" ) # General multi-byte encodings. From 007d6fb35b129150ec54431129c647a9ccd799f7 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sat, 18 Jan 2025 23:16:45 +0800 Subject: [PATCH 64/77] Add `TODO` and format `lib/converters/utf32be.h`. --- TODO | 2 ++ lib/converters/utf32be.h | 61 ++++++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 TODO diff --git a/TODO b/TODO new file mode 100644 index 00000000..cb8c4382 --- /dev/null +++ b/TODO @@ -0,0 +1,2 @@ +1. Implement the //NON_IDENTICAL_DISCARD suffix from POSIX:2024. +2. Add translit support. diff --git a/lib/converters/utf32be.h b/lib/converters/utf32be.h index 86e6336a..4542a51d 100644 --- a/lib/converters/utf32be.h +++ b/lib/converters/utf32be.h @@ -27,39 +27,44 @@ #include "reiconv_defines.h" -/* Specification: Unicode 3.1 Standard Annex #19 */ +// Specification: Unicode 3.1 Standard Annex #19 -static int -utf32be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +static int utf32be_mbtowc(conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) { - if (n >= 4) { - ucs4_t wc = ((ucs4_t) s[0] << 24) - + ((ucs4_t) s[1] << 16) - + ((ucs4_t) s[2] << 8) - + (ucs4_t) s[3]; - if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) { - *pwc = wc; - return 4; - } else - return RET_ILSEQ; - } - return RET_TOOFEW(0); + if (n >= 4) + { + ucs4_t wc = ((ucs4_t)s[0] << 24) + ((ucs4_t)s[1] << 16) + ((ucs4_t)s[2] << 8) + (ucs4_t)s[3]; + if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) + { + *pwc = wc; + return 4; + } + else + { + return RET_ILSEQ; + } + } + return RET_TOOFEW(0); } -static int -utf32be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +static int utf32be_wctomb(conv_t conv, unsigned char *r, ucs4_t wc, size_t n) { - if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) { - if (n >= 4) { - r[0] = 0; - r[1] = (unsigned char) (wc >> 16); - r[2] = (unsigned char) (wc >> 8); - r[3] = (unsigned char) wc; - return 4; - } else - return RET_TOOSMALL; - } - return RET_ILUNI; + if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000)) + { + if (n >= 4) + { + r[0] = 0; + r[1] = (unsigned char)(wc >> 16); + r[2] = (unsigned char)(wc >> 8); + r[3] = (unsigned char)wc; + return 4; + } + else + { + return RET_TOOSMALL; + } + } + return RET_ILUNI; } #endif /* _UTF32BE_H_ */ From 68b758d0ff188baa9a696d579bc50e2c77253c2a Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Sun, 19 Jan 2025 10:18:17 +0800 Subject: [PATCH 65/77] Add `_CPPP_API` to `locale_charset()` implementation. --- lib/locale_charset.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/locale_charset.c b/lib/locale_charset.c index 6be12970..82576f75 100644 --- a/lib/locale_charset.c +++ b/lib/locale_charset.c @@ -21,6 +21,8 @@ * If not, see . */ +#include "cppp/reiconv.h" + #include "cppp/cppp-platform.h" #include @@ -57,7 +59,7 @@ #include "localecharset/locale_table.h" #endif // !HAVE_LANGINFO_CODESET && !WINDOWS_NATIVE -const char *locale_charset() +_CPPP_API const char *locale_charset() { #if IS_WINDOWS_NATIVE return windows_getcp(); From 2e6a8f096929a201cd4cb7056ad61a683ac2080c Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 10 Feb 2025 16:24:39 +0800 Subject: [PATCH 66/77] Use `ConvertFlag` to open convertion descriptor. --- .markdownlint.json | 8 ++++ CMakeLists.txt | 3 +- include/cppp/encodings/reiconv.h.in | 8 ++-- include/cppp/encodings/reiconv.hpp.in | 6 +-- include/cppp/reiconv.h.in | 60 +++++++++++++++++---------- include/cppp/reiconv.hpp.in | 25 +++++++---- include/iconv.h.in | 2 - lib/iconv.c | 20 ++++----- lib/reiconv.cpp | 4 +- tests/reiconv-test.hpp | 2 +- tests/test-discard.cpp | 9 ++-- 11 files changed, 87 insertions(+), 60 deletions(-) create mode 100644 .markdownlint.json diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 00000000..c0676d10 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,8 @@ +{ + "MD024": { + "siblings_only": true + }, + "MD033": { + "allowed_elements": ["img"] + } +} diff --git a/CMakeLists.txt b/CMakeLists.txt index e42ce975..1a35a9f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,7 +33,7 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/build-aux") elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../build-aux") set(BUILD_AUX "${CMAKE_CURRENT_SOURCE_DIR}/../build-aux") else() - message(FATAL_ERROR "CMake build-aux directory is not exists, try to execute 'setup.cmd' or './setup.sh' to get it.") + message(FATAL_ERROR "C+++ build-aux directory is not exists.") endif() get_filename_component(BUILD_AUX "${BUILD_AUX}" ABSOLUTE) include("${BUILD_AUX}/cmake/cppp.cmake") @@ -71,7 +71,6 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${outp set(CPPP_API "${CPPP_IMPORT_API}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.h.in" "${output_includedir}/cppp/reiconv.h.inst") - # Header for build. # cppp/reiconv.hpp set(CPPP_API "${CPPP_EXPORT_API}") diff --git a/include/cppp/encodings/reiconv.h.in b/include/cppp/encodings/reiconv.h.in index e1e1b5a9..b58b8122 100644 --- a/include/cppp/encodings/reiconv.h.in +++ b/include/cppp/encodings/reiconv.h.in @@ -23,15 +23,13 @@ * If not, see . */ -/* When installed, this file is called "cppp/reiconv.h". */ - +#pragma once #ifndef _CPPP_ENCODINGS_REICONV_H_ #define _CPPP_ENCODINGS_REICONV_H_ -#pragma once #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") -#endif +#endif /* _MSC_VER >= 1600 */ @INDEXES_CODE@ -#endif // _CPPP_ENCODINGS_REICONV_H_ +#endif /* _CPPP_ENCODINGS_REICONV_H_ */ diff --git a/include/cppp/encodings/reiconv.hpp.in b/include/cppp/encodings/reiconv.hpp.in index 1867e355..6e71cea2 100644 --- a/include/cppp/encodings/reiconv.hpp.in +++ b/include/cppp/encodings/reiconv.hpp.in @@ -23,15 +23,13 @@ * If not, see . */ -/* When installed, this file is called "cppp/reiconv.hpp". */ - +#pragma once #ifndef _CPPP_ENCODINGS_REICONV_HPP_ #define _CPPP_ENCODINGS_REICONV_HPP_ -#pragma once #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") -#endif +#endif // _MSC_VER >= 1600 @INDEXES_CODE@ #endif // _CPPP_ENCODINGS_REICONV_HPP_ diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in index e0c50667..2d410e8e 100644 --- a/include/cppp/reiconv.h.in +++ b/include/cppp/reiconv.h.in @@ -23,31 +23,26 @@ * If not, see . */ -/* When installed, this file is called "cppp/reiconv.h". */ - #pragma once - #ifndef _CPPP_REICONV_H_ #define _CPPP_REICONV_H_ -#include +#include "encodings/reiconv.h" -#include #include -#define _CPPP_API - #ifndef _CPPP_API #define _CPPP_API @CPPP_API@ -#endif +#endif /* _CPPP_API */ #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") -#endif +#endif /* _MSC_VER >= 1600 */ #ifdef __cplusplus -extern "C" { -#endif +extern "C" +{ +#endif /* __cplusplus */ /** * @brief Version information. @@ -86,7 +81,7 @@ extern _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf /** * @brief Lookup an encoding by it's name. - * @note The return value is an encoding index that can be used with `reiconv_open_from_codepage`. + * @note The return value is an encoding index that can be used with `reiconv_open_from_index`. * @note We will ignore '-' and '_', and uppercase all characters. * @param encoding The encoding name. * @return The encoding index. If the it is not found, -1 is returned. @@ -95,7 +90,7 @@ extern _CPPP_API int reiconv_lookup_from_name(const char *encoding); /** * @brief Lookup an encoding by it's codepage. - * @note The return value is an encoding index that can be used with `reiconv_open_from_codepage`. + * @note The return value is an encoding index that can be used with `reiconv_open_from_index`. * @param codepage The codepage. * @return The encoding index. If the it is not found, -1 is returned. */ @@ -106,36 +101,52 @@ extern _CPPP_API int reiconv_lookup_from_codepage(int codepage); */ typedef void *reiconv_t; +/** + * @brief Convert flags. Used for open conversion descriptor. + */ +enum ConvertFlag +{ + /** + * @brief No flags. + */ + REICONV_NO_FLAGS = 0, + + /** + * @brief Discard illegal sequences. Same as iconv(3) '//IGNORE'. + */ + REICONV_DISCARD_ILSEQ = 1, +}; + /** * @brief Open a conversion descriptor from encoding index. * @note The return value is a conversion descriptor. * @param fromcode The input buffer encoding's index. * @param tocode The output buffer encoding's index. - * @param discard_ilseq If true, we will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @param flags The convert flags. * @return The conversion descriptor. Indexes MUST BE VALID or the behavior is undefined. * @note If the conversion descriptor cannot be created, returns (reiconv_t)(-1) and errno is set to ENOMEM. */ -extern _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq); +extern _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, enum ConvertFlag flags); /** * @brief Open a conversion descriptor from codepage. * @note The return value is a conversion descriptor. * @param fromcode The input buffer encoding's codepage. * @param tocode The output buffer encoding's codepage. - * @param discard_ilseq If true, we will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @param flags The convert flags. * @return The conversion descriptor. (reiconv_t)(-1) is returned if error occured with errno set. */ -extern _CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, bool discard_ilseq); +extern _CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, enum ConvertFlag flags); /** * @brief Open a conversion descriptor from encoding name. * @note The return value is a conversion descriptor. * @param fromcode The input buffer encoding's name. * @param tocode The output buffer encoding's name. - * @param discard_ilseq If true, we will ignore conversion errors. Same as iconv(3) '//IGNORE'. + * @param flags The convert flags. * @return The conversion descriptor. (reiconv_t)(-1) is returned if error occured with errno set. */ -extern _CPPP_API reiconv_t reiconv_open_from_name(const char* fromcode, const char* tocode, bool discard_ilseq); +extern _CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *tocode, enum ConvertFlag flags); /** * @brief Get the size of the result. -1 on error with errno set. @@ -159,7 +170,8 @@ extern _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, siz * @note If the output buffer is too big, the rest of the buffer is filled with zero. * @return 0 on success, -1 on error with errno set. */ -extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char* input_data, size_t input_length, char* output_data, size_t output_length); +extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, size_t input_length, + char *output_data, size_t output_length); /** * @brief Converts an string from one encoding to another. @@ -175,7 +187,8 @@ extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char* input * @note The length of the result is stored in `*output_length_ptr`. * @return 0 on success, -1 on error with errno set. */ -extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, size_t *output_length_ptr); +extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, + size_t *output_length_ptr); /** * @brief Open a conversion descriptor. For iconv compatibility. @@ -192,7 +205,8 @@ extern _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode * @note Decrements `*inbytesleft` and increments `*inbuf` by the same amount. * @note Decrements `*outbytesleft` and increments `*outbuf` by the same amount. */ -extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, + size_t *outbytesleft); /** * @brief Close a conversion descriptor. For iconv compatibility. @@ -210,6 +224,6 @@ extern _CPPP_API const char *locale_charset(); #ifdef __cplusplus } -#endif +#endif /* __cplusplus */ #endif /* _CPPP_REICONV_H_ */ diff --git a/include/cppp/reiconv.hpp.in b/include/cppp/reiconv.hpp.in index 94170217..bfcf969a 100644 --- a/include/cppp/reiconv.hpp.in +++ b/include/cppp/reiconv.hpp.in @@ -23,21 +23,16 @@ * If not, see . */ -/* When installed, this file is called "cppp/reiconv.hpp". */ - #pragma once #ifndef _CPPP_REICONV_HPP_ #define _CPPP_REICONV_HPP_ -#include +#include "encodings/reiconv.hpp" -#include #include #include #include -#define _CPPP_API // TODO: Remove this. - #ifndef _CPPP_API #define _CPPP_API @CPPP_API@ #endif @@ -123,6 +118,22 @@ namespace reiconv */ extern _CPPP_API VersionInfo version; + /** + * @brief Convert flags. Used for open conversion descriptor. + */ + enum class ConvertFlag + { + /** + * @brief No flags. + */ + NO_FLAGS = 0, + + /** + * @brief Discard illegal sequences. Same as iconv(3) '//IGNORE'. + */ + DISCARD_ILSEQ = 1, + }; + /** * @brief Converts an string from one encoding to another, supports encodings autodetecting. * @@ -139,7 +150,7 @@ namespace reiconv * @return Return the output buffer. * @throw std::system_error if an error occurs. */ - extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, bool strict = true); + extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, enum ConvertFlag flag = ConvertFlag::NO_FLAGS); /** * @brief Determine the current locale's character encoding. diff --git a/include/iconv.h.in b/include/iconv.h.in index d5ada6c4..fccd39c6 100644 --- a/include/iconv.h.in +++ b/include/iconv.h.in @@ -23,8 +23,6 @@ * If not, see . */ -/* When installed, this file is called "iconv.h". */ - #ifndef _ICONV_H_ #define _ICONV_H_ diff --git a/lib/iconv.c b/lib/iconv.c index d7657ba4..167af2fc 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -86,7 +86,7 @@ _CPPP_API int reiconv_lookup_from_codepage(int codepage) return codepage_to_eindex[codepage] - 1; } -_CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool discard_ilseq) +_CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, enum ConvertFlag flags) { struct conv_struct *cd = (struct conv_struct *)malloc(sizeof(struct conv_struct)); if (cd == NULL) @@ -111,12 +111,12 @@ _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, bool disca cd->ibyteorder = 0; // Initialize the operation flags. - cd->discard_ilseq = discard_ilseq; + cd->discard_ilseq = flags & REICONV_DISCARD_ILSEQ; return cd; } -_CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, bool discard_ilseq) +_CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, enum ConvertFlag flags) { int from_index = reiconv_lookup_from_codepage(fromcode); int to_index = reiconv_lookup_from_codepage(tocode); @@ -126,10 +126,10 @@ _CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, bool di errno = EINVAL; return (reiconv_t)(-1); } - return reiconv_open_from_index(from_index, to_index, discard_ilseq); + return reiconv_open_from_index(from_index, to_index, flags); } -_CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *tocode, bool discard_ilseq) +_CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *tocode, enum ConvertFlag flags) { int from_index = reiconv_lookup_from_name(fromcode); int to_index = reiconv_lookup_from_name(tocode); @@ -139,7 +139,7 @@ _CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *toc errno = EINVAL; return (reiconv_t)(-1); } - return reiconv_open_from_index(from_index, to_index, discard_ilseq); + return reiconv_open_from_index(from_index, to_index, flags); } _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) @@ -150,7 +150,7 @@ _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) size_t fromcode_len = reiconv_name_canonicalize(fromcode, fromcode_buf); size_t tocode_len = reiconv_name_canonicalize(tocode, tocode_buf); - bool discard_ilseq = false; + enum ConvertFlag flag = REICONV_NO_FLAGS; for (size_t i = 0; i < fromcode_len; i++) { @@ -159,7 +159,7 @@ _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) fromcode_buf[i] = '\0'; if (i + 7 < fromcode_len && memcmp(fromcode_buf + i + 1, "/IGNORE", 8) == 0) { - discard_ilseq = true; + flag |= REICONV_DISCARD_ILSEQ; } } } @@ -171,7 +171,7 @@ _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) tocode_buf[i] = '\0'; if (i + 7 < tocode_len && memcmp(tocode_buf + i + 1, "/IGNORE", 7) == 0) { - discard_ilseq = true; + flag |= REICONV_DISCARD_ILSEQ; } } } @@ -184,7 +184,7 @@ _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode) return (reiconv_t)(-1); } - return reiconv_open_from_index(from_index, to_index, discard_ilseq); + return reiconv_open_from_index(from_index, to_index, flag); } _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) diff --git a/lib/reiconv.cpp b/lib/reiconv.cpp index a0bb17c7..f1bc5972 100644 --- a/lib/reiconv.cpp +++ b/lib/reiconv.cpp @@ -52,9 +52,9 @@ _CPPP_API reiconv::Encoding::Encoding(const int codepage) _CPPP_API reiconv::VersionInfo reiconv::version{VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; _CPPP_API std::string reiconv::convert(reiconv::Encoding from, reiconv::Encoding to, const std::string_view input, - bool strict) + enum ConvertFlag flag) { - ::reiconv_t cd = ::reiconv_open_from_index(from, to, !strict); + ::reiconv_t cd = ::reiconv_open_from_index(from, to, (enum ::ConvertFlag)flag); if (cd == (::reiconv_t)(-1)) { throw std::system_error(errno, std::system_category(), "reiconv_open_from_index"); diff --git a/tests/reiconv-test.hpp b/tests/reiconv-test.hpp index 7db41332..a40ee263 100644 --- a/tests/reiconv-test.hpp +++ b/tests/reiconv-test.hpp @@ -34,6 +34,6 @@ inline Buffer reiconv_test(reiconv::Encoding from, reiconv::Encoding to, const s { using namespace reiconv; Buffer input = Buffer::read_from_file(input_file_path); - std::string res = convert(from, to, {input.data(), input.size}, true); + std::string res = convert(from, to, {input.data(), input.size}, ConvertFlag::DISCARD_ILSEQ); return Buffer(res, "converted"); } diff --git a/tests/test-discard.cpp b/tests/test-discard.cpp index d517f1bb..7ebd9e04 100644 --- a/tests/test-discard.cpp +++ b/tests/test-discard.cpp @@ -22,6 +22,7 @@ * If not, see . */ +#include "cppp/reiconv.h" #include "iconv.h" #include @@ -196,11 +197,11 @@ int main() test_default(cd); ::reiconv_handle_close(cd); - cd = ::reiconv_open_from_index(ENCODING_UTF8, ENCODING_ISO8859_1, 0); + cd = ::reiconv_open_from_index(ENCODING_UTF8, ENCODING_ISO8859_1, REICONV_NO_FLAGS); test_default(cd); ::reiconv_handle_close(cd); - cd = ::reiconv_open_from_codepage(65001, 28591, 0); + cd = ::reiconv_open_from_codepage(65001, 28591, REICONV_NO_FLAGS); test_default(cd); ::reiconv_handle_close(cd); @@ -216,11 +217,11 @@ int main() test_ignore(cd); ::reiconv_handle_close(cd); - cd = ::reiconv_open_from_index(ENCODING_UTF8, ENCODING_ISO8859_1, 1); + cd = ::reiconv_open_from_index(ENCODING_UTF8, ENCODING_ISO8859_1, REICONV_DISCARD_ILSEQ); test_ignore(cd); ::reiconv_handle_close(cd); - cd = ::reiconv_open_from_codepage(65001, 28591, 1); + cd = ::reiconv_open_from_codepage(65001, 28591, REICONV_DISCARD_ILSEQ); test_ignore(cd); ::reiconv_handle_close(cd); From 477ca1735712d69becefcac59c6d2ac8856d6f2e Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 10 Feb 2025 17:17:16 +0800 Subject: [PATCH 67/77] Update benchmark utils. --- benchmark/benchmark.hpp | 3 +-- benchmark/benchmark.png | Bin 107761 -> 58412 bytes benchmark/compile.sh | 2 ++ benchmark/reiconv_iconv.cpp | 46 +++--------------------------------- 4 files changed, 6 insertions(+), 45 deletions(-) create mode 100755 benchmark/compile.sh diff --git a/benchmark/benchmark.hpp b/benchmark/benchmark.hpp index caabab24..0595809b 100644 --- a/benchmark/benchmark.hpp +++ b/benchmark/benchmark.hpp @@ -13,5 +13,4 @@ extern int libiconv_static_size_convert(void* cd, const char *input_data, size_t size_t output_length); extern void* reiconv_iconv_open(); -extern int reiconv_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, - size_t output_length); // Unused. + diff --git a/benchmark/benchmark.png b/benchmark/benchmark.png index 0d2445b2103f542c79df8367f0335d28f8a8a977..694e37931d584ecae9d29bcfd2bae87a5e5601e8 100644 GIT binary patch literal 58412 zcmeFZby$^M_ceNNKtK>_kQPxwx;sQdr9nESySo)pL_(xQ8YC3y?vRiMiA{IMraSgo z`+a}kIp6o^Ie(w$l1m=g*WT-1YpyxR9AivBsVd9k;ZWj05QO*gg^W4`p#?(_Yyle+ z{DgmaW(E8u>@KV0uHj_q?)Api0#bV8?riVmZf|4y(9^=z&Bn=*mqUnym+hgoySuZS z2q&k*|NR0ECs!-Zt~DJE@FsViU+B6)5dIs~7c5^g&jx~)lU~X^d+nXFGwb2~8b02# zINxV(xkRk}t{&sel-)50Em7L$r__~NtwH|0{@L7C4gxbrnnhI)r-OwS8<9rfMJGB> z$Hd!B5XwmZu3yQ!RKI%K^u(~I(3C+Ti;dZu{~tXcYQpfl333=wsand zn5jK-^^(PQ3H=JGVyjs-oiE{5*-y5u^(SAPFGmk=x<^n6Mp^VG7$S=9(#wP_dDe

t584YHwc&CORXONK$T76Gw$8Y8(fs)Fqb6m#!bYPril#T5lyzggkcyU; zw!&dLVNep;&=;_@yqqNL#;B&I_TV1oqeqWwF4mG?zIx?qV^ykie%6dsl99n^YHGSi zBNE3TA5~L9A?D3RBkF11o4|g&4aW!neHU=(AvgAiwH&VYZi2T@OG|U#8vR7ds#TK` zbbaoEs9C6ZHotvfTd#9)!@C#O4;e`adke0EB^u<`I#M^q$Ni|P?s z-~jGX3lXS>G^dICnU?B!FMVPPi;7}oXOEP;Jr9Y9xF`Mmc`Dow{CH!&Su#EFl4Wvo zQtWag8}%g5KiyPk6M}zdRtiw*o#76%k?w?Zn>{8Pog_ z!iq9)YOW;z9Pl}C!~#jXO`gkD{MwOSN%>wpo~;I z8B1L6Kd;bZr>Cd4Xez!s+p{{}80NDb4P)1@A|N4o?S{0L4l9U#^q!z{=QC%MYA_F- zT(+7I^5!gc7ZpBtRLR)&R$OnRXhca`avWkAl}Nn2yjJ^?cn8jKaB$*+gP~QhIF}}` z^;EB?zKur0-uot@H~RISg=oy#^3k3?$d7b^su0*K_JK1@Jjx$X&p@hZ>RwJx4vR>t z^1=STDu|=hy{^vAr@@EdY>M0b^b55*>;+g0^(xhGPl|)$H%D6DqW7jOgPSo?`dqit zHhyV)yI{uusQ=ZoXU{^<2&KdRnd9i7Zp!VYo#)O(D_HLN&DnhI&FOUQUelHL*{m1r z9GvvQ(UI9qjf+m9*1CKmhaomDuGwsz2M2unUk+|0m7r(fE&`#vJzgm6wia>JI3I*e zrGNfmsK~JX>6KvMwRd81c6K(*pa_eAmR1>Tb*eEI1_l8Uku-R(6o!D{qqLmCYQ4gS z<9`YjPV=-Ot-;C3RG1-e&AOsoHij~J0_rw%lb`PFX&VQ0Yz$}DULoo)7C+KCdwCTf zQiKwq{pTS*PF31zGu~YRdn|VNmtn?tyYTUoCoxG$pIS|r&#p&DUndr$qoem$a8pK- zkdO#9E5Cf1sg^A_wlyCL=cSBXtB;zNg>i6kQ}_Clct4)a`9;gq1;jlI z!Cc(ii`FVwMbz(cxY4PG^oO$<)DVDBM>JhIzPwK;Z9sAtl_50U-T8v953uB;X`e7N zhqbh{@O&b^FCig89&iIv*wWI{t)rk_U-f)ouS4~0rvhi=%3+|b?bE=(K#M7DvWfn5 z$#kZ4|F7T^OI=rA)wyq~|7j$ZHYh|rr;Bb!XD6C%hJfde&cA>EN+#_=WM=nuh2A9^ z`uc+M7sBM;9~<$HB&40Qu*KVZG-)3ZD0c`qksF1w#q6 zg(+Yp(xXW?S7&CGdaxG?3d`&1L6&2`G-sUu;PKgwM}SMt8+7Y07fstQiM&wpJ=qF1 zDrVx~h^n-MyWX6@-TvSS8jOmkgR2&Zyz#=kPyLrzMeJFga_Zl{KJ$)nQg9$2s~o1s zJF~T{cP2{xK{iJv!;KAVQ&ZFPy&$CiuFV$i#rb)OX$OvD!-3ofJgUxrISLd!<}dKh z^srqjWB!xQQCV%>F1A~y+_K*r zeAWc1A|7=cesXehWdT>7X@QqEMn0>gVAHVg-(UM~SH$AQZtUO(F5uAiNyGJF@5KYanCRO0@&Fl>k zbc?q>n9lU{>6WY4bJV9KE`WTO*nqbjU!;uQl4u;5lpb`O^yee~^5WvN=D-{8lQC^W z0dH-RP^w+o+0}E_8R3s-ls`%2oDeU-pKrT4q}>_nR%gZyJ#6C0Iv)A zzQ2DLTCwQNH~-~85p+9?GZl^oC;KdT-zjZ@Ce#8P>vj`GImkHPFZ6AMs zf9OQ=p|SCN^HCuo3iHr(4-7CqecE&3*FgVk1aiK)Jel#D4>;bLBrX{10cp$W13ukA zYY5iC;UU^WCEREkoZ?C^XY&t_?eT{FHr#tu0ui7J3L!Hs2h;k?EP8cnoax`beTyn$ zrDk2A3WO-n@5{mzS5XAZBoe25%^j57}3FUMVYUK^9<@;aSY#vyR$rZEbPdMm`;rxg{m4 z+)0W(AS>rHhi92vTB5SHZjEzhxstzsL)MsWJSe~5H_TZ0w67rxkPHU|^sDUEpw<1w zKj6nbPR%#D)|GlsBqZi0*XsA0G$Q1(zsARF7T#J}Sg=S{PUC_DT{?`NpAUD{)t0cd zuz(Q|5I`+IHS%64Dw?0~FAfOEWyheBg3pm91nv&NCL9g`Kx|BuW|#LTu-kx!89vL3C&L6IH{H2M$by<9506MQxwBj->iGZ{7rph>+9LBK#$Vg(rpe$jQh)OxiOtF#NF~;Sv^33cR@#o(7pezSim0 ztMFbAkb2f!#TXdSKX<5Gnhz}=bfLhC@IWz*t_&%6a{uGUkH4g+8^57)@$vTcC8DJ@ z+Kq5R9fhrW9xNk^S!}-roz1A>8wkkZ-@3es%l+T^8Q9n&Gz+wbLB)~6%Nj2>9xNzs z!a<>^;q8;(dX?cXV;NyzzILND=Y!q)PymtusEyHgaLG!{yNSScOtITlWF!Xg6X0jm1p>83 zra-IE8el!n#$zG?908u|m^=lz%oM<90FHHEeV z5-o9wt=iiXK_fb@>*fps5)|t+n~~gudE{;4@v%Ft?*_eP-#0aeCx(5Nyq@)``T5LZ z;^N5D6PbPhSfq;KZfkuM;8zF)BC%cpl^;?;QrHi{mw-$FaOBtv0$ZV&E%F^CYnY%HJ*@x&`|u&*R6|v337z{IE3*{GDren;yi;_-~0OfpaDGn zz%r-_pzQJ5jk8^z?d_>!*D-c)sNXzBa)3{y4iI$dDlG>lPHfiNl z5m``K%-{c{{Tf6^|K7Uh>DA4w>R+y~e8Lbcd`p046YHtKTfEQz(5rPT$GXT zKYl!#FpGXusb^Spwh)33kWMs66H+=l4+h1KB96}4t7qC)x?>G59ZGeuad4IZI?cau z3J2k#V5+_2U$>{>`4~|%V@R0u0@C?NB1=DSUw9O)(0z2VRZ#5g=C%yFtEG5tqc=kt z&)hfvg{F#nm4USS_3PIZj|aVO(+<_8&WqBwpicqNj2;D(8yXv7VbRejgbea}thnFl zJ}4af;BFs)<|uA6Br%bEy2@c0mECLC)64+2fD}_j;z8a1nw-3CkL;og`jVK~r6f4( zK0L?@YNzLK;rb6=o{fJ-lGB?|OZ`jYO!Ks4!WubB=Mgv`G8ox1;_QMP1z_BrY&>x5 zXCA7_0s;N?=p3LI<=3xC0QSlOH^a&nS!8uft! z1L>5Qz?M5B?Mf&NrLooMZai)|p@G#DhOU&5=+?Y&UKztLgi>lnU;#qLUG429p1XQr zt5WG4rmOBOw0|PD7>JCFl+7FAwjRoGEe-&?d3n0KUB>$gd3)2{-~WVzW8lKb-MymM zXK``yF%uJd27Eh7$mP+|`XJUrPR{5j3JF{uTcZm8rXXAKE2)tPbUAqj2JkI!SnNbH zE6G9IUp^XjwXVwfrYQzfm~AKvYaw~5U=GsXt{nPCib+kDvQ~os>4lDBQX%! z_S-a44&V^4Kyi<)*P!i?adqVZQP?&+n+l+^rY|ZndaNs+QVamt6d3UM27C5-@4Tbt zDEnRTadO$U8$Ty5GxVz+QCJDo+@&=w52UEa*85pUD^OJjSQh?GRXYu4$$mCKYwb@K zTwY#&ZfkiwEC$q%o(iX_3KjsXMZM;Hn3}H-aX}I@1&zw}{vUj(?>qlz zxAlR87Ib`&yWS+Q>9&E6v>((t4%^QHk#c|HSTxST3qhYmT0Q4$7b#v2aDn3|pHGSg z0x|TG_ulNEg-{&dJj4u;413wj7^C~mr?y_3J$bNTq?ray6mk~2*VwMGYASWyg z`}T616Ex5aauFGzk+}wlvfZ3V^Fc`fxE`n`47DIooOsMS?;RcB>&;_;s!WIw)YeUtNj zBeEH~N&QN){j_~IvEEOUXS#3TAE%dl1A6dsQdj9zVSFm%*57zRIu={7Dcd~_@L!s& zAc?KprY|E91IbQJ-QY{t@d|}80{l88TY9$ta5i77uQi_TP8+KyQGpNLgp`vO|tr4}DSpBJKOeH)lP) zPvj*yFS*nhO*vg?NH*A_A@Xi<*C>=9p}~dGx~a4WmL7 zC(Hnj6c$oweXWkWFSB;{AMS_?ymo{;-)z_Y^$UoZ!w5h^pR3*KRAW0n%5@H!Je730 z>|p{bDnH#z#`gr;=<;7>Hcx`?KTA8|C44L_nIw8!6B4V-bijMb-O#7X zyNo$UKnco_OTJV6Tk2k+P6t*;1_{A5a2`#xC;aT!dU4ZQ*~72v7{XA|5O)&ffx-iF z%F6dO@{~Jzdq3~*JJ0!Uv!e*ioyqcE2V-BHiAB&Gpg29i4T-pKw17)#5Je~C91NP4 zh3)On(b4$mnDHFf^Mm+YH%YE}YS$OrV;6q12rAc;QW;`(xa?v3j00d&zVx5NVk0Kco_-AdR!H#oX30YAUA6mgd21HffUQE&akyk`s5TUR0U(!$kCv7$0|2Y$Hlid5 zL%|9ZM<8*v!%OS4LOAEQCl1gpE;)xxF&upe?B3_PCXloHd#3NSw+f?u3%Zbp%)XjJ zHJM|0V>q`N<{0}gItfW+pJ~_zOK%~^Xh2EfP)-y3)M1*bU2HUP2HwqKs-iZ3`*?R6 zelgYG9|@|r^TwAtZf|>gHgFcsm_gv08VJWqMUXPR{Xv@hrhIy1n~J!OD0RqEs5A7PmMt`;C1f1J3G$)lm00$`3tkQ0C@b3a zLEa!&yDNQ|P?}GJ`HgV~IBEwTG@V2~N{^>iMUot*H^!gI*a5QvdXCu(BTr8OKub9 z=am<$$sxG(GS4%Zagsulq%JgCg3CMSRuwT^?BSl=BhB~m-2;LtQZ1qVo0z?%(`i03 z8r}PUkDUww_Y!xomhAKo5V$DzeJJxesFsqTh50i(+c*XHUX9mAQ6if&wY*e=_7aThDGD&|T+wt<8bsDFp+k+u%b7S9Mo+06H9;&fV8 zm$KTBL*i{55|H~y-GNCp)`iIi);ZOUa9m(mwyqz{dUd*1?&@ieb{=d2uvrfT9jOTk z30KFXMy&Z(1Fr#i_NW51zH`!YER%|7tuojTkP`ox^St3n`Ucv8q@*Mchk-QlUVzs2 z4-X#!77>fipP;<<+QEjB5^VL_V7iKt5$)Z(cl%O=V*x=jRA!+dHH#>8SCRrvJ=Ytw z3`gQTW}NC7S6qO`azKv`dKg#Giq_3Ah=_bg5$z2PVrAv!lO=D^0T3%LkOznF+ZzMh z*-R$e zfdtSz3P(@d3v@ z2F$3i>k2ktu@STNm)@0hfFQsgIINtSWoOAPB=+Pwn1;sZzTF()-u<scN45t) zi|zp~7?lP<-2WRHLE&B$VLCHQ1c;Z+vU?^Uduyq}3`>b)f8Q4E&`#ZC4XO2l>^Fq#(O!EV^0ONd!Uym zBqQrYF(TIoU6bWj_@J>s1DsO~AWC@PxOeZ;b8`<*GV<|_uGTa+OJat!PUecq%E|)b zO1ODoV4!JbofstFo>;Zlkt_?nHB^5;^%0wsS}ZQEJ^Pq(pWFjcd+hIs^cQ8)INCoO zJ-Rqfb9XQ}OevHO_%>6(ja!wvnlpdD)LSd4Vrok}gJ4YC3B3hS;wb=ICv=OYa+`fP z@&NmU62ioNk4@l3hVI+rc+C3k517km6+Na5HvWgRYTU3wv75gN^fX#%pIDgux}4P< zp!Sa$TE(|>R@ci!N%WYPe(YOJn0bL0z{XVi{Ov zSIOnx%w~VQPBP3m`cW1MFP>Szf7srY>W5hgEmV?zWGORh+C>yup721|fO*)MYZOft z)i%W407{Y$8(G_*u@iKlB|c$g?X_U~3_97E_;^`BG^aS6?#-)6OTR1c?}=vx#FhJ= z(Sa{!_HbBnad9u8^03unsWn=nW+h(vy}6*5(D8bwiS-X41F6}BcWNXZNic)ilc058 z+?t!C-4znO%`v`UI>e^Jx1Wb~WnTE!a{0wEH4$h{bN*{iXZmrPc`y@4M~>3c(sm$* zIB$)zfV?8?clx_r2^2bz+{|jTgP4?47EpWxNKGjc0pI5XuOdMf`3E>VKnvkZ0nGD2 z*!3~5WuFNkYwc(2;wgA7xqzxNRiS1_ibp4r0-7FPhbcZ(3fdYg@BuXWHxMHj9^mLX zSi3kL2Ff+_bPZUMLM5v*-`yyMY9H1X)pc&}jG%DA5akAmLE}mbP2LDg*^~{_lJRsn%L7v@k7qP0pI9eb1slkLI(*dOX6cq)kV3P|ieAAuH zxQQCTOYq2pKVHV7Dg#PBXP0P1ok`_!n|sC%wn=7(oMltp$IFCRn?wsig09QvjfD-I z&##R)+-)VGRH}=`BDm&oUAxjORq1UE{mgjvrtF!<>q6yNDS&4|{}W$@lC*iP2H4JY z0Q<5HFD^cmfWct?0OiM5+04{%Hv@?=9&Q^3UatsbKX3308_=znTMc?5t}}7n2ap-Vb5IZH`CnTM~fJ$Jj=W+uPu^;j@U2kg`4lx)LaJTseeXqY59x`$?gJM z!Rx0&Lg!gi+wOHZUN#^Js0nv%q$_9t=~`HJWeb>xt#z`=6i+a_^OiKq+hriap9Q%r z;DQF|(|&k{{)=kcbZs8A4c#|X9ga+^smM$xl26F?PeJv?S+-?m>aTx+g4h7WSB||W zj~{aZHBU@T%zFGc1&HYEqlwLtJd~;@L#N7H*%d(%Qe4alGVHwvT*1Ul%8*I*v=5?o z9VLbXnSjHv4nXB_9{3dq5ul`DqdWqDR$$j3ZI&)CE87R{h%nXyV9Po|Z!%*rsiKbU zvg#Zc%uS(W&Hto1i?lqc#iuw!d-N-Fwu-~s5ZmdxZ)nPYl@>nV7(-muT?Y5+wv_rU z*OF7W$yljiY+;}1ceA5k_#%8r$}jf3bY8ziYZ3XujB}B2ErQIqon7tl1tqi=2)Pp= z^#g*16@^WJ2KBVs!QWpD9qWEOAes2>#tDdt|D<}&eHyd9vjF~Hj1-((0G)=_-drOf z;NBf9cZqI`h+JRIBiAxN(mnzxV!Tk_t(U#pq*4zkG!YcMAHZ#>uP_Gm9Naiad~R+P zo&-wTWquYB*H5~@_h+@S<`iO|oJL4#a5Tmpo@X`Nw@4Bw!gN`0gBLG!9% z#KsowMOZW;r&&jAR4tVNT80iA2`N57*whn^7LWWEJ*mArjRlT6f2x!wKjbwnWuATJ zcUh9LN=gHJng-ZLZl^i1xgg{XkHh@`)~9G|AOWP<6$1@e@zF+hG>^}rIb;-YqKN{{ zpz%T}bL;kJL(lQKE&CooX#uCYsLl{Pwas)DJAgl{Rnv|Pl9F^PDk=cI={ETb1DOA- z)C$CPovP8@Z|`ofUfgUjKy%yv41XMH<%WVR|8elgyuGTh-_tt5Hqm=VN$W@(f6MWr zTctI30{h6-u(KS%Syts@sgMs{zT%#0^-(Fxg+^#E5V=YN@K7xL#knHG$~}6H$OtI> z^LVw>Jdd$9AKC*ds@`B2dP=LY4N!hkB!lL3{|sjaA#W{;$Z2SH{dbu!Q&WDAH&OCh z-UGBfn_(SEuX}N3QIC zt7fVAMbYKiF~B-)3|r{b68!p|tX-j*W~oq9{=)pvOEP=W-eSMOSVL=;v$`mZFP8C& zNWHJIEKg5(oA>t@Up32TS^mW~p*eIuGMSEZNL+2IEX-=g78m=~bQZdvP+e@X3H@{F zbF4J)ZBupHmYb_90 zTT$An`aJeO5{EH4t%%MWeKj|8jFS5{e3W7*X&$#~BgyZbX6q{Z;GlT3S33Zz8+1bLrYu+R zOps4NmtsG)aw&-f5~+<>%pW9(I18ZRQv*^0=>0r^Z~iP|3|QHae+TwJC0Wx`H18d*d=vH!N8usd5q!o>=5_ zH`wWZ;GaczIAIl@3zd$CC8HB6bwGEXb&4XIrhw%A z7u?4IAlv&~Zstuk1&9J!GN{&J4+t{g{v?U{@Q8XLRwhc#03$0%E$oUB3?$xfz-bZ> zUXljj{yvaf2tlj^^TXihtr5_k12dDw*62?@hp9LKv9EX6LFZJrMh$a6V+z{VDw#gm zg5&EqKl@f_t4gwD*ZwEt`AD{)zMglsW-$J`S*gCa`=9I;-NOyCf01~|iI$JgCCyE@ zKSkJaM=dISFw?LXE5D$y_w*nsZqZw~cj)Ng#aiuA6Zr(rxk%?Q%CaV{Pp{;k?5vQi ze{NY&$FwIN^8IKDFV)-6Ra+u`j##kp!|2Q-083mm+uPkcQ?5Vf4&L-q^d;o#6t3J< zQUnJB4cv^&WU%*-E5aZ$&{$TN2;A#a0Qbs(vXhmajZ%V8y4o%fEvp?&Odi^e|E3od zOa!#>aHF4>#Kj8ndK?0%c7K8UAW77V1GEjG){ufL9;a2PXZSjuj}i}+-Th8?VumGw zk)c-&vvYnU`l5o;xz@{CMLmkr;KFZaLz4h;Ow(<+EU-h;K41YiVJeCqr?fn+o|c( z#k-awlRcxI$w_M^MzK224xN<8I^HkFVdDb2kDv7DR6C{~oq)<~7$yAS+^YY(CZbj; zS%94vkAQ}zpDyTH&C#z=t5-use6@_uT@!wEbj0fQYZ0Y&fiKoG5kT8LagKX?;CA-M zUk(q#Q~LfzN34!)Ya3xdUG4MGxFf%wW77@ioMVlb%htPUzWlx4$HZFC5-YCq`oXn} z!oj0vLuB?RC*mfFeSS#g*f&e@gLCzeqdTr9uEcz^DLF)3C%3eW_&y33?uib$JGt|z z*YtIs^Vj*neOgc}F3 ztlHn}TP(=6{&?wAAn(O_Q6jeADFsv(sQXTsW6sCX$mK?|7={kxA}dBF$b6Y%LXpj3 zzN}XLl!s=f9A1K3@3WW(M1mO$$rFy&VMBs8((0asP^JX%+14A$YcxB5y%{ae?#~pP zIa++RmpNwb^J`C|#%4xUb>IDHzBrg>2wNzkiz*Ya&y(a7a(X3p1;~ceS!=($Eg|r zk5rIlRF<1V=!HaYpVbchIyuJJ^)*CO&Fkf%ayNQCO<^9BV{7YUvS{c-0woM%gJ?Ly zT(a`t9|ssif#zvJd=TqxaW4|KRpm%d7Rb?WsjXA8%La{HCeYlVThnYs)*C4($HbQh z?LsXRO*BkphSkBibw~+_hn%yMh)!kBI7oQ9j&x6SZ!Q~`zl^WacN0oF(hWWL+oBjN-Kmp?1XB~D2)Fp0dptcV#$&~GYF@&m^6TXR)4=Y0!{@vpSVdaegYN=&GD_azVaoJ>K^dfE8qEjUCuiHzV%;eG z)CH;UKD}mzYJ_4(SL8Q){{END5M#vs3?ValjD_3|iR*PQ?KL^}Z5uKbi4k{7&U&ph)n$X~g z4Kvv!;<8dkH?h{EhAc^oVGSl2s@cOs_04sfmW#DQR)sCUbR0ZA)0Dd$IrY_A7Zvqr zsiJZ+hFeCBR#lK9?om9M)w*0A>1Y}GntrZ0W1BmSIpI=%ryFmr(j`nvO$PgAx0geJ zO%g1@$(S0VP59r}02Ht(N>ylM9kKo!W^MhClhDO!FoIgDQG=ho}57uVIg-P z>;VhI8i>{JxK+FE=4j;I*d~Q2EA)T1+rfk(Savlr_+>YXw3<}$2*HL0vs;?g>&M}8 zpNAb+KT4YR7RKu7ImV17O&pA^jp*20$m4zfEf6?Efz?tN@RaTb-6O78A!=%FDpx%3 zA5QS$83a5L8iu&o=l2?m`dqq5N-p{+>~j)eVc-Abc@OjL_Q2q({+ghTB~SDsxRc86 z-FFOA>#6qITh8__n!>7`IRs@RZ8aBvtl-%(g#c}VnBQsQ?7<4z&yn(%ld``h;$G+W zgADRxJ?XAsE$K|h{CO0O{@OQvDabK1 z6C$CBapkH+NwJ+ku}Bj46Uacc9{~H8Xf%LAfxv@^GbkQ#$wwLaVPaxJZ#SD@Y0Juu z0@l|QA^wvJ=%~X5OCsyS=qYpg z^NCs0tZ$W~XczXPq_5m!Zh=w$5Sy+cvU+edY@~ytr5~*qAM$8w^2VnQlhY8$2vz^| zP#wQy8~~K3m1bS{fniN|_Y~N{ffH#6c-r)K;t8_oOV;D#_<`P&rZBj^I)7idTCV=P zIhh3-LENwLL0*!?U>C9N&?hFZM#!;(2`_8_CD)Vr{t$gF)rvD@)N-46~F6gVH zX_1wl8WXTJXDN5 z95T(cqis6w(n@x;tC>`RKc&oaN^1a!`ep|~cl<`7eMM`x9UKxJduu)dQsZ)gw6@0X`q($X5Bq|aYkBb`)arPRH?$7%l{Rb%l``r)2 zgYS|5fT^28$oV14a0Gm2=a-jj!9}-z&1k{eo>w+-ZM(Kq(cF{Q|o8^W|~FKsrqxZ_P=$gTJ4))1z?s zT`?)dASS}QI*rxqx@xB;Z=Yao3*VjzFUQ{iy!iUzh98&jW zzll9%r!}MqFn_FPYzzPsNvhZswx@%=rez5Tg+VboFs@>{3&7M`$!pXNA1uV`QujEsj{C%d&L zy$_UgSGW&A&UDk}q{Q+T$@5g$+bkHd1&4LFxJan)y3i^`x3l`#*1)mT#fKz0vMt~W z+TR=}y`PViOBA`mwQb7;&$Hq*ue{j$oCq361NtC&q0@YmMU%wqR*}ew2_4LP4;Jp- z0(rmA-p8W)UGHBF;>SfR(EjQ!r<>3X7YqSod(aqsg47w@4l%LSo*2>+8i%;I+p z8Zb+~o_N=_NP$4eVCH+;v(km!mOpyPxx|b6?Rc1M&e-eS``^-N4fiZgk5fmp2{BU> z#9efEB$7WRYyJ5_Yb#~*@|AR{c2oU};ZMX9M~6e+zW>UsDvoY)p9MKBv^J*xM*pn@ zG{BGG11cs--EZ;@AdM@P@s*X2P?&@C@6;}52c#0)UUSX*Y|>gph# ztYDFxnNFORm>y_-Z$D??L897QXCTB*wc%jyp2rpVNpt%=a)UswBswO7F6i+=cb;=} z6ysr~HaDMx9-DyR>RR$^9s0!LF!WI*fHZ)DFUB7XU3I zL~`e!Yw_=uV1`Y3ZygrRp0 zk^X|^_~PHs(Lu?NGg@WxjGNmvv)${QI68Xib44SCx34_s%s_$L%;}X#*mWrxJuv)D z?6?A33%xmkelGsB`YEDNe>p%YXa)`Kmm?d;cZ}ertQ#;^;t!lQ)WD6Fmmc^Xv{r6F z)=r#01%@XkQPE^Dp;GR)t_%h+ItAzb|HLrJLp7&Ub|`+QH<5E4FeWIwP+wo4h(9I0 zOn^nR362o&{0V+Hs|}@4SIVCh4>#sAQWvEa{=Tp@HAm5P+7>0wKB!0t*8a@c0H>3P zeBFO=C38Kw-j}!0SR;)Bp4s+$2BCCaTOP!ldtxI!PxjWFO(&S09WNkT&iiyTL|s*C ziFeQ$G3S@6F?v7ho=NmTD$IL#Z9q)m*RJf7n6Nq~jh3Y>@vEJ3Fb44jm;zAp4luCW z7^jp4Wwx|P0gLz_l%D{!%)q{iG82L$LU#sctum`YTF3fbfti_^b9nP@#~1qNTZb+v zV~}ZS21z`IcNLJN+zip1;%1~lDA6_V55Sy zTeaQcr<+y~ z#;g}z?siw~?Fsxx!v&eowxF~BgtJ(kduzEozLHJhR!Vys3oH*tX}Nqa+BDA(JIZp0CL?2`EvDq&G=yk~;d=!R#q3Nx8vO8?R< zi#K;D;Iw$%j9l(JuC%a-x$Q`VFvOiDzpK}a)K)txmCJs%zTM_&OAExAAI=`Sg9Td< zwbzNiAwE$^#SEqrur~oCMZnaYF>HMfgf)XG;994Nlv_R=&WqlDGzoM{TJHrIkT-z> zZVJr3?S}hwV3_0oP|Ed^JS?mR(=5O{dHeVfl903mS|UvMS0wNcG%kSX@b$|+(u%$7 z`j5w8>c`5sBUE#E{Ho8BSD(1*tKC51<$GNJiZg~Lk#kaL@HpT@jFP<8)LcSr2)GB# znizGISCHs~@XybtfmvI3guG|IHZ~5~kKW>RDB02$>F zhW}UJ1xS--y$R>@uDCHyO)m@ZsH`h5IHhR=Dtc}|UFHCjHjv&$ybyh03PAr&GPvts zfoOhxzFR$S5H*-4p4{=7yc|$50uEC$K;;6yhz`qg;c4L14h0oR>$grT7%L2mjI@}l zuo+nX?~DV=KnwhqsObp62cx{){Kz4cQ1xA01+S)JZq7QuA7W-sL-QmN$lqmIh;*SE zYhw01&E09tcWV|t$J^^@0_~JI-Qou=!Ph=f3@{n;2OIZ%i8&wLmDyem9WXZZ)1G6_ z;AaRq|455jPcw3|d^c!~qRrTwHu!i@l4&&v$*^2d{B~(r(qWALom_S+`@;-92iY6- zJUd7}lCmS;^)`#S-ZVl8=S1b1XIv2O6<1Q9oT{CP*)aXR!PIZ-l^ zf~6Ycr0gUB*{&S&>>aMgiC5po1NCax4L90Of>av=f)z&OW#9DvZShA?BXX+NUz3Es z?@Dj^{w*xiMx!mw7YAy-OI(useMPb&C(5y}n9YN?@2mpitnxrh$a>I`_Dqg^exkprB*1U+_Ixzn8M z4bOM%6PzdiL=UqNK8x5Uwnl_n_3z}+TO~AAV9z&YzPN$;%+pGZ*<~wyjr52p?HVa)h1kj;@ z4m0uJnl$KFgxuER%tI`!tcW!mU}vFVGxQ1pZ#76vO&!r{@})U{3nr_^mD~@;hBL-& zx#OM&Jba%o?iLib8jb#vt+82hIP&_Jy;Co{F8T(uTGq-hm`Q=EhfK+kDO2^|@Myn& z1ixdY{>ApSF*Gx`=n2gI52sW5hmW(}v0V%E*0D*LDpFeBClKF`2c*JG4ifC5_@kc9 zb=o@lL|ul4hL(cymc(TW3JM*z1RjQv z9EwP}h|aAW(%dmy8=z)_o({-GO?vBLb<3NZFM)@CxTnp6eycr3hM(0V$ltRPO)8O4 z>TD^!zT*>pOd#U?!R%j_vacx`ua{va_O5KgYp9+;21|B?{|D>#@_0F`Poe_!&0)Y& zCAB zosoBg4(?Ed5h$OCK#E{W4A9zO&H{Z1kln|=;=rb23W6H~?RiNMGSJ9xmmdPjNI^@B zY`WSh4;Tj_`{}AkkkPEZOaSMZk^g}#5fM=e+^E*|3Ah5l{{z=S;$fnLN!d=@$~tqF z&%FwHBa3TmjFQ-)`Ol*Q{FZqR3&!Ts^wlxtwijW+MMBW=5g);h+2g#wuU;t=vcE&l zrInLU5j4YsZ)0wTZ9LrXZnj<4oa`vi?S369UA-o=50A9Wwd6araesN%(^I`amN0T% z=Sse}vTi!Op_5Y7^<7u}xK4Yd#nyOG_nwGE8Y*Xd^;53bNg5vLy`s;ELT>>+peS-D z3iSW+Q{2VIe)#ZVuvMDRhh)dPPe3qMPM7FM&31w*7QvZ}+`(i;Mnv5<$J#)u0#FHn z+%I-K^c+m0cPEj~6d8&FOG`J9W6y!i34H_h0FcFU0Cx`E`+vL@w?M}InwB>39ACU0 zywp|AY1;p@DqmMw1M|`0%Cj}gY(`#q+HyVKL|i1M}pG9rbq6F7sa!NTWR0$aH>Lo1Yp=8x$Wr=v%ht*SnPe z<(J@vy%lU!z*PA#z9vN|%Rjq>)pK2>6*n))_o4^P_1P~&F6 z1eZ9;R84)36bRo9IMWyy82bRwX!)js0pcU@C|W*}z!o2*V*B$Ud(n4T zMq!HdkWqrPBCW5xUL-GTRjxcllkJOgwex(3xV9qPv3I2GU$NDH^&(uQ>WDdJ0AmhI z!0L52^fl*sSFGElFAq)dZ#3KyiRn)Kv*R3}13nMbV@OOZ@6;-Sx1CEFO|qN*K;VTu zTR}tYPTlTW4T1XoDY|RuH^rMl3D#ainOgHZ4FD|Y#V2SJ{dlrUVp^qT_~EBJQP=93)`K2!s&yV7e~Bx|Rf1t@NkdiH@@WicVy2ONH+9 zha4lOw_seX<}hb1P7%f$Uf1lfEH(IQ(1r1>w@>zoTApg-@6dCfU)w*Q`;WH$1qIJy zfW3^gbf=vM7>|v7IU8mg_J{n2Ch}Zzx+z1)rK_0iv3iQOw}HaQdEQ0=Ifl=_&NX~H z*{Q;9d(&8t#h0z|Dt%5ww1-T9`dn!5jT=~_8!wNd{%ELOB>pt=Z1WE>(RTF^YfUbudKDxqiB@Rr>@qUB5pQc$VNQt&6UV#|`j;=ZkFW3T5y1`rsd-e7I$npOrobF_g*`A*w z<`l1;aq~t-cdUX`#E5IL4<@Gin(A>(xW7RngQ;cf>+THTDv9#@dSbm z!?27rC9e`YDEs?9`A#8b@Xys9tcJB6N+>HNdy{TBoukzd`vAMuw0eJ_$m?mt`UfG8 zOD~h`w-)357qwTzGo#eOXJ-x3hNUBIqwlcyzOu`%ldB+=H)kIdYKcqEth8R&`w?%h zKP!nYRour?b+7ThtiG8~za`D8L;Z6Z^fHC6zhR@+qbv(s=4hgFkcW}cMuWoEb?C;Z zD-V4~N6g4!ACMMi!o7N4a4K3k^%y~@rtgi>8z^N!r2qXBVja5bwA4?cn}p+kRs+{v z2TG6I)gerIJdSD=!{>Fbzyi^$a*J6Lb-Noq_~_Jt(Kq$OOK}6QFk7OHj;W8B*%>D8 zBQBY3&p*PPi{G9ENxx3~&%jN-W|Uf8LPt`GrUe?SC2zPc4Zpkn9jmbdjpnzMCjmh! z=pu!fvM%hrx?xw$hlmzL06xKD4+qfo=rqvN$amJ%|Q$vw2**Bx(j zYl9x@Z+ul21QaC((GSEchMw#9Lz1h2sW4;T*#*);r)U9d_>Tr<8*fHVAg{J^-q+)W zUP>B$3mbSe6e{P@ZxU<@lLEdiod(*WQY(%crX~byzNJ(j88^h@_@S<0_ag!vNP;>N{il^O%BW$C6jJ zgX(cjbv&dxO7ovFpwXvY*d~e0{H>Y4W~Hb{nkl`!_#C%h<@h&#Kd~!|$MB1?S%@>> zC!PQ?qTQgE;-i}V%%X^Dg|K~>#t~~FsQ&h2ha)`)Qm;$LBO z&jOL~&B6+XJc8W7y2viFU50u4Y}pd>#^gI+YR}2WM?Jbov{^VW-L zml6I|A=nS133(;A{VI9xjR+teQ-Eh=P(H|0`Nk7}cVML|mNg)OU;b<9>MsjD+FDDZ z=hLC4Ra3hE7iWJNlx6q5@xvG0(kZ1VA>ADch_pz`MYnW!DS|Z8AT2H3-5}lFCEeZd z-`D;9%@gyydtNxB&gh(+vG>|*9mnTrW`*<3Z%P6u?jFrX65n&+4Lx`N=>DJ!Wtd^w zjrre$l7HV!+VGp!w-W2DOTM7ZT>V2I3$$f8!x6buJWc@%(p2<1^GEn6ws3}(3%fly zZvM>QU$j`8h_57;5n34qb@V;foEMx9g_e(Q(1+pZ%jafnxnkS1?1ZK^tgOw1!?A4+ z{xUaBFz8}8g(uZ>w_Eclmr60?DuYJzW`!x^&0&nr6CE1$Z|napHdB04Pd6T9Y_(s| zu9Ok#`f|RqlEZ=aX1SAj>6ShV8aYK*x^i%C0>$1_U(zG973jHgomzjNEH)t+J`_o! zUk=XohO17I1Ld+zX?ze=Ksy8+PUUkqvY!i_9>x@VI+?P{fy3L?p(Mkb#GE0W=Eku- z0T)OlB92n`|2-V?y(e}*l9 zb9^0wlQVr5JL=c1j&t60{K8z1-}89^oIvgQx*pylCk|BYo|l;7Q4S;qRd|(eyMq+H z%+3#mLYXyV_`7i-$V17}yA4MMB5qOb0Kx!-K|FY7) zwxcUv5NC!NV15M+{Pmx?El@LB4II`krXe|7i7Cphm&xTcz6^DrJ70A{h>0O;uT85o z8QBhhMGjEdQY|lCa;>rol~CRp8YgP{Al+f76A=AAyXqb(e+{~2a84BI1{JY&-lO`n za1vS~crZs|o>K7dkFMwRm-qLdlv}$jAVBiDTL=egEz?bC4|kwoER~V zFEfo_W6`|U5HQ)fgHbVf11(m>Dw~@%qN7u~Wf-;L-v`$JXLAfBQ!Vx2&HbyZ*siQ7 zSm8@S<2&@~=fF4gXqvuI$YxS6>}q1k;Lf>fSFId72B9f3O$nndbUys8b2JQ|RU4Qc z%X6(+5!I!R!)^m=f)KZ)nsfq!bS#YZD|jmK`VoKoJBS689*~~L1KxNG0fg36;mOD6 znAhPX&%~xmTH<#6IN`FIfYz`6f6@ywRmXFBi2vPXtPva-HtN&5aFKzpI%N-m)o7S; z2%bd;At6#X3ejMA$oY!}I$ucAFdPI~Qk4~=<-`^wiv4;uXOgW_8&#kv;2?L*?YLp_ z+{Xz^_ueVEP_+Q^;c((P7uoOUiKrLMEboQgxgh)nYWl286&hul3^P?2kYOF+l&ez; zK?SS3Zkhe;z77pej#An@q^vNjIhBItcN4Gvx3tp(jRORntfd)QuJ;q*dBA$X_$=#9 zA0kUHJc|N+FJmHnHK8Il)RG8nXd#y4LR|GP+l4hpUT4Y1dNH!iyPD*au?>;TBrDn+ z_3B3G^oy2QNCrkk#w5Q?)vZsvUY>;5I;9H;@K$Q)osm&4)~^zg1q<`WH-9vnSxnmz$E99Bhv2+3eX9kpZpS6T9Y^0RDIanceQ7svf)E(9bcbY|6bn)iA$@%Zn}1+W!* znfV`}PZa|z(Va~jYau@9u>h1D%fW)6)4Sz7+_+jkd$p1b>KxYxUC>-E{$e>#^faHN z&z9n~6f1A}A=u=U+?yzYQX@FdL!u-Z6eh*SBX)ZY9_pPT)Pn9c5Iul5vOp!<+bDNER!>%tAcTcc{(t^wlP( zDbOGxKBMfEI6C#?0z$X*Xt_c>JF3 z%c*=(imjwod`e1U*x`wi+NIr(^N9H;4|L%oxD=D4bRIL?Lt|0;w~10KWS zK6`KNN7Qr_J-XD_g~AO}8wrb+&WELCH7k6S0@%TyN)WnylS=BJ4aX_F3-WOb@>PAq zZMC8sPq^ISu}3dDHz#Wi{W{2a;4?%9Dx5lNv)EyC%SAHr{0Cpzc%LsLO#VMpZ0kH; z{Q2J&KxR1DV|ydOCA#<-{%-~tPg{$ij3O2q4b}6Le-K^~+Dv#vqUUPuq2>KO(|F9W zJ#zDB4q&cefq_k8!PDE*91##Gxhco9L{3+ zUj1xS6)6zF66(8ga@%_%%c9C@gHo)tuJteCE1~^wnIVya5B#f5k%;kTfVPwSu|vD0 zgHbFcs_Kmz}5-iK=m$h{EOcH<sHy%z@Q8*Z0S!D6= z&*|xt(OZ0`ps=l>66cR*WkB4*mbSQ5Avbm8Z$F&}x<)CPqd&f@%uTg%nP6@^Zo|Xd zfER5`<_Id@V!?M{aB9yHXkdI4nmCwW zaMDR05@nccCJ&mw(iATV{$Cx*IoH10U+nf?yXrK`L|axQY)?VTCnA#sKsKd zChD?$z<@)1jpA>u|Lv>nQ(RStX;3}to#wZY@Beb@DrX5=&?J?=FYXV|jQC_untgUR zVCYw5*;@JR)S1_sr|<+^q%SOGd!Yxh^?C@m zk+%w(J>L9Gl1?$I#*GuWBAUDl`YSBdLz$sE6a4D09Vqv26ui97h;hc?PNVeOMAPYW zPaPyv{S4*o)-GLc$kb`=S(wTy+J>_uCzls;u2#~mavo+4ML{j1C;uqSz z75^fW-N}5@sku>Qhm{dpA*_B5!&-MpG`<^X#~dmednIydoE$xxfTYyAQ=`5|t`we< zR*=@P45!I_E!oD5(KbjC{s3o@T5^A1iT^X{liPD8!~ZR7%%T(zL7Ajda36YP^%m=# zjOS)Ph2(l5!1GxgBZ#F%Z3{KCd(!~K1AM6d3Hu12l<6|rc zHH~fx{N>q1rjr6(yePbDK1a(FWp*jf)ia9YZ6#+$UL~v(_MbQy0yK_^ny22GhqezM zyL%LAUk5)u-pp>T`gtE)V@s3g(>ReqtY=EU+O7WuB6Uzet%7En9c6_E6O0TAnvQ6I zZ~~)g9#qfs`8+oEbHkiT?=$Ug5`^5!Ws?B-49v#@dX3tRIM{)!3-s%>=aPjz;=q5n zy0IY%dYXVEL~T-0S52vn`l8qjSdRzhg|U4>TNUEzu|3amKrWe%(IofEJ^w8^+H28n zit(0?B+TyZoOQ7GiT>@xU8QIfoNg9(IdT@u2g9NWNSreA=21E5?GLAwEE(P&Oj2?a z5Zi`6Iwe55l%EtRtPzLBoZPP$s!xYSPaA%5eM&&njrcL{GihRj3 zj%kkW)3dW#V1R{*hk$c!4T#z|0rwA(*_!3%fpHCZD8U2~bXvg}_5Y7Kp&g+s@1=J6 z;4F+K00ik0xudwz1RVe_!g4@vtYLH6M&yy<@sH++rJL}r`^(-PaZ$lgGx}y47M2@v0>&O+ zuiawi^V))ayCNb@t=wjjN7I{WKF!9Q2{U*H7Ecf5E-T5fJV1<_$WwxG;9x#dcVYBUU|7rsYbVUY zdk<_k|B3uz)EK~1X@0nb);k~cfqA3bdKm9D@O}3T6}wvn;k@H|B{ddtygo_==h`^E zF5xQ0R@lo1*`)e)G&WU+ZJRTil(hyK0lTp+Q64=@O568Z6O^ElQSaL zbTjXTGlfF5Pf+ztnrSdJbk}KogMafyi{9rdNE))K*agr}ryjLwLNX{`{87KL(#(Hq zvMo$bA4$$bjSNxIOaq z2c>&p@+VPDK)e0cYxEl!mWQrx&v*QKjSK)7b?E<>14mS@^rghfx5@Yvi*0T1xjOJ$C(iMQ@*{?$04R8*7hK8JPK(n`CmMZs&nwA0CB}LGoA)YCEhkPON*;fj-`N4a~bGmd_ zqheR8=K+i$FeaA)?qrx_ zMfBkuA2ulm3xRz#gAH!UZ+aGB`x*4t@xC!OH3;f8dI=bjpC}cmfe>}d@*e5Ck`c${~eCD%XU)Unh$?f8$#zLF3d(-UvGXY;a~akGvR ztu%k-CJYEO5e68hu1(}C1B_mu@p*|5kOqnaa@>BxE%7@*Ig^%_HlEAQ%HorH0F%hR z&~sxWBQQnp3&o6sv3sLqV>j;kTokHn0FJe(S@@h8FgSo@h_k8VoTFQci{fp%2X!w} zFOy(dDE3qnyjUC^qM4vx?-#{j=?Cs;=TqOaWQ?Z~p86fviyZK!^+@+4uJ|3GHQqP; z(px*q?*?ujL#}T+*eWGNdTs!p_Aq~wT(_x$E;}~gQtzCXXxvH)r_MdaP_<=rc*0Kt{Nc_R19n*xm?>riivNE zHtN$9=3Hce6p~$tP)SVi6Ii8QH66oi6kUgsOLz9OYM(o?B%Me9R24eLIg2I3(P2q6 z)qk+q-CJe#{oymYCE<(^0io~vR=c)5+8r$Q^a~rlN$TKSHKstprFdv?aO3)9eW(P$ z10(@`1&kMgSjZN*v??s7S-c-E)Gc|E9Aa3gsUg4{4Fm`<%Mw5*(*jrqkk4|s9BP4; z9R^c_Gn+1^08TC=AiNklWdkl{Bj5`L2sdQk)s7$I&0Zd$GWhHBbf*h22>%~8??A@X z-}Ihd#};#ll^KezX|nZyyFElul?Ljyph{PSSuXR1ua(Jb z@I!+WX$=R#@ET4IH}l>6LPEcpyLHA51_Ow5&f7C(<2kG=1Mb96sDJ&`AtLl}OnEI6AjG*~u>_fK?&vfI29V-B-^ zd?e90&FJNhEqP#+FYqIpZhuT$nR#P2R$_EpGkH9>lbiPuNUeau%?QjThf1~v5)oR# zP;Q8GSf~RKcHy?|+n&xXri+aMeG$OO)k<^*1&@TDj@J0%~_)>U&XR^O;lQ#ZqBv zEtz7|mShT5Jbw3oMlSU$pNvTrq0a=MweIkcx~@0(mNwU-XA8seD_qt_K8;(>raYuH zSy8NPb|mKZvo_`H54VP+b_iD&; zkbS$=-!9+1u>NuDZIR!mF}=$LAqRAp>_n)lu@fLrlmVuw%)GCF0gz}JGfu=$)!G?) zKdA0v0ExMXAl{_zpSn0LZ{eE)hhNq8k2QBb8V72(0aw|&5-o4$BY>~Zj`?ro@m<9~ z1c4{WSk%P+Vr!0)QGMOlu5a87XkPiJ(2cTn*1SAletJ(uq_)91Dd;Si{HY?Z?ozb$RMb|FJ=Bv_=w4>d%1s^X zQOv5v2iLK_Zu3@u=*KdZlI~R#)w?;hrN?*S-$sJ&sGUXVovXal^OXiKlvH49JfIXa zPose#ULPL2$XN=P%_*m#j6FNP%U>Q%U)5cFa#Ff-+DEWtzcG~m_>_))enHLp625=7 zB4K^)4Ho3Uq=M76z!DLsH7-)2Emip6QK%B9JFn$OzgMk5P6>aM7zF$);|OCxtWf!dH>6#eCh5sQF1T3#d`;$dg*I^-eCZ=#Py3MKW^t*1Hnj@M_T zP7i4|G$iLeUAi5DBrogRZx%~eTXsD-Ze2bD8wG$TMS9AL+>Ku%tmHVYyKdSUL>X-3 zPG$Bv5K68VrP#o+<=l|WAyqfzc?brJZMpq<`>R(xqD?*|L+Mpqg=tx5m-uVWlI-b= zFT(w4)y@Qd3hp}_9Nmq`RkJ&p@sB_0KDXgp14QEi`(c-0Hw5ud$2Z-k}T=r|Ei$s5;zeukJ9GbBxZoz&Lg#TZPg5%K&A3;Zds9UYUNy-s<@2If zkVf+2Z=xYUyv4UKJ?l4V{d#~gbPuY9y`nX&9vgP@d^WBYt4VDbL7S>}+e7dYZs<)h z3h{Q4by1E@)|6aTr>c%XzmCvD!O3}{ZBaVVpKV#B^nSmpn#Mal?%;x!fB#G6ml+;47W|H|8vUDH!bx52k=9HI+^NlHEjQw*%&% zPL)wFF^i8IC%&nqF5PpbTb~iFYTsx!o$_76Eu|DF@cy{X%Qid@o4C;4tgV$9b_s=; zH@#8NM60zTJG7clj|glXX}pRjns~jG`Z)r^MMXmF zA11<)kA1>HO;0X}51KLHqyk&gp&xh)gD2~>p>CGW&m(L+lfkuX-c}i@#eXLD(ruV6 zv_?YlETu#6?QNQf6cvvlgJ=$^;zEFlZ?~~e_X#E4$)($4MGUkYctQb2MdW?T+y&tMg6YTmzA2oT*3r>~QV?FuLI(Zv-#DR8hmIsxEAk!?SUw}eas(c} ziS3m+x_;4?VXqPQtoi_(!L#EN>Z(9TNrM*uiOk*GMhlatgTwg#L5O#l#n#+!O<1cU zu;6>5$F7#=K|6tKm>ZlLu8l9AKxzfxt4&empb2)?&z$<)6-!2`c2h_LnyfE;tZ&OZxlj@4E*T{T;0AA$1mLnNgNo=* zdzTagrGxcP$958gLV-SK&3-L;?~(H8;d;6LYRn0R1ft<7H$bu?5S%w^HgZQ#kZnOf z(?GSJcUq#v0Z$K?KAy;IZvP{n{W`v)D5-&U;ZsSQt`$|aBKEGXHN3#3%YAv zWH=mZnz8GGcDJ>L8_X|1OEkTt0c*P*A$=uLId3*-XKN_N8-gyDD|E6-ABDqU#?zZK zX^q!T;O=}`^9n@|%!obs5;LWSAS2~ghM3mG_vU5uCt;taud-QY1Df*k7A$6svGhLY zPUWX1VHYMMVh%$Rj+^TxlYNwX!hhWGcC0=5O{|yhP*g2eDSk~l0aTy~DEJw`68*J_ z!J}-3`Mc})k(q8MtJvT4M%~(qU!l)OG~ABsiMY_tTZ?CQa3(V5_8ti&^&dtFyhDT5 zEj2~ZKKo~F{%KoSlr%pknyXDdW%o}+tn7Qeo<|pV?#Tg8f~`B_{ah7W`O_o4WUY8Z z7e0O#m-T}vZBJGK+^l~xy*-HXUK87=bhYtkZ5ukh0{|~0-%(8Rcc^62r|5_ z@zA*9m~T!Qe)B4~6>B@MS{P@*&qb~LbvIHWk6{1R>*LkiXmXhz7KeqEob0N%gKW+i znDicB8&xW;(ce-yd{|hOnnR&lb6F4D_SCMSD=?>8L8cScUgRX6z+Cxda{S2!b%zZu zZXuV}8-nRI#XYZ~75fJh@^rn94ND9G489%!#VVUW02Fdq3;~SgL*cUUR)R3e1J>Nv z&c+vGajfMt!#H7&iZeCo7$tB{8%(z_e0o#TU^(ojbGOd6HHHBJy>A%q$}0&4&%~Z? z;h%zU{8tAT)|c2LNXT(bAH3f{ya!LEMGqtRX+kO$MP3^nlAGdNyhlcAa7IXHUOK92 zn?IvS7qb;SMk{K%leqZi!Slxgelc{!;KRY9?8I|IWM3Fs7lum)%?N<8{sjXjfIu0* zssU(TQ&4cjutY*n_h$g*odTnwtgHkV48VQ{3d!o1TemG3_+pS}bbpY3-BqD>f=PUC z0^ep4|IpTWKXOR+fk0B5ABIaNJs|n4gnP>;PSv1!rv`9XQQScqVu>M}fC2j+<3)-? zAaqL}7$JZnS>-$nLK_XWdPRPte+G;l}oy4iGqr17*xLGDRq-0LnlvO* zM^OK|qFatnYB6%`2ykKBmAVS^qBRhzK}!yEqYaC_JsawU1Q zRNh~PUCNT4%&@YCD+W0lu@tI5&!l!{WjNc!bv$ZHZdzAh+8P3bM45F~5h*H4Z(Kzm z!g8Xv-wl)XUd%t<4L7j5M0Bd=wL@(0E@grx;_ygGdo4w z8TeM`)n+b?Qv=T}RPP|+;U_h!_4WC_a1waW%11=0XnVACj^p+V3P!9)f`%p|L^k?7 zOTR|0E!i;ScP0v}1BFdS4~+>67kg#dS-&HKf1ePi8PcCF7sm@|U8%B~iBpf=X?dY%M zkBbRua>ddujnHh%Fb>4d6wDtlWPNZB3~h{R(m!za@Ag>=nKd!}kfgWe-5hHd`uN4m zYm}r9jYw7=4&i6?hvQ`aZQxYdo(iK~_Vg3s%Bqj>+OXT-z$m@Z25N1go1M~YoeQT3 z!3=pM!V3R9xJh(~&+QH!uz_H;Yar(J>{*id z=fY0o6}V}uTZig7iy56@n5!?sGTwo$HIG+>%tI-g{ZwG#dQ&3~=AC7Fcb}b;hg!$e z*ZrRh#0qA6zOeX1wi25JfggH>oC9OXim_#} z+~-e&Eh2E)u};Y^OZcf4LD;ytV@pffAl`Qeyui`<0eGP5_KF)|TIV8XSlUTJXgj7! z;jgx!Lj3Qp0mrk)!-1zkZ)y%!5xEg+tr9E-o2vDjJ>8^O1>WCA*;Jp521H}JT4AxW zh$6Pq(9GfNs5dRXwd|tttv@w~!2bi9bWH0^?;&YKdY{T;bHkdB{IK1v@6xw+YPBxJ>esRS$R2lxlH zxT6h8yHPJuH!D`tMrUg5{132!NUx)RYU=rnK!Wj=ZU+Dwj=b)Rco&ia9}-p^_K+}D z^QG#}h1%j;tT8Zwm=29K|J%e&j&C?5aM$MYS#dyh}w z16iCFWk(^ZjF3hUP?f;-1rNA;B{E0ZEEDR#oCD&w86eL8cjI;&2Df-Q9X8~Kwo*$b z?|>woGbwG=_EsN$5#h$MGnb2-yQs2>rZ>~8)~3!1pc3x#ihZB~T0j z8yf~^Td@f${w^xy`3UMtKGv>jx0HyKqP2KHMt;@u>fp-&M&5w{^ zES`9`BVgAr865&iII%e+nmx@bPR!>y*YYr~hi2XIXlQ0*wRlmTK*OD-0Fuj}Q}XU@ z-7`I#g^Q{ht?oD-Kyc1PPH#iGPs%HCh@OaSD`;v?8H6|GDJY?U(>r^CGe#MO-F~U4 zw;Zv1r)}eJg219ED(R=yVxw(g&JC=}=!i$9YxwAs zk#8dyx$bJ}+bldW!MX9<&~KOqNi>9(y+zkZ#XC(8>m{FcVs>36~I`QT#%PWZuZNErWjt^5hzKLN_g`@QIU z-ske5D-GtT;6fkgr$v6*#oVbaOJx-O1SW>snzJTir^lcetwLucT^HVVd1Fplj0p0L z&b-lNa^YW@UUzoRn*fI8lh()#EhQ#Ybw9xHYx%3|{k2TB;Pkm*lo$|6x5q}Jk)IJV zCBuIl_Vaf)6&$|qP8Og3S=`8ejkQoYIW&tP!{Iw0a2Gc_G^nG|bMu4p9Rrg}%TV7- zn~wLVJb8j@WdWF5c8bc`^o|ojL7(^cdgh#-~hs@^&3AnA* z7jU;w(`g_~3W)hfG@zT;QS$Uj_bM5#Bej4}!$JhreF;lY#6KIm^~uUPp9{ZQiq}hjkor@}sigfhEnF!GL3oM6htOIlys0zBtqf`g(@Ehh zf~=9g7Q!Q)D;7#?V)b}znW?8LM$-q~(>D0fNHNSK7Cw`mJKsPY#T`ohg zu;&08$fyQ2ior1wOnQ^)FIL>wcjc!m*fLRK#aXzmoe#$y2kA4^?i`_yHj{4`Mod>{ z-t-6|Fg_tjceOAkVf}e{M7Ki&l}$18;|p+Jd1qWPpRC*z4k-m$36*5b-JB883Gp8i z)HVFKpa*J8p>EMIwKVs&0mm=ESnZ_kwrANQk6eoMF(aQbKmWexVP?OFME|*>4*uxt5no5On%-$<6_mk_vGO(QWB%53a>Wso1ZOEPzj2TMgxva6{lyiV z{&_N(-7L&kbu?)UetSH6Dm5{JfqAHi0ye*Gh)zbiyu}N2KrAIwZk4P%9u=#S=(Cb- z{iqNn?eqY+2XA;!`h!c9V=|F_W>0V?$R1CyYDxe2M3{gG7P*;6_VhexLn4{Bdzycq zB;lj96M$LR1IMko_P@KM7SqT3KQ&@=0ILm*Z8R@m!h>iLuy(H5Ybg<=x^0pIjRJsg z!t#y)RIfE#9vnkq30Gi}3mnYsAT1H(18U6ye;pf8DF7fnpkx4pImj{G8QTQG0U!hO z8BjU^TeK_S;j<@M&^joBW|0HPX&@UTOsO`C53_h#0;i{})pY?8UAkir31@y+FnX#{ z(hXabg_id0Oq>$CLKQf#-6y91ld*bhSUTr;RfqA5?yqiQ*Nj};s5<(16Eg5insJTf z@Iipj_3Y`9x4M!mv{RCtsDbXi=fejwtLb?u8F)uM{SM5bZ0tw zz-TW*#M6YbO4> z3EJ$i8vt`uf(%rU5(VypEtt{+BXnoGKSmHpNC6J};!_ilLkfeL3Le(_0c%?Rz{#|Z zM;PEHM8h^IfQf*mva(suumPs>w}^;aaZ6BEGeN6E0d543groM9;F7-t!x@0*qyTVrUYn&ZA7XzTEQKAw z1VWa0w$e0nHS?>KFl6wX&K4QpgZ(}6QkWO9FMw(OWwx@pfj(TD^piGX|2;LkXE_&O zb|ZR@u1SFPorL<}tMRL?O#_&v`1BQ--`BwDr;ut_#VbwK7_6>_EWT(lAimfq>QQ7R zC1o0JrjluT#3j4_RL>vC zXlNwB0#f;w8JU<=fRy4CByGL{0d{~%AFNZN4&xD9f=I~{kYxuWL&Bo%fC-FHY!(Cy z{Fg#UAja=`T?+E^PQeXh&@565iimKjz5$_u1ev3GM#jdfccdWvj9}&W5SY>4fD+4o z&}EvQqGdmCUt#XRe!!%L0fG3Lih%d5(yX(0Qh!;?+T*8s&q>LhYh$U6!4#Xv1MjRY zB8F+9+syJJL-h^4q-s^4N~_!~R*mDDBdAq=H{r$?T}ihW3l|USN%==~`vunv`x26F ze-*8+=4p1fOc4k-_N#-385G-fE*5g-gHN?eZ*K?U$`8n|t~YZ+8k%cg_8!?t<~w5P z0n;|j#tZueZUKl33IM@m;PW#Z{Vf@00!b5a3I@^x(5*T295&zO+BATF}-ES+fu)!;FadB8~Y(-d`UhDF5i`?_>o1mbe@87@2)OmmS z5Gb33akLJCSKIV#s~Ltt?At)au!u*bBJKCuIljIY$7efQCc(t%K3QZCZ?_fMW})Nk z{xTi?CfDYtv&p4lUhj1xjw_0+htPSgsZ|R3KK-XL)kd5e49SAmYuWJ=a!a?JWmsB? z5H>map1eYWfu*C#;nC=cow>bb|9^fz-3h$w5po{j>)&|$zoz&&jr;rSS8Tu6x>)DW z9^q+pS$3w2OWKk#UL0h&-5@~TX<6;kmo(q9kgKW?WcNk>#h8zoe*6T`@gR1P4p7r? zlonr+zUZ9H{tY_b(-Jy<5jxs6mLp_lR5Pj1p^H7yUa9{U_m;ZS3v^7rSii$#cyeK# zdukdweQrbdf*<3fk6KeBU))p31K@b(EAQzZqZs3hk^gyvoZ^m&X8?wp6xJV?Id5A< zo00r@lb7;nom7m$#C_`-K6MtegtK2@@$NHf1bjvsU_6_ZE%P;m6>>#H=Tlibbg{6) z!*%OW5qXVl613NzfyZi=3ZAtG#fB zW`|V3OXK_hPHyC1=1dwa)NNTJU2r;Dq5xsuW3(?`d<7}Eg7dJL2Vmx|wpl*3toUD0 zqt@L1a!cCx?@>EHfN;!!i)?49>AqzfL=UexUVe$fh#IxHa75o#(Qm*R#?id3Y5cds zdNHEZ&XX65`7EL#>|K)}MRdgaL#L?Q)&W(bs~qzP)yagTcE_~vU;KrjKgD3YM-;BjfG6W)0U3%Z zK#=S&H6=|JsGq@@)j+4@>BU;K+l=#D|N3M*0&=rY~{ud9vW*#M{k~lo z^4~@{cSXL6e4{rtmEVO+byFx!M`((>F;hoAKcut=OTF->+r}I@D>fI6!%_D$NAXoF zh!uUhj|QFUz-02Oc7P_@0=arcmxIoS3(^3vzcW|G2mz6l89)IcbTOd}f#pUIfaW1! z83AB0Hej)RuCvdsK&Ebm+B9{2N5h9TbHF>&Jw6@{lDYXUAn*eqs~J!)*gdap!4{wZ zaLNGb7Is#vkZX8zx>4KEFy7+h1JDVb;9tWsK?)w2Ku{;$a8x%yZowstIm;9+ZVlud zNF2_7qrl2=*h(KaKi-{)FUSGaJP14Uu3^oll*+sD9y#P>>nSc*Ud zB`M6559SOEAZQZkN4ad4lEI&pH8gra7hi+etH=dVMF2(}Y}36x88}$2-^4Lo-R}Ci zF0A^Z&}5Sn8=psHAMgBC4m~1oyU>1VJFb2E57YpK6i)c7x!7e5;y%_lJNWU`!{o$@ zyNzzwp(J02t1g5LFFN3U))MF3qZY~bxkM6T+f<>1Jxi5ip52-@`8o|1e=D$1kE;2s z=z5Na(UU`>$vZa)4BAR}m^B{A)5X@C&BuED+j2YN4JVE8e4pm`1>~8E-B0fte$n{C zBJy@dGf}`wg{p-@Si(y(6AbW$oy?mcc>e8Sp+*qVZPd0sAps zg`yQ>3gZ3)LiW+}^>`05qBGP4kcmUJnI{4Kg zEp)%GGj=*qiG5`Z#=ym24kI4Icv0aluPECl4y`P1zE~)^0jAOR`EGq{qY?1JxuDJ* zlu9nXj0opd)n3O2&BCT5|DvOg#FmM2_Dr3ECHH2Y%#|himF4}lRN24+iK_RI17|^= zq@sa4J3Bj;y)!WCl&QX+F|gKg=Hz8>K?@9s3LZ*4g}hKvPDl);l37(-aN*-#ieoxo#7!7slt>yU2t z+Vpz&X{~3nVf?6<-|4usswWwvdMzco?|G1e2|Te+T1|7VLT|mBSPAK5%kWPh@ee3Y z+N%fsEG&sMh4>_UUy!SCstQ5-rBuHImOAlY=$yTS1B?ewDqNq;#0;GG?XNappUyq2 zvONa8@`a{T>rWUHxP|zMbTd(dzxcP^fS#cBw4^I^zD@~_r-tnwJ|`QS;}Do0IEktu4%h?q-7#pc$Tg5#^Od5% zObLBs`~^5mM`*|;<=rVk)M!6Ti65DkjKBQr$C>$kd&TbFA-uP$i;^MT(lTxOg6yZc zJY37g6cm=<4zfvLA1%nNgwd1TiPf0 z1o+*G>~;`DcT!g`1Ji&?RZhijsUPDYxZ{DW2y^jA*rC1YA4^+V*uLX9Q`*T$oAc+*V_W+%zcGNrA8&vtP z6OX6MrahhexX)MJcD$b5tIH7totbX_Nd%TStk$9f8>iH>Rp2rw`22Vb<}nfa<+qeiYPrc6 z{Q=yoo?34QUf))bnCd<9!aXU%W7dl!(&JT%0BSkbEKW zwP79Nda@=7#u4v9tw5`MxP$dRoGD}PBl?R@(VU~?p?Xv+(%#``o`27{Q*#~kOmhyC zWj?9laW7aLTUMD4ZXl!}+>{^0V`>Tpeh)=V&A$!huN}PEW4s}lBsSCj z?nevs&~!DXw=)|J|Kpc0Gu&pr{hVGHc{Q(F2dChghfZ|W<)1ep5<-c+lfL7axDY^y zL6!p0%68D zN!_pI1CNl}%7&iE+4;Khj7J~@uR`c6jm5qAVv+>?E4Ohnux0s_+sQ{%m z{-?;?jpV-7t?lkUaixL#bwuLzafoYU0CpJTg28WnYH%?ziw)9?bs;g@4Lw2*w9EFX zB~1ZNv*lNFU2Czi$Y=9!*N|MTv0^OptXdYC_2_g-Jl;XirpE-HINk-mbC80AP3b_k zxb!vtJ0V+dfgAkXbwxui5>g!xK4&%O^OB`B9aZ2bzErL4>lZspZq!>1G|VQ+KOGxjl5kQkx0XhWA)yCAw5i6%KIch2KAf__c`E zo;=>O@Rgzeajt(L1TRh*>8yJ>YHU8WDX3vB{KA6?kOa zTazsIJVAmqA2o%P$;N*>P?0Wo;>n`(l~T=HfUEXK-J^T^@y@3RfeG$oVAOUv{0dBE zkmmC!z0ns7cZvy*`z|nQ6MW(Kp1YcpsWmCXN6t~aHdEFQnwo15Q%TrYqCa_uzwbNJ6aUse8Q)3ovN-N8 zC_S;VqUvGRdm)o2i0%t=??BZ{;0*na^D=^5`I-7y@rv=0lhg*buE@a5pka_qQ2WqW zc$rg`@np;=&j!wKi9X5H+?*(W*+_=-NbIH3H(LF*i;T+ekw5PbJ4h7IymcAEE? z%2RmKXhwO3um@!XUkFnyT<*+>^W#?T62-OJq7xQ)I7kYBU4b~J!fnB{)4>xTRl<~#Bq<9i{o6Bm=%IaZntVG^hgwAh(Wm@|5# zMpW10hsS}JQ0+kGlX{2mTm5L2IOd8TJ{7*nA$rJ<-P%gK;dXZN$Hl8*IwtOYUwF!^ zrwd|+`RcCSwYj8teB_xmC>ux(|wsW&b6ELE|i(ivysV( z11{Yy>q(i*Ka*oavxlO}F8+?ym@jJ$FKdS?8eY{|Y&){my4^IO`{ZY2Xg!#VFbF!Q zk2xsfMmwFnv|QHrwwcbu1yI{1pKjSdjJYe_-gCoMcVA6o8;u033U zS2-~%jZ2>Es}$Ff1PIH**@F-2IV_F|c4y_@SSypZpI5~L@%F>v!T6h?YH_pyO%b&l zyr@H8Q|wBe^>iBC8Y@>{KhqZJ%;^6CLA6C+$(GXjtt}?V@j7-lgco>d8pgU7 z>+cOnLl&EWD|PTQ^@c-&u??EP~)WF4gT#3gPi|a zV4Q9aW+D7MX+@6w0=P2|fRVYD_g>IkG)T+`Ss-e9=Z!YEp*MXzXfI@f z7L^)4Q`M!uZS%7qJi9vUP3u+SpE&y?B^e*=CgM^7ZFJx;&b^ISYc` zX7VJ^&~5#Fmh$XK8sBbbl5yCS@(urI-)HAH_iw;npw@yOL|lp6qUeKVyhrGU?~miZ z9ybi}20{anpo%Xg)eR*CiJ}cTF$TLs`4X?*m(qG-9dUX5$T9vE6&u~f3LrA+>al_t zdXehNiC0&j-KVZ-YC}gGA6jo*UzTJWSY+o~RW0C4n)Jr!A0Qy2ptPij zG?LOODkvZbNJt~y-7PHwN+S&df|PW3NP|dAOLsS%`MclujB~y*zH`nqhJQTVu=m<) zuQm5v*SzL+6@1fdY8mlWUbGYq4N~~XAxf!Z^_;x>NL#DuqlidL{*)@0R*R!O*_q@oe1s){ds8Mq)U zDrYW;xkY`e(?Sv@cEU*8@2!WuCdNB%3+Xh{!pWmyrK-|7{ ztJ>mbt>dPe5BJNP@&b9`8n|K|dlai`Kba5f*11g1A1M?o46GjrQ5+mttpDO*oW9<_ zf#~PPn(bL6C{L{I@%DFfF0etUL~vP`m!zAt{moEj^E$YPfUT#CPw=);nAuRuq{8~x zm^pHGHZy-veVhMf<@eVEiC+)~WQ|;+zM=B!efgaXzoY`cF>IDwnN*Q7J!f>7MDT&X z?I($a&5v-DrwEbx^iTiqs{;Yy@E8vQ?<17WoF%o;@MEtYn&j|VlVz7lSI;RYpGb~Q z5{rD2DY~0v%-C9Io}%mF9qdls?+}zf=6uT*L)jy%o!A)FuP~&gg#sGhGF&n%s~cV7 zU)k$y<8*QqxzJr)iVmnhQ)Y_7_Nf>3nG@}IQXls=JAH3bemC8CiU)DDHjFLTKk0Q3 zo4Pe=;%?5=RsOOjt`V8hzN09;=(N@D6~*wEU3Y%|@zi&Q%y+Y;24p_(Ts0My{^V2gn|rLiZA)Np4v*z5F}5>TR+tQ&FcltV4|E zV8Wtx=}n$OMl#f|Pq%3&ba1Jk=Qwm*F}YmH-IOOOn7Oi0FW3|w-Q5hk$x8c8ail3? zBxHI)VMU82F>!~4KVp2UW?|b<(iKcuAKZ9gu+H=QC?LJ0yxn6gf9^LX(!*IAsUAg#-lJl18P5FUz#dLoA z)4LG4o^t^&{jiy^+?#B4UyIQ{C$=jNTesH&UG&H{VXe4I0w!-S_gf*+}!Soor zs;jlFZ4lH{KS|JlYADn~?@>`{znvmT|5IJxEcrNG&3SBUGUB}*Zwj>tcgV7y(?azs zZc$O{hEd9#u*pLr37Y%#vUdlw+2-V&mV5NV?Kr=2(3}2wbh#oAIlHx+u62{c%5P7L zH|ULv_;)?N&#u+u2g~m~v-&0Fb1Of!oBVzwAR+m9$B%!4JUdV(dkUe$76qw-Y8Q_~ zA@Gl>1d50|yME{|7-0>Q|!$gr0bsr?Qn9V?@S z+Jp8AK?*wKIR-L+dA^vfRvBScUR`LDUGq3;8aajq_wy#{PRCfUwUK8}vRX77_p4|% z{Zx|Ha6Qgyrut#CRS^0>R@Bz7r^Ki;IAn;#$`D(*(}#X{dF4OJF)#PG&>R!`#B&)bq=}=el^W|#8?uw^)OXfu zBJHyQzqM+(jN!2;)n=dZIHvIQ^n|)VGT9t(pX!*zf*ktkX1OWj$>kTVq|g4(ja(2KDhR5pBhJ7 zrjd;?fcN;Zgb}B%doEc4+F3&PyXxwBE(=oD%d;;oM=Y*J#0RXbs@2u0PL2{r4(CDGXs(a$SNy* zP<0AW7@=t03^;Xa>I0blCoWDHriL)J31OWJF5dl4xC2F&)7*rmv%4* zzRS~qWI~mUCveSP%E6857*|oOcd(TM$A8auwENLIfv6)4!K`u zpkz~E!@={)BFXcrOF^CW+ⅇYjSkLBU3c(<{FPD1nQ=UKbYyvQ7PWs9bm9gL0m)I zq9=`rNHQE?;wl_~EC4w+lm+Dg@U^NtB+6GSd-&uDfp3!-K=30YBb67+MB%Zq#Djx_ z2;eI%pPOf7XJ^BcA?q1{n%&B>6Bqh+Rlmavi>{@s`6Jteds7sJVvx+oZ`V|pz5N$c z8*3>FA6uiDJNY~?6m2=P{^{c+)js!^jy>U-!z21jqNA%>FJvHkMUv#eF}){rT*0%` zT!vbyDcqsb8&tR*>Qd`^ zv|)0^&&L-Bn`>@+8)=iWGLk>}dR;+kv0Cc$459CJ%xNJQfI|6&Wd9s$%}_wysuUF$ z+9-ZKeqptJjaX4HW4q%{y7Rij%2{^`JMp7n+hS>VV{gi}v|2@&bYbmRv&jadHLkY> zpFASz#&}IWXX~I@?#+M6glNG!ta}ZZ>?+n+TvS&O}-%Z1lw%eA)D<< zmo91|>dhxhb(%SxT)~&KXo!sj-j*yihk9Xqe=bJ4TqVYi&#}p^x!+z(c`dPRHjEZF zM(5+QE>g3S%jN}qowB+b7mQ9q(fu*kh->XyM|2^k-chk{{`pkR|L$>Ws|Z@9P7|t- zurShu-0IyHcq)SyH6;}l6=H29KO{Oj+U0;<43y|4!^k->8$W-(3sTNwb#4_^Jz&rL z^5skR*n8rClUjS8iwN&9B3dZ#2Sk=dx}*&1=)>9IwwpeQ6|aZj4D+UqbW8-{z2NDo zB+e2Med&_ylh%@Z>bXy{J1Vbe*)H0We9er+vPYFi5syC&Uo5k>rO{Rt((n___s_U{ zNpQMPQF@XhvakL$Ysb6poM5u+(5jA4Te11w&3qeNi)zdnuL}OQ$Xe9zJqi5C$Vj9v zfSm9l0XPC9b@8$A>EQFy2V(44-h;;a1F26xQ3w+8^73kEYToCyB}!K@up&q6q+?3*EYc$-EN?huKVUbv7FlBm(5uPf(8g@6`p79Hc_2t>&a|sDf>)A$) z$wOCRBrhJw7Ofo}3kwU+x?>){tF~th3**faJ=tl&{aIT2O){MFTW029wSyVZQ-ZX- z^wa{tW+)l#0=`OOJAv^C5DW-jWBNPad}K&x%X7sthc%ZNEZQ=UAA&-nVnrT9jVQ=w;?J?tKV)u_B<$9_C~eDFpG zA@SLN|Lo6kZ|>d=k`7;p?ky~0c2!CCc-{SEaUZ;3l|15!S#8VpB;P6%dD=D1+8(-= zo?COh0|`LhiFj+VgDH}d}8W4U(mbnaIv zG9^zWZ3sFN*Nz)Z)H6waHN-lejw$i^Ikz4&8ay%^KYOW>t) zSo(|4nEAO;Max$OV7rX%#UrtkpXB6qXjx=}(JI*}ciA-Z!i{I(H)2xcch?`Xo8gyo z*xsU|*`efGzcJNnZzUL-8hmYFnuF|+;StC&Zv9%V9J>8Z)NkyMYVBs-X?id5Tk8Vr z(Zg2y%>Bc!&+^7x6FEm&_j=-m;|4fd8YqmeaWETyi+89evWWZNn4_u_9)c*XDVRqt7Vo)cq47=yr-nYL|+;$lofVTxPj_~@$*``3#dRph0~Hy_Uope|flQNOQo^e=3h{cCWj%qy-l#ejlpL0e2#}C9fg$3h5KG#k|XMZ;Z=xrCoGAp#*2O7BgHUot?&->fcUD3Lm*8 z(@%A#UdeXQ`6|c=?qP4O2CK%hh4-%)5{lz~{8hlFyUwz?+()&TT=WjcD25zkW?!r3 z!>%KImOMNT0|71;XU_gnV~@%HwroRAv#D1&S}(-_2f@Z>VVRY(%_6!$7zr|G-IaLr zkGiP1`Pge)PxlysV_NAdpg%caR9BYV6x#LMqMuX2b08*QpPUA8p zZ0KG3AF$mXm~;DGqNp@mZu~eWf8v#SG65|P=q~~J%KW78F?f;=FCH&|aWYIG;O9m~ z>8$hHhh$+Lzq8b)Ge_U!4Y}-B(Bugcp^3ea!;~n^4Qf&df5m7kb1MmFZ5{8Wi=7ao zu9~&&<_y*7ax(MptEtEp8tW5!KurC}6o++mv94aHx~hC1x=smB0M>OAJz(PshSPH{ z7dBhCZ-~BWZ%D_6ao;?WnG5MPI{8;PR9dhWzs@u}kumt`a`nNh)p6BThuRb47h0z8 zP<%6|H6$2cT*!&u+wZ&m)>Xh&MaA8y*7sQmQQKgfpwo)v*co*zWzEmtiF+R=o<(=0 ziklTVu$C`jQ9sxHf?#;gSS<2hIA!DdhIif=ednuuu{s2?n$n^E+>td-a=6j@D)W;c z|4*==00RM;I$EF~(37hS&IVFHUU^uG$}1 zz6qmEki9E<@q+a&YfB*oCYPDr4Mg4AIY*rtd(2sFhHqit^#u8qke28Dil+Vy=1%E2 zMs%|oKMK3jjk^+KSp>K{*BO= zCOf0he0{ntO27FtYi#6ZpOVwwjF+9sUq1GD@G+wZ|EU*Jpy%|Av6AGLTmA2){q9ag z9ZEHuH&ZyV(>grO7|hu`wf(`G{1RnixAt<`;#9yeY5RcMGk7uNbx~pp5F*0AqEt(#Nv z!-rLT?;i=6F)Ngt9lqD~`8gSRB9j;-TbTX)SD&Av8BpW+sxWM?;`7w3;IQ)M+J!+; zWoZvz{3ZmL-8W-ob+Nd|9>0(PHxfrvzT&{Z!2Omk-KJsSlv0Bs=8I6_>`SISnmR`8 zkn`d^%amHOb)~28^1Q%Wc0GFJu&rg0kxAQ5Up*`0%szsG;y?3K(7~M+0=mhlrTKmy zMwx31jYrcoaD5=+(0+#EE~U;gUf-_nN}#z=!##xWbYmo8ioVzmqKhx8Q&9`%!}{@~ zVK$>jrWY^YN?;s?k}d4X%m^)7Fk#M}Z`HKcpR*qICd?gO=;U=TwyBZJEQc3b(zHB`Xv}qCjTB~8t~(Eij*g&GeDr#G%g%HLC;MpgR;JbQ=7yo_ z*(ai_Tqj@4eK9s|Gq{)F-fPC^SjVeAa;H}($GlTBwdQv1BNWo9cC!}i6PNwN4OtTS zHdMVBje0%ZsxEHCFV#cd{$o8!tKccF*wY)>ltzL{Hi7>p6`&wtyJmnqHX$^b9oxRi zXh=6mXtDJT?q{JRJ632Rh2ajx|F+<7)NGdikz z^ANU}mD1mQJn(0a=o<5IU^SRv)+9A`NAuXg}VuEGlhvTZ@V) zGgmic%JV=YuT9;3SybMwzVxfG$o7f;Bk`*C0W%KOaRL`b2;WcXAbjJknNBDn3(tsW zrZ`oFJH)XOo%2&)o=a-#uB91xm%9eOe)Gnsw5$=~Nc|NG)uI;ga%M?hT0Dq9(Q_`7)M`<8MN0P)ks<|okvTIY**F{H6`PX**# zP?+*BC>2*M)APys)5$A!*4w+Wh^?jNS|?_xj)}Ed(v$zDEiha8iDFs>g%4QnD|_L6 zND1Ixpr*#NCmJv(FLhS3JO{>u@PBtBh^6enrT0Xz7tY#nEf;3~cAAz2giN0=l9m$h82_)%NP7_U{BM+?S_;pj=O_}PlIiAR0Y+-bwli%J8Ite*8IPwaaV zKb!kvl)50p&PU`F0(bO5eoyh}sA-zq54V;3uiEG`hn%Ka`?RGq^wjuhMm=!o@QK30 zoIjDi$fOi@Ccrk&m;R+-!CSJg$XA2KVlkITEStxqJLGLj?RG{ov2K zP4GB&e#qIfiBh)x(ZZs>PG2VBKaHvn4muC&w;RI!UvtO=M*g7V+4c zR_|CFW;hOSpH0*$2|S%bc`>K}mNQ~lUlB4~E_?cb#TLXKHz+f{k>Y^=>+a$4v#e}! zP?Bm9n2=R#zkdBfI;;U_Q_spuE|yiZ5#~af{Mmz4I+AB(Jxn^bw_{r9BSA+X9&cB}V;A zp}fJ^pt-{*GMK zGm+bDqzJrHNqPQcMIs%A!ATBuKjo`z7t`1C7|M{Ws`2P&K`;4HjHT;BfAHdDG{t3a z%+EOO&1oCG}sY#;Jo77(y<24!g}V1X8(1{X z=|8}l)Oa~wPmxr{UBBJ;+(=1AWiTD5d5)?qWl|P>X5#JufhXk+6**+VXuz7G)D{0W zPTPKL=O2k-^?lYptYR^IX7FwZ@VjW=BWOuM44-bI?rkh=d_y0#z7ZDT|);=*o zN=zIpWKiHGA|OC2C)Y33addF-B(_ryJUM}SyL1d)8^Fc=eO(_VLyY?!;dYl+X&ozrBuq+7 zS;?uIn`qw$HKEuoQl|6E(87Lu5r4oHFDhT%-2!YezDNdRd&BHKxz@;#xC2Y(`ng{yeK(0{F zGbJuAC?#da<4`UN$7sHP2X^WS((LaQ<+jgaNcrw~ytS*a^IMEjF^kfI&Kv93Rc9*KF4kBK z6Ht5it7M}UK^Q{U9n?O69wh-B_T8f+L(t&-Q;;;y;2iZigF%g z9CUY_RhKsSS(9U4~Zn*)?~;2q@$ip7}|r8X~JbW zk&LGcYHgz^nX|{baGu<(v*WioC<1Ajkpb1h=*GkZYaRzayyASn#k{ri1_+i!9dXql99TY-<|o0LQWdcr7;|I@L(E-OhY~!IuP@R5-;T?o(BeE+rLwOyeEq5s;5q8w7 zwQie#|DD?-yAisGc#kgJ>w|U*8+g3>ZpPUYB{He|lcurAm|H^feyZKFqBp(NbMdUW6ln%XwyPl zqHasTJz`?XmVi6&Y8>-jaKyZ!UH`7Mv^27hQcaB%X*mi7#;PU!3ox6$&u{z9rPLZe zZ*g2kvV)GwLiR{DOLGSH_}wa$NKTYD9VIwyqaN{+LR52Ona^W3MR6L*Rs*Y!IQ-1lB%35{dRtM#TrLu)i5;l4P?|zTfg2j|wAFF5s-YyIY<6^|ZQddSp200$ zajik|C`2$C7V@C+BWh|Cdiv~n%PcBnL4If)-b{#_16{~CLL3c*{ z+TO-88*$bzqPm@AnK(8t)E&8{+7e3VB>cv!LJXAu?N7etqVlGdB;6?eXd*oD2 zdXo(|GOf3U@!=>E={@6f#r6MIvT@X)*~yJcr*AmBvy$NqZSoe`>`dR< zTRORmjviYy8~Wnkc;eeA*))CU>MBLKV2H(HHV~#N@FS$V%iLLMnQ_1eh!yR}>)N+l^M&Vs% z)m+tJW#0YLuSjWPy;`js46oET}D{dLy^f3i7Jxh5rZICKmYs)_DL z*Gli22%R5VDk%IW`Rw?y-X^f~%77Qa?_Jg)>Z$D>_Cg-_;N`~=kC>e?yT|RufWHm-_rU+xic3O zxmK^?E_!VH@+%cL+LLL?#IjpN9^F__oU%3_!U#!El;fnwcJ#vX>h6e+ev$XEMmgVPND6PFoMOUD=~1&!>nVb)+1g`jK#)ZLq{{ zJx9qYo3a!+g}w8#{-b{+e!*o*Ta}qgURM<3nM9zK&v2o!*&b?C4mQP10~j2{jJz1) zfq80^KwkL4e-{q0UFo7u%u9+JwWJ*Wn;Uw1?T>vA-AL@ph`l=VzejvqG7%k$mZK{uG_l!o%;_N`_44 z$ygnpft7Z=(Jca2iT7jT@}0AoQ4U6Y zIVIPRuc#v}N#}7kg=PPJ9~5%o#`8AEl&no5^EPWR8X#Vb5T}D6hL@;{&%o%7;dfy}~R4lM8Vx08frAz#QO z;i%k{;TgW?I8-sX%ypgA)v3E+Hngi*b;DbFdNF7JaJllv8L_!y@xeT#F)gLDsx zz;`uw)oMczR-(x3z3De$UdLSZM&T&dwYq`=9=og~Etxn-P&?`M_Nwc4HUt+zs{T(btsBbx3HL%BMwF-ejiaa zM#bIq7W`aLG5@yVi@le{n;k2b-U(F^6Wa)oO5?7S9^2kkcsV<6#UsW6YB&2J}R?0+){2ADv#H0kcHeue-4-B zRwz-pUu1|d!t2v9GUV{6^2jisK(P zz&ZR*nbq$yIr@zN_TP>C_^C{RB-1m3=~~axX5G`9o6B@G)I~4m$R%M9pAaJ#g{qt7 zzZyNU%UIEngCE|pXb1-U+9mm41ev_ z@%keJI{B6=f#@YovCA?%Y#mJ<8geZ+U#bL*_c;{|7wsDS=w|ILs}2)xl2pdL6dzKm zIaWX_+>Zej57G8)^GA#JJyLwB__t&j9R4zmVlPjI@4V9OwJy zANk&-C0e(T-B~rI+3IuWx5vZfmU!PxG;+ zUv~hy+&lSL=Hr%Eg0pQ+^9TDrzSt(4b~k(DciGlt-v}TsBp8bK+_Ok9LkCn9&TCsg z;k*_k2>6T8Kzc-mv)&}xM({KgE%XdD^1JU^(M^3kk&K!3c=2bB7w<4Gdmm~mYLyC`j+>|{Gfd7k>kQeeQ~K^ z@kdEEO2mV~t}rTbS9bR^b|zN=B6GB2t_MpD&ndj6F-slX*ir_L-U*6j5T^~Y$B#kP z=y@;=4DJog)I0q8fZ@3x{5FRq1;GQa(BFIIVi3(4ty*tkn%i-5q%AzJ8+k4~m4cQ3 zVVC8Xl2GyQvdqb&$G=CmE_s;+jrnefOL*6*H&G}eUn10^UIZH{&;h%<4_S!Q?hzsQ z*x{5w($MDjny4|yON(@JqHNc7|4yz-q1H}l6%mf8h}!~DVLtYW5Ndt6@%0^Jx+bJt zUN9`GC}ZLX)}5ttUaU|oZY#IlBHqWm8VIq~Lyck^>aOX~T!&n|KlS`!&^O%o+d|i? zv6%XEGQ!bv=U?obpJhFBkU!1)z;i~ulw$N0Ipo^jc1bDScw+w8!X<49yYy5rxHMWD z_4DqAj_V`zFFE$Lzw0><)rfZfFvT<8rNXkgXYGi;ai%e;RW4$$eY3q7-3^({qzA#q zp_Mf^Wx=m_tv{J*f%tQn+g(aGRCI1b@e@J{n^7aSPzr@iR@c8>QjyzkrQ%KGLi|KL zvO@(&nHqgH4Rav_j=7&!2q6}WA!Bh=qz%1`&1FbyR{MJk-ChV~NNSCZHrsUpJo+s5--z~t-epJUWL&h*9!vq z9)3dOQpOeO3tMGQpLQ|BvN-?cdOLEj#a9PLWlt$*lq|cC7uDY9SEL#c;?g-3ge4t% zTycx+6JP9-YG4gbpN|CaM3z0JDDOK~sepYUkNS?l3GK=Z&WC@X^+i%r68J30W@cSo z-Ks9&86uKoW7mhF&qc!kh+HHb?~z(6W0R9ZnbL5YsQmmxMni)fAfOiGC&*s*(L$=- z-Ch5w7hl4Mja0bwFYiW_MC2^UC$Md5iQRFJ#%8-C>2*Yq6N6D-Fz6pgf6h^}OygHS z98h(+Hn(o>wv8Fee{1I0+o}c-tiC$}Ubp+L{2C=`FCdgV8%I|%dnfQ(ErH}_I*=Om zjg0o&$*cyz9~^jR0d;kCRT_af6u@TjIjt*m*fJ`X2&e1?Ef&>ceJo2$OQ5a9043!f zDJiIrV5Z8Yh-g$=`v3%l09P2c0pLq2=c&ry5GG8$a|A6{)Ft9ZJ_@&Ga$m<1=4c3V z;&?x)|M8+!3meUHxCeol(pDfdifK#Y zZ`WdX?C!w<@~8_9(&PgLi1rRRhFUc&p2z$7-2kD}6Og7`9WS9rz&Wb9zds!M-;q87 zVN{~BWv0VpRd)0M3*FFJ?n?q43+wq-ET9a!PnOft(ZPhjdik=kvol9WK;xr+d~sZr z8J%drr6hq0&`jUi|VAOoX|2ZQS~ zS{?cpy3hwzXpo*IY`m6w`4Z7M%cD~9)CVT!J+gQ*wdcp7O*~0Zr-^= z%gh`CZT<1x=VxblS@;d+_w|j2wzSV>Fvwys{fZtH@jE6{ zx*y7DQtsNZdiyfn)I^xki8+#vRf{i&r@j#4_>?9N;Zzx~Qxz$AOiF3&79 zy@4PJ{II}=2GJkN`RVX;-h4U6XtV0i7g;!`R`FhB&;ba~!qFfnBh%X7za4h2_;vA7 zwzbW_mkQ-pm=DG=SkF`ye|oy%yu;kvQZmB39romwy@70sK&2qb)}>B7qxB|>hA>)S zjQE(Tg`1A_${9c3DS=oxM2;X#mEb$xAOoWV7>xONv463FRoy(O8R1@CT_p-+z9yXi ze?*ZSH0#{~x+`=K*JCGPC)uKji&7X@DYUiR+1IBKd|FNDJ~sT};B1&g)r3@Uq}7^} z?*47|?1 ziKGdHOOcBWwoAjNQGr%n7f3AZ?hY1g{QrPM!ib=cALoC4p{YHdc0<610JEw_pl_NC zq@p0e!{#A1brU&W+og2)rw4gn+IblT5yseDt}9r#R>dWH@NZu(-9{7~jmWGjB=wcK zZ(kuge-@e0`LW)Jw$rQ0$F5Ymas0rTkHFoONG1?DbAe*PWavU5|Af@MK=Q!M9t40k z$;e0yC^~|zPLHCTus=*B>`uLAKP;e{*#g`}PCJ~ z8i4e`DwU39_3vnVIXbY#+wnj37w1{M!8GJFD=NU4OWD`)zA*bw!Z5U;db-9Q+!#BgHBYz`-#Jm98aAN+$oVaF^^5?pQX=R2Vuad}10IEeo2OnOtH=MMO7O_AZP; zYZYMQ|ySxR7cI^+>I6Z+kJ@pzJ(VAiYLy`_{_tzF;k@ zA*ef@HM)8q4hCsu0qMoXs-op=K4hiC>ays9_`?5$Ma~5Mqk711#}IuoQ;A>xdgJeD ziDx|H&N0i_HN~TAGrw{-1LIw$x7&36M@XDfFB2dzuUCj#+{{h3H)Cb&S`#~X96217 z6P28Go%YDI=d0a>6qAGf)qxgX==C@O0>>$**D6{||NOp1eXHvgYwfZ9YgA$Kt&7y< z@}}*U2V03p(praq7x&csV8-hyHq?d8VvnqFkWgwEtwB z1iKna&=A%hp}hGUq44p3jp1jLu5Uh0Xd*enNh?h)zxZrWvFYg(!QSOr+s9UyC|!4B zJi!dm+w|EwsvWK(eayV9X+fLfYrKCH5q zeNXYf3~JtPT-vp9AN^#(Kw!Pv?l&}N*&29?T7Th!Yr*?sbmw)| zEh8TB3;v*xf#l5^SJH@d%P1QrG;TNXNO_%gjpxFUlTl0IVtLPJK|7DLQ-2NOw$r-A z(dW@$VIP}+k78aIHqdovvn+TD{OV65Mp%6A*w6}pGt$O-eT&Aa8JMQ7wA&(PnBR~5 zh%QjSb|Pu=chm2}L6G;bt%)t@b?D-tD(}}G&DTd|e0klm*?&j(`C}})yHm^;H=+qx z?AdFTXn_yoyq}|q!xBK4@qiv*11(MCCf~VlNW+nKikgl`bVbE@y~rXTV@EId_*Pdq zaX&c`d&G&4;W^~(chO~0Q-3{UY^zDgX1}Ol`AR;T75qeG(BF*h(_Cj8{mqb9sI$S6 z?(x4f1^OI$<6~&&Q1d*|o0ZMB6GDAstbT23BA+u3p7Z;Lc`=(dogiI6UYx2UrN*mc z!nCNG+bf5a^+%*LF2l?Fr)l~L1eOq3w@GC>NJUOnNE~iD_V~~=cr%h6U^ve!ejl%U zc}|Ob#*0@7mPLi*&E@%Swnz$my=g~}vVSs0ZmgkS`|ReFpHmIdxp?LU@D3&4Y=6vn zJLc06YI1(aQL#yfZ_s4ZWk>M+I>*%Hd*)1`89HT{mz zr)OrJ$g=5`56tko6LTuka^%Y|hGURufoy!8P->{O+tK8GS(WJ3CLsKF`xbRenoQEe zjW5WHZTa13RCvkQ7Tqth&_!>DU@tZAJ8*op@k$6@i%n~VPRj0yrk44Ebq)uj9ii5d1oHkoZdnl zc+_yzN--?sv%SwOp{FfoOY8JeT}d_a5N$8b{}h<<^xWE!?qUqLz|SXx?cnlWqI<|s zUbv87B{3dC8Y?>bMe`n^2ADeK{dzgD{_6gC;Jq;Bm$I(|SXAa|Fm<{Pz5$7Lf$E1i zA)MBfQgs%)@7BLaD1FzQ0>jyDj6j@xRs@Fq^_8H?vgfN2bc;5ex*yECG=h7EOA0dY z=!zB5UN-F9juv*0+fh~eis|yN;L+kop70r;Z80MhIX1*LY1;r9tPOF38(7{znx>Jg z;&VL+on2lE*tffk*Is=X(*GF!0dqah_)j^GOvTq{JO`3iX+t9Jhqn_|GkfQVtMCVw z(Ej~Arv9$UaUk*EVts)+`;5t^H$}ts(g8`kb8`BNac5pU!Bj?wFC=3*?8EOb_a;%E znKIXV7Ep#VSNnF}pdU3=Ie%EbSTK-H^oQ*GogL(Kx1zmT@|=W~YP1VF7R405|Hfi+x}i7z ze(k>naqH`i#=sy(8sF~~)12Wu4qL~!%>>W)PS3Qy>1QH76KcnP8p9D%Xb*SkA88T3 zV()Rmfs(aU9!1);-N4F=`~Q&hB=qeOLgdkJx#UM{hr8dX1TkENj|xNQ?-WvOj5pjs zbm!SV(pd3htRsi-x}HLI?ijf$!mQnw5u3cWY(Qn3zlej#&I+z`Q$7wZH2c<(N2THH zV|R)t#=Cc_B%!UZox`Y2X7Gq90yF!>x-vUneJl*Dh@{|h8=W28!zr>QA^(l>;Z0dc zxpHCXP(Cg&r69BUaHA1Z^{g}Ud1#8**{h zn%j{ADjg(V1ofmCKPAg(CnsbFW6XzEKb9~f7bSx@9)e1Yi9Ybhe#251eM)L^agnuc z^Wve+r;2mmso2sVuH!bLuRg8@B_s)RRV$??P2kLg`-G&a(HcxpI<1YytJHy+lsYp=Dyh1Z)Z0O@9Y4;ZoN~v_!BwVyVjA26T}-S8=DQ)h$~ez zZ_Sr9?lYbV=5oXV1s=g3vB#;ld017dAtpq2JIb-MoZdJe1jH_v)5Mtpq#yA_K32N^ zXSl}8sWNo{t(BeYu1Hzy+#)TzX2+x1Y#&k+Xoe9+rkA(~EE{d2VbJ_p#XQ9HG1J-Q z(L(+)Z5Yf+V|2eLW@DzClg9bcqSP9p>%|djY>BL{!S7wA9`rSRL+>Um@H%}wYG}jGHWl`S)MNyrA=Z_s*TjBOVd1AZ zO#d5=cr2T5ilPyn&0FRower1pOyi+W2f z2ge)oP6HsN)b6&EAqDgdd%q6;)RTNjLlaVC@{NLDYHz7G&Yr#IDLFzjGB5t*M9x{{ zl4Gozzz!R7$(y^WOv5PFKzF%K`XmVHBLb~aoFHch{ZA(sDe@IFH0!86W=dZ`1tmAEVn8NUujXtVF^`9R|fHc{|*QunKn21)QH{@*8xcHsZt zR{Vx%0WDD=hkPISNKiX(088V7ODRUAe{5kPTX}go(jc2$*!77@JeXj^vE8SpMiA&J z_Rtpv2i<>6_`n_j4Shg<;Kf3JpQO9HJN0paemsXB#^L&C$Kc>SIXO9`nWn0$Y5}Kh zJ$5_nMp;nP?8ToB@bla0pz?}4?sj1nf)+)w>>&=<1LJ)j{uy+=y?>o6_SG6}R#sN~ zp8WkUUIybCbVks2b#+PgCh*DugGUA!J5uA5lRtujg61vNg3DYFO%DMd{0{5%1&S%? zFjpP*C-N)u3kc*Qe+0Uds)rlnil-+h-=P)KE*^ZIbAjCR9a@!hV0Y)lJXX(DD>Kd6 z*f9UEYxz5XIAtE^j>vz6T-{(NjFSl;<4Fdy%OyuuJMeJ*+I&M$rqoSg|g=s)Stv!>A z?!=#7MbhQK#`ytcn0;m*o{?JZKD)s$5ZRv?4~X5N5O^|L4uq5MNSDkwwF8|~E5ws{ znXbu6_1;AOq1wm7!kYI(B@Ww&wHY#_K8A;@C@U+Q!h|hx60>Q&B_bj+g}X^HW&(1W zg(w3KoLxN3A%j>FpH2E_HznJ)_I4&Qi|N{TjI_%&MOBrR-$9F3s?U!4m6Vi1G?S77 zgbBsRYNhO$V(@y5et&zF3x3+CTao)3rT>Vmu_EH*UqO@b=0sU{S)FE$BOrk=&O;q+ zTwHnq0fA9|Zj#%j#)Hl7vLM>q39nJ9{eSw1{~HHz*`QH6txD#9V8qO`e$Z4!L8z#x zi1j(?f`Y6rJj%Ck-=L-P;d0gI+JoQHLRTjXV8lu{>Imam2Q|2pvoi&-ih*9(HqfO+ zfi=@xTuJu8veI_(7C%2f@B|kpw*JEc?K#TUnj9}{7oB85WxdBBFFzj$Rh^1UXUiEG z835n*C^lqg8|7S<$V+iR>+Dw^3n|d@ez07V3X3QXIy=Gb)yCRd2iDlzAIiNK(lUK^ zP457826moaf3mR4QRmG1hoS!`k{k?82EM-E{?7nUx7AmdICLG;S?F$ZRdOHnQ32L| z4-*d8Ib|gQ-Pk2iegpRCK4=&ZfGQ}+M4L~uEm!G418Oo50Dpp}1q6H$DC#@DTp#m_ADAq0|67D7O9@uSf4<*)uw3>1*W+2d*8lxRXfwcf+2!iRqphC9L4yi`?CI%g zeM3V$Vq&LmPGI%9tTh0mEa#%+K2!k!3t9#dsC0;FOPjEbW6H|737M6@fovEUVfn(g z*#$OirwgkNd^CYHr2w8uERP>Uhb0mUN7_HAs;PbL_fOpZU<4Fd*t%d_6m?O@`X0_W zcg@VqpoO*@l!a_9v@0wrLdkepvy_F$x}asMqQa@b?rVH}=TdJ%?{X>R5vuRrEi&N~ z61G8;W{<)DMHpM+{2xRx?d|0_LnaAKBS>X3lkr-9b3fgyI_f@U)sSL@s>VMd;v(Rl z*`4g@!uHki1Oz_3-s9XB+>%kz&|oh{K(GTmJ}f*u97bsRLTKgr-}XZjou&SiLgfB| zGDH5x<|dptmOs{*&?+k^L`*bzH6Z_?{sB{4z+KLJ6_-IBMiIFu!5t^JB@p)qct$J> z=8M6i8HP|f47Y^ElfRdwoC?{EDHwDk|K)3Ls=xbF+B9W{omz+^V8WH-aJsct2f0;T;BV;ym@j?F&uj?x*MhjCP zh)IkPfDPD5-ojfP2Fqi+;V&^US)f;20NudRkU_v#Kl0@DBnVXghpuz=TT3TUg<}b8?LQ{r;N`C~x|lnkq#K zQ=pG}@9^N3({9E;6Sw;i2D2 zAmkjB)&faeF@c~5d~0wm=x?Gc z%s52S%PoD8q+}cr5Oi4c1GV4X`8IU5!n^a+?}(hx{O%spGck2t?1Ra2JfF=&D9kNc zz?ZmfFs~*eGSXKz8%l3PPKuNyNGm-Y9GoX+BYBkxwvx$iTl}D0h7U#&@$;4+@1jCx z(2CYSIXQX3Ng9g$mQI$NkBh^+!nQ|Jj={U&b5fGU)y2QgNJfb7Pa$U93n!2yA4=lnXOowxI*-7A&`^ye{AGW-~zh7T!&(?laf*!@@ zW-naJj^Z374xd;|5Rj3PLEhaCiyfMvE}-t^-hM6Xg=3++vGkw-nQE6_Xd5yS{E)5e)@8% z0S)VY7pEWw534T_h?o#L`UvOuOF&_y+I}@+yB=;dySf@28HtZ1Q*&|Qd%p-Fnp;|u zfd3WjA=}=;?~MhL8GYb&ff3li-}ZGCeSADT=Q)4kp2Kp};g4Vm{&k(tdFKJ>@3%rm z0~sAMTETYiJ+HA}ZH9UTzuVEqW5Bx@9=6qy{Jfh!%c5E&2HSW4{QoHIN~4;*(y&w! zfgs#n$&j%d89rzm`(CtMdHP zvjcIXH@^s0s^{maI2diTj#Scqcf=OP-$Eq@wz`rv!nOhJMV`KV>w$sxOB{2vZYH_d!!8BB3YJSeLE~;whc@=F}Efdx{FE4MQ9lzq2UunBl0)fCEg9~%> zQ}SDW4z#t&m~;5}uIR1i)}O z+Swg&;Pz!~xlsW|k*JY9h>uOp%_|_>;d{7}fTQs06MPoBgYR~A9pdtMQ_|29H(fF+ zS$GARnVC&SESS*k%a1`*&^B&XPcm-6O)RHe{VF9TWr2)tXHWqh^z`JO)6Rlq;VtN= zjNVEK6rKpImEC5Ih0fFqh2_}Krp;Qp6WAw!8{Qz9nWbT716XA8mC?Fw%~j7;vL<7$ z33!TI?n{6H2*HPzE4b>Wj?`b8)`N(rv$J#DSr}T!12$j{q32BkevzBO%Sl`=SLawn z#P{?tpz(Tv;G+&>efzl%z zI1gqtscC7Y12aq|^VF$k+9%n*Y~d?el2(4VW2Pgtr@Pz}i^G@DxXlu2!s-M_PW18p zGho(w(MPb>+C_{Oh?s@I@4Hg7vb<`iZ0ne3&aA#ZwRaJdJg~ANcFS|E%;-jqXb^+rWGc=X1gpsb^k|b z+d*6;1n;dh3!r{?RQ7R)R;^k!bUg%TWRgj`_kd6m2fKC1yHdF1S4BO6tJbAi5rK`G$SuEpO4 z1chg6dO9YTtVR;GAxG;%6GhPksz%T|3e#%0Y17w0@pz+oRqFvHz;c}dgB1&s*TsDE z7R06}hJPgYJQs^SRvWGB#6F1w#(=>xFWk9Qw@5%&&@tm`h!7<(6J2a? z5hY?u2{TgKA^L`WxBh!Huo?mfAZYgKIG;!i6#(&yABhJCIc)W0?+=IGW<0F!N;9(f zXG6Fyx^Px_Ty@UD)A*FQT__m&apRZHvpJ!4Qv@dyZX&ROdP&_=a69^Zk7!s7YkBth zApKoPEMe{CICj{JjRQFiGPbgD0LnKX6W$st+OcED13Y-J(j2oI@$H3xC4j`Pk&zgv zdcFs=RYVdBIkR6H+p$tApL!AdBY`plR8z0e6_#+xh4BgpOH0eSYRkDkKd;^rcfBCt ziHqs!dV7|huEeAV(U{Z5W`cM7AjX{9<27TDyTI8l8JKB_*EkXj!GS}LG6gXK@(3o( zcH*1ZpKeV;DXH|ubl>oiu`eFrZR2mW|(sV=6gP`*#cdB7Z>Uz8{Tt|Rb9!a_*mBtB6c z(wYmz#$rs9sw{5kI3jBbLSD;gBRiI&AW@2m2?G z4x3l>XTUcXXWN2<3bygrHn!R}TBO8nBvi2o<%{On$6vMXM3&z6e}LT8hDdn*Rod=v jKs)kW+5eyY6EExd(q&nXpwE@8jTadd}mHfIq~Y?>=_bg(kP{B~^}vzoOrigdpky+wVc^*CJ91jj z;uc2SoV75cjjNUxJwvQlr2e|i*CUsG?ugu-uQqajt#ZB6J*{5odAHBz$k5$F<73oG zNiR}T?xUYOzv%0_^8DPH`}Ue0dkT+@uc7`rYjLJF5pBWd)FHjM@A?8BXSq4bUeA9L zx{t%xtv3TB$9}y5e?GYTf%?x|=2!d-f8O0XWy<^K-Lrqb82)*;BKu#(pLgTW|91Lw zl1~(;XOI5=r7z{xw*PTPx;y`S!e49izf1bRL30=j|C<)Sk^%<%znT`~=a*}?5|r6B z{S+QQPTSqUr54ogwv5c+s+McRnjiOMCVJzSG&;UD7tHz7TpBilngcB9&8eRiZ5Th| zHiqexImpH2=n{Mm_7ZQL5A;8IF@>*gzh@-vn`7%%;-n-1PKnCu7%7yPt`H!eMj z>&6Xb7Uafz@cGHc7R2$`cJ{F5=_P?5caHIm{#j5%Cg$B}M1VYZYZ}&&M*4rgq7ascAoIQKiWoIVJW_7Xw-8YvI@^UdFr*`3%Z{JW|9Tvs7u>*41O&Rim<#?x(QZ;$)tP4(s4y?j>d?v%UGDUKdJ+E?jf!(&`s{)OndwS;LG9m{1` ziMjsIKeDT&|*Sl z$S6wYXR;$zZrEh`03r9a$3$GO!X=R>@9OI6a_V>tO6NyCmof5mQfc$^RyFG#l8k~D zZy81Ha*b;|;9PW$eAO$r2cC#Xt$n+O=*V zV=mq;JSr-alEq6+-v4BGN4%tY;X}j4p59)U^>$Ihb4q5lkxCa~5g)$7E?LXl5v@gQyE;k;&g0^D!~1bnc#Q zkHzHb6;qiM2e5cQ1c&U6wXfwY9>_(ZP@1**L#4L8=21o&l`aJQT%wQ8ojZ3h$lf2T zHuu-h_WUWY(sfaPqN1Rnz!*u?rnxMp7P_(8!~z9IjEqlhekGnux2n{32>*qeuMg}= z=8%2eh|4W*ZlxTZJdGL;A}bvHuV-zhl{gW=Qu$@LiP=+GPfu^K$UIQL#A>3__4`ND z%sy<9xl((A)DUs_QK1$18~r+Oq~D;b|7Rvi*Kk%Bd>>q0T|Gv?{LSXl2!YCOYI3qK z-$=4OQO3k=)IBq&F$@i#IkGkW`K8O}V+`|oWurYxd^K9h8TW!1abc>`JM{&)BJ);f zB1YHdlkbrjVVlVP{eALB9_VI2ITg13$dgZb(%a({c_wwn1Z)9Tbj&N&hrFIxITb9q zfzK&W46WV8bNl)GBfh=6QZ%%fuTbT>c<$`kR49yZ`z#KkosLy#>=d=D#EM`*{1`UX z?#x~?@>*@6e=#iM*g&tV^=vdlhPuZ|z3o>nOd^@BqUQ(A#CRffx8ax(=CO>li5ml=9e&Vwg zG26kC?y@oO9FS|=SFhd%8{9qF5U4sNA|_VeLsGbRk4spXxE!fxZqb>Lcgen5z4O+( zvfmWAU@96KsdQ4JUy0LfTXz~ftgp(=o=30f4p{%3NyLvLIY-rcg919?tp^$!p=oPf z#I;sFU02uA%d`PtQJh;+^@=SbmVCOB<$i1-(^4P`(eoEUtm8 z{Zd~Kc0mAb)qR`6#H+ABS5H&h{0H{zxM^`%vJoJMKrDo&Ei63YdH7LQDT)^(Ltdp5 zw(624;xWB(;!e&3=25u(swIuNj`*3y#k{^gtvtgD4XEOPPlhOttV0V*Ehh_JBKhCl`zu+WInYIm2DL^>nyof!|%U;02HMqBsZyCiDYx85n^)2JkOVC>-V z@jRb#ZccusVw9od>)P!}YAEuw4TYg~NUA&p&BOTFSbJBb9azS^!{4!Usjc9fB8 z^lWEhK`U=nE>#XR3&FHR!%Q#uR|P^pAHKA{Cj4KR0NzDaQNz^4{Y|g)@u`M_xEwa5 z`E^E2C;!QrxjCq!S_nGPKPCUub`0@hf8Prvd}YCV|XJ!2g-XFfy7D3X6zk8Q7KK`#;)X_N2|0-l@=+B(F{d+bMEBHwIr$h7x7wxa_ zz+nI9>1Y#N3}-<7mDu*#C4m)gdwYAm8|U4kej{AOsV{~}kvC7u<8Zi^=H{nvoZInT zU1|+qzkYixP*HX6*Ll<^0M?~LVp07PE39pxbPlTwG|G$|Jkqdyr{8H7jtJ}q2--Tgb@H5Q$ zv3PIGfnKR@Xc(u=9wrUiH`Sa9d#^PMz)RIRDv8p_2jVhb+bdM0II*X7bCz9M4HOd>ni?I0kN-XgW&WW2&o28SXSdeq|EvFQB8)l5jNWqpR=<*M*tuqZ&wcMV0p$NARvHS zOlDkF@eygs3q==|FoCcgMpZchecKAP53Edsd2 zRZ^^ zCVaKqDbQzTW@fa<7?O_9_hyDPhOiX8KFa|u4pc#07rrNh995Q+lLOeLA6mwU2Viy?XWP2H0^O62tF7J`Vf0)AOXU z6B6ARbcs+gmk`D(wfWr)Lf;VN!0to~T5?^vB3I?MtkavJ!fjaPxn+mkUv1K_bk5q{ zTIPe(Tj15f8AulMlCuhz=-qp{$_V8hI|FV+1XO0h~<#^5r&6Y?dSHIeGD^z5OzkEvS=m4>AcmAn-5%B$-=SAaFhDYwPR1 zNpdgA8>7E29cKBGpJ6-bqM!xJtSJ~Ennjb+ky>Qc6OmZ%hYO&bI666@?M5VAmWK60 zOF&%D%+6+m2`yhlRfbg3)6-*!g=!2ykofO~Q`XB<1Om5-$yhNn7zq zg)?W*&dd<8#4<3)fjb!UIjFITo*6?76r}@5U~;9;sKx{R;^j+v78ajI7nkKxBT!;u zMC}uP0BNuV5Nch2{ySsht`viY-r@J+#Zgdv!I%UObsqn81pJI!nW)bfad&s$oeool zKysWTsTR4n0p20%{b?kgtt8cwcWt0;MU2(fcx=pHfkTj)w`M~lh)Gh%ra!kE3<*MD z7KUIKqCYp9)fx;A(4|5#&>kyl1I09e{?KPO4N38mOXc!SAuL!T)}#OcChG$-Nx$gv z>w6*0JOTAj75Bb=y+ZD;o_LH{X+gEoNG^;OwQ0N2Y9YnctsL<2NJJ1gy zQkx%g+J`Hg%rE%ogT&R$-&$Sm2D6wjNJL?qer3=GyL^vOlmM8kcjKTgd*J{l1L;Pr9Z z%P5ei5Z(n1m{h+)3=$pf62=;)KAmdJa$lci1gQ+h1vWUC-FJ5h1yEq2ZHIKqMqFbX z-(E~rU_qAjpo0Ja2Wg@PFei5#<*z$MA=sy;Gv31x|5aDt(#z8UahMYs(#x_15{52Q-`0M`*gt9NCzL!H`t?JGwz=00ephEuZ z<@+X*#W+8}``LZ=FnBR#d;hW14CPg(V zS_*}gpD^Y1WxNKc5>Sqvq(q~YclXyj+2E9P%;C+CHNbFVfH(vWzS$qyZG)Ed+(Q-~ zR2}bQNjlir4!L0wSk-!Toc%`e$)rX_z>hq9_@S!x@XCC-3a=nvE*W}fw#1p^!@3kS zJyhODMPH{BOI$q*lMSLjdvQ9?UAxEIvCU2bDY-HH9p#UbHmEC2fa_uq9fv4>Kgn;^9JvMpr~uLe;aza5)ZMk9@Z;f^!9dCaQyZ|wcy@uw?L>L}0%wp8+y>ly1`){mko73a`<(r z#b$S#ghbu*rQzf|9Ez&15>gbxcVLFSMFgW==^lc0c;BEu%PArfl!4 z-ALtz&dksn=1TUx=Vw4IKDpZ?_;jga>zV>v;wM2w3|L?YF@ScI zyh|i-z&*A`+~^r}D+WO^DgaGdKXjw`7 zy>?8ccXq83>47Tonc~go5kri2J{{gcMglq&=@kg3Zv6tHr^=DhBbb{vV8Z7BpA_=Z z=fE5AW1x`?xU?bA+0Yn{&jg?~zq6*g8gw&`MbME$!^6YV5~Mr zdKZ|A(O1k~5}xg$HY<}GXz&IF1=Vc_ELnGs-@ylY+s{u;hY-K`Gn9zf=H=@@iy)5> z$0~C_n+wE$e&ZLgPD_YnE1Q4T{1pASeX{6oUGhJPNr;OqzA=H&%2rdfSbnP{j9Px< zKM9wZ35g49ItUI!?(Xd!EY==gNguOc>1|}`oM8KaxI)&ktWZ|Iu&Cp#v|Thjc4~xg z{XWm~K(TgdFVKwo&g(IqsZb(plf%5bdL>U;FAHwO(Tukt)!T%eyWIVO&CEG>`va6r z22s_-%*7*dbscs`++e~1&04j6g_6t>-}%baQ}3;9ZuSF)&aerLl_i#)35qms?J>gn zoq#9;z!n7nm{KU%!BiHXeRYx8JPqWbJccp?DVxhw+; zL@}!K!Q`PfEuAb67-m0R`-_s2ka)14xm0)H4N)3HW%gLm-poZ}JFVcMVaA?|!pO}5 zOQ@qQl~2*eLxY(@NTgP6qMfmEfwF<7@LQO%Y5st=>?Cc^?@FC zBqy$q^r+|P=j<-=Y3bM-7$c^o?2X#8&}s9{o<&=G>_V#r_f1yy=!WP@+W}h-kM>@! zQiiHQb9zhbh0sC?4Tn1}FY);JBg@yn$fR%uP$orQX*)K4)7S&Y2HLbrl!R5=Qe zSg}&hKOu?l`hO$V*fj014RY`n8+^;PS~ro7WLO_V6IO>E8_USkzQc{YHEm`zw(kM& z8J@0S+??UJZ5_;*Vrz0~Ei0S&s?#w6gu&5{w zFy9Oh8-k*!C8n#PkpdMVxtGTysAQ$UERj4pHAS2Z=a^3ArTQt*&#WM5CnwR%7s`_`+m@%(~x_c)}SLn_?*>xz6-zi@`sWEgUK%Hs_7&R zMUCV~aB|O>ZFc+Y?U(7lG=$@s$Bd}`dArhIN41!WIhU-U@Y|SfNs6&6-;OynRu3D& zVEg^leAP+Q(~ozyw;>=3t-Mhy>tTPBHD}@z&xel8G$46yo(Y9RW)i-9pzdt0$*a|o z8ryRx=3#ZYX$!jQ2KSX{a%no6YmW5M0wMXX1-D-W-wG#%2_6~m78zkY8Bncb1CzYXJO@6S7_iUPFki0!A=?jgl?my(-KdjqQVMSEoXiAm{y}&` z*Xy>kgK-rVw++IS!D{f(J@cXQEDkItZuXb4!F5F|^usD2gf={R+N1_cQUu)N%HPP{ z4RtVK3)v0|v9Yt`0rKq!Y8MY&0AQMh;!X%oCTtGAq@>FRAw5{_UJR;+TLL5w%rf_Z?F7|g-fBXfiRV^! zVy}087ZxBD7q@^abHMfqF~U&#P(*ZqPDy{^!n4N3vuDnPM@DA6di4sC`zwaE1y9O{ z>8kecZV;(9X!~qP#+q8P;jCGAFxZ=hnmz zOBw_-;ELG$_wOSR_Jt3DHlV43Ioxp+uf3hSrpeNQ#`&J8ohM+DCo&K8!%gVEpJ&3P2q?6A$(EV~*1>vikV=K%{b_*V=2sFd&t{4S_y6 zEm4ZxbERRv_3+A-D^#?!I-r^Yb7k5#W zO>S;ZcVXl1fThvz0Q4b%QfvGtQ(GEuTKBLT0pbY~ckIe1jvM)qh=UbQbJj!5fG+_$ zP-tReqE7C^WN0kknD73)tD(!Kfqydloc11k$V0RKHU7jRULKHT6iKv&cb zVV2^$yxg7I#7P1QK_k)q$&*~xAJnc8K+|9x#sQZ99V;Z80fvc@|6f@)g~JSslPL-; z7PcD@n~9pqv3+bHg_+`vR=GnDTTy@jvm@Dww~zR9SwHQ3u@)nKQw^DqGON4(mE%sq zmXFbd_r#AgGedLM1jv`}wrD{#V7*ilZs`FTrgwXFN_EI}e|xp1wY3+J3TVI(g1}TL zwrJOIbSz@Uk@uFd0Jws!y~W1CK}Zf@hQ_j`${a^er;Vi%gYNEbs7(Uu1B14~)=541 zc{NEQF{MvqBANBM_==-4jBcrbjx}s_2G;j?E+tjcy=RlJIfOvKfjoI|^X5&6deSd_ z;yzdk31x5Sxt$M4TRA{@D|&bXfz6M%NgO_LmK_SFtx?Yc0YO0wkW-PX4Gf5$Gs-dB#{P^YchzWBbn296=`1#6>G7H>e&lIuGl+|H~%< zowLu&-xL}Rgw03J4bW7@{3qOPgER@lVDU>mu>V)j^-+pWRaPxP>Qistc*jbkd>O@2 zC6fi>QB?OhO!(5DbBozr^t%|dJ#vQ>N(^jcFJ8hsMA_AjTWo$i=F0_y6X>+itD|MM ztsVLt0HmDXIUaUyc^FGgdX`t+fT4u{7~5pik#YNl2}WDFAnBo*fSaK%<-d1-LAQ*i z`X8q?GY=M!s#?-RR_YGr?Q)eeW)qy-@6J04YE1 zFEAgi6 zIe*h{*LhuAYgEW&kTcpnSfDQpnYWy)*z1=#a1<9%!dBCIxyjA(+e$}?dpo&E!Hf04SJb|W})z@p%5%jp8flQueWZ( z#B_f&(d)cAjsd}T6>h~Um&~dDMupbq*KF#KIJWYHrXB3h$v^~rhH7FyB%6en7SwFU zgt%}#AY9Z?Vkr?XlwL73G<})UfD>M{@%e$wm8zkWUWQ9p1-M< zm__kGcJ3hn{&aRaeA;R-!#bwUvX&J}3%8Ogd80>_*QLdb$;OzyT_)K0G6)~28)%s; zF;(?~<#z^RjLx&sS`seG1&kj-qdo`7fhVQC9UVb$-)aGvM5w5r=mMa|8B{)9@k3<==Xvzgz~E?&%{PLy zbVo$O7s+uQ?LB z07)xsH!KDeTPpx+0M9&QJp@!&D6+apTVn-4hi`pUh%%~j#RI8=)f%9uA1JGO^&ZsM z6Fiqpbq-e-QLsdM2BQV7Au+_bwYe$}y z{2%IjVqz@USC)yrp97e0w#5biTJe>jgt3+CqBq5?aEh~(c=CfSZVCRucFYm&x!-f* zVeqR_EOrhQWMZZBTyO+dI8h!?c+VSx@-%dVYAK5APr2_q#kP6IwtX-g42{I@{E)|P zgEKa(nD6~&E>1bIGiIw#-Cl#SZg-zOlcvtL>v5O~e zqJu8S&cR4j=L8JJ`{yLjVD?hcKzgGQf5iuMu-+*lNfufUU^^_ zd4OroAGk>7j)HKez6iSD83#r$lb^S=;t6ticXPZ9I&G|=2zRmAdbkKp9t}o1y9VHQ zHEcVZ*NhJ9QU$0dLF8M?~w9muh@{VWY`&M^4tO zsjI&S?Vg^Ikt?ua5-`R;UgH*k>auAo`#~_Bkv}7x)_n>cf+)~Aoj1MQaEB(mm8Uc- zsV{$9jjRHjUfoHOP#6fgS1-05mtCdVxbAwB5qVO?*3|tV~qU@n_*r zx^_%KXm;pk%k>sDc^ml}sd3vEhH;M;$xlW^JX0T>8#re})VycRY0B%6048AsXJEta zXMg{^t7q>@UI+#4xW4V7>J7gTin>T)2`HT}Bj%s$y^5~f4e=_~770i$b;tVY@7dfJ5o!D(A8K?E@?_CS{D&daL4rnV%eH8A-#d}j+JW$}Ml3gPzdE{v zBChjKYewAzot|-h@k09fG_EURa)QU()WAGg)%t>xldG7J;11t)_4H@8zCG4hS>>Y{ z-Odi;`_st(H~@Ron_wKoJUWm~8z>uWWC{?HlU1y=~70>3@(4<8t2c_HLeKdo>I1Ec{=) z^FE@kT1~qUruC%+G}q6C0}fMj21`Puy?yudVTv~=-gZO#$Z&2B?4w-mKum_G^aG98 z?O7S!axtr&)Dfqc$3gpkcHxgb!+XX-qGWsgQ946L4&boR!B%;&<(6YlI20dPE%X!) zMpdb*A5o7H|2G4F9GjQ%M!olfe=@diD08k(C6bkBeLf3^Ez|v&SQg7oG5-3`%DjVy zw2b`N?CG=3`DPYjdMdYLQDFE$2O)AqPTOk9q}769!+P%t<)8G;6u9VbT3+=x%#s%XW1SrB zii!#V8J@a{|6CT?Ah)#fSH{CDDG&^YQ*EBmiTc1hm{4P6?Pr}?LPw<0j{PPwbHx6! z0d`?zxW^D;wk1QBwV3K8Jhpn=FrNm;4e2PExvG-1%GyU!L`v0fk3?{*+`L_=eBy|a zPS9tYDKV3qg1@vN2V<@xdR%zm6ZSVWFN;3gi@? zXoC{aa~HpjCdc($2Ds>@_kEI_#?Hb>V{(x8?DgJ5)(Y(6-;P)6`AcMS)M9DlySTYG zug^Ryd_k(-*!@O}A7JennK^{gURl&<#fY3qiyKdTju>W9jGA^0jR3+Qx{v+FOp;NyMeL2dG{bzh+XWYUEYjhB#}F z@uT@7Txu!rN4Z;`InEf2ZG2jLwXMM&xCp$v0KP2%!x9${k4hqPGdjO|O%b~jYgY*e zMh|a4n@VR~3eY>t6QUv`@wIzPy%38zIr)f4z^WG1kt=~|hJbLI{CYy=1HYV!*Qy^Y z?hSW-*9NW^lvX^#X?w+V9N8zwZ)^a@RHa>^<~M z7Px&DJH}c~%1SG=Q}u&G3mUNPnBD$a<f02y;VaXvVlAB2E3BkZy*eeNl0Mr4rTpm zPU032(16TIkXgCYhpg#uY6Xnzn43Qxo3Qa}9sG3+<&aF*kinQvVa>x(p^|PjXiB(y z{G%mjhqCu;mF0X1l$-Z(LG_s`LU}=yo-JMAuELx;2od_$7(xV4m1}PAeB3yLjnUef#ype~U;1 z5@!nnjR1a7$VlK#-mwHjL<{}2Vh^}MZQ#`bk&6e^y>xm$aP34yM*i@BXg94K$_o1C z%dcx7b)$u^RTs3LCET-+|^Nd*

1qDDhumZFIgk6DtbRFzNdS+&8Q0n-(7W&H|iIe;W#{E!`vxNsVEf)rzQ-{7_(Yz{Cl z|KKVK`A*2uY;A7H=nZlb3(N-27;RnBgbNrQo^g!fMlo(8w%!Dg>;1q@Z`8T|!(zEI zNAat|Xaddg#}WZ5074f1%fc@V_tPf@0xSx|(?sjWG8atbhrdc3iRmhMoo{uCgO6H? zlfr@Si{ZEsaI0wpzd6L~ghGbyq9OsHRi%7c7;bA*1~!xt4EwcfQ{lBB&SqnRE`d(~ zDo01m2h2@RfXYibnzGT)W)Gx47tr$mWh)K4 zvgB<}A8zla%XdrGZPPZ_rzC{q>#=dy{c}ejT$7YE0A%Nzpr8m=mxb@@qobqH^p~Ro z1{^Tk%u+d3f#?T1P@X|q2gU*ryDjbQd0iI3hzt~dC$t_gop>RU7~oEHx+(N?f0A^- zP*{1ew}%FO<=Ea|ggml6Cp&*5z)mlDMk6y4I`jH816{dtlC(}tkUf_0BKqFI^fbiz z{2vBig?}x0JE(!=HCW|VK-hUsK?&)zD=Q9u0RaTS$6Qoc-b?b%ig^*#a$%Ov!-dy=l%Bzz1(`r>o#_GG7-anh8fzwS^J0Y$NXtIJG?{K%@1Ip({*bgw>;-qn z0kAhh(6Zw))IC5gc*kn=w1M6O6lgWw6>yt-T(}R z&ah9&@7(l;0KuH6RKceD;)v0iTMsRaU)v?tr~_0hm-lF6ZDn(9^(qLHXk~xX3roC5 zKSj5;wuS)%q@5javHQFo>=c}l8+#S*Q9U$OS&75g<^P?K+qTsAstjvYpL`a< z$duOENK{MWTOUOnHNMoe^QJ83@Je8av<6BB8+>I}Xqx2E82nve-9}=8EA%z0&GjCG zREg8mM^~Qx9;$p9EmZ~?rS_-l1s+>HE1qB+^2n`HdJ(Yq4Ee?)PnBlojJd0UY66PgX*{$FPuJiPOl9(qy4x(vaug`G~>Dd^YSUfj5M=INsiZsa{var>PuFpEclj_pc5R{Xo4-*pwFzMHRoCfpl zMnU?4hAX@@#!tAnBrp@WM}UZ@c8p4CvC?MAV!$WpoC5HSmUU#MUN8Us0IZep3-hC#Yt;~)~Ck$p;hTTWrBwuxTa8g$; z%c#ujqZ}XKkR}f4JZGbLoC4ot5c$kIPjbM_RL9QfAg3&>MF+!#{2tZD)q~Gp#!Tg~VBdB6&llGuHUp|y zegAHZuvH}QtMX4HGs$nn;{2DQqtXE680<&mm&hvIaa*Myh+n&OJeFca)(StMA1nBi zS9cMMGMjUI^A-%@_|kz(+6cF7llAK(BL#35S_)Wp1oT9};Y&8Ohq{;8(eEbY)9D4+ z1h~dl`4U8&4BjhsadJT+?7iz$ZRjrR`i9))qqFC;Z^g|e(h$Ov*wy7KZ8z^Nw%_RL z!s_5=CKmh3+&4IF7ilvaeaiI|9N%F6xvIuzgneL9oK+cc6ovuC=kTQCI?;EdJuC^5 zyUtsgMdGbd-HT_2?m}$XV(MU3g@jfB52yI9z?mHa zfpFRWT|%CP!zWk3GMY6@)0tzWdx_TN4Q_fCuVw^=xuRn8K!P0J zr>_$i5VHl#+WVTCS#rLrUxh;?2XvqDW|Gi-mT}Y$=TqqUy(!+sMf;TG^A~RxY(I-8 zZpi58Xjf~8@C;|zm!{i{6&_WoPRnAB1CfRc4!nfx(J91eOT(b2EPkKrDj1hpo*c+J zh0SGu2e21$X+URcFi5lPyIlkoQO%uABtRpWp~9sRk2UDsSoPP6R_;;4qQiv87b4|q zYn`NogJ}B~i$xJ`_nw2Gg@^X#Sf{ZY_vCUZ9fy_uQRuaDfVXR7Y154eU*pJ+F3-EB zZ(~^X6n`4~^3>L4cPldA?kyaOjMSqJTEwixjU7Navg@+BP%a(Rhc=C`!QA-ATutSdht>{I^e&69ha^(ab~c`|9*tY9U!?*z zA5Ys%M5czOaR$0&+1^G;i2f~Ox#cECGa|?bcV}}&=h}V8wsd|LWhEDQ)FP0U_RMFURY$+?NF&dew zJUdzW*@kQ* zdFVO2$Ch&u=wP?t7*ffh_yjA*=ka@n<1snM;XGg&Wo^86 z3+MwbukcA_l+}59FDBO4Km`P>K7ybLQW=GTKxsmvRU~E+bk%^VHp|(OlCM zawk4EsvUQP)D=(yAnRZ>g(aROx13}1MEAC#s0VV!Sez!ye*LUpB>??^h-7lo5AB!&F8Hco&jdl~DS)AI8H+Ri5 z#Sug>uDBgcGgEsak*r|$?l0CwN3yDz6zXz^3Fa)4RlO>VD2u4*Es4E?2UaR5I#|S? zr>fNI)2Gv|`aASO)AsnPO=|F)J^0id;=-V%3;%KwnbccH#4V{3mw69#idQUr2*wSY zk9cIN4XL+y`vyzU0$R*xwq7kK4-F1yxT-IbmmJjmAQlZ23zNyL63Wc3wo_OOi}m&M04EBQU-Bja9wG&A90rAsEEBi6bh z<;?htW169TQu$Tq4GU$9T|0VW4MzKbqQ;tt7_3IK9@(K zUjp3=F;VL$5$^WQ<(BkyWBE&T82X@mH7_+U3>}sBVsgNs|ChL~R>RG&d_2*g!w>MeGT@ck&3Aq;hLMnqAE*WGjJB*TqRU~v*z1-Bhw2)Xy5ib)g<-`s}yuQ z5fU{Ka@o5WLS}N1f3~JFN2GfGXA82k>|JwOqf-nifw6bvyM>L<7aLd9)*P=}3v;zR zH{ab^hHJ1HBIBNPf!RA@A5kT(A9WR8$$wKBfTn_Sr|R4y(+gZ9#R{Y9>P7$gC-i#i z3M<&<3naMfR8TW0hI%oIXblUhCT_{`I!FTv@aKB^GO`QHXtOMA%Z56eWbRGdu1XVX zC7N9OGj+Z6wbMVhI|kZ%_z>mbJ@Lp(x(Mr0fL2uMYHRLQ*W9BPVN##_>Oiw>xLjiE zW;t!M9}rt2nJUX3CPbcWtjsYv>#oxIRM=c(X`yIQ{KdW&{@!hrvp6xaN{M3p-f!%oR=@8yI6p zCCt1ur#*Qq6RjP2jjzB<1pG=V)a%Sy`n?4~Dyy;48owhef9Hn%ECVo@@VCadLHdqX zuOaI~-3pmebng@<6A)oP(sOBk=%K~>0BLAjx4<7ic2&{bH500lpzN@6)_u)5;S{#f z^&*d}P#jYX|F1ToYd!9GMevK;=CvCpi);XXe@?h%MaaYea2a zN4#R>UqRwvEfqL`O$Xsq?%k^!t=VG1LedtS^`?Il_@%2t1j+TEoSD>-^K|?2mUWA0RUiLVH6@PC$eA1UhVT}i zBI}h6mI#lOhZOqvY`lOvv!2>65pKj9IFPn?T&TCsL--cqQ+d(J0C{onr1JOHf^Y95 z*x*$2!+PCxGOTsydALek00%Hv+!-P0mfu3lLF_=@^;({T{I)NuUv6MzYBeAQ z8eD%$d0R4|VAOQvqK(T-^YU>Ix9qoeln}xB?o*Z#;&B4eto83Ensb#J!y;qXLi9T8A-*NnJ|?u@WT8wYF6Ccymi;4&BH4qY8Wee83%8dTG=i zbN95y8b`8{a@y5#u0lzT)l^O;N278tW_tnKAbIcgKxS<;~^W zaohO1MQj}Cw$L(bH9B?X{M$eU4;2@CczUXl(`)+g=#GCafK^`O-!eO@g?^RNx5_hK zyRRLk$#*v2o;0r$lpheZXsNR`h^E+Q3)2&b_D0?ph<+Rj7tp7mqnFJe)C+grO;aJ81e~%TJIBK*v@5 z`$5;M^Vf!rXm8zr-JV=lJH`QL#AX&&^UQJ)JRe7StgQ;Pb`GUnv3=Cp%-kM4Y-nCX zt_<$nQ7al^3%qNJHOhP?+0@Ftuwe0*r-B0KTCn7~)dHWa@x5i2$a#lX;}iwFrzU&>1QZnBKkbYabW`2KTk<3I`+vv_geU*)c1;6k|D;NDm z*?Q*k4Yt1F{?JLo3+GWdpu)fFpLcgXNI<(cnRom9l4B2H_fJ#S4 zW?X;>hNgJoF$g%{@YY_U(N<&)96c z_7(;wu(u7l%2uumFK0>~&cc1CfN$Fd3{rX0MfyNr1y0K~^ma?yYpy}eXuQBntWN``ObdtPl-YnG6u`g;wsOYD;X+Ez*4 z2PY0Zl_Hb=f$V9_0l(Rd?C-U4$QZO)WbN=)I(VwgC#S$ua)jF?(4Jn~Kc)pIRsy5a)cOya?A;dkR)4TUVl z#hE$P1RL-y5{W=`n?k9L0A{0w>pGp4pbrf~RT|8W&I?#4y<_HJe5Ar2-|?_^4moa@ zy}tki?2;xH-H9!kZ_{&`mG-q)#{7kCPQn~`fB*Y)pT^XHG?qdN6tZc$vDnTzR^P`O zw%bq0xnwYk0vs-c3=P>j(!-7{Hox0^C>LF{c5vXnQy~Dj|7=v7dR8sruifi_C4+(( zunu|@Kpq;-#q~x=`aFLu!c9(Rpzo@!sZu%$3;Dy{SVB()tcT7)<1u(7f)`G;Le(V` zvoC)wHbm?8{TH#^Un|reIa#%npYV)DXKC*hg(nzj;C%Z#hjLN>)~&r0LES@^qd-kfujXD4T=)JFu?6-xxfHCtUR z@R?G2T&3}hqr2|0^cNR$UL_s)ga@FdXF6XV96U@4N$>9*?Jy}-#;Hnk!rxpFePD{E zaRNSbHNnGw9}D&=m5oKUzeiq)4Q_0~H!_4X7S;W4T^(>1+!{Jo6Qh3mVWo{O)h>5z zM!v7zBj${$j?TuQhj}{UOfL+23#qocSs-@uPXY1qcLA_U$D7&cA4oP-7o8e1VPmzRXf!rNNM>iL~h zzGb9}H%P>2=9UbfVQS~;?~Vh1aQ2s8tKdRQ8ZA7&g5`zJQ*A%(rs(8@yX;cF&Z??1F#)f=s^r zfS*K+K}t#7BXD&(`VZV43?4a=am3YRGXDRe>n)(7+}`hT5CMZwQb{F5T0pu)RJyyR zrNNlLl*RE|^3_9dj1f5+Q&l086jSAMkqO@8qL$hcfM&G7xKjCj^c z4WMMxjH#DJ3R);}uH^w~#XA21rwX8?&!%~1u%38i0pS}!n`tC;pRwvFpHN|&@w}=hRvclYUzLAP z-h7kOiKfN$D)~qB6RH9vT$>S=5{j>FeP}?}au_IJ29c7Y#5SjOZ%T^3E@Bu{P?f=x zgSA#=L7p38WTC}kLGIRL;b;1hhuqb1x+E?}Ko0oHJj&@J)y?lB)yW59DC>M2m1V!_ zwwKHCIuWTIqMGK)6>m<6?33Cxc4G&g$wgaoot0T;Rom3E?5uu39xa@4{~C%ymzMCl z0AC;QbR5a$K=O82KZs-ro@C8hteLA&Nt+P>6ld9Qk%M*F_`@W>x(!&lD zrCl%7Y+*Mda6T)e{*53y=Qf=!OED!U000R|BN$KWm5f00ED@UtO7rfT)9II<(ZVHh&k9cixcLmKm8UOx{w6bRdAZ7{T925ijsX# zSmA#tQW4I|6(0xp(ok#_-L!q946+zwH(LEkNjY$wyTy*x#K|$b{j!uUWiDapelLV) zr|_MJpd=s`DT2jnf|HQNQlv8l`d*D2vs;7QlLO0EY-?~*J_f$#-f7xl^SANb8x3Vm z%5e!yQg1%5_nyBRc^XrLWXwDKoq*02$+DDOig7?_I{>>K$tx9e#|1riPR|x+T2pe> z0Qj1DlVaCO1_(DV*W(o=nZ;EA?I=$0L%HUN8K9@jW2R-RIC1HcGfgnHA}SwjY{Io#kGjZGuSBBcjyKwd-ojYS&F=VbggDnUj8dDh6^x z1fx3@PS(V>`g z|LbLtAPe9i8hRj|QPtactb>pLC+Q{MD#eC=(laxG9_zxzIOOZw^C%52-v5ly8i)~q zXsotg9qpi*?KCE+87KHQq=9oEJ1=J{K~}PhSwTA!>JWJk7i5yUGOj8&7t7Fy)Oon? z#?Kzy4ukT_Dt2Yye74hHocI_NfE#%VQO$|~6CJD(q`IkZ<P!*(ZhQ6;ZlT;s$|o66H6CAQ0QAT8#_%L z4aH?3`-~C;r;dvb7V%oK0Xjh*HG(>?s3u;8$$#b2x+o5Ea)#CE zQRYJb9g;+ClPcX^jn7q8wCrTw=J+!*5^d1P3WraQ=@mH(_vTpu=S=6E4?fMQ#;BwU zbU{l%ISi>wQi7ddP3cf%D_9rF7z&U5_|5KD&4o1z!>q7%lA!1cPcBHo70C37Vx*P$ z*;Jr(2>dZOm8t|&WlTzpOjr$2Y>EE~+o`aU?vJjz0W@av3xtw<*D1BR@nu)50StM# zE4l!xMW$~E+TKAx3C~|l{KdbPkK>f3qs)Io=x4rSOM>kAlXtTy0v3rbX}`z}(d*Vh zdVpbOE$%3f{}g3EJAH1lZ+Nfn+#Gpq@!bDs^m#yu43K`Q>`V48K!jQ*nxv74;abn* zt{CmVYrG*o{){mCSm6gNYrybJH`&epDILhs@-?f9C2KSdx-BBPgVX`ckTWPvf9i2p=|89LO&{3R~@X`qBSjFWy-PXhy)AClX-#dTwh+!f}XpA z?)*G5r@gbVrPXeQdJ|63b3M&bKU zxfAznIVWf~XlzSFv=}MOx_WTdj@trBn||7jOasRlnXJcAmjYm+p-sd_JGG8#T-70~ zkj(db*jB_DKerZgiaO&uJTEIlq-)jQT8xNCtWUAO3kMqIZ^S@LG-Q8C^Or@2R~v7Y zp0#m|dh|8a#5#9aE@J3;Y52M`r)s%Jfodwt2yCc){oY%2oD9(#+06mpL+pv@G9*;O zi=9E{o3bEgde%0W$Pa|fI89F_vKQ6FMqk#wL;eE7W@`%a9#uf8gp8(rKxCsyUL3*X z0AA_;gz_!=MU~G4c-*%b7YyuUatcrD1F;yO+bdRf2X_Rt_D1p~6K!KQ&CJ-*Z$ICT z%^>`^mInAADDrRrIWz4P_mzMU!-tU)k%SfWOY~B^&9xb8fH-Tgtim}BYZ2ANQ8j$l zw*n*!7KW|w2*>VSJHp6+@vWXCMv(;#NLAHD(ro>{*5bjn9bQr93+7(p)zHvWwX1QT zh!3^191)PrEh6s80WU>kp&K7b$L%n=t8N6H!eatH2DU1x4i_mw1X5Tivtnsn2ttCH3ON)$C02X>=yt3yCN^MU4^E zU`$2xs97`PUiWfI@MywRX4tc|t;$o|)$hO!Nw^B}$PTHc2$}nR>!4GA^pob90c7 zP?Ux$(Z74^p$AUU8bZ7r+^y?7d?O6cRC|8kH@Z9XYkX3;e@N(amFfDcZPcsp=P4G5 zEy^zy#I4$yvTTV%0=ZR8CcQWt@<&MjovXGZ80E2<@jlz=-hKQgdy9g1>!SjoA+gfy z&njs9>akMtH<~ZH!rIXfascki1SR96Nl9%6JYi{6)O{IgWq<(FA5K^pvB&46wMHx% zk=N}AMQx8W#!3g)TKKF_xmuJ>ahBbQXo!#fN9=0+0YTxp0lhthM+I3s8r%8&!s2x?)EARrC|D1CxefPzTm_*LFMC z7xO1*)(Yy}T)4T5r})e3Hl{#t7y2LKoR$zjg|qsZY<-PI@vYq=JB!L5pN>jbt5L< z@q!e)C6@*j6#=(#pbyKsg7FD3|E9R^{0sZ@65|EVAhJ#LP*x~Nj+D>O!P`M=fauV{ ze>1n>V=jYgKGLD5q1jtS(Z)&%K;RerGov+=Gb%_9^bm7-e07V1(#rRq&lO>Rp$kFf z>1$ogVxZx0IU4|2(4&soIc&t7%AfpSajR*#XxP+dMdWE2f+~8 zohd2;0C?VS-jrNv<18`d-DxL2E|2O!AU?ik^hM(G1VZMK($O$(t?B6StWrNp#rgGQ zS_u(iz1*>k7O%NNZ@?(~UPW=Ou@UBJq;%6OMcu#+T7<45-ATEHawhhpSyawbzAd%GqdI!!`hlx<--d5u z$rYe7ZvR`2Mnoi2t!+lD_jI#H>5I=0eOte+s{O9&t);&uFZnWQkz!70zUn)D-(P4c zIjM*^Yn=(cy25$%ErEJ)vQQEf)bP*bc^_foJsN%isx7#Vle)gQkU7EQ)Yfp3VhrbG z6+NI0jv3PSsNZqtMx#*j~Yc1!gV#IZ8EpgQ=}-NEb7^OY-{8dx+l;mPlVeXFrun_*0pOpSkHvjWaaRBv}4vEtbaZovux%RrpHZ{yl*pDig! znVN{6x+(msy@j)$bERh{y}<^B&B646cgy)+d#L%N33>SMxGW$oM0dtaD7l~nz7#QB z^{F721FK|4q`C~Ahjf>6XXb?XE}t=h{vD}l?r^l;NxmR5bO%$R4L{Eon6e@uOnn#b z4N!yR{n-FOr;zNR$F;3U-w^M)!K}QVAv&_srI^#55>P}HDqCD$1}|mA@2;*3v|h1? zAEFM;*kcK}EWi7>9x0wLwW;i0o$wv+Gj?hfE8EEl(}Fj@IXqv`^Xw15*ooQd(+9nu zM6K56`#t=|`}zeoC_J-6A+zOwRXUlRpt^JC;(!c7x?|c@3Sp5ZN)xP ztw992fP<|$C#*Q+PL?+ZKS$v!uRnJn=jcd1e|j|hGB+#k3%629p@})sjC4P0zlx@* ztVGDn<+2QXl2gvHi3M04A*DBylhgUO!pC#D0fC*HBv&)8RuXU(b*~B*{}OXRHA`EL zeh#*e26~#N+nng5atqhA}}nTiLs=Hf}Gt^sYGl~ zCC7)~iKG|U1L6)+J_PtUJ=G&6NTJXtVS!A5g2(xBs{tiXgdEKV@V+AN=FbF%DP>E2 zcxrAr1!V$r*cOO;uGE**OBQ=k$uY_9-9n}W#}i~+9;F-9b!T1iKz0yAbCf@+h0iam z+$0}uotGtPi8FoP_%2V_`E{eGZX9QN5J>E3CD79xw}e%Hc(mOsWi64v2qFAnW8#ft zLY&=<7z!yB*b?u`>C*%J$t%q_7PcFYj;u*kQexz)*q64?1~WDOg)#lS7jMy0Pv$0 z^StP4(A!4)yW1z=3;dYEFR3F^|6~!#Nm^8EhX6CkGS>Ew-rQA5J$s$T>pAe-GNTmx`V< zWgHEH9WSubt}YaKLnvcxN=yQ4FY?V{8ET1q*%z}n4A9;8X@Yy7JCAope}+>NIyPbN zTlBwv+$%tBD&h?a`al=Uh}Zd*K7u)@DF0L_WZ-x&CUrd1bSETypt80xc;JZ*LE4L0 zp5bL5Psu9w$!WU3FQTa2MLlynOZMoGDm`yEhflCcMI0tm+}NR4MG(wW{`5b+bL77> z&xceCT_;=--kK4lJAPilqz2Ad33j8*W`$pPVjX%j!oP)I<4?%-0h&`-i*^lK%|y@q zOZ$^r8s^DZdcY_&xjcC7kW1jkUk`9lXw-SHVdJFu9JHZi+i zLAnFpsUWUOC=^}W`6qk2w92+=@>+AQMn2?vYm#yMY-LHQVw*Py6J>7vpCHSoxZfG0 zE_+8dY}_dS@QBV7(W)s&*;9VW*)1bTl7g|dh;*hx7CHd7^o%A{>)DG~JU_{XN=4*b zI3~K%9bR`?xHH!S8=xQ*Q{QN2r9Z6YM6;kuM0L& zj*4BcP)b-Ai_*kWn^AAOa&zS*A!sjmEVXnUqj=r4+5C?ftKbZn-fbkG|yEUw7$)atWq!drcWx)Ibx;vxm>y? z+q6XPW&dJOzy}4U#Qh4h>vUy}?q>kk{dE2^=TiFkApHNNW%pov?!nN})|z%+ z4CZq^{P0Bx2+pWMi8s%NH1M{PP2l+nR39DYWk}W3P^JQKG|%co0QVK-B_P0CnegGm zpTO@VGdDN4+V_v|!K>hp&v(LTvUF|hB=t7zNjh!6RAnT`S^!IbDdsk}qez-ODXokY zbTPTfdIq>uQpS!FEGBeZOvz0qDtUA*#s}jX={SejNQ^5vE<{r0^{pJtavp){F*K^% zOGkDkd1>B&Ibr-Ze#IING8{lrL4mek!Lqy{KY+hCQ0NTN=ix&ARTL*_Y9B*;^1xb4{-cM zfp?H9@O1M$U!#MAs}v4adPnO{X0(nz{jux$fg#z!ss}(7@#Ute&EM?fWWLhR=owD` z#J0DVg+RSEsR!&7+QWXb9(&k1q9^~XqdQ&)Ttx8*q<9P*jyWS2KabCMiUnOS+5l^t zUaf4T&vDN>KNIm>R#I`KpkSp%+EaRl?eiQ8N^cu`7Y{2I$xCry!@;-33(S|&q+(Qg zxPV6z(iGSamr}LP_2x!66j;g!o_!MDcif)JLSA10j0)EW(g0O^t729a*!}|7gj^GN zoLNT%?L?8GAF#?nE)fY=VA$X=D8s$BmXWL~E-tQu^#}6wBH7qsDslg)YW*gxpq3db z;5Wb2Jwp3Vms z9_q~o6PNtgmNSYmB4gih0xnb+t&Ftk4(jdq& zc`VNsX8XsCNjlxU3fH{iM2&I?5d0+~C@M>1t=Ib-;Dp0Wk3qKKcv@I%U`Ti{M&lHN zhSKmD>7tzhym4^_55wMleWakDzKOIT2RAYxuOk{nTAM(x-E|y>Rq_wOwE;lS$d?Ao z%zO^ifHf0u#KhEiD2a%kfy;u_;%D7}jiZj+u4bMpEsgSZV#l8}ZRj>I!z<>s0ysGR zvmg6i$>}$sDZsbX+cagu*2o^8y77eJgn|80SEU+=Z`rowFm zFL#>&Z`VN(EV~{@=Rfb@T>4FlX%st~F=$*7oPCfW+N+~(ZDE@rl6M#q40`4+fan^L zO6wP$*{-U*c5xlPxnL=HJ_y+M8}WJtz-~fCW0nWXB+d5=llT(Q9G8D#RIfy&Tj#It z02jHQU)dKnTfJi;6e<%b%N%x1HuW0bIyILqK)dEl1f+**Ks*Zks0V?luGD^Q05%0H z2VU7o$Im3e<%`JX=4NnT%VMM>h#L@iYj8jSuQA5(>kdf8HfC7}OAc zRi-7)#fLXtOl_BMzcXH$%uc1am=ll720RS_#+Vy`i<~rE2L%X?jIN-@IPJJO*@QaC z>vAJJ?L0MVnRW1mXQ=+_PC#+36&7RGxH>!S0r`d2X)`qvI-PzQ#c0e!rsA3WS1wQ4 zH{%`CX?I!a9?z+?H0`8v<^epOtUp(IT?@BQmzahE+uU?;>B{9YC$I;Nftx5HJ;}0w z;S89HVIbtywgN8bIY7_&M`-!~C1Yfu_)F@?DJAK7X0CkX)63EgKXr&*{ti<&(TLEj zK8C{qD)<9K-b z!+qwy=mo2vjnfei=<+QNuGk((-c2&19(5seGjc-2j=Q~ePVYDf4@_$;1LSp9RGh3&eR5d~kC+5zrIL5lJjS5o6aQ!jma zAq%2dH66IG-6Fm75$Dv|nV+L)#m5b+f9bow{}I?P>0P)2i=WiAw1pFpcvZ2 z9El~x_^!{=@HqtEd2feUBeKT->j2h-FD1B8Wg}?hpj)pO#dh#V{3_n~WkyR>tHSc( z?!*qMv%?5RwvH|nQ3>_Q^@WR%vUhaD@WdK;H9(-uGDI_uHXQ+ zKS)16;PGZQS2^9b)%9LD_J)G`Bm%E}!+b3{625ti|>S;&bD^)XVQnClU`fY*4 z6FIiPdGI@r9Tm`=+l%T{12akR5icn+gikrnZ{eJ(H@#@5=iTj@l0hd_<`r!AYvy3G zdju&#?8AL+D)Vm~FtyQM1!wqbna)arA5GtIO${mnFdZn&bZT`!?L-^xHJ1*TQA+aU zdeEFC^?jSMA`{Br?tAPjvfYHMw0|`Ez9jr|ljCzJDdwxqCDP}KT)_*W!avPB@H*3F zQ!LkCZj$rkxg2Zo$O=84q=dVjvc zn>VRH)dBm~UFWm^CJdZrWH^{0Iax=5#0z}FiJB~&AMejU$QB&FbnXnroO-OKx%I2} zN*JwhzcJ-*`A(f*;|nYdL4i+JgtGNjCbzF9-o3CIe0hCv0TsU^@qQv}uu#LwO;AiH z>2&d~kopm-g13UZ%R)@^ZF=d5I;{lV=1)qh5zz`*uRgwc;6yQ+xadmv^1>{t@e<0s zvz9^czF}3UF7CR2mkj^e5O2BbFhiiwS!4vg(hCMg)WX{sc%GMbZ<0K?MC#lOE43qK zl4a*FDCLh%X3N?zj<%$hQYAizQu@6eqz@_;ujXdSi{gU-SF=B#=9PWMgREoaMbkZM zwwHTep|kx_8+Z0+O~dZLFH&C(C+OL9K+o-DNzsrs18 zO$m9B)As<{5qP=q6uqigO`}CcfY*w1Hq{vQfn|jqd{tKaqci5ME8NRZw`EisyIA8z zSi*K2uH3LbqTZ@;qTBPn2)O8Fj&wgEZ=r;~hF3d8x}Oo!>Uq9>6}s(wuYA6zivxG} zgzj?8(4TKdz~}tX>}wa86f^sK|9J;T>7oRJxX;N)4K^C&?F3!?_Ht8?5w~uS-Qvk_ zvU9ISC<*Cau{B;d@(9XiPY)y1dh_)x1UPFpHCE zG(khQC8tm?PbSGM-7d)Q>AsA45(Haxr0Nxbz(PvC_~LQeQH8H0hz`#}m4H)Qq)g&F zc&7^D`uiiQUZME*lAdN(uJXopV(_H*2oQmP?Gb9o9aj7jg)n(F{sHpOMe{26)zTmgLszb#R4sKee zC__sSfIucBDDQQWj{FKG56c=*yf#m33|cSkS8 z$0aV|%fJdkZ?zAi>wj1&m^n=`=8N&5=E|Y4?r7REPrcA9Z*&&Lnj0DK7e3({6lr?s zL?grO==rtEQ}DfiJ~Ex<>sHEDIfa_JG=9%0hj?+)If#FV8StQh5yM^gNL!9CrU{ya zX-j??6qU|QB<|Vn^_OL<2mWb%L&{v|*In=UR7h`3fg>`1v3l zLD|oux8G5u(Xlixs&nv+5Y`|x}NAZF1)~E zWdM;zTr`1uiS`%_OtI{Yy`sXyVp}lchlkf4XcYYfbk@XdYyoW}Rc^gG3m+;j@ zJ|$1V&Bid}_0$b-VoqlLSvn!}rck&yaXhqtdcj?11eI;dx^Nul^v3UMzOyHN_X_v< z^(IH{@-oWp<2BJqHN6%R`}c`^$gj5f?^m;TvZILK6|Q{YBxY*u?%W_kK1)rXkQ-sH zO5bfYtWCixC#wY~E#XG(6Q=cvd4}_Z_t)9&$fW&``$_JB3#_naVcyunBE!3+{Lw!= zJ&M$E^KvT9TkhSPb%_};8*JFZXqfqlra-Lgzqs_R5QA*$28w(Hr~f{}F((`-kd_3m zd4?I)^ed;!aHm+XV&cn}Rch4~Wc;y5>RVV0b5T)gV7mf8sl~SUu4?FfISf@O7|X1! zbE0$e@IxPpZ<7nRv30c%syb9o^IDDU+;-+9nU=#^{?K&^;#^LZz)V2974yk|JgtQ zmN1HpORU=ZJvq#qZnC9$?`Ee?Fp2uZ1zN*FfyYdzq-6b-bu!4svNwybn6=`hMS^*UuN}nQ2e< z=$@agGooBhmebD9xb3Mb%X1lGEW@sR>0n+9aze<2tH}4uL)WG7&%xwUtL;ri7??Yb zvNjH!w177>e{)6IBV&@m?&VZnS&$v!T{BToFTOAC5w@Cvj z#VdF9x#Nb>spI7ZY29-NL0{Cmh^DjIX4KLk9J3`xK4)Xt)w`a$6L7qu1$}9kSb50p z^3m!Qsb_cpBUw7a`^1V|9vH^3OP`D%UIX+>&lB0vrCy;trGEE-%bH9-CA8VLhW>n& zI#B5Pwp{plnkDvq>V<9&|G1ZTZ$2aNKL+{xmlFJE5t@P^LPm)v=ask3$*lv%z#3rP zAb+cvyoM2v6bexhh!t$#PTj_e&z+xtUo_X*-K-<;r6(<&xFQ#D?^&~T%I`IOB@y(* z#U`Ai;#7(%LEUI0A`UklRLBTnShT{|NsFQF3e6vC#b`M#uRS%eU5tk-1u$BoSOOV! za^cLgD{cwgFTd1;?uh)jxpp`>kISh14z6ZRS(@BIDXg#%TSy6gAYeOZZOH7%4>kcF z-$$CeC(}~H5ws?S{Dv6$U$Hu&XJ7X9JfBXQG#Qi`RBEG~($PM2XguSQM8Z_n>v*&_LBBhN1fiFc!y@RY@!=+{YY)8VemQ21OB&}=)Nq)VrVi;b0{n-XrfA`GE1>h*D#Dgp>$^Xx zazUPrpUj5R!BCipezDYsjcpV(kr0&j8ZvW{HlkrX5O|MbS8?qJ3~9_iO@rTG2vFR* zIDUHmD+ugpqM&4JN-(phah@dL$6udbqsUkhtI5K0H?qaf_S+3Jjwfu^p)r@mBq(^l z(VQkJ$0`aQBhu5h*t*dn(^KU7){uM0nsKAh*@heVwN_ z<(lh0+T>gCs7zoUeu5*!4he%_|NGF1}{!zD=A%rOMoIlLjz?@$q^R}73O2N`BUJM!yi+kccRCX=B~Tyaqx}P%NL)$o z#gCUJEZ^w4pp)01ONxL5Oq?<0h1y?b#+x_pzf#jbgJAf+S3e(e;aYXw(V=cxK7DLz zgA2hY7Xiz^NYkRJAiK0wa0JitBt_Kz4#;7K6DQTP6DU}qJFMj@JZs^PdX!8L%~S^| zxg+<-A>zsQLP?jmHWL-iZq_oIWs<%QTc0?XAt$~4Kf^2s)~FIw8%7J>CZ+buBU9h; zstvt1f-aOQutP~Hb)8IEUdhkaqbR2_k6Q@xr)#QypX9-6niJMz(g%s6!c#|GVdxLO zkKPLfu&0aJIlHQ=cmnp%w}h|1|Iiiula~3P`u`{B2OJL6$rWMEP0Ykv*eIQRPfVjX4G39&O}v zj`*Ix@21vXlav>}(2IEnUP~x7v^wDLNtD}EXXU09Fb*};jx{;ShfY>EO(hJ}6~x|u zFf^KAG9DG~?Ka7E`733EETd?%}B6n4a;dLRm*%21va1&cfL++Zfq$X|CYTnkFa+$;nh~zOjV&ZpGk&`6) z5A%+s49)FuBi|};6lFTP94l6l1s=H=Pwh&O_@d(brP|K)Io7juWYnst80kVkJzmme zYMyl<-n%&q^+8rCsQ;O*&>`6pvib_MXeWEbHpMB4Z&3+{6RQQ{w{W`VHNRD;A&4sh zcaGZ@In`sd>PHVc8tJp_?Z(}Lo)_40RC*Ac$bFc$Xsiwj6o>6nb(;1x8&rI|ygYa# z!`C}%93U>*u7?H_!WftG&;7HhWsyuBN$ z|E$<|(pt(5geDVFHQk5oW#5H8677?YSxbh@C%jbtF}S_SvG0ysK^?)d!S?gm!`DZ|qW(kAgH)u z1#r5)*-ndZ7BwD~?19q*kKdD$OuZ7L#1pXn@z=Ag>YVOk*+z>fixr+X zM)U5jRqf7Rzqonv&o6#WWUFVyC$G_lh|Pav$;K&HFz<=IIcjs z%qg{8vJxh=<}QGae%pRa@*-6D=@ZUjb?a;L&?W1c|SAi^2FxmDat`(f6XByiy!e>d_kA5#4y;+#QiM zo~9Lwv=dx-JWA~?)Pa*ba&!dI1_9m<#&T73906Gsv#bc*8C$aRU2 zzb7T#Ak236runv|g2Kh+PTJ{)O?&+cg>B7U3a&`5n=97x!oqjix^GB=b4co|?y0&P z*Hbv~lezG#GtG(n7M(Ocyzw?pZuC)m0_9|KCnT!J&r zVMzr)Yv@&7xmb!)ftM>j)V9{}_QTJ3hcX;*(Qo8`U`)K?Ia z%zOO)k@HimN))c^d-rv}I0!dRWFe^YF|q3IxhA7tiv)Wb-9jii(-kF;DBZ=`zAj#|5x+1bB>T1;71%JjP-U>zR#o zsl$L;vMg0_o-s|DV^kUs*A$SGSyuEjc8DZ%;kZ`V^;O8+rdMc;RH-?0kf9JR=++;J zbN?u1acZm2N68{h_p%{WLC5g%EOiofP3!!feas)NTl1YK#NkSsG8vWfNy0U=o=yi` zocUAQ>?}12ab*@ozMtoKmI(kPUiq=u&eV93<#|J9R%010`DpZET@vH@fRumT+A}8A zJTJO|1(Ui!Rp_*W3M9W)U}}84 zvbe;~cxA4$=XYYFVSP^rYC+6c$F~5!9c@Zv@XkC$-`(StSGf~Hz;goe-zeW%yrxgb zC%bt`<^Znl7GiQImmJXFKCm52!&WT!f9dgWuuttbj@KN0y_DxGEBIgtfcHVz67bM-Tbwv76q5>_92n zWUpz!l07Kf{NxMzIa|J%fL~eYFF8_7orR{|3i4A<^waT2)0`pwI*ZPysk%%ZOeW`@ z+Q_le(dC7V5WfHw9E$4wS{^$Ta)a0FTO_1P%fH?lX?tMLMBr_b^YtAEa~D=f%vdF~ zShvljV;^%lKzC6Zc3p>q83z=ZZ}5P3hX7~T5M|F9!S4m!Yj=@{FE05WeI(31LoLtq z+iiAbRC^Og{BLD4kjbDEwWP9)>XrnOgl}jRxI{JNu(2_|wk2y^$Rh3!3$9E(J&taf zNyzv65Af#Nz?ovV5Cl23ka`$;T^R`ShpO3~!7(rv#cEkh9Ymbj^Eb=gRmLf zM;8#TV{lwqzSUT)$$TgmkP4Ngsh}7PhNBafHEu_A1L18xe@gYx)yn8llx(u>2=h&2 zX4cb88@-9z^Lw7*;g}vm09j)W({D&vd5=ItY~;5!nb~;NB?&bc9DJgn8}6-olR6IC z9{-$C3@P24oesBoY;W_dlPyZl7U^0~@`)DilW-ezBH{|}UW~`yM^slKVPzG~386Me z|GV>5CFgc)ZqU8$TKJ*a;@l9b+jgy`W&C}HQ%^IZSys4-gRI8ZF^Vvwm_v}^>sgw2 zPQldex-iu3nbOd^^TpJBAIBe(lWqx;zV2_M{07qQxg$J2*Owi=LZ3K4+@v26g{%Hv z^r5u&ZMiY6r*P%`3VoCteBzYvUyAdeb*Qj)2XbOjHzg>o6<<=v$PJK+KCdfS3*l4& zC5lQ{GyrVWFONMp$0+u+h0{51601V^>owoSoW5|S9VLIo9nCz+P`Oq@%QT^=Tmzpq znfLE0l3tB(2LC_iplP?)66`QQQCrh{Bl{*bDvRYyFY9M)4%GW( z2RvAH1EVSd;`h^_U;aK+#Zx3%Icls=Ube7%F%Dw6pOoruhrHmPM@d)5D9lJVz{YOT z(v^izl-)jFE$TIV7P{75+-=~g^Q||El4;>$1BZ@k%=6WbmL8E6{X+4{^{>L;0dRAD zXY-f%=QMWqy|>94uZ6O*(q3q@6z{;2BUoX#o**VH0;&+^!1_Ow5kLG{ttmfeyeR$X42~8G8LRb3FsT)7<8dMAKr;i(tj3mF{!*wwFtds>GJ{7`F;FWylk zSCe=ZO)sAA@Lt_5-x$&Luq7snuv=D9X4MI#eG#@~noPTy*5T1VD<+cy=v_5(d3v0d3un?69#ul6-ITmvX zj<*of?#?YcQ)ja6-4m=l-NnJ)*UbyaNWHy+fDh%)zM3iNT^KLNzDcE-s6Ts#N`7=j zXvTGKq{)r$^_r^xCJM1T=EF&7zH^;PLwwC|_a&>FYO7D zlbet-%=pBL4m8rzHxI+lQ~!lDNZ=tyAC-QuCmB3;bVO{M)lHF9_<d8_0lPWCyIB8PD zbBMxS!|PFm1klVSpSnCqI6=QXEZFtQUtH?vzmJOpa=RgC^GruIrRDrzok}VfwT|&M zf#!0YCG4iCeO#8kIu-d?9J@%QaxPv?6U}S7SJJ5PMr4?5=+9vkV~9MAa4xyV8yv%@ zxPQ_)K}!ZB0e?o@0dENlMAUAez~aE@@@mrA!nRg52-)(>Rf&S?OtSz(pg)w za(A*^%cTp?sLhx$ti_t{!yJl_>+uxDR2;6By?vd7RFF7+p&gOCJ69zGd@YR5^B$^x zeZJ(I)JFP$FuZWIV>iT(z}4vBlJb)LR(|XIUZshVv`;Bb6en9b9NZa02?o6V51sq; zbzWu2s*8&5MaL+WSd)8C*H8|*^pHpVj`(UIq!-!YK*@?IQgZvYdWVXO$?JO`%BJUt zM^e)Ur?bI?x$cDrHA)7qWm8JV;Y@*{7FE+)Dj*mzAXtAGT)P8s9zE1_1tsW9gKpiO z$9$1t^G$cwXDKb_8XZ0aiE|Vko1PvD><+zJSFj!NLqv9fu7KCSfoR+&Dqk|`e1pDT z{o-xn#g-~Rvg>+|j<-oH{X_4Gh^NTyiE`-CeVV5<-bGuj+k1lAkKOb*xZS|U*qg_s zoYTlv1)cDp1~UTL0|PjG-DMz4wg1Qp`ng4x7I)P=3!P)G!W*xfzo6rh61}nnZGlPH zwli{DTz)OPtYpIUif?n6pGe^=s}50YT15UsfxuXr! zr=quSPSfSXN7^+|ll5+M8uu-KSalR=wzsZ5(K};yx4Y}C(|5$fv#7Is|3mEw@xwi~ zf6uvMy@CCKN=Q#4fZ+5uQYpUiWNh%>KEr&tMEu5!8AW*G=d?9@f~@xVILg?`0|X*c z8P&ve`{x~C+|Sh=EU=RBNl5MoESS58viaMfYROYrLTxe0ewVqe8#ZV}5~x(Gf72=- zg^XFLCJEHx(w)c&t@6cDtI6WD=y^))#po^cbmmW62L-Z!nnb=2AHmJi$dSiGGeys8 z{E;goA-QBsj_psYJ$+j|tByWZj(KI?CV1-m^zIPaN4l#n3<>9aV=u32{YzQ?jaNnm z+7!eEOfFw4qG4Y~cOxD|G&E6Dn20ZgokI&YEq7guZeth(Ww~9AC*VQgQ=dg~AON$8 zjdm1Y8CU2kF+Ixh*g7I1P^)TZ&3Rgo>w2Nav2=A(?*AT|#8<~E%Kwh?BRSlA-cbpV zsaldfWY0Fo=Z0@Jk9aKe2H32hlx@?e89# zIrr31ZC|(HR~ojHf1Ye2UAnri(%nuWH*4{44 zH!G}>NA&CU=9@2LYjF=$ZC0$LX9Dj9!p?jbdWG6R`t)j)<+kINiRab`_6?U6&U0G_ z6C?S{mY7KQBf{;=%ZaTcc}3qk#hImq};4xLl*9TaE(uycj+yINNo^wYLVXxsxd!>B%mXn;dSy@nZL%>EhOH z>JrNlTBv&4JAcS$cbliubXAaS`g#?^Lr)EHeDra0NU(+dRnIXe1lJ+X7@VA-L6<0e1!;)RNAIcg~rgeb{ATR0rNyW02Djz#*-aq=jdo*t^o z+psa*ce8a6y&q_<$<{(svSaL+sy82eYtppzk4_Lx24A@RMC1w7nY@fI)EqsmimnZl zTeMT0wv-`LyBqJPMEOJUADVsn7a?kA0Xa^k+x9e5x9*(=|I~*9JPRTVK8qxmb%}ox zkVl;p=-_*O}2I()Zygb@XLey7)%kvIGIA7P*zJ8mH<6}R}(6iXbLhjT{d z>r6O%95(h;RguFo3`@^Cwwa9f%GcQq3QV^=w-q);3Ey z1mRa)C+K4Wq?e*|r4?8(ln zzXD4@#r70w=0;*CP_}qcJhYkC8g%xc6ZLD+^AWSq7fn#M;;-4fjk-KzrkO^&L--W_Qm` z{0D<(Hvk=Yk_9{CS!V%hsuto?hRFryo3Bt0W86t>|1FHf)}fOqfKy2QyBI%5#NknB z?miH5=E(Jy(nEUBG3F;4^6cBgs*>6qQa~Yg=ZMy?PSwu1-Cc<*9e9smb&Q zjl4|VIuelfJQekO=-S+_df-85c5L1`-zC+!;Y&d$dUJqttsTAv_w)BB!@FXX{9m%4 z8pV)BuMc8_Dses{&)6nhEy@pWuozgcW~;H&wOhiqok!jD0>DaW@8u-G#ihr`^wEZ* zXoVWMby_?>lo&?B9@G*N4&~~}f!3U#drx}j3oLLm&ma0kyb!qn1&u_i&fA6g2Vl8nwpSbtjbN1PLAA1IlwShbi?jpIcTER4-SLf}qpDs`D z4!)9W}7ljxU$}OzV;?+ZTJOy`~L%w=oPftcb4ghRnFkoYWf=r!v-PPRum6$6Bi}b}K zz%;9ba-*Y%sE7o9dlrwoHC<^irzoovu;h~baLPyOz~YT`Ti$9!M7Q#POHT(acB1_& z0mEu}C1k8tn&*DZXvAyPyQ+U^r>1;%6j(;-r@Iq&Qk=b$>+|4FpD)FoTM3=fL4L8h zosRgrm1Nk{aOvexZ(Thl?sg9tf(BvV1V0{KKr33yAS3B@1o-zej&J8kUn-0(b%?u9 z+Jr2K)YC4!lf1oSU|_bqZjx9LbY4UttmB~ z=Tk?2P(5Yvok0`UJEdB<^a2rk%du=*8~g8_l$eKK4ET``uLnvJDtq6yxoj#{kd?js zKkuGjLr=fowOLPI$B!CNrn_Q2(!ogJv%13IGXIQP^+!mzwP|MNQumDj=MmQYL@uVS z?z^z<8Q1T66%o&*4t2DvdX^{Ab){0j6 z`ST6)4v2U5y*ORQl|I(GSYD<%5|how>ORHv^X~WYyWl4o zYpsTZm0$#)OEz!ym zE}Su#Hx3*o-!oyTmQa;#FoaMUvmXEG_$SAMlLMDtB3X#{lA>U?scU~ci}49IF{|00 z5gK828i3^ojNGSGFK)-|tHyeRUP^&lbz9!@NzDpv4G!dBba~Nk6dZwcLMn48^w4OX6<*{%T--J5J-xAIs7s zwbDs&YBHAoDJkG#9@f$J{jcY>)%-mz*J(AHlifXmpU;o+%6;of5Wz^%Qt8S`iJiD$ z1o}{}F;l-2Xvj?1el`2Gj|V7!*OGYxde^GucKVH((3F&C=W-N_Q&sN+c4n;*ov_I# zGMjKoz{k>EWIerPJv{pc&Du7aAHU1Y?49#p*iG@U@9>^EM-u6RIUUQ(HSJp7ZfwJZ-W~ zw-b^QAs|C9?Bgmb(#L2{8Qm~7K^7U&E%kp^!BRt5Qr@M{ySz&;{D8<=)`L+}6;h*u z`R`%AR-iX|X$#$Qe4*R}YH^r!e`tmpw`NYxSl`(U7FM>Q%Y)+n7Z+-(3Z4kti{oFe zT+G7@5_ZlRGyT$xE$DeoH-(CR-e(>j{bT?3pJsO)@};U;n+yT{mp1jsfY(wPEA-j+ z&F%59N6le)l=}1(?gNcc;Mrq1EVt0qep{FG-ZHQ))}u;6n}m)w8t`lpI^PD26QZ4o zSldyRWEeXSD{@KE!EQRl(1dw=&XeYZ44tz%wCz3L3Vx~ZuRB`_p?e*2 zr2zebhpaO(=NN;4F1wlVZ!Q$)`^`b!0UlkTtyAg}Yq}J)1TM;ABFh~CiwKAa#y9NC zSbcG6`;efVV##uUxs{aoA(Ly{XT9g~tNk-qgEJx6$re~S7HD$XAE1GNZuM!_W)y7USPx(~a z+g;Fmw}d0M!!ycVT)xzhj})CW1SjOS1uHaIogCr~Z5iZG*Q zqfGGw(J(e*`>j5Ef#M^8JmzlIs&VC27>hgGl9En}yR_6=-M((wti<8?+_X1mq0-cQ z1}`(8WM+PIatsA{Ny&*0KodE&K)Dw_HlJ3q{nRUYP1=}($njn9WR^zDOa!X7_UdS+XL z7?QW}Wc5t&d|k)+-9_`GdYo&Epe)wY{oYB<4bs`KfOgySfDqF%S9GAvpJu-38uG=V zS@W`f+ud+1mQT*zMos<{T0M6!%XvMF{k3c=N8w&N+xmQTXyM{5hgLbrI!CXSk2 zfckvO;x1X{|d`5|80_};v`LUaF^Q| z8;nZ?T?BcUZ*kUR)uNF{g+{dCGGpA`po4l>BmV-V_gxcJH@R~9wVzrkv77T8!g!z= zIh6?DaO?7ZtCwG1N(NdgS#lS8%LAX_0S9NR$rQ}x=M;0O2;qyP3NUDi_z1-_)W?SkJ?VP&%ab;n z5VJWTSR7J-Pu@US4#BicsV(aJ!MB4Rv0djpld{`7zuP_vH9EBMFc(QbHQaC<4s3*! zV>H!LYxtQq(ff$fBJWRL5EuIa);s%uIK*ZMpA^nUI zJW>Hu_ZW-IXUs?H997o9EFXFD6lT1YLi-~AIM4By6;}lV=*QP*S}xn~9nO9z@Auh$ zLtwfSYLK_<%{`N>?65zy2mQ*o?pdzu-X|flt)xI-y1ono$`I@0RUzES&~mAOPn}n1 zK=%b#{5OH_b_+A!`^liPH&#~y$m|ji4)9{$IER$fzqCz{ZMlnu^rV@ZEWolz@ zl>!tMv4Zz0tsO|lTOM(>S{Pa5;l5FST(3~@u^PXreh`%eQ@R$M&G7ZVbVCvz#{D3v zDiUTOFhp;D^v1u2YO52@C+<0c1b!nVcA3`Q2@C#c{{ClE##_h_V%SY}wD`g;y2}gS z>Wxp~MwQ!QmqXP?n?(z*GA4#1h`SD3XS=UK?34O0sWQT@<>m4VjMebJ(IRt~-oyv7 zFIAlH>R@iO+iweaUo)zpqv~>F+wp}jXfCv=%vLfNDY~-zh~eoa{4)MDl~5ntff4E3 z-_@O#Rd+*ZaGGi-(Qfw42d996762QLoFTFdKKgV|+ti&G5j|_8Lm-gB`4>M;w8YsI z?~21Uw2op#nXzcRoDfX?>=PHp72Julz#tcNbYD{UD+9 zfZkPONbMBhLN2${RPk%d>M*qj*p~#_!Wbo}l>NO=1}FUST^_~W9tbynborLQTVI&2 zY^0yhV+%==p(72)l5eHD!m(m#i>+>3o7(Gj5IHA3MaU>XaI}oJeECeusHCDI6r%ov zp>-NhG#a`Tt$5KL`m%II%3&!|#ot_~AcHfgHVoLYszYm6#2UUh8vgtOM3GZhrrhKa zFgvL*!wCmL9j;$j5(-qWwwiY^>_59t8w zsPxfm4m~k7Kx0%O$Q}HjlE$hs*Cx45=8yqn;fn!UxmTdxsp#`(aM~P; z@K|~$r+u?Zl*?}VwAw;J5x5vQXPIg}BZMR5@BDm~N%PUmJEv2=`f=cBVf;5h4Ra{X zKg_6KpL-wJI;B6f)`>1`@>?wU{a{KQI%w~BBQDo%AQqyJGr;p>x91iix-4UOibw>OOa-F5d62{z!`v5DK(^h zv1QSL&uaMIyQnC4s`$*z!4SOLxOjL>tgKt@o~ z7wq@%@$oz8BN^#I)jbhgp}E?L8lS&>32O31IQ^ERaGbWv+pfCmVS}tpSwdF9JYgX2 z=aB$n>1Z0^7%*d(gq$3^Wu+%R<)Jw~#ODAHOoN^AIUGoLXv5>uslZJez-|FES$q2X z&891?(DeMyR$rtFM6#>pqAl!uh+Lj7N4|e=KA0|Q1Fd>bz*B?P&gTL2{xpB;|EhL| zy=?E#wSX+?^R(K)Vo&(tMz{PAZCj8Vs5|GT8QW=_(KcVk4F4nTRn@NtY5Rgzb^r%*aBk)GBDAUgodUM2x^D4EiId~@_W>RFhXnSr%&qlFFP(-ul$pkQD? zzqq)FC~U5%xD(#~_}Q}_zxP1?hWe-h$>2KDgT6MQ_9*7hK-%*By-DfG3G>S5VaBEA zx-0}jc3-y#l1LIDJ^JmurjB|O(+>d48YQEwFckoZI6ouHN5=XfcX0cHt9zZVUY24{ z$A&zc4^ToXGY^FByjQf&fxI5x1V$8*>FKmUylPm_&Bz!4Y&9O(&q);5Ea8Kxq#=E) z)8;RLpt#WsZZg;4N$Y#`yB{LW5Z?ZZW(9+gP7GXkYlG+E#&jhoaG=Q3EHS8j%+mrK z1eBDNh`?M^6Yx~tJOBQ>REu6bQ^M0!ZvHsat2Yf=+5V=Nd5jbCQb_)c_1qGEaeJcR z5&~!R`?yiY4v70Sb9VFitn1IiZdVj6+Dh+?-|e&vr&=_Mw#@ zx|w}Scoa*}{?>f@tK}`)TN}#&=<3ipj3Y|KTNxW29UWZr{CXY6jd$@8f?0};&E}U+1GobyV!h%9<1&2pH44Ch zYg)T=8@w>|^_$NYcb4mKn^iAPUy2tuOVw~O6SXb}MN2P~6STm>GV|I#aQf;efQ^U# z3P`UF!f(<64-X??>QV_!S7s}>7%(~ATSOzI6(RBWztZnCv$QPtIXjqs0GtoLW@m>; zU!Hz->u(Ds0Ar7*%=-^k`+5cki|G!*O!wO)BrRY@Hmr~rEZ)7nJ$?GWYpu+l_Y%o$ zSaL;O(9s(&FVWL-TIav}5lm>Xm74H95~eR{{f_z3b0gcJvRqAcWPop?7!>TA!BD(E z1jfhwdzb8c9^xL>w4c@=*$9j5%T0E@@B#m`();oL1dY!P4e6*M)J=00R=2IJtYqcn z;y!+C0};^k=(qfznOgn~arZT_3s^)%l7Sfm#)5-L&B{l`8ZevSETV>o}u{sgK%OadW)pY?&7ykUwyz4Tj8)QRP1rZn@-Q$1y^3^ z896tq+#yueOWEuvi<4O>4lIf?I@Ft#fNr(9YHo|M@?nTY3*>3u#Dzag0XG`{#JIQu z-yaF5_$nV;?CT4>SI`|=u_*R->UW)BMb)b6>K$OLv(l?qq%vWIi|Y`7RxYl>B z@0-%n(t{F*FY@#ADful3cbgDALTN>A{lN048~AYyo$fEAi-54|`6nmo?FrOI$nSI! zr?~0-E$|?D{PHEqZ8qfN4!w&V z$m{xs=pE|5LrZwqP!;T+<6!g)v@Kic=@(g2D?2^)4`&oMDFkWjkJcay#dEGN90V$8 zZf@TUKfcRY%%&yyI0qyZhUD#hgoYGM%!rczMdHXh&%b%WrMcg@PjRNFpj}B?d41+U zhRjZ3#;_*!P;a5?pr5Z)&X`?T-qXY5&~VZXd#LS9U7Y;F;7}fN9ddiLK8cuvERMCP z?&nt3>_dvG{_w(%1;-sR)_dfj?R6ZU7Mom*Z!f2Ff0ia`{5eQe{(gp;3umf6_B1PZ zZoBd~&3f1|_|ymKF=#Nj$~pb65Y}Y6>TP1-dV5nbYdVmTS^fSu`&KAVGDsa%=P&*;tl#q?gh@i^ z;DOEfET*iL)*mQ`=*a+6WN)S0*xR2 zworgHmmgL+wC^l`5qr|>@J5(WH7uosYz|akod2~;Q!9h=F^ZG@utLW|U7|KS55GdX z?8*^!g%%ylf)3t|H%{q%&@ut9=BF?P5My1lI-1RJV;HX_V@mXStKX0Jky)u%*#=0@ z1tiQr(H?Jh(_w6y7+k2Db--2JyI!zLq5lFuR*5qP!v3q59sK^1G5}ua`P|d+@R;n$ z_U9&^B5gjx;AZ}JXFS|dKuH3mjws@3yV_T(OzL(((r{Id)kA5q27OJLQsmTu_;0OU zF`R^~?BvmGLfp*&|L46-hEbqh8ir2e7Z_U7S_eUIpRt37ub_(uL#t#M@3$o-0P(tj z=)WLO_LPHHI#;(rOEfqCDNw7wvwnvjfgimDcPzPm`_3{HBQ4Oi*4!s8v7=hC>fEz* zYQsFymIuOZUDvgDqnxo&LgjdzM-j1C%7yH~ERYt45}DTN45&B*QMmrwVsC5WV|`z+ z+y?&RSXd1MoqzwVSkj+ABPj_FqMS56x0`^+UCeXQcLZJrkDk|vNt~DgF_T)N*}km~ zIZ9w&jRUof-X$G+hWrS4UgnFrw*B*^?`vuBySa;uTRWeS+i{9&fp)Yn$ZZg&tWB_k&5sM>56vz_p0 zMQXepDGcNdN_JDn4%GpnGz9Dgj+i9m3tfP)o#Rf^>3y}rjC$JLJ*v0!=CeojFFcoFYwp1{hp-*(sXu2mX|kgbywd(p(?pOyNO5Mn>rTS z$=y7lAsCMpyJaI($Nj8*DR1X(oQ!G(mVxxGeEiS5q7Da~rOUhhfC`ToDfK%a+@Dnr zxN8@feTj2vAZY&Kj4hitBpU0(K3fe(zwa^MhCdIj8`V!2u@#`jKV!R&)mN%O^nd+< z^nCALT*M;g2j)L$?8fZ0^ZOp1RWyq05rg;+C+)dG_(1H>!mqK4PC{m~KEuSGKFS-Z z>`26)^Bpqqyt#_>$ePCSW!FS;Qrf3%M$MI%qMVEI&I63X-=)*{W(FB47|rhka++CA z>z1X_*c~lofG%*VJ$X0 zz-F-9?N?9cbb7Ofq)7C~(~uT9lyunYIv@F=zc@Ov&Q{O1LA<|N+)=+rRRgPioAqxU_iq7VH!FJqHN3_Aa~-ddsfNrY*)uvKhn zT0ZTgZ%|(PMv;{Gg?8(3|1C7I-5rMTW~pWci?x-WZTDYmd8LEcNWVkRsrZ)t4$pq5 zZ29J|)XBOA;0?8Z(*+HR(hWKX^(O(C)AUvR4NCO5#~;p%4Zub?j{ooUasW;7r6$jl zANdYsXzlS~&by`F&u%ImJDLy309l*L3;h9MD{Zt8>{G|~z+Y*L>ErmL)@?iB(D)Y%j(_pqJ(0Cn{G&zP!V}G7C~h6I(tld3_D+so{L<>*+|z;w2l+R?9!jytRy*Nw_wVRN1f-#m~YkVR*R^MWqRf3uO0Y4%_02K|dce`x%W3FEPpUA@< zOXoipXr0wGLv%7bjI8%Nt3w4b0iL;BMoXVo_pbj72O4%|)JhYcVd(REcxMHS0_cN23>T@pIO5=cH=F-2xoPD1#<4KQQgQ$cV$dUq-mMmY zc7MQX9v#bReNNbJG(PQ+VWf3 z)RZZe_I!4u@^)>8M;>2L%~sMlY;e}3hNh-cV_+Py%ls{pP%Mqa72ZW)0=74@266D7 zMN1z)6R@LpxxIMoz@RyKg#7XSL!O_`03Gs&m~t%6$h)sLbh%dnr$t&0 zw)&jYn6lKE)#ife7UFT<4;QH7kIylf!)UlDV0{S)6Iu10qs1YffNF-J5X2o^L~E<>ngy& z7OS9ks2XlLMm*-~VqN+k8{6$WcVvx?nfj7=Ejy#BB#wT`=y@!LqJIAD>^!ft`TI~c z*uDw`t4#RxPQaRTN3E1`XpIOKCU15*xmB0{p_(1(A`|k3IrVw0tyjL#jl&FpjJ0Wp zSFYB56^mcMJ#us<>H;k;v`gCxgW?J!&jO=0nbI|!!%A+nI+cKQbAX2k4LoERu?w!D z{{`3LpHZSl(|{GP=ko-{4h5#FDp1{&mmWX84iHkN4+z`$TuGV52|;Jvd#5&hIaZn; z)_k>iP7G}7Rsoj7C?%B%Znl<`^QiG(JFJj!>(qzWH)ACM7N59x5~>;mcD% zX>_zI5*R2GprMZq2cXaIVtsLDcwgrAMJojNf)hD5T{<~QFg8WkLUsE)HY1>H^kgWn z6&73m=4r@?EwG_~$C+`lI{|MH_9qau;m(ohh)+$%+H{?D zmHT#LHgN8038A>N0(N1A>L%C_)(0y+M?14=iafP9V!PVEz51FgY){|X+Uj$KJfZbm ziEHBd%?7M)QHv&Sd|(;AH+EjK=OGE06SC{wgFvSsNy%BrvjT4K^e%$`T5iDFr&;jdfwdZhdr^Ur_124fny% z5H;ECl3xPGRWN>bahQ)AEU3Z4zK11)3#mz=d|XxPHfEXQo!F_~qXuZ@+Qx zgrK4PB16Bb1H0oRb({{(jvKfqz*AznWb&3!sVz@$cDgb#K7N9_r%E|%K&h_O0^2;k z6)%`-%8t_Bfl(q&gh9aUr=ghM>b z;__}53T-4|_ih>+T|8>r;ae49j34@rQ&j zH^2d|lt|{P_X8^@h*Jrinje#syMg_w$JuHUIxtE8X;FSwBlb7!c2?f=$2%FSX9(!? zGVFw77UN{KskeqL5f$NmClMVc#xpgJXk2!c zqHZ)Gg?!@((pG6@C<&gxBB!Bs!;7w?dvdghg8Qv#@tt#e>aH#kf5r+ZsHmvY9XqLR z+_-^eR6bRMJcjz}W&Dk7%ijP%jpUsuFY=o~&KEJ}RZs`0A=sQJ_Gcq+674yf*FS79c&ky8>$9WBu{QYi?QdqnBx{r; z1JIdpH>dgtZGpWYm^obdcvI|?M)z`1^Bg!=g7cp^>*hJ~T^dKI1)~r-0iGyh%CM3s zk~pNMj?TOG#Vl~VJ1Ci=Y)P4izkt9~)I8r?F)$KA7_qW^TZ&awU8TL=K{^mPZrgUJMbRkd&ciCn=lNIhkkQ)(>d+skx2-V+t=R(XOEbdh3r43&(zqz`D);BSHdlvz@8Z2Cuz zLr+J+shl-f!$bZ(?m~xK0Fbclax-08_=K67TKgH;y)26Femv>tU)VR={q%gRa^mf# zSzP13*W!@yVp4ck?&!?8FGjRC$rrKn>xdEO5Bj!Bi6ei^K$oG3N9OOD^vbqix)a4g zO{jlo9NAuD{)@Yb=lfJ2XTjPgG5O&{A~P3xjk%9zvDCv#H|+Z$77N9-RzwocEsFvd zI!|-Kl|+q^2dp6xM&70g&6=5I56gBN;>-T-ONaS!)Lv1=0guj1-|J6~59k`qI1foS@%$~5vR~Cm@YtPivzBp|Sy9Zz zZ3&A?ypD#!7*XhonL%QZISb(X@N<1=~)RV#`~&>-ACQI&2>@Y^JWM zd3X*h;WzCh1kIV?tLAYy;8$DvzD~J*r3y%X!r*WUss5#gj*zqP{iRpDOSlfF0LR@v zY<^e+OIsD0H4y6vJvh$}bcrT{yK2L~oc8hdcin1kl44p8VAPM17$iI%7(+)63)W)%YPR~2y-rh9Edj|wh1q;X<7v7N$AM>J#o<%$(a_^u+x7@iW6qfF~8qzc%xs zCKX7@9EW~+R}}U?J{Pj(toE(_^foE!_;+iA<0Ye5S2&<^%UIOttwm(9_0!Lj+$eIta999C%@o_4%l> zZNYyH)_v@7Q1Hu6OGYpB`f`Eaj?!}*8!l918tiHmg#wHphyeY2F#ds^gTrLCH=#d; zKU_uXEM#Q`SSTS~4U_(^p)z^;lJJXspR(Ta?)>hDK;~!TzkN`rK=^E>_VWjrp3jO|nP) zaOj8Y10P?OJB1Gni5qYM#|{1Sd;cQTvxfgPp$uDuG0R@E^YX@4&v`|mZe_JEX}64* zi!1tvX%`qwki_qI;lZH3p_`MFBSL!|*eBTV3(osIz zN8t<)^7Bi>!ag3IngVA>80-M}ra-N*%L{T_HW{**{nw?gj5Z{0)CwKEZQxG>7PI`03|wN6U~YtaKbjMm95b%Qw{k35nkh{#^8YN=;*MSDhtie=P)rb zQBYE{g{#H<`CEZ1j4U10)Yu-|zL^uF&)>SRG-$MJpv^i1U3O3#quI-`y?}a)_4e{*PdI&*=w}Iv@u85^j~RkD z#Ij(H7C3gBuf*%$o@hSHrP{GeH#bn!J}yRhXX1BBW468uzeECBKC9gSyP#GWd9_`< z);VuyHaISNs*4nDTHdd~vsI%RWesP&O>-w|;O(L7ckZB(?bVFhG!Nr7F^&xSLh@vR z3OeEUyVG2G>T|zCbuXqYKV9tIeQM5vMqZz>XBx`{d?fLx`Lf3Rzt#RGvlS9o2xk5~ zFKei&=KpSF5vgVjt?TsP{pGRY)I{M((;R;IM2wGOx z=)BbVKWL~E35On;-btV9Mam&tVAUf7kxi^HHlh<(ZSL^~IMxhe79R-8G5Hu-g2I(| z()_(_{JX`07zCeL1 zRDU)$bXhWiULW%VM+R{>Yrxnd+};=H%BrHyQ2uLHpZ~=HX|q%<*)<1h-sPMr;_VYJ z0>VkxwQQq6u9yA$S{#Gs1M_F(C`%>8k6965=2?R+`-}YQf zxj{txjc2CwQ?r|8Kw7=cx?2<(t!=;ZxRra0`q#~p_@jA3On|7+_y_M3w;Csq{~41Ws~MQnCn0^PXcUER zkx_QgEYD{tX6K$1+8+wtaRBa$S|_pW2@De7DH=bfjeqLRJit#+6JDOF=<%_clO4z% z0P4ZcZ~4=<4M5AjwedAlLQ%iwJ%^=e;YBB*Bf5_36E$(_>i<3Kp z)+~9`cQE8b@_A8#3C)F1^;yG+2;fyBCCzw4N9Kd7f{C{;{G0HkXD}!&9{EnEEikxz zQ%AKv6z-zViB#zJS~YN@25gcS=^}BZrF>;&Wgt+p2?&f%tfJ0f(5)`3^x;gpbYV|f zP5Ft_b+~paY_DeN-Rg;exJ(abC$j0_G4(OcU!kkqf_kyy{!q;pp~{eG5@hpWobW@Fk3{r3f?hU$7pa#=bbF z?DuN(k=$bzxukL)(7k>+Zd}0Jq>1NAHji$V&0;cuIV6D#MJhEInxP1$f}}`zJ{%hx zYXBKK3S4@wsOTs{i(<3U0|koHbt3@vd$g|DQ`DcM^oC|m;#}#YOgtd@lxu7s zl=@iXMOEGTA<`Hjr~3{VnWMM74Rj8#SWetmGJS5|&UYWVDDTAJO$gxm`mJ(cz_}wV<%!>(BGYI}Qi4-sCB9fjXjG7ZPWbnj^t}D8n zSOgT9ee{3$6T@b+4(&v!G=K$|QPI)q*CRivDK8Ey^1_Y(<}bskh1@!QtI~#pzy#dI z#bxFFzC8&A?K-S1H6#7wrvHs4oR>7uDXb7;g0vrI(xfF-tRCJms+#oMyadQ;9_=SO3lG0Ut z5kWJsj>$7gwGu=n068Xip~Oc8X*(vScZBS)_!PFV_ThcF8iOy zP_PZNR37Lz6pA{p@wxBlZMh+MpwLR|uJIyW-`9Xp1wIw5eFTZl9Y>r%gD}jUPgC;V z`~A0;Z@vtZy}-1sul)I`bve}>&z!2P#xuCxvdI%n%1NG}z-?x#54WC`nBfFoDw%R< zwf`}LitnoK9rRHO3Tkb+nG`p@+lb=rJSdr0%Zbzh8uH4MKR6UCJA6BjwUBqShl0rr zQxG2;@gG1;ja=X3H z)S#2}mq49d8go0JR#j!l?r<6Koe~nwsSm3bDhRd1Gp=mi1`G~RqO}d*$n!4(ZtbEc zvnWso?FKQ;^CjOCWBd8J>d>Cc0?bMD$+k{GJJH~}bq0AjjRc6XxJRh5EnQ`&nOjk2W zXe9(m=4oyr=+4ic>e*xGvrzG!U{U&Z z1wz{S7Q%G_DPddw38ehkH(HWX*$YpM9#74VuYE@IX$yPFlccXq{zMJ_9G@(nXfdas zu>3rc*h7ITve`XllwrnO-pLBfeZ9RXa_6Lt5Lk;{S&xIYs_p2&P??KM#O}|I%0a>W zitc*U`c!C7tu<%8Izvj=H1OP1kxE~W@rilV{KznAEZc_X+czSIiM7NDJL042hgIGZ zx6fH0_VSAR%=4&TC|GrC&|cJ3z!?)n(ij*9eGxF5QD@xY)Y2^|yL0Te&C?%Y{{4g36$u|WMav>?dx z(kpCe!tZ7a;FNfntlU0@Uij*1k9<(q>mXJvKeKyA-dB}4YF7;{jNYW~3u$@=EFdRV z>g}%vfQWDqlUVhEw-6dQBosUr{D8a?^md(oRq=!gKTWglnk&N&+GPJAOz3fP12`La zWnx%1)L(UJB(+^(%V<~C?rd*}6BlE<6TN7rAaAO3)=g_STC((plxc$(g!K#6903`S z0RMU5H6o{awPrc64*JP)`f)@pKkaUx4H;jx4ox=%^_+w7zBjg1qsOeN8J*hH>hxIeP6%~Oq!;VwTLTfNEDf7b+bKCo^uF&YH(Ne~X3JoP!hipe- zffT96`yh9vza#_;$Z)Ye;8;bQm{uQhjVAqufX|eznnR^~#y$G!iJAAC zYKVS0&fBBe(hJ3Iee9?!Vr>0}^&bYYQ|vY#1Imk|zlqeYnZ^}b*KqU6oOdni59rI5 z>J1R`N=Kc_92(d~Ul^3D*V4}{#F3P}Q61W|UwgJamFlMETnm&wsCXic#(Awj) zc&NRt^z=`aLR9&w@1gb8vtKVyZaw*8e5B6@*GNA5Q0upoIlhWK2gi^0Q|koP3iR0`ki}O!MO@{aQyMd=Mtq_pXYyu`IbDU zNK@lpFA1B^3@~Mw_kCd{)bI1lN9tG#H_Co8_3x#CR;kiBOOjq22=s$sdf^UC74-|y zA5#JuDqhs&AfhrdiNBfTE?+Y3_2XF|g_Kwq)fGs{63H3tPPbPLffiJ%Cy2S1{_HtNQ zB@Jy=SKh?HU)@docap)ABl9Fp1df z04~u612m&4AGA%FUq2rOett_BEy@7`NKJp<=-2~2As}oVoiG=y1Ef-vpCFlb4qCcU z7SRc0GPsm=I+9?4o%8F0Kd;(pE6#$ODIPB4`9WVq(~&BeXwt-^lA1rvRW44Rb#?as z>hi9AP(^IkoA{}?`k(1U0j7|UfM1;@*EB?(JE%klm2fwlE=658MP1qdt|~&xuvXo^ z`K9KltEj-okVz>C_Z8=#SY2mz6;D^;)ED!hYa-<;2>R}%t(OvR&+TKjGd5tun=9-* zxm(rq_tT_;-vM8(w^b$U;%yuCOf#tn8PZkf<* znP*6b*3nORz>ZPf5rrreL8lN%27(R!&O&#auQD?wy_a^IVR>E6=bM}i>L^=yK!8#L zD+|cS29CHb+~=$^RF(&s+)V)Zr>DJ)0tZl5_Q!P?Xir@uSAiEd2?hPea^9vghTC@EyXJIHy^h?%{KmZ4mn>fOpP7*d?_H zobph?K@O13l)${a8+n;t`6YeVhVgN%I}q6Nxi+%KbdN553jPA5MjI%1%?v}{ui3qF z0g#0HnBBqb&)cP1TunSgC)Qx!FDxROB!9 z6uM&@7T~bq_;Gi$RL8iDU=N*==t|8@X|39az-i{Z~n)`!c z03q)gS8OhPLUUnLB0ar+HjOe0)MaS&CBr@d+NkU-SsDM^a6sPFC;qUEdQCm^3B8j)_fZ1X_TyPoEAq z`(HIG7lB#2OHT_?Gai6+uN^e)xj40+=HE?-iHVsktiqI%2TQ|yZLWPt*AH7~{k#SQ z^P$Uz#0g9Lp8)ORNM0Y@>}zp*1wWSpuFJiC=P9W~uz_Dy;QIW~cY-ho^PC}Fx)>O^ zq8AQro$pzIc?ocY8@2Ww?&bbBF+Z!LzODnXfzUJcQ@pZRWIzBKnzGcH**rOll?V`E z);#9$iKM2%30PC7Z4El^F+r~73l*=fqg<623|<{a%u;5%v#C@$RC-r1c#)Uy%&M+p z&FUdb;UGKa!dCmV(+Qp=F3~rL;lAW58CWpNe?IMgPnKqAn3IgD6r(-u__^itvvY}} z9_gt^3#>Ivh>rJ1tA`&_bq=y8;-nMnSb~faV72%E>Gz)HMe#NzQy6#zf;!DGY4~13 zV&am6$bEKpCJBj|iPh_fw59%79o?SWJ8Ed$Cv3#p%?ZWx(C{Qr*y)|^?855$&6Z2t zXzD#8o+~W*)%(_#eOO?TukXy;q;Lw0;$`@}Fqjh{8$Ri|H98l)o8r*DE~LlPyFQrX z(tGl0AU*PxzJ5LLH$&+sVZ`mcJcERQf?i#fOj!t(j^-TRxK5#ixzX&jF(1cWyUxf` zCtqvbz(b}@8+hvGCgkW?WL;E%%wf<%J>+59JDL=S$M34o%;0QbEEpPKh<|{c8=`PR zj|O_7L>n{h)`y8}yyl**PUB=H?bch(QS-5WMKG)Rd^ry!t$q=dAB3R17AbV`XdNOwphsWgb7NOun1 z4TAK*(A_cgaQ1-yzO%k{{yX!}t82Z>XFt#0`;P0ruKVtLsfPG;QgeA1jv5>XzF-52 zkCBmxef76ql*0y+?iP`5c-kNJ8?CWIs=4a-PORs(-;MIpROE!Be ze(6+~IzUqMB%=4IZ*dpe?U;z8ngmBTKm;Oqg287 zH}LUkvaYTj$$0b!NB-2jlTgr-@R@$uiPZtP{8~fX)PTGlGW<>~W4|4{9juAKK)LPD zi>lrx&|-}K+=B%Kb!ZW{$a>~85ynoLalXQ-0JeYy(EoHB;jr`VeGaGzLag$P8^6*E z{r&!^t}=xgpjRhfbzTQ*P13*_UUE=C)|DF`2^&s_48Q1!pV&~&I0v47ea9)Uvj&LmV$E_jc4K~ zvlos_+03tt&ghO0inhKp?WMRRpsKqKNlJ2U4vo%gySdRkB$7|$`$J6{730PGu5V)Lmk?#^+ot3|1!O9Gm{ zsIv=0bxQ!<@kx!&%evFxn#`28*Y8reKjP z%lA(%OB~^|uil<8w8Mu6U5PQDuGAhe4PxFdLi>tUbfhz4ukC1Wkz;nIZmo^~Jy81< z2ct~vG+r&H4Ek!V!cQ2S!8eFQE#hwUp0k)zO8nzxm}@C7AYb{G(t8#|jy;bF*X7=63P3bIYtC-i;xQFp5S$*c?yBi=7MN9_836MpCHVM zbgZoQREB&Hov)f=<)dG8*g^FW#8LUHQ^~jk*>Bm27{uL_&mLC5nsN&2y56d4x8|ys zD6Y@|CbZc|ZkCHh#bgzbARf>765r$EGWqlCRZkp`ub-b^HqXh)3CyOQ&JE1yg`f%p zvAQ1d+z(x^;={v^-%;tJ?{3ge!w}qT?5*<4)h;qa@qL26^mfr@TE2v_dL)^qn_Jijm-0LT1`+2c zF}SnOWGcFr>u)QDbsBUrPTybUWja4mra;CWL>^&VoJu{mq@wzj+mZK3*rIQrIN zzAelE1Tt?6+}#w<2NqE*OCZX2JDv>yv5oC^?Gdkj6Q+PA3^3x*W`f!C86Q3jJK0~x z071GSx5dPxrQSr<#0oal-t9pvVVvS)7ie4-9znJyj|ED?)}gxn_Syx_KUox%~%qK55ZvCh`agJgTen@!jG0sDY5&~U)-Op`LqWd#$++o*_N2Kn=7?u ziE#^Z(+V^EPw}X7f7Mjsk%-zZZHATTVVsu?t_7O@Lq?9GQ|I^ixMp}reS3}K>lX%k zWz4|OpT%bn>yd|CphrOS&TMnegqyp2P)LZ#;_jzUpK1M9VvVxq~%t8=gTFBh>XjV#}E>4aVtuCxwy+X@v*#Utc+yiJnU}o0G^!{fsb_7QKKJXl?nl&i4;dc@(8oU2 za#WHzd;NZ$bY)88iq^As2M|3j(~FCv!1@8(=SYt?K6@gTQ~M=o1EH_4Prx9a#FpaZ z6BkDbL2Y95>`anfUluhySDmlgVY4gyZ4RY~0|(&PvOaoL`k(`gQplPyEiElqqwM8% zSC~Il$}jGlea_c6olve5-{DtmmW_BA2t9-KW+0-u6MLpPi*)QNVGCd1M7@5;25sq^ z4t+O`clQ_!tL(Up z6LI9k!ot$BAASqYaeKH4IM8=lS)+h#8jQ*A>4;<=ue4#VtE&S|5@zP-rJS6O@s@+b z!dRG@F}#2vJ$vV98Sn$L+meE(EZZ$BRBJgOoYI})URCdseDo=4IYc{xOUZI&bQ^!> zDhN&WWg~w-e6c^{g%gA)bh141Gb4AfvvEVYI7IA@g0(%gKS#qRDXi^EK?noKg>pL4jSv zd#i?o(Ql&tL*y_5Y&enoPcu9t)MiFXfP|`}pH|#0?pX-=?#XiMy?Rn7jdgaDZoye+n0!IX$&1){pX<_g z=`wq)DmtB5)XN?20cm1YVqNmaDa5?L5`~>DL^{&rb!hd(s3`NHD4zc`p%^DdPJ!e4 zRiVao27u}3J%CFT6cjXDv)^|%Y*STLmGSfEEd~Z+$y9Oo!f|sH^%&L8#Cl_lCn`D` zPzFpOl#kxu1cobDv*I)I;tZqE0ZeAa$In5BzurAOY#mj#@<3UIh0!V)XPxK{i4ErHZff0-~Ifo*`!y-QV_+L1>8Tiyy447fKTMK5cvYtx*#w-e0d;E z>in?4lLfRd2;r>8^%@xXFTWO{u~mDd!^F%CZsJVc*;YDG#9SF^#bjX~OPCM}!$+~N zAeNQ0*sLI02hAVWkp5SJ#BVkCkNo|XPG4(JT+s>>@(#i_*W=w2xnnXSGN=hzX^MNk z-!LwC+;e6Y4n}k0dDZteWr*Wx@n?`(eE0oup770p1C}QA?79J{I0I&pL^hXwm;M;4P*xYN-zIt z(tu@=+E|^t2&!QLFjXz>?R@WAaKSZX2Fj|Ow%VO0e6>84pYrjja$frLusHypG``E4 zW?#QJf-ip-*+Q9XG`+c&pqjldc6&Qtl%E}3q2&E~(CpA_AsJz5V(xz*|`xBB`WZ)mCmCYYr6 z?bokBuvy^v;o;%!I$Y7i=CDr4PI|_8eU%U%KHb*({OVP?^G2|-i|0+}O*Psnqg7Mb z&&Y^u<=DraO9Rz&h>B*dJ>GiOtIVPT9iC)^B8?9w-o z#Fplqr=_&uc)!nUpv!+)ri$kZH@$EYej46Q+I2ir_tMxBu*N?Or{-D-4|@Mj zDllbyp#7z1oIl{w@{FsMs9(H*StE2NMf_;sLFpIAkQ^fx2etq^xlS(o2+a>{1*K8v zgD=7QI=OQ0R%8qgsi??$#AC#swZJvY)#c?^rbBZAO24~4Rm&UEIJh`6JilP5ym5nj z+*}&&E=Z!P(4Mhq(n`~XuQw{Hm__63J%PQn!=t{?h`*x2y2CyHS6B3j+U4XNu?u3p6ABh~SE>*bU869mII zsQ9eu#juU}B0)>41B;4xd%IcD)Y1^^$9la4YDn5K{G7>j5f^lrWi(^Wm(i~40`?Ff zCZJ4*bOyb!ift%`U~NameK`6IXr;N9uWI);HV3y5%c-h*!pO1O$-Wa!N3)tCpqp`Q zv`e>dvt#i>Uzq~{u2h$52T;~m+{FYB6Temthn&$3>y6~nKzFStbg}Wqv zKiLO_llsvLDIBJPTK|aMd7g1|)WdIA;0x3cN{BkR$r_O!)KWheCqN^a2D6+{zYqV^ z(~&NWIUFHpu~YpZ?15-aEq>Tq0j=Qd<~=9Nog7(--6MO7nr=XT9w^KdEITl9G@PCF zQu{wy?fS9+29O)&jJ_$uA)=RV;UB#vWN2NBm-quub`lp3BWy2s(P=;O!|RvY7uR_R zTC1X-sxyE2M)K;987Z2nMJZ=rr(WnhqkmG)NYAh*lz!`lGc;Et_Vv5v)P0A&;gNJm zX(;YYRtS_Q!y+b@9V5Lss>!OJWqUJz>}c!okp_ofD1*`hzv}#GRf!{h%+D+iVvl1s zb2l9B2Ep6U#R%LB&`Me-hp&P>nTP+<&N&v#=HAIptNp#DSQ{EkR4b{Il2kUHyT2!Y z3_k!ciQ8-8aQBjEA6^_|QZ2z;e#daj@cM8^jQh=tOqagIo$m95N%8TJH~`V6iUtL; z7qpDjRH?2g45=)Aex9GU#sVwbs!>gj)l4dRV4bzusJ1>}v3sfwUt}Z!T(z$&G4! zPY;X}4%_MGY`wL1aheg-CF5_k<^88DW%PIQOwIDQ;hWo68UZFId(emnWzGX-=q8gZ zz&u=-f`%-$xG@7g?G9sXDKz8Nc5U^EjCcW;NQX}{6(#nuS}%;hnr@WXEUfn(;)8{M z^OG%2tLXi;97-abr3T6G+f|8$ozXmJPM&ZbQy-Y6j5fxkxR1iN_bj?5W6}i$h+@^u zr~gX#*8X?Sgb!NlxSZZ?l8$LRfEZ=Dsw6dC&XB??_ANV*RIjF(BTF_QX0P|MCtlcx z&Zg}P{}vYR2pM*MvoX>7JAl5a&W-}&-Q3TFjC@hp+U{D#YibMQ6e`Ac==+qc`$YD+ zz3wu;-p1>j*+z9&=~BY~+Q`~}Yf^8FHcMRyxzL4Jt2C*LK0c6r>P`dSt0js}bk+>t zJ1zFz=;Xj|_#j}TU$6wTRxz7s$9AoHYOSggwLf9DP`Aq}lpH4|6?C@l>nEQy_RB;@ zPHf(xF><)jfOF&Y#!KFuGdHQUdFO%s8#2^OWw)+Y&;tFp<9~|(%)QxCcOi!EI~WLn z2CK^!T9ca^J*?ZDTv|gfHx=qWg<%^o|)?zV5w`NsweNzY!DPx7}`6vB@L*e}efBvRUad zTnP6@&^zXy!)?-8ipC)mv0ea9PjluyUyK=xFI&60oi8r0UxnfIi%~b9elR!-;}#y_ zFNQPM>hA7Nk5!{R<6iU%8aczeHpCM09hF7XoC?$;6*Ql7edu%>@|`n@tf5+%vdv^O zSK^`$y#Kv);X%~LrHzE<2Xx0_~8m9gy6&wDrbFe|%L zKW%6aZ+fH+?7FSkrlDVVj68Y!zgPFtr!?=I=-JRNIhpMst_+)>HI`xjX`j;e%z~@Q zIE#VrjakzMe}MBs4xP{xHbm^!(<)OZn!eRr0j*k|h$Q-eUO z*is-aEBPmH#!1BUGQs?Ai=AUZk@%DOI}rc!u(=Tu3#u_;^ysWDDXsM4TP7ajK)aSy zxJ&b>DC)cmDb2CFRNpmyq~TgI1O}J&PG~-W*Dx# zA-g5<&X%@Hee3j>&~QPR<&9+z*%7<`*{*dKGQX<=3FHNqxeJAd8%gk>n1weF_X5$1E8+3V+4bk@3;h=l!1YbG6m`bWZ?F%l zzA3W@o##vYhA2lrXr)gOA9-4cCbbi8Ti&fGjf&ILolcsL-NMtaKRe!ApfeOlP%dg# zpzDQ&G?UZd3$U|>kVOyQP{C)-A&hRd-7`xh<51~&;;qJRlStUR}InLZlvUcrSTHEgE;Z7Zg{-=-kk2G*hqa_#^6nC)}eo@;h@)&56+x zLjtiE9x1ctXG4u;Q_%2n^Naht^+8zg>iNl##hYr_$IryGc{!)I7}hSKpY4~Hqc7$z zU+wI+>ruvGpa)hTk~95OXkM6q-Tfux{6@1^DPcr4HjJ}jr!;w|BWsdfPJi;ne{1TN zNfDToE))j|*a8yUFwi(D&@M`>5(3FkmX&_;29%pL{;f>$PNrzUrTGPM>gEMO=4^{! z(7r}$`$I9yv}ZE-R= zoKk*=l=Y_FrF#lh71Q+GFE6^(=84hSv9Ek0s%lIGP#hO6G?fcmpR3REhv?s7l6bAG z-XtP2Jv)`Wt-Qs7qxXJ44K{qnDJ=bQ$JX9Hy=JhrHr0G~ax-Poz>0d>Um|?dYy5n& zB%)iuigmuIy>J_bMQ+8 zq_;ZnEnSoa1mPZ}sdihtu=RX9TDVe{%RZ>Y}0CQ}9)zu|Y{i_TF)_*KX$LR$7*M$v{g&z}f=$@LE1+VWZJ z2niFSajtqFXa=U&01!7VrMMP8N1hfjl{LL0nw0P^yZqF%IlLJprQbj}Fe_TPGJjRm zATgyp*t&9=(g}9~J2$e<2bB)gox4L?j@zy6`V*@PH$SQM63%ZbYj{u{dDMIF61b3%sK|hw+7Eiujf7TtMSl{7x6%e#en)kqPB@30fM;&UvvI}c_ z*AK(H$&lipIn8R@Bl_fu=v&Ze2m?N`(n^ofg~pp+*1m^DCH#3_y)Q&{HI?!26^W?Z zafkEc>}U54i}s|Ze_Eu(CNQIDWmi35{c{-`Yr;8M=$%BxcTc;F8X~7g`TGc_Fvb$A zSFHBosO=d9#@Qj~y`ddZhCe9Kfc&IKn;K6)a_dx^xc28$Nk2!k>z`=wsjGAOy;qbM0mgcofknzC>I zwM){YXaU}i*ho49s&O9j9gcQ4MyOx!i@hB5>00&H42l>G>&0)k;g0!xyGc9;imlx&69dOmx$>)0B|CT8cV|omjGgmb}!$$@L^sA*p^xi z|J0A6`jjzwItqwTsu-)C9>X?c=8d_KATW%_?N-9*%7rXxY#j*^XAY5-9m1z%?vFtp z^5zuUcaf*^FWyT`@87!$1_lHFX4{d^L3haVMRNm>F1I>~12HfO=B;~LU0SFtZF8l{ z{0hw^g&am=nd%3}JrEO|=xINIY`*hxnjK8}XyIYZ7wmgsPGCx7uM7o?%0G`p?L54O z3KHG>d~88hTE|nY{P>u!I$wsY0w3XqpQGdbho9|8^MWy34D=kMhtYcy$YJhxmULX- zFKW`iW^(Ww5Zd?EBy-59H-Nnt(r_uw<{BgK>G;Y_75nHj+Ac<6yr(n6*s1yatmqc< zJv*w7Q)&7B)=}7|S8Co8hAB{PsF#N(Q5C!@vY>&m>gqQAl)tlAZC2FUHge4WBPg5W z(?dJG!<>lJIa9vLZ_Q4D+pp**{3`~dI+6s*QhPG<@CG_ zQ5DRF*4l*q@E~p6!-A^uR-mdQb44iES+HZJx&^x*SwiHINIzYh$C0C2zWlt!ZTV~p zT1!Oz%3YHZXcf&v$sPKQ`JFTZb? zKON)yS_DY(P{>FVAAqsfi5K_Vf_*tAz69w@s(FR6ajmsgP4$_FYcy~E{J_8j`>Khssp$th8r;SshLXafI=VA&YFuh!h$ zf9xS`t>R)llkb65EZXg0z$=v*#C_}_v$8&QdW9HBQ{(uAsBo>R#P%hH)4`o z@PT2%?cV6eT7S^`jVE4SC%4czW-QsQatoKwQ&bvNkrP+pi#@RHE0cB4_S^oRfO@P^`u?`(S7oJ2?ZQn1wbR?TX%VF- zm`@5!xp!D`trmy({;ug?mZ@wdq(xLGazMuyZBksXCjn83{$i(@+I_$|WXdo--Ay(U znvS(tQ?hoGAy@2a(G;Gf^f%%mY*t>2|Cm6{A=AAtiox^lMLyJqg2I)WgWOG|w7uR; z@Vwf-wcgdy4amX_hbJYouq*{ZzWG%Y@3E^Wh+k7Ktk1Nt{!hH0(KrZoLRCXZc7+2b z8{1vQmo^tFIv;eSGd55+EFhxeC!8PHc-!dY7aHHqq}T&T$E{?OQn3O}a(zWIpJpN< z#8t4pAJP6bwC{39ikIG%R*Ul-jJsN@JKI@@;g!HwANF(DP7q)q9{RP0KWP(CO7s*W zsKN)XQJm0|%k1jeBv${flTO(KcQT~{&jjC3IB0=;;qN|VX31}H$KOo7$))PJ1Q5?3 zuEkCUtxra1dvZQ7j0yX!2b3902T=AbNtE{#&DusD_V6wAx=?sU1TB+Z9?!?QyM4%T z0OP5O(a9xprf>LMAFKPwxWwE_fcP@H)A z^&tl1DQJUGv-^D0lf8_~f|&!!Mys{vY;ov|9Bqz(-r*k1`Ei9Z1wIn^=UElMJnnKb zIHT#A;K2`=^lmkr-TNGC_c}Zg_s}A)TA9pG3>?>Q!mn?gQi$ zbhM-Dnc|$olO>|#-Al$3z6MA%6+k$f8N7C+tyKTI!C(K3yha7H364^pYjEDUCYlWH z%NeA{5#RULK!R%z~At2?^K-HxmT=L6?cC*)^MxUp5ArjlZ=J2nq7Y zWBS}*7xvRY%Q_Eh$X`F=EcG(t!jlW_=10W%BUgkv#}n@|TQO7g2XbP3mN`C?c_8$H zeU5IQKuPi$7NpP2o!;@NF7XO+K013V zJXKRP$H;Y2NDLhc3vcbosKX0gqik*%iNrh|L25p5G-7E-A_Rl$5^yA24pv*vPdwzw z)wh8*NwYPQHkAIa)~_{MvNY{2QqEC-AB3 zoyp>gA{JMCIKyd*)UyD{3hj72&Y6Tve_V=A-uA~lvAAw2yXf)MMZ9#JilBueeCQyn z@Jeal>pHRcCTCrJB7zojQeS=napw@J&;>hGYCdJJ5Z#W%VRJ;=m@A!9*xI$5fI5U ziXp5>ysB{ih;3LEJ!A~QGJ6xlHWL=qMot=X=rm(SbmQ*&s)=>R4}Bsc*4ay)yVg51 z36;-GLt&O3V=kgK+UPGvk}3_0JJIpn#kyGpxAAwU?g;gnEneqW9oy-DYZ)G|K_{|> zq=oDm2e8r`8(3^%W>m1K6dtivk||#s*?HVuysWc#my7^qHk6`P@~8;$;Z?$QX!ZIk z%3aQ!hE_f#9LvlX0t(HN;|cr_%rHuCeok@|6@k7U`6P99Av@cK#l4!op7U0_agEY% zt?QSK753{A9(IF5WORp^6*%P0jV%9tb$#cl##Bm&W%2xJj{Xe8(ih(A@NXgfU)dpZ z!TPZi`^m$vKRJz*rsr!QPG$M{MGOXBK5A)s2y z8Pu%smx4m7f3xwNm-fE}LN^pBo$rGV;+&R?%{x!I>W(wiYyF3U_ymbfzOupW&u{M; z8#|*6Az5t+=1;Pp8b3_sYnu;1Hg}Gp?*^U=pA%T>U9YuQQTG^k81h`P>_+F@wk~UQf+|r%TwjqWZxMcP^SRQQ7Mbgj?ZNa};r1lBvBRpQ z?nl}vUsh^t`n}kpnK-;D#Y(Io4+$I@r4u`*K+pKjRgnDus@g$lEpfOkT!I`OYA_^^ zer=t*9@m?a|LK8#8fL7R)El2RM{#k;&TJv?$=BMMNukz?u|vc;gw2egX3^ntN<{#r zlY4W!H^n9Ro4%A;^+(g-;LlA_YyhLvt86s%o*vRW)@8gq{kL8M3I_iQCWbM_*6`x9 zv4qWWUpwHzVMEI)*!7`%N&qo*tL6y<)m@u=6$Frw@fLn54V%#w1mO$?;y4c^S%0~G^iW!sl1xa80NH|qWLkW(h zmLF=D_@{e%KulD~SrfzJ&bCvRe$-oW3&q}D&!ep!5P0A_=M|$>DpLM1!LE^(6|Hq zZeI3#-r~)lMaBokQeqo!``7O4Z==g-g<94!R$H_Jg;5K zuq#SwO^PY)l==KRc+IN#w+=L*jSwx}y92mW7<#s6ouUJmXl@Vdbn-VU$YS0WFX_>n z5iJ$3NfNp8$tkV~#_NGS$ft^G*+Kj^DUIQELckvC6nX*M6E?r{3Ucm>xQi$to`ct( zQ6+081V(Z6?{&H^H+!@EcT%#g9>R4u8H=v%3AE_uNa4}1E4+>*a^i0+mqEf_O0hSB zsE8|ZB?8HyXO2WTfr}r=FxEE*Jzl-~E`$hP(+8;YLXU8E5};nU1Z)2?{&*7U4H@t;}-JB+qLAq`aN55gMy>r8#; zzFnxjmmtz0#!2PVJk`9un+g9=*0BG8qk9Zp+ELll1a=T(0O&C;DbI;D0?HA#_H3Zf z*W>liJG-ZE$}=hEkf}T67V$pWW_18n18y1#dER>Dj za^B>R!zlI4I`>I(FPz68aNE#c>jb*E`kRYFP@fzRwa$Q=J&d~qs$OZ$2rWBX9 zQoGGGb(nKR@x2^oH!E|Fv_ZC>tJBA6UkwxGwZbVGrOo;v7knc(#d%WLCr+~YY zaEWWXY`gUDl%NAr$4Up2&cwkj0A8RCa1>Hi99D?dxig|wK>@1)q{HtnPZ`mGP-3m@2U^!Su}FA-gV>#h zvZslW11C>Wq>=#FoTt~P)HLJY^R3Oo^A=mfxT2EQ@#34@o2$~!2<2C~u^2+aV{^`o z##_H z`aXH#T1{Oyn+$w}_Sbt;|I)64I@t_`a=^)1eA+KwdBgfTAZx+@w~aSNY#q4G+BxbZ&c!&Ju^Osmmu)o* zCf}35zN_TNC+P%sTL4h|c68^*w&lc%!+R(c{AFw+z~`OzyXvH|Pf~WBr;LnZaEQZEEafMMr0NrnxvgzaH!5QwE+KFj{>lB6QH%D5 zs!RXC47g)W=SMffB*Q{fOd8D?Pj?j zrcZn59jBi6=dK40h9~n+iXPo;r2_ePw8VZ5(dPi0OP@XpCv=UgrJFuF7_WSUDqB-i zUJwJGOomPO{eJzv{KsxJM+P@GKS40hF!`!34D(l3Wcis_T+(b~PFLpt2&f0A$~I zl!O6LM4637Uj7aMcMMaJ4YD-wUlV6d!~j0)++^14Fb=GTgkFo{k|zd!dwj0*k`S^B}2j9gjBk@JMXL)z%&%ePR^aC$#& z4=R9>=p*(;nnhx<7gxxSPc4O9+{Sl}YxSD&Q(jzu^3wnNlkbA5K5t*B@__rN!l0== zJk3|lhO$%AAtY)&_9btuK>@_f*h0_j1Db~bUxC(i;_qZnXY!q*CR=f}*sg%}&k=9U zaT?5hNa)_h3EzwKMJ-z$IkC5|Fy&JG>RX6;P~RmWWwsb9omjJ+)3!mAmHjRj2p2{m3eIfkIH;S!c z=qtvI)!}lKL+nnbq9@ZGp|rkrSw*ge?D+N0`$a>b&ZRzjkZB=5uq{4q%)?iwDLM~r z1%x}lqfz>$p)k|iszR&dOre6AM=TFIjxy%KDEY3K+g%mrS*OL@5|DP!(LW3GQXR*; ze%cQAkz%eNxL`lqxMv1#s2yQ%Ah8KzGsQ&l`drB;J|iqqbBjS|XzDBij?jz%Oie+BwJfzoLClhAP-2jsKW{9yS7F;Cqjd0D=JCzxs%nO!J0^9P z=FUGt9%f-3C=xV}uBjtO-fGDMpbSVJ@?xx}f}y`wG7Q`&O7EBt-fiNnzA2|RMm5Sr z7+OmSC>x-(xG{w)g{EEF57?js#?*BKAnBUtsbO-jf5cyp^D6t*^Qx_fjxQb<-Nimz z$ny%?-sIZtjJNOE3x@d}?Szlqi^(!4^{f+RkbHT>cRct>qfW+q4g|=Qk&DWEiahHG zHdYCVbErdWy{ZxjL0jry5a+&n#jou9hmPzJnoFhbStPW3Yjm9KRH}PIeMT(dy+sE+bs{3Nu z#skP#fHpSnPk5V4=V|9$tI*((619QZZ}dxgF;EBSPdT=KAKnSZgerXP#&fOr1+|%& z#o^7!&2Mn~fqh#5KZ_VX>NvY1KOK6c=c4#t38t_*I2j5e#^NDH=0WJpJ(Z=R&YUe1$rRCJ4^>Q9L zIIgC+SJ$on!FF}>SSiL$N`yZ&-)AwnXeZnmeN;wD~g zrWD+aF}F27^_n&#oe}vL%(V4KX_9(3t#~g7+#nz`kzW@LGpp8-DpV?r&GE$;XMtV( zCI@Eo9e<*egDo-V#_+i#omu77o4ahU0d&I>5~~M?9{G8smRsP`^F)1%WZv1HrUUcq zznXn@0lEf(K0iV$DcPTyy>l4aoc?2+GufE27+Q#Vpd;ZjF*@8&tvh4}bv42@=cy4vEu05{gt61i#0*VUb)^r7hHKqm1M z<`*|b-(iXe1?g0aWRaTE=xwfpw82_L)Z&TFz_!MU9T{e;QyG}1d1Z~-fRG3U;B=VY zvyb6*ywsY8ABtzSWg$Lu|=Q8o&%I zJax+Z_xzvIf1ke{p%c}Yq-}TX249X5dIE+VK@Oz<0@#OJnRIW>T^GuYR6%4lf0HKyaO{=?%uuoCakl+|4Ow0bd%^;ss-RD z{62jeMk)YQw8IpnfW7L8@wH|G60|316|>kVuE|e_gsu~dKDGw(nZ*Y=WU4|=3pvSd z<@X7_ID4NurIAt+!#+WC2`=m0aT6cmX`0(x18la*kk`4&cK1dF4R7=vqsJK>z8E2m zn+FG2?XF*yx7^7vpShOF|J~%D@<3o@qh0+`A4r4V7Ca=E8{RibarQ@bQ*)el4nS;9 z?t>0pe8xSLh>dY6Yin+ZllOEY=q;T zfk8Z<2@%jQGXMWjJObwDIw)m5G9v4{v9yuW3|_92^Js&A-E7zB={g?j{mN%8YPDuN zK?RG81J=IYO{_;bz|@qwoOzI8H{zjeRZW$i8`{w5E8}$d7OP4j49qc4o1fjZ6)Hu4 z$*V*=Pl_2N#b`=dN`(cyjdJ!iz8aVWre;LWgAIBC2DM3-7lCB($s z=H=xTT28XdZaY0a<#ju@R>{+74HKO1XbYnO9VyvDO-FL6P{WeJDCJN(k*~u!s-)D^ z8f0M1Fs)DoP_Kah|1d;9|9|Sg2ic#X0QoYVfcYm{y{=pQp}=L6dq4>RY6x%>ZGroj zuG9r|Q_(Ups#e(HZ*m8^{c|_&A6Dpqx)bW$&8lowN0nZa)Nn@%yeCv- zCBh8{C)ODq*2K()0M@Y;A|s3+PlLgR$0&K*AkFA+@EIQECTo~Nw=NOavF{A*B&q_Lf z!fdqX?`hX2{7JNG{Pl~`dW`#)jx$wBK|zJw*9k+)h;n*?UY`Z7hF2O>Cgo3`)`Lw{ zAE@CPyS;G@(FZ<4wRZK|oo`na+aAfI@x>mc<&Y;{4TbhzVtue$M!1ye7RIPYX{^|3wbJHX_Mx$Vd>tAkMUguu{9!R_ryOQE!N>L~4;kcfj%kgxA zj=nx|(~<4|lhf0=9AbT77e2@X;IzQPIqa`Aibp-}kH;;+qsn-h%MRf@qs2N}px25? ziUR7R4KM{DN>y35XzC=f{dAH;^rH?N^3gXI*65%pGIm+$p-O1iOP@aR#3il^24jX) z;Y$3h*Or1A9EX^d&^l~DApx^PIVqlOv!^Xe9*5})-~MX|{XuoF3U1 zQmtra18}zrYp#NaVml!QfP5ACL|hv4^cLBIl;O8!XTu2MS5L$Nt?AiQCkTXvT_wU{ z-6Dn2aX}`b{@BL{*7lQ|5NLuGwv#J~E!~s=Xku~e_>;>&S4xsahdOp(U_>|=;hg&Q zp=Q*VFRfsxmg1{dBtw}>?S{NIquP$U3(-o0V73!jb$hguxU8fkL{-ZM3j#FHTCSUA zFktC{?j7W)w>5v>PyBM})W}qT$^ho@){itByr8xLO<%Mr=u0khO8SP5KhXJ_XfVc`UD&x%1eC7_^1JKj&dlm||_0%nU3 zdJ_OKyBDf`)y&LHwq4EtxB9T?O_(zn9fj)Rhcd2^I3XLRf||XTQ`5O1DIzVtV}OA& zCv;UJkU+w~#lC4rTb=cNAO*MA>CeV^3}6Lv+m{=dr)o~d%ETx}_9PC{XRcLF2D-0k zErd(Y=fBi15zuLz(-{0iv1%%!icVRjA&t!1iEJz+`;0UI$gUhxa0NWKhwuN59qro; zLErjKCh3JE_6HA`9zBX_YI+KOHQJxSifZQsV0V}AmfW?+ll#muE170OH4ia^jM_s# zXC-IOS>>JG?Aa7>vKU88IrAX4#1L-5<}>(UH6e|2F>6PDxr1TqIJJpq+a8vFQlI)N zVsfBzDxx+=xJIn>)`J_0w4{_6Vg-N-6=_kUeAP?=bW`|-N@)jsuH*%#0~?$o0B$vs zUAy)52PZRB6q?=tq1e_28d6oY+$(+Z!udxXP!(>SIN{47oYoTluz9z0t_0VIFA9D> zH+qIo5#@0tHuLe8?Uqx5*ggSkjz?+15dnrRqA_i87|l|BE6Bjj=Z?+IQfh43X2yJx zxXa_C>l!og$mXXlSFO{ilR&*5q|~UdAo253CcY#$n+wo;fWDdPw=HIK0x|O+!9Qm9 zma-3L0NN6%^WW!!;T{8uk47)+$ur&Qo4E_O$E8rvD)=CXDJUB5<89Fdu?sG&s>8SH z^oHgEJ%%#yg?MMpD4RJ-O-L!NlW2_?{+z4NGtbn&+ccM^gm-l$pUAK)?sKFjRr@K# zCt6eGXV+0)QubNe2rz4W{^qIW>Bb?hllzCXt`2(29qw5|8qodits#UD`6r;S*W;4+ zKQJ41{HFrwNRQDP;?WS9qBCVGKq}zOYeRgg@Wj%6#zD#>n62{SeogNf(X&;y@Ur8l zAxKc29p-*Njgvcl;c-o^0OLyKQqNJ5giLKYaDrUsZr+=ZCzak?(Tsd0dH9^Wcu_|9 zg+rS;uWMEl>6fu&l)kZU+=0MrS9{*cMcMJ`xreKSrsFfLA2}+oYOF~>3+R~#_kOMM zot%&eeZ*}{e@^-lVVyfWTV{{HXZE0*(TvT|+&2_70azlkj!AKGb7BwNTvO+KY{Px` z03%U1`Rm_=k%=(&IvdK0RSr>h_L$%25H7}rgmgaL9-9t*&*M{~nWPXhGo+heS-uG< z;Y&w?w%pL$IpZz9%MNo1ck;O7|RRy$y}+1FWnaQ_f znObEn^&XnZX+1>#H~{Q8Sn;DLm6m?e3zDodtZwcpc5)MlPsa4Ymn<`zW?4ax1J(SM zXQ?fLx}rbb)>Ujlr;I2TxyHA(hNXGxd_K>^nVkN-M?XCn;q99K8cC3&glZ&C17Lhs)o)*v5?ZY< zt|{jIYH9>RhMM{%T%i3xqa5K3zJ%sdka)9g`+lIr{vnai1O}@8FrTWGWd% z4`E*!RaN(WeNho5`TPL6GiF0}znzmX;PS-QAtS<vu9)fmlxyngXGXAo+JQ4m4qrE9 ziB8({1eB9cBc0jTy79nV2XC+=Rf`t=Itj3CQVF?8$bEn-VBj;?5%;G3)5Q*;a>={m z1bZc93m0tOe*u=0jMU#VZ{w8zRQlB# zXR@x8|FPP*`W!S(&Y%Xy03B9)7zQ3XPq=Wi(;|7FJy3@dI-BK~<6{p>+*K8wK- zX`C4ieyC?Bw`NN>pBXi{RA3A7+U`m(Ks#*)Dut-ZA^ld7{INycJM`IS-x$wrU|mO9 zj24-~U2>9VYr3oBRvjs^c+*hkH<=5Zk?n2nT5K-QLf-dR)H$wX9ag-imot4=!prV_ zcZ3~F`L83F2Zp=Lc;;{!BhT@~LoUdpJwmmsv^*+0cOUf%jEXn-(GFkcCA+sUng3}Fk~y*E2nYXJyMKtPXk z5dmH+I(fH+f5g&^hc&4l+;C=$9V#z}>M?dFg}eEst@e|~abX?y#47K6&=j92olKpc zlVPT#gKQfP`?js+Kb=3{dvSI=wBp*v1XPNiYklk9`rNs9B%#hhXccLorS3OL{?AG; zl4YL%y=+GS?sd0l0m1n>oZmuv)Wz{b&1td$;5rLp)>;Eo@URHLr&%1PIs?T6$bFpk z&W{&rR*qNrP2Q)8yPO7^Zv%B%YQvysoUsFFR-$s<6dVD zUkN?}rmbvK@g=)bT`Ec|%HEHshZzHZvuhrZ>3=f;-geo2flczk00}1=?TfVgrK#Vl z?5C*A7kSG3{E&JjCzgSZuf_5^&$0s{;g|GR9P8%~nR!h?yGi9puoFp>K??EC;5Tn` zUH%IuE}${T&Np%MOf!@~NKYVoiEEV_GB&S@?ETK7i&3l{oi5GT$pC?VXsRXm={N$M zay%woOyY>l%X8fOL7 zoXozaPJ^|vZ&0-clxfVKL~8oXh^k)~H48yexks$i#9Qc3ea*bQ@jP82UKV!_i9@~H z(*`Wo8-0{!oY|O3mnHJ#bAYgaysT?=d8Vb#1<+8GR1aLwOz#Aec(=Q(5>?50W84nN z0h`}&Dbz|L)wl45(2kP-^I&6-_!VnT4Tv7hC&xo77rO#+cARAxcD-NWQ*TtHZ4<%Z zU(H*Mo1edrOlHeoTf^H_uWP7M@RTWl`;n_0+&e=*yxk{|Ct$x{^A&LUtJGDB_rF+a zYT0>Uk7mfN>~|6JXS=exlfypebqmT6Z?$zKJM=&CC2)}$J3W{_B-Qo#LAlyOa<6h< zuB)a7+}u`iprYWq742GS{#XHD`RK&+wf9Z}pC#B+6P;Fdn{OeO-SJR^uP0xE;0=%?JRhKqx{Z5(qxUoiAIomzT~RrDl9Hq?de7_j&E;>z97i(>zYf zGf!H1iP6S$Z-wNs>Frc=kCfP%WAZM@+oI3XIH2VEX@sOpe{1-r)bd2G^=4ye7Zm4r z_A4?@*ca3w2m<=n?W>;Y#jn-s(IQq(kMrp#d(X*;6irjOTP)VvO7_i&uwE_9G~zNG zC(I(F{{m&1Q|(aHtI29qB4@06-4+B;WNkM#efNB>enVKsBDMsnV^5l#U=+@BRx)^U zAO2vqeck-Vrv+C4RbhnDNNW?`)dDle4Mqe60lfs;-c=+$SeCZLaOY1|?fQ00<4IMa z0|nyjCd8S$jB=WBRWfMAde1U4WlZ~(`MpsZ4U#~g?*0P1BC7SBt~+m18AEM5`SaoX?8xZGlRPlgzBUckhkjU0v&FgjI`(5b#mBP-JD{8Am)}ePz$!KP zz19NRQ(_kgX7c=m9^|y;aDn3Mb!`;ahLidkAjWxXcO3P%VqArnP)m@l&8M8pf5C;Kq--hbKH@5E zkEOHnj|FukO{^|Bs)?YyOfyGkT*dvo<=Z?zbxcUBR;qXaQ!PU9#}Um)V;h_JQFyA} z)&YG|)dfx)&wKbL!Cei;Z+W4QESaMiCbO<*FN3Os>~*_oz#}a()%vRNY%Bpv=CKl= z!IHdiZ(W)PFAoi5#h_Z;yLV*>tz1{^eR}b(DvO3#>hzyF3_WYekfhe0e%0NODig({x<*tpH_!pH(#CBgGwye5}r20mXTEztx!#l?O;LR z$rU?WGgs-3@2t1*51+>|a=-@BRRF@_q@Bn_hKcf5;SXs??-k{kj_F;SCxPqU;yjRr z)PxgQx#kmpNRxt{&jQ0^9U5S_6CfPWHqGHt zMuBjYBgUVj1#lYDxzMQZ?puhpz>@qR5Yc%Vy;`xKp397>#ETs}d7<*%89(mg=bLL; z2XKutT`wos%LSK4WCTF)497$ILA=A}`Vs(1HDuf3DRREIestvE5!-p06M}Q%*#X2($KN;Wtf4stELSs)YN-*PP?8D-_~*aMDK}W) zCr_?>&%sU%Kq5zg>57Gfh2xfmp|?bN?bOAwYE|jJ1&~%->%@AgyW+MkZLe6_eg_`w z{j$sy*We^#;JkAz%#C|$5EL{(aFc9Sj-1%^mPwHjf}2h;g>z)^*eqKoVIfQn^FQJe zh-hwICmjbvt0~zhoxZgoB^LR~5F~P!uK{onHFFJD62J(|VJxhr2&5ofytcj)Sx`r9 zM=(R?^@8?RG0>K}Q-(HBoxZjPK0PggZJQ3Z#HLAXBE8=uHi@zQ@SW!z2}qQ{$8SQI zxAS4wx8M*9K)ZHLa>d%)*8ti5v+YA(j&m+m&yrnLsTJe}UUqYuJ$pR}kjd+u>RIdh zwz(4}Nlhve7_v7sM|w7kZo!RokC@GO8D`#?uPc&244+rTZ3tk}?nDWyNUz|t{B9tl z?s+Yg0dD^T(Ch&pHQ1?c#jfzBD^=q9#kcU4=awW1D!D+F=3DLl6*`!zoIj)pSf7g> zU#rd=-8#q^>Gg3&F$|mIQ(!pr#?8UuLYwYWKc`aynMtuA2ra_X0NBpfB>XuWhocz* z>HAx1OLd#(bt*H49MMVLq9C#Q&z^$s-U#Cmd<@gy9;@j^bYu0xKPna<1+MiDNy~#$ z+P6_7HQPtt-b>Whk1B`c<+JaRSN?uZHv7d=Pd|ifO=EYdtNz#aH&3LC(+94j@ptxD z=89uti*hu6f5ZaFMDdqdK=&#v6J@fXn6+J5(TRX#B{lv z)S0XVAp!uV&|0EUdM5I!RIG2#>eC4N{t+TXM*IdIU5BZePixuH?Ln&=1lx!=6BW~T zuf?cw$vlBrXSKx+X zgr6nPE{^A}c$s=2jkdc5JA6M|@e-oTKFiu_{hbkoaF#OaL1h9k>KyeiSOBD98+vRBT0sa!z$mFnR6)!}?TaKA{>h+@ zQdpp@(#n&v!Z4`Sp>-Z#I3pO%-QDqv*nD>fT+cpl)g7s7HpU&(7KJmIF-K~^@Y~PT zeS?bxcU|*8UyeHKPy7pGzn|Y+l?KlMqfbPcuVbJn4YL1zvmQq<@evU7dVT=>&rMV$ z?xge}eorncq&V>N$(dnvtZ)1A*klen2@=RHIM3-D7|ZV%zx}3cWM(tK(Xgtl)2hy_ zo>20g9q@6MExC?CALj-Q)x*q$HY7znC`EeLGi-ou$KAd53huAmg!pB0T)!ZD<3svrlW`DXj@^uHC9kEW z=T{l_)SZI19iRs~V?>Qfg^X3KWB+5K{R zj5wn-8Y;7~p*CYmEnDhcI3go6M}rvZ0s^M)S;O@M#lREy3|}*^TW?*xfZyhm|s+P+L*1` zlGNZ&sn)t>!rKjE2OO4Kac|k1>h9K1?RSpL4^uFIx-UDbB~thEbsdvlFJvh@PWXS)wz4gRD;`*q{TL9e+5IAL=@qYwzwG*udwbXa0wvYQ- zS8!k%BgUMdf|4`reXO^kQ$ar2v2lh!_(EV95liqMk^-SWtgAd*7M3zGi*cPR?BCXm z>(SVU4XgZD_Yf(04J5?tt0FYK*)$ZB>oJ1$;&$!iWSr>K`W{sb<9vJ*{1`->d z4nPd8xe|Kp;7ZqNPyTT}*q^u5ofeg9ECGq1|C@%(1B8ZwOlL%~l1S*RRYTH3(0Q~0 z_JnUDav6YI8GbRiYc_lT_j0SjP0sruljoFG9N17y6=K!GBOIWG-c$#9G{F&vKCW3u zwZWLA_$ga8S4T_#1%WE8g{p?H5 z?y5@J?b*A`nHQA8C8R3ZPzygmU#s3A1Z#inoZ)rS+gkDxG$yp6CtBP27@u2E@K)Ux zPbZW{7Zok17_8ms@xv6vvM1KhBy%_S0zDWB-i(U%Sq0ttFGkHI_oh9YnnKnNg# z75xa%%@O@UV_W<@z#EfjpPR!pbg8@`w&6-uaMD5;(9U3&R*JiW}9P@98N+5iazozI(2^-1M^_sc_Pz0R6 z8)gR=e<-))2R*;>c+Xhb_w~Sb0o#<$+gf}%*xG{!J6ETzKrhFP0J8Y=(HoisnLlB) z$F}S5jf+{G%s5D47-#qmo94VwOZN{4Uk`QpkjyGyXzv~UZ-1ZEUQ>rzov6a8&h26D z2$UCA>21IE1|Sq3HR4F@^Vp}@P6Oc7XW=Rc9fr5rG-16uB}~mA~T5xKK{^lGre~N~)dk z&9omOAlEJ(xaZuqS;eZv42>RLdVh|pY3igjP`t7$rf3Mqe|Xp}Ioz746WzL=qKdGr zU6gC95;k;gaYFQpfSBLy|I;f18H~}nlXPS(g`L4p{f0(+@cM*eRJ~1H4Q0g_@ zX<&-~qP5h+rYV@B6oFD%>owmy(p?Oy;B5P!Qysc?ssqo$6e6}; z4mljmmz+Uk5LB5FjX?k>dbmlTnKEicK80@IQ}Hwh7ThttzcCSB;zK@m_CnX;u1fA5 zOcLScrae^R7q_5^TK*$_zsCG@dhLVGiPo=Xnjjp!sN;bEz2YNSpDv*M@3R_KU7wt< zi&mA#yLFL>WE!{}Btl$)?`LOlnaXWDHm6)rO66C#|JFN_-uK~(T{zWrHcyvl+mX$T#d|%P|e}&5LLmYqa z|J2u@Xj(AccME|Cb>2OK1QCWHYL!bl-=Ib|S`!+rzQ?@-7wcLTUeG|3Y0skEZ=4-j zr>?4{)Hbsx-z1|vWZt~-*C_3`R%)oHN`TlOalBKJgA?@Mt&sY{NFXRFvNe1yhXBlI zR_J=odXSfc4#o*cJGul|6Tu7x2*{qzRxNQN?W?L<4x7QaL0ekKs&WgIk>)9u#~<-H z@W`@POWz7TaGG@d7U$0Irolb>$zkFbqT1yNYUU?+3b+bKo+aB|bsJ8oO|~c((f_`y zD9&}EVzoMMmvoUVs+HiZ_E8#hS{C06%3!~7&8FrJ#=HVoOSsurp~{yh`+j&uCzePY zX=ab=3{mQ~cff40_iw1BDJ`a70i6MVb!a~j9V4Ey`E-=l+nok0T`t)`sc?V@r+m|4pRM% zb*5$L#~1cXq@eXqRYd8uy6{cI=0QYXA91;6XpsH=l56Ef#nLlx!6kHFB;a$HpW|Lr zSi#C%cz+`$xqMPOUWCNM3FuGgMH(m<+Xt@p2yHNaP|vmm%(LM?2ME>8D>s%EsDSoz z0!4XA@;ykSUW>u8#ccY84+4%I-OXm#Eu2e9V&{Sc6YwfJxRIf*kogR{Vyko2|6n-) z5_GLhGi&R4_y(Usr3)+!n7f%-e8AQ1!Qy&>;$*U^1B|#@AMi*Vx4OPE38a~i+no}d zLFfb5m42K&GbSeZYW^C78k#+qX~utc z4?Z-EG8nwFR8rKk^foK1*%W`$n((z<1S;$vI*5f5*#HR2M;z17vNw%KU@W&wJDY*x z_Klz^BHbY7zTRL1y12i?66|TG5D0I($m*mA|IK8ihA5Xde^|yF~7i`32Iacd77wg#t1F=y4c;kIPp0qcFQHs?eW= zR;@On@PGtV?r*CnP`SIu7{|^Lh}*686cM`OSEp-yVS6ueb(uAw4qPj^7jH{U8zAw5 z670z>neVVFjws2=?0?YPx2X@Vdv9z#pj-ib`yO_;LH~>pt|GqTK{HAVOWrVN3zdJ0 z{977HgZmI-X&QiOdsm{5nYK2nJ5`M`v5C{7cjp_FuMqQW7S``H|Bf+%*+WP6v-@$3 z)SK5?1}pP$t;QLO`s1-g!?z^8m!)LA-ixkv|2L?4;(wjwWxjC4b95;?6Xc)Vdr^*8 zuDAijGJlw|MOfyx^z&8l=nqCCdjR}A8vj*XRrJ=hs02?ElK^jo?PDJkKa*z(PBPEv>4t(um z9AJ=?OXPT&1o^RizZ)tTLO8;X2347vLj?*OW9TAE^}%cw4s5vOCu0ztB2pWdyPJ3J z$?U6UA{_7EpVT#{;H1%RaZ^u!R}w*!+?`AnGbplpAKgojm9J_qGG%Vn1D4Jsj!$?( zK_!zor{Y1@7n%q{RTJY&jhDftXn1R zmNxFzeJEsRG$d8FFOR``KxQ=0?WOas#EGp{)BSeq`08&5T}fwtQ;shTvZgPhrEFyG z>Av;;)U$bC@MtkfRh(<<5vBX)*b%!f327p&2Gyfo2MeD2s#spfo7%G5|FA+&HT26502=Gx!H<@z5r z`Lng$&^wj2?yJOjGriL(D0pNEsq{(^33Q8hED>bod)V-s^*VRw!Bq9 znJcP>2xM#d5523=MQP8k@$4-WYAPdz;GWzqbnbI_!&Ldh_^gPE`#sbg=^2v;e9A$8 znp_F`k^(AcTN1})eTgy8>sA=H7tK4zOUjmsLz=ta z?p&;L#b7w2uE%eI%-H>L8C~{S%mI*6)?ob7cjy0vC{L~j0*O8?1zSDp?#>6U8JeOq zwF^VMfh@WrDYOHZVhlr{+TmJZV~fT4psRinz1pkC=~bjA9)o)NQg5)kBGo&nlmlq! z>oR~#n=T^_ssTdw>>r6z^KO@>R0vc&wTYis5#}oNAMLn7EQ4&O0u+<(IIL!79G~y? zj#WEzTwY#ckn=`mB)Y`__^pC}`D#{n6r1q~YAYrHw}L+us!L!S6ZTWCE?_E5SY#xN z(a^Tgf<1$%jX1cd^U&MA5J6-JNs

n@C!}3qDa$FKkDU(Le52b;LuK)SN_v|P(yr- z8NmNY)fZ9Cv2(w5gy6J(qjA)qwyVDLfyX)Hzf|SH4x%JkSNO5B3{0O|8O^7V&It7; zclvJK!{r^%WB-tl@I9Luz#4bOaY0v$1ABd-ZJQNqj9|=Gt2c$4sGc4rm{`SxLoKNd zCU?E3PgoGkFPlXJ_}?f2cYX-RgvIT_bSYgh!pqho0}Nv}>6mEB6_^nBN%>|b3wJQx zH~x0&HF9bTx8rHvTMFekbEPXW&o`RFOK7WN7yKS;L0;;=_IB@gO#B7x5iaRYR~26w zhFpZ8;fT-0a%arb+xI#{?EXX%xDt)U}1xU{^5!8dFhV$g?*om#_SYLsy_T< z7)rutUp{Br<9Qs=_h{63f6t@QM8|MXv&)$8+hOCGb#K&Rk&oFM=UMKJgl)TC`-Il> zFq|_}q&}GZnDcsNg^SSTqRA#;2U zSb7cX58@;|-;YiC7YkgABArl_!tF?4C8oLy9pN-ZS4B22UxC+Jft50WQA;j+-5lyJ zJI%EY{Ef`a7bdlWgS3bI=Tk2Pj=(5CD=%)2e0>NKAIzdv-i8zkYV8SiB_E1d6^C_{HmjN#@Lr<3caa*4Z(P z$WHvOOpS4US#)|ie(ya8pwo$-)tYU}W!?weQs4Bei*5eSs{8vv&L4ve&~5P$X1)Zt zb01E27XY8`eD%-GAS`>{zVCj1h&gZP=jS;3OZp!_zHr!{&Uz6Y9ZeJeoQEeCkb~qk zTSrF;w6qxNX`j??UTAFX<=bA}(gx)`Ufyk;u5=dc`#|&zi0(c+KF0ASU~IDBF{%pu=m=dod=S8beYln9|X0xTp5;V93PQ zLI1}ggRa@Vgy@3ODK{Q4cnleFHfU*AI0DDOoU^m_0L+x@L63XfvrQ8{oU;~o2ckIUmIt!=+DJr#f;H2OjI zEs#P~;02R98Ogs;lNl-y;Yv}J3zrPmb9|2&^bEV!stY!$Rg!N+A3~&vp zg5Fq)8-N>fe0JsTd_<;c>v-jUZYzAq`S{i0hdT|EPunKjg8aXrsUEhP5~$^pl?jL(qNd)V{iU&Qxq5kmvlpz{+-LHkuV?rN&3K(kzP;G`!sR zNvr0(LUp8szXthE*EXi@RCQUyC{LWCZJkRw;ZvoV$%5y3-I$IsabyD#N2&SzK^=R> z<8$Vg{QTv^&)V%yGB_cBf79dB_H)1T?^z>hoRg}F#c)}t1Gk)1SoqSPj7JHK_)>Ip zs{up5*tF{)d{^gtW=o?Hk&$bF12-DSWesM)rGp8KD}df-L1Mi*!Ns@VCkO;tgDDNc z@J*+SgHgPP53PiXcQMgD<}s|UqIN{8YnNQb26`*c)sIT5kIuSfHF5`}Vin3<%6$iv zJKPq3WcQNZf3(GaQB*8ObCLTyDIkoKQmnp4Nop(nCsFmoAt3AOa>qrbrpUU6rHQXR zH=U1Dc$HOZl~c;-zLxSZ(%;t_Qad*zJ;2jpwD>whf)A-|%v%}}$UsKH7Y#{R-$^x- zskrdXW6R1?D0KVkt364N{385^h$0kfq9Q&x$;)N!3AZ zWOVee{w0cxPC#qEsjf)QJ#SRXYLxo(@mD-%hwtonTa70pLRE{YmF-$}#N>hk6-#Y> z2R7idL+s;r@U2{ca}KK%;f`V?6O9bW3&mLK(RD--H>DAc--<}C6jip|WWIh5h`RAN zunP{)8kvh;7^LWL#H95?1?-FMO(tZqZQVrSPbxI_D|V}$!#V5|(D0ceWL4?JUY?yj z2e7#@;lP2FvIr;lHB{HK#VBb!Gi!}ehNREwHhzP-8&Br9Ttm;lzmugT)3oNV)1bv8 zx8DlfSi!J>{RpqRy_)*=<_XHeV&^%E!I$98B2`qi)bpH#ALJdz!Jdk}Y)^e{`IWW0 z+r}1S&7qzxphFywK`W`M+*+~ZqhB_>(vgKNid*rrG(hgO|3i0Y+d##MvBpIb(qv2@ zm#Tb4bC%=#KHJ*TwI1fwLFafLbL?~pk=ig)MYaniE!w2gFir(=(kGtmxs|Hd<_VeR zxxaV|GX2>1x!*zm=fM3bzAHs(u>i{U(b?>R?$*`35qnxj&do2zS%uK>qx!2b0r#5q zr5-MlTqR^oqMW`=dBw4cuZwzmh9d&(bfv%EgzTX2gtVIl1?q#nigj_-6Z3 ziD9~utOlg=u%<2GdLDa~`E!tBh3BYcRB>4=Ryh@0b7WD1AuoW4sMOZv(@}7Db-_0J zRC_0bF1JV`q~WV8YnoadwXKh=$uD=)$=PCMC+YE0$#JMC_kN~ce$EQ?SXAm%wA-8W z_JmjWYTkbjgY@@do;vqz_OHXC;Stg4Mk%TxLqj79gD}a_w)Ce9x;vI6TDG&_cID+2 zgF>>hblECpZaYyupAX={W!3huo5x)n3->OzX%*uFlII~$zSy`YrW3;-ueMBjs@aH- zS2ht%>$_1C9mdq$MeTu?cK2@89Mse|8r|&2eH}&!q_|`Aw=t+)Ihpr5kGmK_v#Xuo z+Dn-cba6Os*^1&(1~khehEXSJF%)ZCdlJ@Ci-};l~%7~V^>_XFUz&uX-$A= zJjk)f)-eR_dpoNv;mYo(M`6DJ4uX!sHdx^lYg{_PhcwonJ0zb_*G) zSr#jDT)w{Qt^kJnOz)f%8IvqaJiAn`M1O4~jE&o-qKPYGEcFFhijCG*x)B+kdL@Tr zZXDnIglna9u+0ZQXDtN-0|%H9Mxe~y>qoE{{CjzDchGeWoH}6D@kn-Wq`XJ*KjWz9($gIA=q)UdQMd4mnP3s+iw^$8xoIXHt>v=vZSZu z&h?{sj0;DhL+aS{3BA}CO@`dXKLAmYs5 z%AZzd(h%0d9b{iOJjs!sziDEd;Us)$6R)9Wxg4~6b(DmL<uhFvT_kU{_-;f%4nm z9~9m}&MX{H64HtvT4xG0+Uw^XEn}Chclv2A4mce zXkX9~-QlT}qk6Nd$IBRRuWl=ad^O<+8aCD|~WE0TX2eq&l{uw1BHNU1w~ z81?3f$iFiaKs>f)*0$N7(g+f95slk9#dc(Ms$T>n1;@m&D$YG@ZC}(4rBo#4{8_bE zX+h@c+4C9S55N+X+fsed*5PW@*@|8|pDt#gF&7ID7^ZB+?Y#GPx@PM6W5)S3?QH@T z-~Tqxo!UE!s8k-0r`x#r!DjThm=ye@ZMF&Tir}VwaPvH7cMv{ET{yg2oTqm) z2i4rVG;>08lRf>j%xzoLt>hUgFXML;k5syqxH>w*5<{}iuP$Uj%vI6iBqT(uH}DpG zwMgZ%J^DW(zD8*#+*wC8yjiXpzUsP_9H_(l^LH>!aW+o^<@oL2kC)e-bifb%u|jcS zbLVrRBI5orqbffC>?Y+g!Yh*iM>OuZSlI~6d!RAQR+U{LWFrp^(tjBnr(=9lbHTk= zdzGo(|Afo82L+1n_vJ2@Lfd>h+HyF3XmdGBF<**jJs+Bzh4U8P?>2cDzEJDTr42u;X($3{bmEa1`dumPD+qis2&N2 zlBSMMNNNr=P4#>jm0{ej!IZ!(R2Zou+n|ct#wWPDca3{$1N&Xv^9{{q3=3#Y4k+Qp zFHM$^F;V%4oC~hy3E%8VnHa()u2wf9dmjvVMeZ+%8E_iz6=XWUJ(BP$4bkHyrGpoV zA=75ksn@6r8)iZqjTAv80xgU;`=A*RdAQSyeWM5NFF#M=pS&HP9$HFvbkDT$03=m!BXpfS7iTZCU1b5csOOJX1xX2 zRr#$AH<@AK;;Qb+ii{1uQ`t(2_TE+deq*{ogKTY`EHpVeMcebTY&Z|UW(g_|?n}40 z9Dick{8Tw>mH^}aLle_BUYbUW0G8NP&2C~tN$+Qv#w0V*l@^$S9q^}Qnp9-xZ#&eV za%CBxrc{c8&?&c7ykwdCInF<$wfp-tt;`r{WMYGfESEVGh3aB*Q&BZe$uJyW%z$d` zs+1xHp_P>mt)S!qOcM2tMGpw_lvB3JTuXbtyhymhc(H?h06tTD-}ps_;s!G?*Cvj> zC@k5EVvST{loR!<*z+1+83}J?32%Pe8ei*)vql(~{d5TtjVF6%=);?s|!kg6-zpBq(g9V2vcY(1d`keE+$%typjsLW5W|el9N9gTDe>hehd`@5?{aJy%8)L_foR_N|v?s{ZZHJ@eC4+xZA$y*zwgyNPFI6&9+GIyX1d>P@^KYxxnZY*SR&6S2BctP)duQf7tL zsWBJBiq^M`B}+W`SgyPA%j&EW)8?88jXP*NT)fF*w5Gu6?;)CGCwbO<7*^%7macU3 zg*+(R0Tq4+-UxB<1swP>6LvgY+-IDeWqF-Qyb&omlFh~=zgG7RH@HHQOua|i<>b;m ztY};A$rkB^mZz#8HoPIy+N!v~ht}495ynt%E3@2P8xX=9#!B1h>PI1J-Cvl2=2q41mYZ9j`h z@cu-jL&{ddHpbI%0{QYfx+KNq1jW8i2+y}C@p9GJ#&a>hi@Lr`Q69iWjad5h6*QX}>2NGr*uEsOsI>YLw~8Q+W%^+r}k@r3zjxO2?}? zXmAkz&?yny97R+oH;&`xih*p4B1|~eYsO-Ef@ka5QGUMI@Nfru&|yoA!i<69URi+A z6s5}Kv`v0X3sq$Em9HFHc2dQhJ}H*Q_nH%v}8o6)YJ z%a$Zjv=sMs?YD%A*2tZ*W-d0@$oA85@7`7^@Z`Ahw ziuwAOAK9Jj%#@sqZRS}FJSy#d6s#)JduiSqIcBrenX(6gw!!tTPu~>+;Y!&I@Ultk zQ+%{|_}LQ@F>HTw1YIBQM<&Q*DJ$eZkI@|rwm$9jy)ZMFDG9(B2{S9G$kh#db6%aV ze4?C}EXrM_Ivz>Ap+*-TpS`k&85|b*%TG3);bi`TgU!pO3 zn%_1iIPe*7;F5Kvjk{e|ad2r$)X0{&u7JooCK^0_t`s`Dw@Hd@(w@tF+XO8)aBQROwh2*2~ZW7(R(z~_4pXu9%^;FPB;MF^ea>0+2a;M+!zz?Uh#f_qD#@4Xn z8ApttV}IIFrqLq|X{YozA;=WDO9OJtcMOW|nlq?|%2~jd(>jMbYw4jZ^}xW+DbTc= zp7J-m^17AK}fKjP&CLq>7V}F(Qt$QpaRq%zI@e@5aktaaTwWoP3bfr%ehR(vM?l!VJi% zj`_C~#~l!DdWgKh5Tt^Y7;arnM(ngNq0#5aeWCOg8|SO=zbkOS#CFfbrrs8B*v{2* zIY()|L-ur2o?BjhWt9ZvsDT*L3b18WCv{85&wD%VJOUwD`4Je-Qd%b1nHz624@~9W zIcyBwzFDyB@dI#xdEcB|UT{O7DH`Bsv@I#r)bKZ#{88o}VN>chIDZ@J6lhzSUY4wy zeY9Y7k|(cP%%R+jH=I|at(ASZ7;W^2ChF>a5~~aIpM`J76Bj2wJ8OID<)en;jlDMF zsV_(8pxiti{dZ}V(f*A`Bo}t(=+t)$dg!IYEtkJjwu{J>M;0-(tBoXGuvyHetd2aI zwCx_7Ma!MA7Vor=A6P=^{Z%+Vvx<(s+uz4NLp(zLhA);qEOLQ3kw-0pX@M+wH<0_P zo9EO&KTtd%E2h9-ReXb5+_Xi)KSm42{cnE{ZXtY}lH$T*)-whvWC?zy6J@RP@$Bw_ z5q)a1W#Xhm-L2uUk-3Gf1tu}>V6F6zJk~`n$^qy@A47*oL9LDHBbyo$ZIHC zpo5pmT5;MBa!U^MIE0QAv$qe_MpE0Bi`WZMb=vUXfk$inIvxsm~2RSlpBE|U`=CV9s$f{PR&4SDa9`guS0;t9a$I11qRr$uxDz*2D&NP8mF_H)NCRWT}EdkrG_Q4;oCNcicqnp(? z7d4~|1K4pLn|yp^M)JN5URqkFUZZfknf(FTkD!s#musDrp;fvcY(xggPEBVyk)2T_ zLbBGe7$)7`nCJ54RC5W1Q2LFf_HR73b)QN%!ueQP(u|+LNio|KvX0kN616FJr6tyV zx1bUK-~KKkE&>5jTg?Ptr96fHLe_ATKhyZrze+juJpDo+_;0%F0 zl3w4BG85SJ9=rZZd@qY_a$Pyg$P_FYR@uBVIf?3PXn|=zBQE#4Wd9_4AYzQ|v6+dC z!FQMq9cc|`%YmiV%{{(vdAcC?tGV!CX9>^Ufb zQaYzW8S)}onoI`*?}Jq0?{C@?@tVp_zhR1nZq=@-` zg-@Pc)Y;YqW`1H7RHyhV-E324Sc~{;8^zw?g=}i!c1v6pQY0wLpZTTOO5}@Ns_92d zw$F3+9&fr+iG)KLYD!s}q?QH0qu(sL{T>l#bY^kJWquh_z@u0HwJM*Xz7bw9qdL{2 zwx=uejHc*S2<|3DQX-{vUs;nSaQPPgxrIFYARvu_?nI4j3Tzl{5l_9s-ZurqofbNkFBAH=f zjkIfaA80mMnqqK0jh1{FOTS71SH@A3RM=Xc%!67`t+Yiy?C#`DKZy-olPuVCQ4JL% z9-vdd8qLqFX!6#qOwN9u_B2tz&A>3DbWS?zi3Bz*ES)=mk-?cc+ji^9~hWuDH z3U}G@M3a+OEZW5(3Sa6CFMdA{&#rvQjk4lj=ig!NLM3Lj3=@@Cl`hvNFcT`)cy1Rz zQ1yd8m&ajbc#^YCB($Pw`OwVL*Ld08)Hm;02v(lW-Lf-fQ9NW2R=t*+y`On@Th3*- z*iqo$iyJ)vchrzIo;OzJBPt3$mI`Vi+MMZXLMTl=uLfl}6hEG<{+x9K~G z@>xo(e?(w&E8At?%7<=PR9aw(-kQ1(%RTn!R5u1x^41xF08Vl$cl+tG#)H z%j;BRbyhqQ8=k$tQegjao;W1+&>yxoS#o6bY8?_S)$^{Tsw1x`o+}3WLV|>)w|vp( z-r?}PSwYMMoA3+Fyn4n7sCQhY`H>qv8SGK}uN8DtI*_%h`h(iG_@eQB!vDSkqHOt- zoOTK-0z|HVeQB1Me@17;u1b%#4pXk5YcVpmhHCyfN+=X~Y4DU8bhV34CDnsLO{heVR{0eV)o?l+y#$bHRl|ZyP7}8h~PML7$*O%UO310oG7hz^IZ*lqq`-| zW_=Ko1EM6GMy`?6B~ia#ZM_21LktfiMOf|UUTkowEXQPsr9co>!kzdOJpB2y3-p}4 zumBh84XsTKi@m^#Bk$s1Rg6$ojK~ia;`*J6u2}!JWP$n;%vl4izslPrg zh!cf}hfszF27d9zmTyZHLu7r?p3$eUywRfLz7L9AaZ3~IP`1GzB`mCk?V_M8W!lA? zf&CI|b&iZiQFdd3YR!~wZKUJ@NXex6V!bMQx~o4dAP;=DG2CkHaewY-bV|=J7h1D) zdqPJ}bb{?f^54^x5dn`-hne++MIKR5d0+N!I77O8+%+Tw_oZR7Ns4g$2dJUiCVMq> zRVSCbq=PNp`n>@hcBpyavyxI3Lf5SxndV5;YIAJkV=O86HppxXKf5448E zMnm3X!KqMTnX*ej|E}NHhG=1-2Mel#*jVxz5}g(7dTME4}`X!*YGAQ^m)HA^t;mTTU&+SkSz4AWXH zi(Yb@t-uvG{yH*RHu0*vi8rNf2;=}A+@lV^I&@n>aZXxFao7hZ&u%MS3J=thfNEH< zvO^RlZ6&7~ZKYh8)gz(ukL4k$ukv3>nQ^HMs!D~*lI0wYQVhrWXWOKgHE;zs=g5L^ z#6JIy?GMcI!elfVac^ZYkOG1F4pljuEB^m$?>nQS%9j0GxsG#HV8#JaP#CWSB`QG> zB@5Uj$vKRQgeFRqjCm9UX+V->i4BdCg9Jq+2}o#~32u+Eu@*y{mpMIcPaZ^t(M|VYwqD`(r*xLSR7_eh(`YMfR6B!;fWq zjH?(`!N$h>vXR^ui{lf6HPsrtk^Hl)rY|cr4l@aUc^t`M-SmR{(fXsA_Fiwy&2Lxd zWK1$_^}_Ae+fN!?ezo=M`j<8*@RogN!IL;b9-;gu$iw9M zQ+eA#^_urY>hj*Kq{xC(3zmjle~b6L{`O|L{@P-r8w=az%No1~s3c@_;Sl?kYc^I^ z=&l;~jpDJo{X&=CU40b&2=4&tSw z4cl9IuYzg2e%{dCT+Or4C~j7RWA^#I`Ex$m?Ouc3! zmAope7nma!Orwc9m}l7y6T}qq(}mwUl#Z2q{P9SvuFd>RG+X)VlaBxwrRxWI19*16 zIBY2F4I?<@Umz1x>%R=hWDqstncVtSm1r>!2_HWJJ7|fd@#^=T`Qh853AbU7WYST$ zG`G1r9u=Z#zJYcul`cQxnPalh<@ z%)V;749TQv|JyEZl;yW*O?uC44Wko(oCa}DY|rDO*pM_pNy^gN9ah0>I)Q4>a<3EhxreQ+fq($d9Map*nWj- z28p!hpPxHjG~{{Isn+kMD6-=c@=PGtg6R1tW9OPyCp$q_mysc0C`8H+9yzZT?N*Zu z8S9KSv)8?4=zJA*g_hW zo6oWmspS5`B43wPzxXnjB(+>MZZs4fA)far1KqCQ$cG+8u_jw9l#=87wB??YkLM3c zE8|SYQ40F+`C)7|tC|IQs1XC9(O4Dqy&J^wmA$E`lTd`IAYLQnm`_&k)GW!a z$%pNqS}(Cl&}8JjZrBucZYk`k7e}%lHr?C18n?bNRn=av>G&c$M`+$)dxpDB<8qD# zAEv#Cais)fy>a$AtE8dNCj7>g`nkDSZXd|8deDatosiVB2?{D(Yrdn|aLsEMF6@nnnK>mbTn z*~{C)k;8A)vC`tCJgH@nZohoc6*Jy*s@NW0eq-3Y$9Qah#W>cxFWMV(HqW*<`raTwUnS4Csa%E$VQ*pk{ z{nnq#84_*BN>3^T?*%h;n#hCj@(u4F@B?AZWYB_Ke@9{@cO1ih7Ezx%zUnie=0Q6jw++|E$?$~qE+A7ldiTc;+T)}GjZ)YW;J!ahI?ud>JC2?cDYDTGfs-=YZA|7?342eiYYRsNn+ljj+1{St{AK2|tqlk1 zckfvGa50XzT=c%YI4x>29McgnwPFvO;q^GT8k6H~#8Pc6{HjVsT_|jWjL5rC+ zxLRw|y}13l3$hVwAQ5>$Sq*(AvEZRBwt-9^`TK|$3RQjs;9j;7 zm`c86U$p~VLfQ7k#_b2o>sh4iUgR;dn^OlYY`yKrP#w`ncfO7Hb?@8I7KJYZnffCqkYdC6nVAj zdfh37ou9k7e-$Lm+WO^0ZWZ$$u(h)r8$5JQmiu3B7Mu{TV=?Dnywu2Lb+Jh(`|OvYYIg~5ig}`d+>~SS!KOfbg75c(cA-95kJql` zp!`zxPfxX4M|{I(98*d>?VNrL+pLdU{b81zEkPd6rbb66zDG^it<3i$2YFzxog1C0 zmS8%mit*LK{}eaX(r7w)(lKU&D6e*sG!!uCn6m7!_qM_0;PY&Cn$6kx-ltaEYLC=o z)C_Sqx9Pd}e`5Bcae+Pc_Nqw_XATmqx)H+c!kuOZsk z$BFINJ?Q-d-I6!}K}jaI9;g^}D+5oklTK(ftol?YBu4GN-(8uJXU>ZjML#1=9C0xV zi~3-?xMsaKqTQ_dkiPKGZdMz({Rf$PDrY@?9X19B+omI z7%zjhy@W1o##o2o$1m@R8%2ZsKI}e;HEm@aiV=HkB*D2bol?@2Fx;&7RsjIru%j^ra`YI1DR z3W5xhWdlf+c^ogzUO1GHnw08k3(Z*`OIP1=H$x5Y!?c^4!rA%;>H9EJzVZHM%r6TF zSz!V{?prSP!90Ztsf+NPh)|^>_kU^T+?n7~lk@8t6}#2>VK{z@BQH5isd$zYas`fx3_3OPhq(-@b5d9YrZk0#n5l=Et}0UxqanU1e+O= z@wS0ic82354CC1&`crQfNwO1`5=@5+$hv!iHhMbxJiX?ot*~}0bgeJ(S+BeJ%d>NiKC%3yf?dk{rA2a$Mrb`2CA$-^B(t+H6rruc3)#R84Jwg&EUO z=KaM;TFgPtm>7aCk!SCoi7wO9vK-X^53TV^m;gvPQ zf`a;vj?Qavcjg9gBkKcFp_+BZD%655IT}{YPXUoXSsw&CK%EB2HSh9t# zE-vc0y1p4aEb+73-fz^kJxi>RKXsSdsp<*s@pBxAcr`7pUNe{KjJ!O-t+hruJh^Lc zdf^ly@@nUAx3D1Rjp4lfE3Kp}Ii*g67$Amu77oo1|NUA>u^jib_(!mSk+JdFgtknm z1L3SV^7qZM+17@oNCNGUQvC5@z6uEQ$7lCQ&yR0cb`Q(#eZ7l>N~Zg%|6qSM1Q`}u(L zdEl|Am9G2~I0zEHKRJpjc~ZhqN4U9#a+NT?j4~JMWkwm1ZOr5l{W!Dju{UU#wf~O} zNQ!fDamj2^yO$OhbI7`I_W8#>9_-z=#8@sk;R&4YPsjgow{W-eTef@K7VzzVs8QuN zsuw?TV7gvEg}NAIsRgX`+j?3Y4K^+InlpXQDPyXmqazxpp{A+nNtQgK)Ny4wG%YP{ zVrnXD8?YwSq&VN==jW#uC2wgwXP3~Gmk$OGrS$Q}@T%v{t*zY_-orczZM?8*s^%-z zfw_UWK94dN0VegdN>6fTO3LqGknDjNW}wU^dGI*MjBU9iXj^Y?u*?Y7`27bDqF=qr zyWRS-f^GsreTo=G-bggiJpGA#PGhKRxU&3N494eN@aLaD8_78w)D8mRR(?8Q&o=;1 z28P_5PwLJJR|!3ynwOVXDadC zhmVh(fcN|tF;N9 z;9DYk*2 z8h8y<7o^fbXZNkHD41?!aYJX{cwy6T?njHV?=tkRJZSS)S?TN7+~ZIAlCsmEp?Y}GDr#!a$PQ2HZ$O#Xagk~&7MK6--O!tU$4_8_ zMW9&fjGWx)!qSo`6y!~@M7mh2v5}FWKmJ+C+te)fOKz`!V&TjyXCv^VW`2J;)7>#nkW0pHl0SB)t6JPb zoD>xQ9R37LNJ}dWOq6h}oSIvNz9UoMbzPT5xI%JJk(bVR@_qhD}7`Dt6ph4&^`i=dWkX zcPfB@3S6oo6zfput0=j)9Z6W@%fa;fje-p2U&S#!*N%lu-mhh9ZELF@E9gY^T!)qw zSdV_BzqVp@baYE=Yt?KlEE$XQJ2Tx`CN9AoLmh!DVnU|H*KmgUx*8gxxJ1yY$-91j zIG^S3q=6EgrT?O`=kynag6b7^kdFGmJD(yqcXz~2ndBS7pL`SO?XWR8YF%P#u`_71 zg<7!Kzkh!Z5aXPZat%(F3HF7IKpkV_;Gh}srs=>!H1mVMd}$;DRfByC+?w&?(C_-; zpfpe*fy_fL2S~r?iN%6BE{OI?WF1RPh%$E;?!}DC{FMx;}tC z8)n(Hlw)ve8q`}KZgq!j3nK`CIR~iK%Y=#%xBK$@T;E$In0oi>O0T(G`|eD8_<|WI zJ_mClpbMx>#&6{;P_ylh6%plW8Txd3B^h7UQ{rI6!^cO?FB{P{G<+GjInG7&v`1mk zckaAp;=D3Vmxgr$H`9aCsc+xDQJc<$PcsLtJpj6#=-Ak7xy`T4ORKBIo*X?MG*nB; z(L2MbAy%7;j2svB|E{)z8a1s42bo`TmtY8L^-q|ITdSi5lB525SZW;uvmMwuOn>3+ zxl!?8uGuWPt(@)44oM*SMRgOsn&^^GM)qiz8 zju;uxxf^S1YsZ1>O2TWl@9RZX6O*__SOx4*{q{IHIr#!qQJ)bIfcfn&vV9KoaY8{s zK?R0)!D&GJjEG3V%lV^qC0=hmm9Q7wziSY8U6MPcdbM(UM-^1yITUZ55HQShr4<1{ z(A}cb#5e=jZV-ux5Nuka&Z$^izy3NodHbre@(FN*lE6_li7YM>bL5TVDyJr!{tLDR ztB-yD--3U2>20wWl%QU*dY;l<3w7^HO=pN(0r-z30`9hGTvT%MPIbW+xZZRy)0H*& z{0_>7X`%H~X-^XOlX@Lu1~Tm6#=l@^aKejb>&jUNaP>wq-inI%x9P;%?G$=V$4OYK z@iuMovPozqCeXy7ZJ0P}kKT3r(V77KMLD_J%Cls@w}W$_bA|nmo)#^PKYzxfK)pq-6TT3UZ7ip&sYRC`9Om%Jmu&*;nTtan&c`HM_$ zv|j*9!bcAu+BIW&FvFE4{{H?RV5bjr{x*b&7ApGalOjPmz|05T7N&u1><;j8`K{)9 zQ%06(Gy}jRC2o^yaT>fCnVFW0w#Hz5thSe8o`r=O0)XR>f|8I)Ye3ME>L=DYuC~$@I1a zNgO~lumXt37}~$S>t0~e+&gQK_q}oB#vwRzv9mS0lT%ozixu}wQ>H(IyLs~_b;!MA2EdT>`$wvUS;5$VwVOuZU6SAYB?u$cu_u|HdPyJa&OL?H(!Lb1LsPJQ2<&uD7B+BlaHT1Rnn9Fm(W|F5uL!X39iZ$ z%!y^`_YT<&4RET}DOwcYsx{)cL-7t#=<#rsIcYd<5PvAWdghbp~BskkzM@SR6FFqfwoZd!i5Wf zY`?&dXdi#Oj(9klEU*AVD}!!O1+Pat`N+J;Z+*D+5}B!#Bp;XwDqLy@OAGrN22NU^ zN+yZ~t*awpN=r+NE;vqrQGy~OBCuX^0EuE>gT|W(9)rSM=;ibcOSx0xu5Vy~)VgW| z*cSF<1|=ePUzZa?t7&NTkPB+@*JanQDm^~Z`HWS-WBSYKe9P(qiJikD?@~@HJvLvo zMg9+w2vqYM>FY;v&%ABq)H5}WM+A;IIK1x;B$IMXifpj2fyPxE3FRG# z;5kKOErYf^g)Az22rfna6LWJyK|wnqfk`6o7VZPKM@B|`K}RPjlmY~PS4<^!0}&q{u#_b@zIbS{hl~Se35^{I+6jQ(0og%2 z+hCjk*F_O9p14JLR{{X`sDuOoi0{x{$vd02u;ww_o9n(~_YOuOngr=7G#ZV4wPO)r z=HXF1=)9ZDlV|kWjrZkcijb_(>X19!)T6p)Y@iS=Q$26> z6qi^JNC$+x(|%`^^S2Wxa)yS?VZ%3IgN1{GeC$f#DQ>GAA+yq^^G8bTIzP<0n-{Ap9<&aygg(|FWtwia`m62m1%3vNVzDd{kBu7L8G0xu5b_Q~ zV-xl(ci&k0&hV6V%sYTU`Gth4XQvP~MA29wMA%hB;6Fvyf<)lv+F?2XY*r2q960xL zGBOqdM);oVflI$t17jfaB7reZ?kZ*d z*0>m?2`XAvQ&(5l+I!>prvpx-)Vb}}_3xWj9m}+UK(qSCjEF;wiSce&4wA9W(n{<} zRXW&~B!m2<8)mZ@iqKmv$*xi?Cr-?Gg)I=l7;|6h&`bh_klkLp1p?MUum}=b4de)- zVGZg5awsUbL0&EU`d?|Cl%$!ViXyO|S#X_|TPR=?ByzrR>(ev>wXj%h@vTNCB=rbt z2;t`Fx-9W#7%n0z>NRAvfXPwq>({T?*AOUBBvfIL)@6gy2?;pa0J^!sDS&41(}D6k z=?+X)!}xqCf(NIIze6My0gy689FX6t^KR(n0vxRnib3&0GPgaz86+kFEbj0bh$FL% ztO5-B`}>iJ8tkuT!@YH%YHw+7jv!zR6cs=4kTIQUkDz!x74&+l5{MSX0WulInps-n zA%mF%U|){9yYV`f`SFKcfgU)BqmhBY9gJxVP!*>Gj+U?8nsebnBi<%xdzou)s6r3? zMlbkHJ~=tLhQ>y9?9rn~k)*_JTU+wyI5D<>aEA+x1a?vDKOxr6gph)a1UisaphC>A zR_Piun*m)}6rqhwHz-^Ffy2kn0$_$dAM|mqooTP{bKdLy9f6rhM&U4OwuU zfQU#(e%Ql@|3JKhYS_unI5At{iscoxBODhsl7qI_56pr62P_@s{e*yhScd%;tXy#fFjiHeDpI1OG*yyUI|UKNoeM52I9jfJdg%#qu}<5Nes zSIUq?04y&mARY{jM3DBSX7}csWrc14SbvZsuD<2myctx(mEr)*02X zY_Od%{#WKpV#hJCF2FeDmX{kt6N_$`|EWW{B3?57uj0;9`hXHY8)%#cV<^ z!WrDsTePZ81cIFM9!f>P0uXnC{s1zmA0pkIecK2NuBXz|0XhKz#xXGpEE;tKN=^sJ zvO)~u>cAy#_X5HdLYa$|X3`atbk*=)Xr(cJkylE}7+M2q1F!>MP41Pv@!=ngT(af} z$bgk3;XQ8-;0cVnK9~Xm2pb1%yVKBgga}@cg_Bb_q#+GrW)j4yNZc&$vt<4J_yt99 zxOomE74B0If7v@vt?%YjF|nZ(cjLeI$t6<|FAgY8`tCvsXqBO@r_@O%BshxXyWR_Y ztU(qdx0WWFNj*7{fm>v&Ad15i$P+;*GUEbasAu-)VbDWJ^1KGij5r43))q2XV=5n! zh6Vtj6SN@S2Q-I7Xb^dkzCPhXrbm~oFb{!H$<2mCG&1ozs0z{vB04TE2NscK*{c8g zWDHpBG>T^%48IsI3!u+rA=eb>-JS;}qro1?FB8ZM)!lw0w!3fY+6|4rN|S=NeUJnv zB=$k_Nqua$H7hN=zHQ(bukNTUsU| zs2y>+II + #include #include #include -#define iconv_t reiconv_t -#define iconv_open reiconv_open -#define iconv reiconv_iconv -#define iconv_close reiconv_handle_close - -extern "C" -{ - typedef void *iconv_t; - extern int iconv_close(iconv_t cd); - extern iconv_t iconv_open(const char *tocode, const char *fromcode); - extern size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); -} - void* reiconv_iconv_open() { - return iconv_open("GB18030", "UTF-8"); + return reiconv_open_from_index(ENCODING_UTF8, ENCODING_GB18030, REICONV_NO_FLAGS); } -int reiconv_static_size_convert(void* cd, const char *input_data, size_t input_length, char *output_data, - size_t output_length) -{ - char *inptr = (char *)input_data; - size_t insize = input_length; - char *outptr = output_data; - size_t outsize = output_length; - while (insize > 0) - { - size_t res = iconv(cd, &inptr, &insize, &outptr, &outsize); - if (res == (size_t)(-1)) - { - if (errno == EINVAL) - { - break; - } - else - { - return -1; - } - } - } - if (iconv(cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1)) - { - return -1; - } - memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. - return 0; -} From 29c21ce57461755a7e7b1565e9b312b111f8cc85 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 10 Feb 2025 18:13:36 +0800 Subject: [PATCH 68/77] Remove the feature of fill the rest of the buffer with `\0` in `reiconv_convert_static_size`. --- benchmark/reiconv_iconv.cpp | 1 - include/cppp/reiconv.h.in | 6 +++--- lib/iconv.c | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/benchmark/reiconv_iconv.cpp b/benchmark/reiconv_iconv.cpp index 52cfc55f..9d36cf5e 100644 --- a/benchmark/reiconv_iconv.cpp +++ b/benchmark/reiconv_iconv.cpp @@ -10,4 +10,3 @@ void* reiconv_iconv_open() { return reiconv_open_from_index(ENCODING_UTF8, ENCODING_GB18030, REICONV_NO_FLAGS); } - diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in index 2d410e8e..401b02cb 100644 --- a/include/cppp/reiconv.h.in +++ b/include/cppp/reiconv.h.in @@ -162,12 +162,12 @@ extern _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, siz * @note The function `reiconv_convert` is more easy to use. This function is for performance and flexibility. * @note This function does not treat zero characters specially. * @param cd The input conversion descriptor. - * @param input_data the input buffer. + * @param input_data The input buffer. * @param input_length Input buffer length. * @param output_data The output buffer pointer. - * @param output_length the output buffer's length. + * @param output_length The output buffer's length. * @note If the output buffer is too small, -1 is returned. - * @note If the output buffer is too big, the rest of the buffer is filled with zero. + * @note If the output buffer is too big, the rest of the buffer will not change. * @return 0 on success, -1 on error with errno set. */ extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, size_t input_length, diff --git a/lib/iconv.c b/lib/iconv.c index 167af2fc..8eae5d24 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -262,7 +262,6 @@ _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, { return -1; } - memset(outptr, 0, outsize); // Fill the rest of the buffer with '\0'. return 0; } From fe5611b281fe900fb56a5bf6c426b01efb9e2448 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 10 Feb 2025 23:38:43 +0800 Subject: [PATCH 69/77] Implement `reiconv_version` for C API. --- lib/iconv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/iconv.c b/lib/iconv.c index 8eae5d24..d2cd52e4 100644 --- a/lib/iconv.c +++ b/lib/iconv.c @@ -46,7 +46,7 @@ #define TEMP_BUFFER_SIZE 4096 -_CPPP_API struct VersionInfo version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; +_CPPP_API struct VersionInfo reiconv_version = {VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH}; _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf) { From 441aa93053c6e1f0b5816c9461709aff0d6ab2b1 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 10 Feb 2025 23:43:53 +0800 Subject: [PATCH 70/77] Add documents. --- .markdownlint.json | 3 + README.md | 256 +++++++++------ TODO | 2 + docs/README.md | 43 +++ docs/c-api.md | 641 ++++++++++++++++++++++++++++++++++++++ docs/cpp-api.md | 240 ++++++++++++++ include/cppp/reiconv.h.in | 9 +- 7 files changed, 1092 insertions(+), 102 deletions(-) create mode 100644 docs/README.md create mode 100644 docs/c-api.md create mode 100644 docs/cpp-api.md diff --git a/.markdownlint.json b/.markdownlint.json index c0676d10..e0f2ca05 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,4 +1,7 @@ { + "MD013": { + "code_blocks": false + }, "MD024": { "siblings_only": true }, diff --git a/README.md b/README.md index 29d9cb12..27ae4a33 100644 --- a/README.md +++ b/README.md @@ -1,153 +1,207 @@ -![cppp-reiconv logo](https://cppp-project.github.io/cppp-res.github.io/images/reiconv-icon.png) - # cppp-reiconv -A character set conversion library based on GNU LIBICONV. -# Instruction -This library provides some charset conversation function for The C++ Plus Project. +C+++ + +A character set conversion library based on GNU LIBICONV. **Supports C and C++20.** + +If your C++ standard is lower than C++20. A few code needs to be modified. + +## Build + +This library requires `build-aux` and `cppp-platform` for building. + +See [docs/](docs/README.md) for full requirements list. + +**We are planning to use [Rubisco](https://github.com/cppp-project/rubisco) to manage submodules. But it is not ready yet. So we don not use git submodule for now. Please clone them manually.** + +Use the following command to fetch source code: + +```shell +git clone https://github.com/cppp-project/cppp-reiconv +cd cppp-reiconv +git clone https://github.com/cppp-project/build-aux --depth 1 +git clone https://github.com/cppp-project/rubisco --depth 1 +``` + +Use the following command to build and install. + +```shell +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=[[BUILD_TYPE]] -DCMAKE_INSTALL_PREFIX=[[PREFIX]] +cmake --build . --config=[[BUILD_TYPE]] +cmake --install . --config=[[BUILD_TYPE]] +``` + +## Simple Usage + +```cpp +#include + +#include +#include + +int main() +{ + const std::string_view src = "\xb8\xfc\xcf\xb2\xe1\xba\xc9\xbd\xc7\xa7\xc0\xef\xd1\xa9\xa3\xac\xc8\xfd\xbe\xfc\xb9\xfd\xba\xf3\xbe\xa1\xbf\xaa\xd1\xd5\xa3\xa1"; + + std::string result = reiconv::convert("GB18030", "UTF-8", src); -It provides support for the encodings: + std::cout << result << std::endl; + + const std::string_view correct_result = "\u66f4\u559c\u5cb7\u5c71\u5343\u91cc\u96ea\uff0c\u4e09\u519b\u8fc7\u540e\u5c3d\u5f00\u989c\uff01"; + + if (result == correct_result) + { + std::cout << "Correct!" << std::endl; + } + else + { + // If it happens, please report a bug. + std::cout << "Wrong!" << std::endl; + } + + return EXIT_SUCCESS; +} +``` + +The full documentation can be found in [docs/](docs/README.md). + +## Supported Encodings + +Same as GNU LIBICONV, It provides support for the encodings: + European languages - - ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, - - KOI8-R, KOI8-U, KOI8-RU, - - CP{1250,1251,1252,1253,1254,1257}, CP{850,866,1131}, - - Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, - - Mac{Cyrillic,Ukraine,Greek,Turkish}, - - Macintosh + + ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, + + KOI8-R, KOI8-U, KOI8-RU, + + CP{1250,1251,1252,1253,1254,1257}, CP{850,866,1131}, + + Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, + + Mac{Cyrillic,Ukraine,Greek,Turkish}, + + Macintosh + Semitic languages - - ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic} + + ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic} + Japanese - - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1, - - ISO-2022-JP-MS + + EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1, + + ISO-2022-JP-MS + Chinese - - EUC-CN, HZ, GBK, CP936, GB18030, GB18030:2022, EUC-TW, BIG5, CP950, - - BIG5-HKSCS, BIG5-HKSCS:2004, BIG5-HKSCS:2001, BIG5-HKSCS:1999, - - ISO-2022-CN, ISO-2022-CN-EXT + + EUC-CN, HZ, GBK, CP936, GB18030, GB18030:2022, EUC-TW, BIG5, CP950, + + BIG5-HKSCS, BIG5-HKSCS:2004, BIG5-HKSCS:2001, BIG5-HKSCS:1999, + + ISO-2022-CN, ISO-2022-CN-EXT + Korean - - EUC-KR, CP949, ISO-2022-KR, JOHAB + + EUC-KR, CP949, ISO-2022-KR, JOHAB + Armenian - - ARMSCII-8 + + ARMSCII-8 + Georgian - - Georgian-Academy, Georgian-PS + + Georgian-Academy, Georgian-PS + Tajik - - KOI8-T + + KOI8-T + Kazakh - - PT154, RK1048 + + PT154, RK1048 + Thai - - ISO-8859-11, TIS-620, CP874, MacThai + + ISO-8859-11, TIS-620, CP874, MacThai + Laotian - - MuleLao-1, CP1133 + + MuleLao-1, CP1133 + Vietnamese - - VISCII, TCVN, CP1258 + + VISCII, TCVN, CP1258 + Platform specifics - - HP-ROMAN8, NEXTSTEP + + HP-ROMAN8, NEXTSTEP + Full Unicode - - UTF-8 - - UCS-2, UCS-2BE, UCS-2LE - - UCS-4, UCS-4BE, UCS-4LE - - UTF-16, UTF-16BE, UTF-16LE - - UTF-32, UTF-32BE, UTF-32LE - - UTF-7 - - C99, JAVA + + UTF-8 + + UCS-2, UCS-2BE, UCS-2LE + + UCS-4, UCS-4BE, UCS-4LE + + UTF-16, UTF-16BE, UTF-16LE + + UTF-32, UTF-32BE, UTF-32LE + + UTF-7 + + C99, JAVA + Full Unicode, in terms of 'uint16_t' or 'uint32_t' - - (with machine dependent endianness and alignment) - - UCS-2-INTERNAL, UCS-4-INTERNAL + + UCS-2-INTERNAL, UCS-4-INTERNAL (with machine dependent endianness and alignment) -When configured with the option -DENABLE_EXTRA, it also provides -support for a few extra encodings: +And some extra encodings. These encodings are GNU LIBICONV's extra encodings. + European languages - - CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125} + + CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125} + Semitic languages - - CP864 + + CP864 + Japanese - - EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3 + + EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3 + Chinese - - BIG5-2003 (experimental) + + BIG5-2003 (experimental) + Turkmen - - TDS565 + + TDS565 + Platform specifics - - ATARIST, RISCOS-LATIN1 + + ATARIST, RISCOS-LATIN1 + EBCDIC compatible (not ASCII compatible, very rarely used) - - European languages - - - IBM-{037,273,277,278,280,282,284,285,297,423,500,870,871,875,880}, - - - IBM-{905,924,1025,1026,1047,1112,1122,1123,1140,1141,1142,1143}, - - - IBM-{1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157,1158}, - - - IBM-{1165,1166,4971} - - Semitic languages - - - IBM-{424,425,12712,16804} - - Persian - - - IBM-1097 - - Thai - - - IBM-{838,1160} - - Laotian - - - IBM-1132 - - Vietnamese - - - IBM-{1130,1164} - - Indic languages - - - IBM-1137 + + European languages + + IBM-{037,273,277,278,280,282,284,285,297,423,500,870,871,875,880}, + + IBM-{905,924,1025,1026,1047,1112,1122,1123,1140,1141,1142,1143}, + + IBM-{1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157,1158}, + + IBM-{1165,1166,4971} + + Semitic languages + + IBM-{424,425,12712,16804} + + Persian + + IBM-1097 + + Thai + + IBM-{838,1160} + + Laotian + + IBM-1132 + + Vietnamese + + IBM-{1130,1164} + + Indic languages + + IBM-1137 It can convert from any of these encodings to any other, through Unicode conversion. -cppp-reiconv is for you if your application needs to support multiple character -encodings, but that support lacks from your system. - - -# Build and installation +## Build Options We use CMake for build -+ Standard build -```shell -mkdir build -cd build -cmake .. -DCMAKE_INSTALL_PREFIX=[[PREFIX]] -cmake --build . --config=Release -cmake --install . -``` ++ `BUILD_TESTING`: Build tests. Default is ON. -+ Full build ```shell -mkdir build -cd build -cmake .. -DCMAKE_INSTALL_PREFIX=[[PREFIX]] -DENABLE_EXTRA=ON -cmake --build . --config=Release -cmake --install . +cmake .. -DBUILD_TESTING=ON +cmake --build . --config=RelWithDebInfo +ctest -C RelWithDebInfo --output-on-failure ``` -When use full build, extra encodings will be enabled. ++ `ICONV_COMPAT`: Enable compatibility with iconv. Default is OFF. -+ Build with test suite -```shell -mkdir build -cd build -cmake .. -DCMAKE_INSTALL_PREFIX=[[PREFIX]] -DENABLE_EXTRA=ON -DENABLE_TEST=ON -cmake --build . --config=Release -cmake --install . -``` +If `ICONV_COMPAT` is ON, it will install `iconv.h` with basic functions. +But we do not support all features of POSIX:2024. See [TODO](TODO). + +## Install -# Install This library installs: - - a shared library 'libcppp-reiconv'. - - a static library 'libcppp-reiconv.static'. - - a header file ''. -To use it, simply #include and import the lib to use the functions. ++ A shared library `libcppp-reiconv`. ++ A static library `libcppp-reiconv.static`. ++ Header files + +```text +include +├── cppp +│ ├── cppp-platform.h +│ ├── encodings +│ │ ├── reiconv.h +│ │ └── reiconv.hpp +│ ├── reiconv.h +│ └── reiconv.hpp +└── iconv.h # Only if ICONV_COMPAT is ON +``` -# Copyright +## Copyright The cppp-reiconv is under LGPLv3, see file [LICENSE](./LICENSE). -# Download +## Download + +See -https://github.com/cppp-project/cppp-reiconv/releases +## Homepage -# Homepage + -https://github.com/cppp-project/cppp-reiconv +## Bug reports -# Bug reports - + Create a issue on GitHub [Report now](https://github.com/cppp-project/cppp-reiconv/issues/new/) ++ Create a issue on GitHub [Report now](https://github.com/cppp-project/cppp-reiconv/issues/new/) diff --git a/TODO b/TODO index cb8c4382..a1951d25 100644 --- a/TODO +++ b/TODO @@ -1,2 +1,4 @@ 1. Implement the //NON_IDENTICAL_DISCARD suffix from POSIX:2024. 2. Add translit support. +3. Use xmake buildsystem. +4. Fix testing errors on some Windows machine. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..6b41612e --- /dev/null +++ b/docs/README.md @@ -0,0 +1,43 @@ +# cppp-reiconv documentation + +## Introduction + +These docs is for `cppp-reiconv 3.0.0`. + +cppp-reiconv is a portable C/C++ library for converting between character +encodings and locale charset detection. + +## Requirements + +### Build + +- A C++ compiler with C++20 support. +- CMake 3.12 or later. + +### Runtime + +- C runtime +- C++ runtime with C++20 support. + +### Build with data generation + +We need to generate index for encoding, they are stored in `lib/generated`. + +**You can skip this section if you are not interested in it.** +**We already provide generated data in this Git repository and source tarball.** + +- GNU Make. +- GNU Gperf. +- A POSIX system. + +After you have installed these tools, you can use the following command to +generate data: + +```shell +make -f Makefile.devel -B +``` + +## API Reference + +- [C api reference and iconv compatibility](c-api.md) +- [C++ api reference](cpp-api.md) diff --git a/docs/c-api.md b/docs/c-api.md new file mode 100644 index 00000000..bd0df8b1 --- /dev/null +++ b/docs/c-api.md @@ -0,0 +1,641 @@ +# cppp-reiconv C API + +Although we have C API, we still require C++20 runtime. + +header file `cppp/reiconv.h` contains all C API. + +## Version Information API + +### `struct VersionInfo` + +#### Description + +This struct contains version information. + +#### Values + +- `int major`: Major version. +- `int minor`: Minor version. +- `int patch`: Patch version. + +### `reiconv_version` + +#### Description + +It's a variable for version information of current library. + +#### Example + +```c +printf("cppp-reiconv version: %d.%d.%d\n", reiconv_version.major, reiconv_version.minor, reiconv_version.patch); +``` + +## Encoding Names API + +### `reiconv_name_canonicalize()` + +#### Definition + +```c +extern _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf); +``` + +#### Description + +Canonicalize an encoding name. the `canonical` means the internal name of +encoding. Not the canonical name of IANA. +We will ignore '-' and '_', and uppercase all characters. + +Segment fault if `name` or `outbuf` is `nullptr`. We will not check the +length of `outbuf` + +**This function is not recommended to use.** + +#### Parameters + +- `name`: The encoding name to be canonicalized. +- `outbuf`: The buffer for storing the canonicalized name. +Must allocated with enough space. + +#### Return + +The length of canonicalized name. + +#### Example + +```c +const char* name = "UCS-4" +char outbuf[256]; +size_t outbuf_size = reiconv_name_canonicalize(name, outbuf); +// outbuf_size == 4, outbuf == "UCS4" +``` + +### `reiconv_lookup_from_name()` + +#### Definition + +```c +extern _CPPP_API int reiconv_lookup_from_name(const char *encoding); +``` + +#### Description + +Lookup an encoding by it's name. + +#### Parameters + +- `encoding`: The encoding name. It's not case sensitive. +**It must be a valid pointer, or it will cause undefined behavior.** + +#### Return + +The encoding index. If the it is not found, `-1` is returned. + +The `encoding index` is the unique ID in cppp-reiconv's internal. +Used in `reiconv_open()` function. + +#### Example + +```c +int encoding_index = reiconv_lookup_from_name("UTF-8"); +``` + +### `reiconv_lookup_from_codepage()` + +#### Definition + +```c +extern _CPPP_API int reiconv_lookup_from_codepage(int codepage); +``` + +#### Description + +Lookup an encoding by it's codepage. + +#### Parameters + +- `codepage`: The codepage. + +#### Return + +The encoding index. If the it is not found, `-1` is returned. + +#### Example + +```c +// Same as reiconv_lookup_from_name("CP936") +int encoding_index = reiconv_lookup_from_codepage(936); +``` + +## Encoding Conversion API + +### `reiconv_t` + +#### Definition + +```c +typedef void* reiconv_t; +``` + +#### Description + +This is our conversion descriptor type. It's a pointer to a internal `conv_struct`. +Although cppp-reiconv is based on GNU LIBICONV, but our `conv_struct` is not +compatible with GNU LIBICONV's. + +### `ConvertFlag` + +#### Definition + +```c +enum ConvertFlag +{ + REICONV_NO_FLAGS = 0, + REICONV_DISCARD_ILSEQ = 1, +}; +``` + +#### Description + +This is a bitmask for conversion flags. + +- `REICONV_NO_FLAGS`: No flags. Pass it by default. +- `REICONV_DISCARD_ILSEQ`: Discard invalid sequence. +It's same as iconv's `//IGNORE` flag. + +### `reiconv_open_from_index()` + +#### Definition + +```c +extern _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, enum ConvertFlag flags); +``` + +#### Description + +Open a conversion descriptor from encoding index. +**Indexes MUST BE VALID or the behavior is undefined.** + +#### Parameters + +- `fromcode`: The encoding index of source encoding. +**CAUTION: reiconv's descriptor open function parameters order is `fromcode` -> `tocode`.** +**But iconv's is `tocode` -> `fromcode`!** +- `tocode`: The encoding index of target encoding. We recommend you to use +encodings enum defined in `cppp/encodings/reiconv.h`. It's automatically generated. +See example below. +- `flags`: The conversion flags. +The `flags` is a bitmask. See `ConvertFlag` for more information. + +#### Return + +If the conversion descriptor cannot be created, returns `(reiconv_t)(-1)` +with errno set. It's same as iconv's return value. **NOT NULL!** + + +This function will error only when memory allocation failed. +**It will not check the validity of `fromcode` and `tocode`!** +**You should always pass encoding index from encodings enum!** + +#### Example + +```c +reiconv_t cd = reiconv_open_from_index( + ENCODING_UTF8, /* Encodings enum always starts with ENCODING_ in C API. */ + ENCODING_GB18030, /* See the header file for more information. */ + REICONV_DISCARD_ILSEQ /* This flag means discard invalid sequence. */ +); +if (cd == (reiconv_t)(-1)) +{ + perror("reiconv_open_from_index"); +} +``` + +### `reiconv_open_from_codepage()` + +#### Definition + +```c +extern _CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, enum ConvertFlag flags); +``` + +#### Description + +Open a conversion descriptor from codepage. This is a shortcut for +`reiconv_lookup_from_codepage()` + `reiconv_open_from_index()`. +See `reiconv_open_from_index()` for more information of parameters. + +#### Parameters + +- `fromcode`: The codepage of source encoding. +- `tocode`: The codepage of target encoding. +- `flags`: The conversion flags. + +#### Return + +If the conversion descriptor cannot be created, +returns `(reiconv_t)(-1)` with errno set. +It will check the validity of `fromcode` and `tocode`. + +Some encodings may not have codepage. You should open them by index or name. + +#### Example + +```c +reiconv_t cd = reiconv_open_from_codepage( + 65001, /* UTF-8 */ + 936, /* CP936 */ + REICONV_DISCARD_ILSEQ +); +if (cd == (reiconv_t)(-1)) +{ + perror("reiconv_open_from_codepage"); +} +``` + +CP936 is a little different from GBK instead. See `lib/converters/cp936.h`. + +The comments in `lib/converters/cp936.h` says (from Bruno Haible): + +> The IANA has CP936 as an alias of GBK. But GBK is an official Chinese +> specification, whereas CP936 is de-facto maintained by Microsoft. And, +> of course, Microsoft modified CP936 since 1999. +> +> The differences from GBK are: +> +> - A single character: +> +> | GBK | CP936 | +> | :----: | :----: | +> | 0x80 | 0x20AC # EURO SIGN | +> +> Some variants of CP936 (in JDK, Windows-2000, ICU) also add: +> +> - Private area mappings: +> +> | code | Unicode | +> | :----: | :----: | +> | 0x{A1..A2}{40..7E,80..A0} | U+E4C6..U+E585 | +> | 0x{AA..AF,F8..FE}{A1..FE} | U+E000..U+E4C5 | +> +> We add them too because, although there are backward compatibility problems +> when a character from a private area is moved to an official Unicode code +> point, they are useful for some people in practice. + +### `reiconv_open_from_name()` + +#### Definition + +```c +extern _CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *tocode, enum ConvertFlag flags); +``` + +#### Description + +Open a conversion descriptor from encoding name. +This is a shortcut for `reiconv_lookup_from_name()` + `reiconv_open_from_index()`. +See `reiconv_open_from_index()` for more information of parameters. + +#### Parameters + +- `fromcode`: The name of source encoding. It can only pass encoding name. +control suffix like `//IGNORE` or `//TRANSLIT` **is not allowed**. +- `tocode`: The name of target encoding. +- `flags`: The conversion flags. + +#### Return + +If the conversion descriptor cannot be created, +returns `(reiconv_t)(-1)` with errno set. +It will check the validity of `fromcode` and `tocode`. + +#### Example + +```c +reiconv_t cd = reiconv_open_from_name( + "UTF-8", + "GB18030", + REICONV_NO_FLAGS +); +if (cd == (reiconv_t)(-1)) +{ + perror("reiconv_open_from_name"); +} +``` + +### `reiconv_result_size()` + +#### Definition + +```c +extern _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength); +``` + +#### Description + +Get the size of converted string. + +#### Parameters + +- `cd`: The conversion descriptor. +- `start`: The start of input string. +- `inlength`: The length of input string. + +#### Return + +The size of converted string. If the conversion failed, returns `(size_t)(-1)` + +**It's don't support flags now, so `flags` is always `REICONV_NO_FLAGS`. We will** +**support it in the next version. So this API will change in the next version.** + +#### Example + +```c +const char input[] = "Hello, World!"; +size_t result_size = reiconv_result_size(cd, input, strlen(input)); + +if (result_size == (size_t)(-1)) +{ + perror("reiconv_result_size"); +} +``` + +### `reiconv_convert_static_size()` + +#### Definition + +```c +extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, size_t input_length, + char *output_data, size_t output_length); +``` + +#### Description + +Converts a string using conversion descriptor `cd`, with a static size output buffer. + +If the output buffer is too small, -1 is returned. + +If the output buffer is too big, the rest of the buffer will not change. + +This function is useful when you want to convert a string to a fixed size buffer +like stack buffer. It's faster than `reiconv_convert` + +#### Parameters + +- `cd`: The conversion descriptor. +- `input_data`: The input buffer. +- `input_length`: The length of input buffer. +- `output_data`: The output buffer. +- `output_length`: The length of output buffer. + +#### Return + +The length of converted string. If the conversion failed, returns `(size_t)(-1)`. + +#### Example + +```c +const char input[] = "Hello, World!"; +char output[256]; +size_t result_size = reiconv_convert_static_size(cd, input, strlen(input), output, sizeof(output)); +if (result_size == (size_t)(-1)) +{ + perror("reiconv_convert_static_size"); +} +``` + +### `reiconv_convert()` + +#### Definition + +```c +extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, + size_t *output_length_ptr); +``` + +#### Description + +Converts an string from one encoding to another. + +This function is the most convenient function of cppp-reiconv. It will automatically +summary the size of converted string, and allocate memory for you. + +But size summary is always a little slow. If you know the size of converted string, +you should use `reiconv_convert_static_size()` instead. + +This function does not treat zero characters specially. + +Its code comes from `iconv_string()` in GNU LIBICONV's repository. + +See + +Bruno Haible put this file into the public domain. +`iconv_string.h` is not part of the GNU LIBICONV Library. + +#### Parameters + +- `cd`: The conversion descriptor. +- `input_data`: The input buffer. +- `input_length`: The length of input buffer. +- `output_data_ptr`: The output buffer's pointer. If it point to a `NULL` pointer, +we will allocate memory for you and set it to the result buffer. If pointed but +not `NULL`, we will use it as the output buffer but reallocate it. So it must be +a pointer that can be modified. +**But don't let it value to `NULL`!** +- `output_length_ptr`: The length of output buffer. If NULL, error will be occured. + +#### Return + +We only return `0` if success. If failed, returns `-1` with errno set. +Our output buffer is saved in `output_data_ptr`. + +**NOTE: Please free the output buffer after use it!** +**It's always dynamic allocated!** + +#### Example + +```c +const char input[] = "Hello, World!"; +char *output = NULL; /* NULL means we will allocate memory for you. */ +size_t output_length = 0; +int result = reiconv_convert(cd, input, strlen(input), &output, &output_length); +if (result == -1) +{ + perror("reiconv_convert"); +} +printf("%zu: %s\n", output_length, output); +free(output); +``` + +```c +const char input[] = "Hello, World!"; +char* output = malloc(1); /* We will reallocate it. */ +if (output == NULL) +{ + perror("malloc"); +} +size_t output_length = 0; +int result = reiconv_convert(cd, input, strlen(input), &output, &output_length); +if (result == -1) +{ + perror("reiconv_convert"); +} +printf("%zu: %s\n", output_length, output); +free(output); +``` + +### `reiconv_handle_close()` + +#### Definition + +```c +extern _CPPP_API int reiconv_handle_close(reiconv_t cd); +``` + +#### Description + +Close a conversion descriptor. + +#### Parameters + +- `cd`: The conversion descriptor. + +#### Return + +We only return `0` if success. We always return `0` now. +Because we only need to free the conversion descriptor's memory. + +#### Example + +```c +/* This function need a example??? */ +reiconv_handle_close(cd); +``` + +## Locale charset API + +### `locale_charset()` + +#### Definition + +```c +extern _CPPP_API const char* locale_charset(); +``` + +#### Description + +Determine the current locale's character encoding. But not same as GNU LIBICONV's +implementation, we will not canonicalize the encoding name. But nearly the most of +it's result can be used in `reiconv_open_from_name()`. Except for some VERY RARE +encodings or some OSX specific encodings in old OSX versions. These encodings are +not supported in cppp-reiconv and GNU LIBICONV. + +#### Return + +The current locale's character encoding. + +#### Example + +```c +setlocale(LC_ALL, ""); +const char* charset = locale_charset(); +printf("Your locale charset is: %s\n", charset); +``` + +## Iconv compatibility API + +**This API is not recommended to use in `cppp/reiconv.h`. Use it in our `iconv.h`** +**instead.** + +Iconv compatibility is disabled by default. You can enable it by defining +`-DICONV_COMPAT=ON` when you configure cppp-reiconv. + +See "Iconv support" section below. + +### `iconv_t`, aka `reiconv_t` in `cppp/reiconv.h` + +#### Definition + +```c +#define iconv_t reiconv_t +``` + +Same as `reiconv_t` up above. + +### `iconv_open`, aka `reiconv_open()` in `cppp/reiconv.h` + +#### Definition + +In `cppp/reiconv.h`: + +```c +extern _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode); +``` + +In `iconv.h`: + +```c +#define iconv_open reiconv_open +``` + +#### Description + +Open a conversion descriptor. For iconv compatibility. + +#### Parameters + +- `tocode`: The name of target encoding. **CAUTION: iconv-compatible API's** +**parameters order is `fromcode` -> `tocode`!** +- `fromcode`: The name of source encoding. We support `//IGNORE` now. + +#### Return + +The conversion descriptor. (reiconv_t)(-1) is returned if error occured with +errno set. + +### `iconv`, aka `reiconv_iconv()` in `cppp/reiconv.h` + +#### Definition + +In `cppp/reiconv.h`: + +```c +extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, + size_t *outbytesleft); +``` + +In `iconv.h`: + +```c +#define iconv reiconv_iconv +``` + +#### Description + +Do conversion. For iconv compatibility. + +See `man 3 iconv`. + +#### Parameters + +- `cd`: The conversion descriptor. +- `inbuf`: The input buffer. +- `inbytesleft`: The length of input buffer. +- `outbuf`: The output buffer. +- `outbytesleft`: The length of output buffer. + +#### Return + +The length of converted string. + +### `iconv_close`, aka `reiconv_handle_close()` in `cppp/reiconv.h` + +#### Definition + +In `iconv.h`: + +```c +#define iconv_close reiconv_handle_close +``` + +Same as `reiconv_handle_close()` up above. diff --git a/docs/cpp-api.md b/docs/cpp-api.md new file mode 100644 index 00000000..e36f193a --- /dev/null +++ b/docs/cpp-api.md @@ -0,0 +1,240 @@ +# cppp-reiconv C++ API + +C++ API may a bit slower than C API. But it is more convenient to use. + +## Version Information API + +### `struct VersionInfo` + +#### Description + +This struct contains version information. + +#### Values + +- `int major`: Major version. +- `int minor`: Minor version. +- `int patch`: Patch version. + +### `reiconv::version` + +#### Description + +It's a variable for version information of current library. + +#### Example + +```cpp +std::cout << "cppp-reiconv version: " << reiconv::version.major << "." + << reiconv::version.minor << "." << reiconv::version.patch << std::endl; +``` + +## Encoding Conversion API + +### `class reiconv::Encoding` + +Encoding class wraps encoding lookup functions. + +It can convert to a int value, equals to the internal encoding id. + +#### Construct from a encoding name + +Construct an encoding object from a encoding name. + +##### Definition + +```cpp +public: +_CPPP_API Encoding(const char* const name); +_CPPP_API Encoding(const std::string& name); +``` + +##### Parameters + +- `name`: The encoding name. `//` suffix is not allowed. + +##### Return + +- `Encoding`: The encoding object. + +##### Throws + +- `std::invalid_argument`: If the encoding name is not valid. + +#### Construct from a codepage + +Construct an encoding object from a codepage. + +##### Definition + +```cpp +public: +_CPPP_API Encoding(const int codepage); +``` + +##### Parameters + +- `codepage`: The codepage. This cannot open a encoding that do not have a +codepage. + +##### Return + +- `Encoding`: The encoding object. + +##### Throws + +- `std::invalid_argument`: If the codepage is invalid. + +#### Construct from a encoding id + +##### Definition + +```cpp +public: +constexpr Encoding(const Encodings index); +``` + +##### Parameters + +- `index`: The encoding id. Available encoding ids are defined in enum class `reiconv::Encodings`. + +##### Return + +- `Encoding`: The encoding object. + +##### Throws + +noexcept, **but we will not check if the encoding id is valid. So please pass a valid** +**encoding id from `reiconv::Encodings`. Or you will get undefined behavior.** + +#### Convert to int + +##### Definition + +```cpp +public: +operator int() const noexcept; +``` + +##### Return + +- `int`: The encoding id. + +#### Comparation + +##### Definition + +```cpp +public: +bool operator==(const Encoding other) const noexcept; +``` + +##### Parameters + +- `other`: The other encoding object. + +##### Return + +- `bool`: True if the two encoding objects are equal. If equal, they have the +same encoding id. + +#### Example + +```cpp +reiconv::Encoding gb18030(reiconv::Encodings::GB18030); // Open from encoding id. +reiconv::Encoding cp936(936); // Open from codepage. +reiconv::Encoding cp936_2("cp936"); // Open from encoding name. +reiconv::Encoding utf8("UTF-8"); + +std::cout << "(int)gb18030: " << (int)gb18030 << std::endl; +std::cout << "cp936 == cp936_2: " << (cp936 == cp936_2) << std::endl; // True +std::cout << "cp936 == utf8: " << (cp936 == utf8) << std::endl; // False +``` + +### `enum class reiconv::ConvertFlag` + +#### Definition + +```c +enum class ConvertFlag +{ + NO_FLAGS = 0, + DISCARD_ILSEQ = 1, +}; +``` + +#### Description + +This is a bitmask for conversion flags. + +- `NO_FLAGS`: No flags. Pass it by default. +- `DISCARD_ILSEQ`: Discard invalid sequence. +It's same as iconv's `//IGNORE` flag. + +Use `|` to combine flags. Use it in `reiconv::convert` function. + +### `reiconv::convert()` + +#### Definition + +```cpp +extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, enum ConvertFlag flag = ConvertFlag::NO_FLAGS); +``` + +#### Description + +Convert a string from one encoding to another. It will automatically allocate +memory for the output string. + +#### Parameters + +- `from`: The source encoding. +- `to`: The target encoding. +- `input`: The input string. +- `flag`: The conversion flags. Default is `ConvertFlag::NO_FLAGS`. + +#### Return + +- `std::string`: The converted string. + +#### Throws + +std::system_error if the conversion failed. Use it because it's has errno set. + +#### Example + +```cpp +const std::string_view src = "\xb8\xfc\xcf\xb2\xe1\xba\xc9\xbd\xc7\xa7\xc0\xef\xd1\xa9\xa3\xac\xc8\xfd\xbe\xfc\xb9\xfd\xba\xf3\xbe\xa1\xbf\xaa\xd1\xd5\xa3\xa1"; +std::string result = reiconv::convert(reiconv::Encodings::GB18030, "UTF-8", src); +std::cout << result << std::endl; +``` + +## Locale charset API + +### `reiconv::locale_charset()` + +#### Definition + +```c +extern _CPPP_API std::string_view locale_charset(); +``` + +#### Description + +Determine the current locale's character encoding. But not same as GNU LIBICONV's +implementation, we will not canonicalize the encoding name. But nearly the most of +it's result can be used in `reiconv::Encoding()`. Except for some VERY RARE +encodings or some OSX specific encodings in old OSX versions. These encodings are +not supported in cppp-reiconv and GNU LIBICONV. + +#### Return + +The current locale's character encoding. + +#### Example + +```c +std::setlocale(LC_ALL, ""); +std::string_view charset = reiconv::locale_charset(); +std::cout <<"Your locale charset is: " << charset << std::endl; +``` diff --git a/include/cppp/reiconv.h.in b/include/cppp/reiconv.h.in index 401b02cb..920fcaf1 100644 --- a/include/cppp/reiconv.h.in +++ b/include/cppp/reiconv.h.in @@ -204,6 +204,13 @@ extern _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode * @note Writing at most `*outbytesleft` bytes starting at `*outbuf`. * @note Decrements `*inbytesleft` and increments `*inbuf` by the same amount. * @note Decrements `*outbytesleft` and increments `*outbuf` by the same amount. + * @param cd The conversion descriptor. + * @param inbuf The input buffer. + * @param inbytesleft The input buffer length. + * @param outbuf The output buffer. + * @param outbytesleft The output buffer length. + * @return The number of bytes written to the output buffer. (size_t)(-1) is returned if error occured + * with errno set. */ extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); @@ -218,7 +225,7 @@ extern _CPPP_API int reiconv_handle_close(reiconv_t cd); /** * @brief Determine the current locale's character encoding. * @note The result is statically allocated. - * @return The canonicalized encoding name. + * @return The encoding name. */ extern _CPPP_API const char *locale_charset(); From 6f8a1ba1f9e8de82421ca545f63a1ff5152d0f98 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Mon, 10 Feb 2025 23:44:35 +0800 Subject: [PATCH 71/77] Add unstable comment. --- docs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/README.md b/docs/README.md index 6b41612e..9c9b0ff7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,6 +4,8 @@ These docs is for `cppp-reiconv 3.0.0`. +It's a unstable version. + cppp-reiconv is a portable C/C++ library for converting between character encodings and locale charset detection. From 2d9defb6a71c1530a2637ccf662a79a22609b92a Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 11 Feb 2025 11:05:49 +0800 Subject: [PATCH 72/77] Update documents. --- README.md | 4 +- README.zh_CN.md | 206 ++++++++++++++ docs/README.md | 4 +- docs/c-api.md | 14 +- docs/cpp-api.md | 4 +- docs/zh_CN/README.md | 41 +++ docs/zh_CN/c-api.md | 617 ++++++++++++++++++++++++++++++++++++++++++ docs/zh_CN/cpp-api.md | 234 ++++++++++++++++ 8 files changed, 1111 insertions(+), 13 deletions(-) create mode 100644 README.zh_CN.md create mode 100644 docs/zh_CN/README.md create mode 100644 docs/zh_CN/c-api.md create mode 100644 docs/zh_CN/cpp-api.md diff --git a/README.md b/README.md index 27ae4a33..e72c390c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ See [docs/](docs/README.md) for full requirements list. **We are planning to use [Rubisco](https://github.com/cppp-project/rubisco) to manage submodules. But it is not ready yet. So we don not use git submodule for now. Please clone them manually.** -Use the following command to fetch source code: +Use the following command to fetch source code, or download source package: ```shell git clone https://github.com/cppp-project/cppp-reiconv @@ -175,7 +175,7 @@ This library installs: + A shared library `libcppp-reiconv`. + A static library `libcppp-reiconv.static`. -+ Header files ++ Header files. ```text include diff --git a/README.zh_CN.md b/README.zh_CN.md new file mode 100644 index 00000000..4c3c58c9 --- /dev/null +++ b/README.zh_CN.md @@ -0,0 +1,206 @@ +# cppp-reiconv + +C+++ + +一个基于 GNU LIBICONV 的字符集转换库。**支持 C 和 C++20。** + +如果你的 C++ 标准低于 C++20,需要修改一些代码。 + +## 构建 + +此库需要 `build-aux` 和 `cppp-platform` 两个子模块用于构建。 + +参见 [docs/](docs/zh_CN/README.md) 获取完整依赖列表。 + +**我们正在使用 [Rubisco](https://github.com/cppp-project/rubisco) 管理子模块。但它还没有准备好。所以我们现在不使用 git submodule。请手动克隆它们。** + +使用以下命令克隆源代码,或者直接下载源码包: + +```shell +git clone https://github.com/cppp-project/cppp-reiconv +cd cppp-reiconv +git clone https://github.com/cppp-project/build-aux --depth 1 +git clone https://github.com/cppp-project/rubisco --depth 1 +``` + +使用以下命令构建和安装: + +```shell +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=[[BUILD_TYPE]] -DCMAKE_INSTALL_PREFIX=[[PREFIX]] +cmake --build . --config=[[BUILD_TYPE]] +cmake --install . --config=[[BUILD_TYPE]] +``` + +## 简单的用法 + +```cpp +#include + +#include +#include + +int main() +{ + const std::string_view src = "\xb8\xfc\xcf\xb2\xe1\xba\xc9\xbd\xc7\xa7\xc0\xef\xd1\xa9\xa3\xac\xc8\xfd\xbe\xfc\xb9\xfd\xba\xf3\xbe\xa1\xbf\xaa\xd1\xd5\xa3\xa1"; + + std::string result = reiconv::convert("GB18030", "UTF-8", src); + + std::cout << result << std::endl; + + const std::string_view correct_result = "\u66f4\u559c\u5cb7\u5c71\u5343\u91cc\u96ea\uff0c\u4e09\u519b\u8fc7\u540e\u5c3d\u5f00\u989c\uff01"; + + if (result == correct_result) + { + std::cout << "正确!" << std::endl; + } + else + { + // 如果发生了这个,请提 issue! + std::cout << "错误!" << std::endl; + } + + return EXIT_SUCCESS; +} +``` + +完整文档参见 [docs/](docs/zh_CN/README.md)。 + +## 支持的编码 + +和 GNU LIBICONV 一样,它提供了以下编码的支持: + ++ 欧洲语言 + + ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, + + KOI8-R, KOI8-U, KOI8-RU, + + CP{1250,1251,1252,1253,1254,1257}, CP{850,866,1131}, + + Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, + + Mac{Cyrillic,Ukraine,Greek,Turkish}, + + Macintosh ++ 闪米特诸族语言 + + ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic} ++ 日本语 + + EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1, + + ISO-2022-JP-MS ++ 中文 + + EUC-CN, HZ, GBK, CP936, GB18030, GB18030:2022, EUC-TW, BIG5, CP950, + + BIG5-HKSCS, BIG5-HKSCS:2004, BIG5-HKSCS:2001, BIG5-HKSCS:1999, + + ISO-2022-CN, ISO-2022-CN-EXT ++ 韩语 + + EUC-KR, CP949, ISO-2022-KR, JOHAB ++ 亚美尼亚语 + + ARMSCII-8 ++ 格鲁吉亚语 + + Georgian-Academy, Georgian-PS ++ 塔吉克语 + + KOI8-T ++ 哈萨克语 + + PT154, RK1048 ++ 泰语 + + ISO-8859-11, TIS-620, CP874, MacThai ++ 老挝语 + + MuleLao-1, CP1133 ++ 越南语 + + VISCII, TCVN, CP1258 ++ 平台特定 + + HP-ROMAN8, NEXTSTEP ++ 完整的 Unicode + + UTF-8 + + UCS-2, UCS-2BE, UCS-2LE + + UCS-4, UCS-4BE, UCS-4LE + + UTF-16, UTF-16BE, UTF-16LE + + UTF-32, UTF-32BE, UTF-32LE + + UTF-7 + + C99, JAVA ++ 完整的 Unicode,以 'uint16_t' 或 'uint32_t' 表示 + + UCS-2-INTERNAL, UCS-4-INTERNAL (具有设备依赖的字节序和对齐) + +一些额外的编码。这些编码是 GNU LIBICONV 的额外编码。 + ++ 欧洲语言 + + CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125} ++ 闪米特诸族语言 + + CP864 ++ 日本语 + + EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3 ++ 中文 + + BIG5-2003 (experimental) ++ 土库曼语 + + TDS565 ++ 平台特定 + + ATARIST, RISCOS-LATIN1 ++ EBCDIC 兼容编码(不兼容ASCII,几乎不使用) + + 欧洲语言 + + IBM-{037,273,277,278,280,282,284,285,297,423,500,870,871,875,880}, + + IBM-{905,924,1025,1026,1047,1112,1122,1123,1140,1141,1142,1143}, + + IBM-{1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157,1158}, + + IBM-{1165,1166,4971} + + 闪米特诸族语言 + + IBM-{424,425,12712,16804} + + 波斯语 + + IBM-1097 + + 泰语 + + IBM-{838,1160} + + 老挝语 + + IBM-1132 + + 越南语 + + IBM-{1130,1164} + + 印度语 + + IBM-1137 + +它可以通过 Unicode 从这些编码中的任何一种转换为任何其他编码 +转换。 + +## 编译选项 + +使用 CMake 进行构建 + ++ `BUILD_TESTING`: 编译测试工具。默认为 `ON`. + +```shell +cmake .. -DBUILD_TESTING=ON +cmake --build . --config=RelWithDebInfo +ctest -C RelWithDebInfo --output-on-failure +``` + ++ `ICONV_COMPAT`: 启用 iconv 兼容。默认为 `OFF`. + +如果 `ICONV_COMPAT` 开启,会安装 `iconv.h` 和基本的函数。 +但是我们不支持 POSIX:2024 的所有功能。参见 [TODO](TODO). + +## 安装 + +此库安装: + ++ 动态库 `libcppp-reiconv`。 ++ 静态库 `libcppp-reiconv.static`。 ++ 头文件。 + +```text +include +├── cppp +│ ├── cppp-platform.h +│ ├── encodings +│ │ ├── reiconv.h +│ │ └── reiconv.hpp +│ ├── reiconv.h +│ └── reiconv.hpp +└── iconv.h # 仅当 ICONV_COMPAT 开启才存在 +``` + +## 版权 + +cppp-reiconv 使用 LGPLv3,参见 [LICENSE](./LICENSE). + +## 下载 + +参见 + +## 主页 + + + +## Bug 反馈 + ++ 请在 GitHub 创建 issue [来一个](https://github.com/cppp-project/cppp-reiconv/issues/new/) diff --git a/docs/README.md b/docs/README.md index 9c9b0ff7..2fab3c1b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,7 @@ # cppp-reiconv documentation +[[Simplified Chinese]](zh_CN/README.md) + ## Introduction These docs is for `cppp-reiconv 3.0.0`. @@ -18,7 +20,7 @@ encodings and locale charset detection. ### Runtime -- C runtime +- C runtime. - C++ runtime with C++20 support. ### Build with data generation diff --git a/docs/c-api.md b/docs/c-api.md index bd0df8b1..bc5dc05f 100644 --- a/docs/c-api.md +++ b/docs/c-api.md @@ -2,7 +2,7 @@ Although we have C API, we still require C++20 runtime. -header file `cppp/reiconv.h` contains all C API. +Header file `cppp/reiconv.h` contains all C API. ## Version Information API @@ -42,12 +42,12 @@ extern _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf #### Description -Canonicalize an encoding name. the `canonical` means the internal name of +Canonicalize an encoding name. The `canonical` means the internal name of encoding. Not the canonical name of IANA. We will ignore '-' and '_', and uppercase all characters. Segment fault if `name` or `outbuf` is `nullptr`. We will not check the -length of `outbuf` +length of `outbuf`. **This function is not recommended to use.** @@ -343,7 +343,7 @@ Get the size of converted string. #### Return -The size of converted string. If the conversion failed, returns `(size_t)(-1)` +The size of converted string. If the conversion failed, returns `(size_t)(-1)`. **It's don't support flags now, so `flags` is always `REICONV_NO_FLAGS`. We will** **support it in the next version. So this API will change in the next version.** @@ -378,7 +378,7 @@ If the output buffer is too small, -1 is returned. If the output buffer is too big, the rest of the buffer will not change. This function is useful when you want to convert a string to a fixed size buffer -like stack buffer. It's faster than `reiconv_convert` +like stack buffer. It's faster than `reiconv_convert`. #### Parameters @@ -441,7 +441,7 @@ Bruno Haible put this file into the public domain. we will allocate memory for you and set it to the result buffer. If pointed but not `NULL`, we will use it as the output buffer but reallocate it. So it must be a pointer that can be modified. -**But don't let it value to `NULL`!** +**But don't let output_data_ptr's value to `NULL`!** - `output_length_ptr`: The length of output buffer. If NULL, error will be occured. #### Return @@ -550,8 +550,6 @@ printf("Your locale charset is: %s\n", charset); Iconv compatibility is disabled by default. You can enable it by defining `-DICONV_COMPAT=ON` when you configure cppp-reiconv. -See "Iconv support" section below. - ### `iconv_t`, aka `reiconv_t` in `cppp/reiconv.h` #### Definition diff --git a/docs/cpp-api.md b/docs/cpp-api.md index e36f193a..135c0456 100644 --- a/docs/cpp-api.md +++ b/docs/cpp-api.md @@ -199,7 +199,7 @@ memory for the output string. #### Throws -std::system_error if the conversion failed. Use it because it's has errno set. +- `std::system_error` If the conversion failed. Use it because it's has errno set. #### Example @@ -233,7 +233,7 @@ The current locale's character encoding. #### Example -```c +```cpp std::setlocale(LC_ALL, ""); std::string_view charset = reiconv::locale_charset(); std::cout <<"Your locale charset is: " << charset << std::endl; diff --git a/docs/zh_CN/README.md b/docs/zh_CN/README.md new file mode 100644 index 00000000..68b8c406 --- /dev/null +++ b/docs/zh_CN/README.md @@ -0,0 +1,41 @@ +# cppp-reiconv 文档 + +## 介绍 + +这是 `cppp-reiconv 3.0.0` 文档。不稳定版本。 + +cppp-reiconv 是一个可移植的 C/C++ 库,用于字符编码之间的转换和字符集检测。 + +## 依赖 + +### 构建 + +- 一个支持 C++20 的 C++ 编译器。 +- CMake 3.12 或更高版本. + +### 运行时 + +- C 运行时。 +- 支持 C++20 的 C++ 运行时。 + +### 生成数据 + +我们需要为编码生成索引,它们存储在 `lib/generated` 中。 + +**如果你不感兴趣,你可以跳过这步骤。** +**我们已经在 Git 仓库和源码包提供了相关数据。** + +- GNU Make. +- GNU Gperf. +- 一个 POSIX 操作系统. + +安装以上工具以后,你可以用下面的命令生成数据: + +```shell +make -f Makefile.devel -B +``` + +## API 参考 + +- [C API 和 iconv 兼容 API 参考](c-api.md) +- [C++ API 参考](cpp-api.md) diff --git a/docs/zh_CN/c-api.md b/docs/zh_CN/c-api.md new file mode 100644 index 00000000..778c87b6 --- /dev/null +++ b/docs/zh_CN/c-api.md @@ -0,0 +1,617 @@ +# cppp-reiconv C API + +尽管我们提供 C API,我们仍需 C++20 运行时 + +头文件 `cppp/reiconv.h` 包含所有的 C API. + +## 版本信息 API + +### `struct VersionInfo` + +#### 描述 + +这是包含了版本信息的结构体。 + +#### 值 + +- `int major`:主版本号。 +- `int minor`:次版本号。 +- `int patch`:修订版本号。 + +### `reiconv_version` + +#### 描述 + +这是一个描述当前库版本信息的变量。 + +#### 示例 + +```c +printf("cppp-reiconv 版本: %d.%d.%d\n", reiconv_version.major, reiconv_version.minor, reiconv_version.patch); +``` + +## 编码名称 API + +### `reiconv_name_canonicalize()` + +#### 定义 + +```c +extern _CPPP_API size_t reiconv_name_canonicalize(const char *name, char *outbuf); +``` + +#### 描述 + +统一化编码名称. `canonical` 指的是规范成内部的格式,不是 IANA 的格式。 +我们会忽略 '-' 和 '_',并将所有字符转换为大写。 + +当 `name` 或 `outbuf` 为 `nullptr` 时,会发生段错误。我们不会检查 `outbuf` 的长度。 + +**这是一个不推荐使用的函数。** + +#### 参数 + +- `name`:需要统一化的编码名称。 +- `outbuf`:用于存储统一化后的编码名称的缓冲区。必须分配足够的空间。 + +#### 返回值 + +统一化后的编码名称的长度。 + +#### 示例 + +```c +const char* name = "UCS-4" +char outbuf[256]; +size_t outbuf_size = reiconv_name_canonicalize(name, outbuf); +// outbuf_size == 4, outbuf == "UCS4" +``` + +### `reiconv_lookup_from_name()` + +#### 定义 + +```c +extern _CPPP_API int reiconv_lookup_from_name(const char *encoding); +``` + +#### 描述 + +通过编码名称查找编码。 + +#### 参数 + +- `encoding`:编码名称。大小写不敏感。 +**必须是有效的指针,否则会导致未定义行为。** + +#### 返回值 + +返回编码索引。未找到则返回 `-1`。 + +`encoding index` 是 cppp-reiconv 内部的唯一 ID。在 `reiconv_open()` 函数中使用。 + +#### 示例 + +```c +int encoding_index = reiconv_lookup_from_name("UTF-8"); +``` + +### `reiconv_lookup_from_codepage()` + +#### 定义 + +```c +extern _CPPP_API int reiconv_lookup_from_codepage(int codepage); +``` + +#### 描述 + +通过代码页查找一个编码。 + +#### 参数 + +- `codepage`:代码页。 + +#### 返回值 + +返回代码页索引,未找到则返回 `-1`。 + +#### 示例 + +```c +// 与 reiconv_lookup_from_name("CP936") 相同 +int encoding_index = reiconv_lookup_from_codepage(936); +``` + +## 编码转换 API + +### `reiconv_t` + +#### 定义 + +```c +typedef void* reiconv_t; +``` + +#### 描述 + +这是一个指向内部 `conv_struct` 的指针。尽管 cppp-reiconv 基于 GNU LIBICONV, +但我们的 `conv_struct` 互不兼容。 + +### `ConvertFlag` + +#### 定义 + +```c +enum ConvertFlag +{ + REICONV_NO_FLAGS = 0, + REICONV_DISCARD_ILSEQ = 1, +}; +``` + +#### 描述 + +这是一个位掩码,用于表明转换标志。 + +- `REICONV_NO_FLAGS`:无标志。默认传入这个。 +- `REICONV_DISCARD_ILSEQ`:丢弃非法序列。与 iconv 的 `//IGNORE` 标志相同。 + +### `reiconv_open_from_index()` + +#### 定义 + +```c +extern _CPPP_API reiconv_t reiconv_open_from_index(int fromcode, int tocode, enum ConvertFlag flags); +``` + +#### 描述 + +通过编码索引打开一个转换描述符。 +**索引必须有效,否则行为未定义。** + +#### 参数 + +- `fromcode`:源编码索引。 +**注意:reiconv 的描述符打开函数的参数顺序是先有 `fromcode` 后有 `tocode`。** +**但是 iconv 先有 `tocode` 后有 `fromcode`!** +- `tocode`:目标编码索引。我们推荐你使用编码枚举而不是代码页。 +编码枚举定义在 `cppp/encodings/reiconv.h`。这是自动生成的。参见下面的示例。 +- `flags`:转换标志。 +`flags` 是一个位掩码。参见 `ConvertFlag` 了解更多信息。 + +#### 返回值 + +如果转换描述符无法创建,返回 `(reiconv_t)(-1)`,并且设置 errno。 +这和 iconv 的返回值相同。**不是 NULL!** + + +这个函数只会在内存分配失败时出错。 +**它不会检查 `fromcode` 和 `tocode` 的有效性!** +**你应该只传递编码枚举的索引!** + +#### 示例 + +```c +reiconv_t cd = reiconv_open_from_index( + ENCODING_UTF8, /* C API 中的编码枚举项均以 ENCODING_ 为前缀。 */ + ENCODING_GB18030, /* 查看头文件获取详细信息。 */ + REICONV_DISCARD_ILSEQ /* 这个标志意思是丢弃非法序列。 */ +); +if (cd == (reiconv_t)(-1)) +{ + perror("reiconv_open_from_index"); +} +``` + +### `reiconv_open_from_codepage()` + +#### 定义 + +```c +extern _CPPP_API reiconv_t reiconv_open_from_codepage(int fromcode, int tocode, enum ConvertFlag flags); +``` + +#### 描述 + +通过代码页打开一个转换描述符。这是 `reiconv_lookup_from_codepage()` + `reiconv_open_from_index()` +的快捷方式。 +参见 `reiconv_open_from_index()` 了解更多参数信息。 + +#### 参数 + +- `fromcode`:源编码的代码页。 +- `tocode`:目标编码的代码页。 +- `flags`:转换标志。 + +#### 返回值 + +如果转换描述符无法创建,返回 `(reiconv_t)(-1)`,并且设置 errno。 +我们会检查 `fromcode` 和 `tocode` 的有效性。 + +一些编码可能没有代码页。你应该通过索引或名称来打开它们。 + +#### 示例 + +```c +reiconv_t cd = reiconv_open_from_codepage( + 65001, /* UTF-8 */ + 936, /* CP936 */ + REICONV_DISCARD_ILSEQ +); +if (cd == (reiconv_t)(-1)) +{ + perror("reiconv_open_from_codepage"); +} +``` + +CP936 和 GBK 实际上有些区别. 参见 `lib/converters/cp936.h`. + +`lib/converters/cp936.h` 中的注释是这样说的(来自 Bruno Haible): + +> IANA 将 CP936 作为 GBK 的别名。但 GBK 是官方的中文规范,而 CP936 实际上是由微软维护的。 +> 当然,自 1999 年以来,微软对 CP936 进行了修改。 +> +> 与 GBK 的区别如下: +> +> - 单个字符: +> +> | GBK | CP936 | +> | :----: | :----: | +> | 0x80 | 0x20AC # 欧元符号 | +> +> 一些 CP936 的变体(在 JDK、Windows-2000、ICU 中)还添加了: +> +> - 私有区域映射: +> +> | 代码 | Unicode | +> | :----: | :----: | +> | 0x{A1..A2}{40..7E,80..A0} | U+E4C6..U+E585 | +> | 0x{AA..AF,F8..FE}{A1..FE} | U+E000..U+E4C5 | +> +> 我们也添加了这些映射,因为尽管当私有区域的字符被移动到官方的 Unicode 码点时会出现向后兼容性问题,但它们在实践中对某些人非常有用。 + +### `reiconv_open_from_name()` + +#### 定义 + +```c +extern _CPPP_API reiconv_t reiconv_open_from_name(const char *fromcode, const char *tocode, enum ConvertFlag flags); +``` + +#### 描述 + +通过编码名称打开一个转换描述符。 +这是 `reiconv_lookup_from_name()` + `reiconv_open_from_index()` 的快捷方式。 +参见 `reiconv_open_from_index()` 了解更多参数信息。 + +#### 参数 + +- `fromcode`:源编码的名称。只能传入编码名称,**不允许传入**`//IGNORE` or `//TRANSLIT` 等控制后缀。 +- `tocode`:目标编码的名称。 +- `flags`:转换标志。 + +#### 返回值 + +如果转换描述符无法创建,返回 `(reiconv_t)(-1)`,并且设置 errno。 +它会检查 `fromcode` 和 `tocode` 的有效性。 + +#### 示例 + +```c +reiconv_t cd = reiconv_open_from_name( + "UTF-8", + "GB18030", + REICONV_NO_FLAGS +); +if (cd == (reiconv_t)(-1)) +{ + perror("reiconv_open_from_name"); +} +``` + +### `reiconv_result_size()` + +#### 定义 + +```c +extern _CPPP_API size_t reiconv_result_size(reiconv_t cd, const char *start, size_t inlength); +``` + +#### 描述 + +获取转换后的字符串大小。 + +#### 参数 + +- `cd`:转换描述符。 +- `start`:输入的字符串。 +- `inlength`:输入字符串的长度。 + +#### 返回值 + +转换后的字符串大小。如果转换失败,返回 `(size_t)(-1)`。 + +**目前这个 API 不支持转换标志。所以 `flags` 永远是 `REICONV_NO_FLAGS`。我们会在** +**下一个版本中支持它。所以这个 API 会在下一个版本中改变。** + +#### 示例 + +```c +const char input[] = "Hello, World!"; +size_t result_size = reiconv_result_size(cd, input, strlen(input)); + +if (result_size == (size_t)(-1)) +{ + perror("reiconv_result_size"); +} +``` + +### `reiconv_convert_static_size()` + +#### 定义 + +```c +extern _CPPP_API int reiconv_convert_static_size(reiconv_t cd, const char *input_data, size_t input_length, + char *output_data, size_t output_length); +``` + +#### 描述 + +用转换描述符 `cd` 转换一个字符串,使用一个静态大小的输出缓冲区。 + +如果输出缓冲区太小,返回 `-1`。 + +如果输出缓冲区太大,输出缓冲区的其余部分不会改变。 + +当你想要将一个字符串转换为一个固定大小的缓冲区(比如栈缓冲区)时,这个函数非常有用。 +它比 `reiconv_convert` 快。 + +#### 参数 + +- `cd`:转换描述符。 +- `input_data`:输入的字符串。 +- `input_length`:输入字符串的长度。 +- `output_data`:输出的字符串。 +- `output_length`:输出字符串的长度。 + +#### 返回值 + +转换后的字符串长度。如果转换失败,返回 `(size_t)(-1)`。 + +#### 示例 + +```c +const char input[] = "Hello, World!"; +char output[256]; +size_t result_size = reiconv_convert_static_size(cd, input, strlen(input), output, sizeof(output)); +if (result_size == (size_t)(-1)) +{ + perror("reiconv_convert_static_size"); +} +``` + +### `reiconv_convert()` + +#### 定义 + +```c +extern _CPPP_API int reiconv_convert(reiconv_t cd, const char *input_data, size_t input_length, char **output_data_ptr, + size_t *output_length_ptr); +``` + +#### 描述 + +把一段文本从一个编码转换到另一个编码。 + +这是 cppp-reiconv 中最方便的函数。它会自动计算转换后的字符串大小,并且为你分配内存。 + +但是计算转换后的字符串大小总是很慢的。如果你知道转换后的字符串大小,你应该使用 +`reiconv_convert_static_size()` 代替。 + +此函数不会特殊处理零字符。 + +Its code comes from `iconv_string()` in GNU LIBICONV's repository. + +它的代码来自 GNU LIBICONV 仓库中的 `iconv_string()`。 + +参见 + +Bruno Haible 把这个文件放到了公共领域。`iconv_string.h` 不是 GNU LIBICONV 库的一部分。 + +#### 参数 + +- `cd`:转换描述符。 +- `input_data`:输入的字符串。 +- `input_length`:输入字符串的长度。 +- `output_data_ptr`:输出缓冲区的指针。如果它指向一个 `NULL` 指针,我们会为你分配内存, +并且将它设置为结果缓冲区。如果指向某个指针但不是 `NULL`,我们将使用它作为输出缓冲区, +并且重新分配它。所以它必须是一个可以修改的指针。 +**但是不要让 output_data_ptr 的值为 `NULL`!** +- `output_length_ptr`:输出缓冲区的长度。如果为 `NULL`,会发生错误。 + +#### 返回值 + +我们只在成功时返回 `0`。如果失败,返回 `-1` 并设置 errno。我们将输出缓冲区保存在 +`output_data_ptr` 中。 + +**注意:请在使用后释放输出缓冲区!它总是动态分配的!** + +#### 示例 + +```c +const char input[] = "Hello, World!"; +char *output = NULL; /* NULL 意味着我们会为你动态分配内存。 */ +size_t output_length = 0; +int result = reiconv_convert(cd, input, strlen(input), &output, &output_length); +if (result == -1) +{ + perror("reiconv_convert"); +} +printf("%zu: %s\n", output_length, output); +free(output); +``` + +```c +const char input[] = "Hello, World!"; +char* output = malloc(1); /* 我们会重分配它。 */ +if (output == NULL) +{ + perror("malloc"); +} +size_t output_length = 0; +int result = reiconv_convert(cd, input, strlen(input), &output, &output_length); +if (result == -1) +{ + perror("reiconv_convert"); +} +printf("%zu: %s\n", output_length, output); +free(output); +``` + +### `reiconv_handle_close()` + +#### 定义 + +```c +extern _CPPP_API int reiconv_handle_close(reiconv_t cd); +``` + +#### 描述 + +关闭一个转换描述符。 + +#### 参数 + +- `cd`:转换描述符。 + +#### 返回值 + +我们在成功时返回 `0`。现在我们只返回 `0`。因为我们只需要释放转换描述符的内存。 + +#### 示例 + +```c +/* 这还要示例??? */ +reiconv_handle_close(cd); +``` + +## 本地编码 API + +### `locale_charset()` + +#### 定义 + +```c +extern _CPPP_API const char* locale_charset(); +``` + +#### 描述 + +判断当前的本地编码。但是和 GNU LIBICONV 的实现不同,我们不会统一化编码名称。但是大多数的结果 +可以在 `reiconv_open_from_name()` 中使用。除了一些非常罕见的编码或一些旧的 OSX 版本中的一些 +特定的编码。这些编码在 cppp-reiconv 和 GNU LIBICONV 中都不支持。 + +#### 返回值 + +当前本地编码的名称。 + +#### 示例 + +```c +setlocale(LC_ALL, ""); +const char* charset = locale_charset(); +printf("你的本地编码是:%s\n", charset); +``` + +## Iconv 兼容 API + +**这些 API 不推荐在 `cppp/reiconv.h` 中使用。请在 `iconv.h` 中使用它们。** + +Iconv 兼容性默认是禁用的。你可以在配置 cppp-reiconv 时定义 `-DICONV_COMPAT=ON` 来启用它。 + +### `iconv_t`,即 `cppp/reiconv.h` 中的 `reiconv_t` + +#### 定义 + +```c +#define iconv_t reiconv_t +``` + +和上文 `reiconv_t` 相同。 + +### `iconv_open`,即 `cppp/reiconv.h` 中的 `reiconv_open()` + +#### 定义 + +在 `cppp/reiconv.h` 中: + +```c +extern _CPPP_API reiconv_t reiconv_open(const char *tocode, const char *fromcode); +``` + +在 `iconv.h` 中: + +```c +#define iconv_open reiconv_open +``` + +#### 描述 + +打开一个转换描述符。用于 iconv 兼容性。 + +#### 参数 + +- `tocode`:目标编码的名称。**注意:iconv 兼容 API 的参数顺序是先 `fromcode` 后 `tocode`!** +- `fromcode`:源编码的名称。我们现在支持 `//IGNORE`。 + +#### 返回值 + +转换描述符。如果出错,返回 `(reiconv_t)(-1)`,并且设置 errno。 + +### `iconv`,即 `cppp/reiconv.h` 中的 `reiconv_iconv()` + +#### 定义 + +在 `cppp/reiconv.h` 中: + +```c +extern _CPPP_API size_t reiconv_iconv(reiconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, + size_t *outbytesleft); +``` + +在 `iconv.h` 中: + +```c +#define iconv reiconv_iconv +``` + +#### 描述 + +执行转换。用于 iconv 兼容性。 + +参见 `man 3 iconv`。 + +#### 参数 + +- `cd`:转换描述符。 +- `inbuf`:输入缓冲区。 +- `inbytesleft`:输入缓冲区的长度。 +- `outbuf`:输出缓冲区。 +- `outbytesleft`:输出缓冲区的长度。 + +#### 返回值 + +转换后的字符串长度。 + +### `iconv_close`,即 `cppp/reiconv.h` 中的 `reiconv_handle_close()` + +#### 定义 + +在 `iconv.h` 中: + +```c +#define iconv_close reiconv_handle_close +``` + +与上文 `reiconv_handle_close()` 相同。 diff --git a/docs/zh_CN/cpp-api.md b/docs/zh_CN/cpp-api.md new file mode 100644 index 00000000..b3a95029 --- /dev/null +++ b/docs/zh_CN/cpp-api.md @@ -0,0 +1,234 @@ +# cppp-reiconv C++ API + +C++ API 也许比 C API 慢一些。但它更方便。 + +## 版本信息 API + +### `struct VersionInfo` + +#### 描述 + +结构包含版本信息。 + +#### 值 + +- `int major`:主版本。 +- `int minor`:次版本。 +- `int patch`:修订版本。 + +### `reiconv::version` + +#### 描述 + +这是一个描述当前库版本信息的变量。 + +#### 示例 + +```cpp +std::cout << "cppp-reiconv 版本:" << reiconv::version.major << "." + << reiconv::version.minor << "." << reiconv::version.patch << std::endl; +``` + +## 编码转换 API + +### `class reiconv::Encoding` + +编码类封装了编码查找函数。 + +它可以转换为一个 int 值,等于内部的编码 id。 + +#### 从编码名称构造 + +从编码名称构造编码对象。 + +##### 定义 + +```cpp +public: +_CPPP_API Encoding(const char* const name); +_CPPP_API Encoding(const std::string& name); +``` + +##### 参数 + +- `name`:编码名称. 不允许 `//` 后缀。 + +##### 返回 + +- `Encoding`:编码对象。 + +##### 异常 + +- `std::invalid_argument`:如果编码名称无效。 + +#### 从代码页构造 + +从代码页构造编码对象。 + +##### 定义 + +```cpp +public: +_CPPP_API Encoding(const int codepage); +``` + +##### 参数 + +- `codepage`:代码页。这不能打开一个没有代码页的编码。 + +##### 返回 + +- `Encoding`:编码对象。 + +##### 异常 + +- `std::invalid_argument`:如果代码页无效。 + +#### 从编码 id 构造 + +##### 定义 + +```cpp +public: +constexpr Encoding(const Encodings index); +``` + +##### 参数 + +- `index`:编码 id。可用的编码 id 定义在枚举类 `reiconv::Encodings` 中。 + +##### 返回 + +- `Encoding`:编码对象。 + +##### 异常 + +无异常,**但我们不会检查编码 id 是否有效。所以请从 `reiconv::Encodings` 传递一个有效的编码 id。** +**否则,将发生未定义行为。** + +#### 转换到 int + +##### 定义 + +```cpp +public: +operator int() const noexcept; +``` + +##### 返回 + +- `int`:编码 id。 + +#### 比较 + +##### 定义 + +```cpp +public: +bool operator==(const Encoding other) const noexcept; +``` + +##### 参数 + +- `other`:另一个编码对象。 + +##### 返回 + +- `bool`:如果两个编码对象相等,则返回 true,则它们具有相同的编码 id。 + +#### 示例 + +```cpp +reiconv::Encoding gb18030(reiconv::Encodings::GB18030); // 从编码 id 构造 +reiconv::Encoding cp936(936); // 从代码页构造 +reiconv::Encoding cp936_2("cp936"); // 从编码名称构造 +reiconv::Encoding utf8("UTF-8"); + +std::cout << "(int)gb18030: " << (int)gb18030 << std::endl; +std::cout << "cp936 == cp936_2: " << (cp936 == cp936_2) << std::endl; // 真 +std::cout << "cp936 == utf8: " << (cp936 == utf8) << std::endl; // 假 +``` + +### `enum class reiconv::ConvertFlag` + +#### 定义 + +```c +enum class ConvertFlag +{ + NO_FLAGS = 0, + DISCARD_ILSEQ = 1, +}; +``` + +#### 描述 + +这是一个转换标志的位掩码。 + +- `NO_FLAGS`:无标志。这是默认值。 +- `DISCARD_ILSEQ`:丢弃非法序列。与 iconv 的 `//IGNORE` 标志相同。 + +使用 `|` 来组合标志。在 `reiconv::convert` 函数中使用。 + +### `reiconv::convert()` + +#### 定义 + +```cpp +extern _CPPP_API std::string convert(Encoding from, Encoding to, const std::string_view input, enum ConvertFlag flag = ConvertFlag::NO_FLAGS); +``` + +#### 描述 + +从一个编码转换为另一个编码。它会自动给输出字符串分配内存。 + +#### 参数 + +- `from`:源编码。 +- `to`:目标编码。 +- `input`:输入字符串。 +- `flag`:转换标志。默认值为 `ConvertFlag::NO_FLAGS`。 + +#### 返回 + +- `std::string`:转换后的字符串。 + +#### 异常 + +- `std::system_error`:如果转换失败。用它因为它有 errno 设置。 + +#### 示例 + +```cpp +const std::string_view src = "\xb8\xfc\xcf\xb2\xe1\xba\xc9\xbd\xc7\xa7\xc0\xef\xd1\xa9\xa3\xac\xc8\xfd\xbe\xfc\xb9\xfd\xba\xf3\xbe\xa1\xbf\xaa\xd1\xd5\xa3\xa1"; +std::string result = reiconv::convert(reiconv::Encodings::GB18030, "UTF-8", src); +std::cout << result << std::endl; +``` + +## 本地编码 API + +### `reiconv::locale_charset()` + +#### 定义 + +```c +extern _CPPP_API std::string_view locale_charset(); +``` + +#### 描述 + +判断当前的本地编码。但是和 GNU LIBICONV 的实现不同,我们不会统一化编码名称。但是大多数的结果 +可以在 `reiconv_open_from_name()` 中使用。除了一些非常罕见的编码或一些旧的 OSX 版本中的一些 +特定的编码。这些编码在 cppp-reiconv 和 GNU LIBICONV 中都不支持。 + +#### 返回 + +当前本地编码的名称。 + +#### 示例 + +```cpp +std::setlocale(LC_ALL, ""); +std::string_view charset = reiconv::locale_charset(); +std::cout <<"Your locale charset is: " << charset << std::endl; +``` From 985b97496471b09cedd2c90cc0ff578ab4252d62 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 11 Feb 2025 11:12:49 +0800 Subject: [PATCH 73/77] Correct errors in docs. --- README.md | 2 +- README.zh_CN.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e72c390c..364cd386 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Use the following command to fetch source code, or download source package: git clone https://github.com/cppp-project/cppp-reiconv cd cppp-reiconv git clone https://github.com/cppp-project/build-aux --depth 1 -git clone https://github.com/cppp-project/rubisco --depth 1 +git clone https://github.com/cppp-project/cppp-platform --depth 1 ``` Use the following command to build and install. diff --git a/README.zh_CN.md b/README.zh_CN.md index 4c3c58c9..530d99d1 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -20,7 +20,7 @@ git clone https://github.com/cppp-project/cppp-reiconv cd cppp-reiconv git clone https://github.com/cppp-project/build-aux --depth 1 -git clone https://github.com/cppp-project/rubisco --depth 1 +git clone https://github.com/cppp-project/cppp-platform --depth 1 ``` 使用以下命令构建和安装: From 61e02bf3582cad380d6bf2cf36bca4e011574b60 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 11 Feb 2025 13:06:39 +0800 Subject: [PATCH 74/77] Update CI configs. --- .github/workflows/build.yml | 124 +++++++++++++----------------------- .github/workflows/test.yml | 87 +++++++------------------ .rubisco/build.yml | 108 +++---------------------------- .rubisco/dist.yml | 99 ++++++++++++++++++++++++++++ .rubisco/test.yml | 4 +- repo.json | 3 + 6 files changed, 181 insertions(+), 244 deletions(-) create mode 100644 .rubisco/dist.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9e32a341..f92aa102 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,61 +11,38 @@ jobs: runs-on: ubuntu-latest steps: + - name: 📁 Checkout + uses: actions/checkout@v4 - #--------------------------------------------collect-------------------------------------------- - - uses: actions/checkout@v3 - - - name: 🏷️ Get infomations - run: | - tag="${GITHUB_REF#refs/tags/}" - echo "tag=$tag" >> $GITHUB_ENV - echo "pkgname=cppp-reiconv-$tag" >> $GITHUB_ENV - echo "srcdir=$(pwd)" >> $GITHUB_ENV + - name: 🧰 Setup Rubisco + id: rubisco + uses: cppp-project/rubisco@main + with: + host: x86_64-linux-gnu - - name: 📁 Collect dependencies - run: | - sudo apt-get update - sudo apt-get install p7zip-full zip xz-utils -y - sudo apt-get install gperf cmake gcc python3 -y - - #--------------------------------------------build-------------------------------------------- - - name: 🧳 Prepare for source distribution building - run: | - mkdir -p ./dist - ./setup.sh - - - name: 🛠️ Build source distribution + - name: 📦 Build source distribution run: | - ./cpppdist.py - - - name: 📦 Make packages - run: | - tar cvf ${{ env.pkgname }}.tar ${{ env.pkgname }} - zip -r -9 dist/${{ env.pkgname }}.zip ${{ env.pkgname }} - 7z a dist/${{ env.pkgname }}.7z ${{ env.pkgname }} - xz -c -9 -k ${{ env.pkgname }}.tar > dist/${{ env.pkgname }}.tar.xz - gzip -c -9 -k ${{ env.pkgname }}.tar > dist/${{ env.pkgname }}.tar.gz + rubisco dist + # Rubisco will support it later. + - name: 📦 Generate checksum + run: | cd dist - for i in $(ls) ; do md5sum $i > $i.md5 ; done + for i in $(ls) ; do sha256sum $i > $i.sha256 ; done cd .. - - #--------------------------------------------publish-------------------------------------------- - name: ⬆️ Create release and upload assets uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.tag }} + tag_name: ${{ steps.rubisco.outputs.tag }} files: ./dist/* build-linux: - - needs: build-dist strategy: fail-fast: false matrix: - arch: [ + host: [ aarch64-linux-gnu, alpha-linux-gnu, arm-linux-gnueabi, @@ -75,51 +52,39 @@ jobs: mips64-linux-gnuabi64, mips64el-linux-gnuabi64, mipsel-linux-gnu, - mipsisa32r6-linux-gnu, - mipsisa32r6el-linux-gnu, - mipsisa64r6-linux-gnuabi64, - mipsisa64r6el-linux-gnuabi64, powerpc-linux-gnu, powerpc64-linux-gnu, - powerpc64le-linux-gnu, riscv64-linux-gnu, sh4-linux-gnu, x86_64-linux-gnu ] - + runs-on: ubuntu-latest - + steps: - - #--------------------------------------------collect-------------------------------------------- - - name: 🏷️ Get infomations - run: | - tag="${GITHUB_REF#refs/tags/}" - echo "tag=$tag" >> $GITHUB_ENV - echo "pkgname=cppp-reiconv-$tag" >> $GITHUB_ENV - echo "srcdir=$(pwd)" >> $GITHUB_ENV + - name: 📁 Checkout + uses: actions/checkout@v4 + + - name: 🧰 Setup Rubisco + id: rubisco + uses: cppp-project/rubisco@main + with: + host: ${{ matrix.host }} + # Rubisco don't support setup cross-compiler now. - name: 📁 Collect dependencies run: | sudo apt-get update - sudo apt-get install p7zip-full zip xz-utils wget -y - sudo apt-get install gperf cmake -y - if [ "${{ matrix.arch }}" = "x86_64-linux-gnu" ] ; + if [ "${{ matrix.host }}" = "x86_64-linux-gnu" ] ; then sudo apt-get install gcc g++ -y ; else - sudo apt-get install gcc-${{ matrix.arch }} g++-${{ matrix.arch }} -y ; + sudo apt-get install gcc-${{ matrix.host }} g++-${{ matrix.host }} -y ; fi - - - name: 📁 Get source distribution tarball - run: | - wget https://github.com/${{ github.repository }}/releases/download/${{ env.tag }}/${{ env.pkgname }}.tar.gz - tar zxvf ${{ env.pkgname }}.tar.gz - mv ${{ env.pkgname }}/* . - - #--------------------------------------------build-------------------------------------------- - - name: 🧳 Prepare for binary distribution building + + - name: 🧳 Prepare for building run: | + mkdir -p ${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }} mkdir -p dist - name: 🛠️ Build binary distribution @@ -127,35 +92,32 @@ jobs: export C_COMPILER="gcc" export CXX_COMPILER="g++" export LINKER="ld" - export CC_CROSS="/usr/bin/${{ matrix.arch }}-$C_COMPILER" - export CXX_CROSS="/usr/bin/${{ matrix.arch }}-$CXX_COMPILER" - export LD="/usr/bin/${{ matrix.arch }}-$LINKER" + export CC_CROSS="/usr/bin/${{ matrix.host }}-$C_COMPILER" + export CXX_CROSS="/usr/bin/${{ matrix.host }}-$CXX_COMPILER" + export LD="/usr/bin/${{ matrix.host }}-$LINKER" mkdir build cd build - cmake .. -DCMAKE_INSTALL_PREFIX=${{ env.srcdir }}/${{ env.pkgname }}-${{ matrix.arch }} -DCMAKE_C_COMPILER=$CC_CROSS -DCMAKE_CXX_COMPILER=$CXX_CROSS -DCMAKE_LINKER=$LD - cmake --build . --config=Release - cmake --install . + cmake .. -DCMAKE_INSTALL_PREFIX="${{ steps.rubisco.outputs.srcdir }}/${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }}" -DCMAKE_C_COMPILER=$CC_CROSS -DCMAKE_CXX_COMPILER=$CXX_CROSS -DCMAKE_LINKER=$LD + cmake --build . --config=Release -j $(nproc) + cmake --install . --config=Release cd .. - name: 📦 Make packages run: | - tar cvf ${{ env.pkgname }}-${{ matrix.arch }}.tar ${{ env.pkgname }}-${{ matrix.arch }} - zip -r -9 dist/${{ env.pkgname }}-${{ matrix.arch }}.zip ${{ env.pkgname }}-${{ matrix.arch }} - 7z a dist/${{ env.pkgname }}-${{ matrix.arch }}.7z ${{ env.pkgname }}-${{ matrix.arch }} - xz -c -9 -k ${{ env.pkgname }}-${{ matrix.arch }}.tar > dist/${{ env.pkgname }}-${{ matrix.arch }}.tar.xz - gzip -c -9 -k ${{ env.pkgname }}-${{ matrix.arch }}.tar > dist/${{ env.pkgname }}-${{ matrix.arch }}.tar.gz + tar cvf dist/${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }}.tar ${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }} + xz -9 dist/${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }}.tar + - name: 📦 Generate checksum + run: | cd dist - for i in $(ls) ; do md5sum $i > $i.md5 ; done + for i in $(ls) ; do sha256sum $i > $i.sha256 ; done cd .. - - #--------------------------------------------publish-------------------------------------------- - name: ⬆️ Create release and upload assets uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.tag }} + tag_name: ${{ steps.rubisco.outputs.tag }} files: ./dist/* build-macos: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b937fe55..6fb6bcf2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,77 +1,38 @@ -name: ✔️ Test cppp-reiconv library +name: ✔️ Test cppp-reiconv on: release: types: [published] push: branches: [ "main" ] - workflow_dispatch: + pull_request: + branches: [ "main" ] jobs: - test-linux: + build: + runs-on: ${{ matrix.os }} - runs-on: ubuntu-latest + strategy: + fail-fast: false - steps: - #--------------------------------------------collect-------------------------------------------- - - uses: actions/checkout@v3 + matrix: + include: + - { os: macos-latest, host: aarch64-apple-darwin } + - { os: ubuntu-latest, host: x86_64-linux-gnu } - - name: 🧰 Setup Python - uses: actions/setup-python@v4 - - - name: 📁 Collect dependencies - run: | - sudo apt-get update - sudo apt-get install gcc cmake -y - - - name: 🧰 Setup build-aux - run: | - ./setup.sh - - #--------------------------------------------build-------------------------------------------- - - name: 🛠️ Build - run : | - mkdir -p build - cd build - cmake .. -DENABLE_EXTRA=ON -DENABLE_TEST=ON - cmake --build . --config=Release - cd .. - - #--------------------------------------------test-------------------------------------------- - - name: ✔️ Test - run : | - cd build - ctest --verbose -C Release - cd .. - - test-macos: + steps: + - name: 📁 Checkout + uses: actions/checkout@v4 - runs-on: macos-latest + - name: 🧰 Setup Rubisco + uses: cppp-project/rubisco@main + with: + host: ${{ matrix.host }} - steps: - #--------------------------------------------collect-------------------------------------------- - - uses: actions/checkout@v3 - - - name: 📁 Collect dependencies + - name: 📁 Setup subpackages run: | - brew install cmake - - - name: 🧰 Setup build-aux - run : | - ./setup.sh - - #--------------------------------------------build-------------------------------------------- - - name: 🛠️ Build - run : | - mkdir build - cd build - cmake .. -DENABLE_EXTRA=ON -DENABLE_TEST=ON - cmake --build . --config=Release - cd .. - - #--------------------------------------------test-------------------------------------------- - - name: ✔️ Test - run : | - cd build - ctest --verbose -C Release - cd .. + git clone https://github.com/cppp-project/build-aux --depth 1 + git clone https://github.com/cppp-project/cppp-platform --depth 1 + + - name: 🧪 Test + run: rubisco test diff --git a/.rubisco/build.yml b/.rubisco/build.yml index c1ff2110..6a9a5325 100644 --- a/.rubisco/build.yml +++ b/.rubisco/build.yml @@ -1,107 +1,19 @@ name: 🛠️ Build ${{ project.name }} -vars: - - ignores: - [ - ".git", - "build", - "install", - "dist", - "CMakeFiles", - "cmake_install.cmake", - "CMakeCache.txt", - "CTestTestfile.cmake", - "DartConfiguration.tcl", - "Makefile", - "cmake_uninstall.cmake", - "reiconv.hpp", - "CTestCostData.txt", - "Testing", - "install_manifest.txt", - "CPackConfig.cmake", - "CPackSourceConfig.cmake", - "_CPack_Packages", - "tests/check-ascii-converters", - "tests/check-stateful", - "tests/check-stateless", - "tests/data-generator", - "tests/sort", - "windows/cppp-reiconv.rc", - "pdb", - "*.inst", - "*.log", - "*.dSYM", - "*.so", - "*.so.*.*.*", - "*.a", - "*.dylib", - "*.stackdump", - "*.lib", - "*.pdb", - "*.dll", - "*.exe", - "*.sln", - "*.vcxproj", - "*.vcxproj.filters", - "*.vcxproj.user", - "*.vcxproj.user.*", - "build.ninja", - ".ninja_*", - "Release", - "Debug", - "RelWithDebInfo", - "MinSizeRel", - "x64", - "x86", - "ARM", - "ARM64", - "*.suo", - "*.user", - "*.user.*", - "*.dir", - "__pycache__", - "dist", - "cppp-reiconv-*", - "*.tar.xz", - "*.deb", - "lib/generated/genaliases", - "*.gperf", - "*.orig", - "*.rej", - "*~", - "*.kate-swp", - "*.swp", - ".vscode", - ".cache", - "build-aux/", - "tests/data/UTF-8.TXT", - "tests/data/GB18030-2005.TXT", - "tests/data/GB18030-2022.TXT", - "tests/tmp-*.TXT", - "*.tmp", - ] - steps: - - name: 📦 Make source distribution directory - mkdir: ${{ project.name }}-${{ project.version }} - - mkdir: dist - - mkdir: install - - - name: 📦 Copy files to source distribution directory - copy: ${{ cwd }} - to: ${{ project.name }}-${{ project.version }} - excludes: ${{ ignores }} - - - name: 📦 Packing the source distribution - compress: ${{ project.name }}-${{ project.version }} - to: dist/${{ project.name }}-${{ project.version }} - format: [zip, tar.xz] + - name: 📦 Make binary distribution directory + mkdir: ${{ project.name }}-${{ project.version }}-bin - - name: 🛠️ Build binary distribution + - name: 🛠️ Configure and build run: | - cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install + cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DCMAKE_INSTALL_PREFIX="${{ project.name }}-${{ project.version }}-bin" cmake --build build --config Release -v -j ${{ nproc }} - name: 📦 Install to temp install path run: | - cmake --install build --config Release --prefix "${{ cwd }}/install" + cmake --install build --config Release --prefix "${{ project.name }}-${{ project.version }}-bin" + + - name: 📦 Packing the binary distribution + compress: ${{ project.name }}-${{ project.version }}-bin + to: dist/${{ project.name }}-${{ project.version }} + format: [zip, tar.xz] diff --git a/.rubisco/dist.yml b/.rubisco/dist.yml new file mode 100644 index 00000000..252da1ec --- /dev/null +++ b/.rubisco/dist.yml @@ -0,0 +1,99 @@ +name: 📁 Make ${{ project.name }} distribution package + +vars: + - ignores: + [ + ".git", + ".venv", + ".github", + "build", + "install", + "dist", + "CMakeFiles", + "cmake_install.cmake", + "CMakeCache.txt", + "CTestTestfile.cmake", + "DartConfiguration.tcl", + "Makefile", + "cmake_uninstall.cmake", + "reiconv.hpp", + "CTestCostData.txt", + "Testing", + "install_manifest.txt", + "CPackConfig.cmake", + "CPackSourceConfig.cmake", + "_CPack_Packages", + "tests/check-ascii-converters", + "tests/check-stateful", + "tests/check-stateless", + "tests/data-generator", + "tests/sort", + "windows/cppp-reiconv.rc", + "pdb", + "*.inst", + "*.log", + "*.dSYM", + "*.so", + "*.so.*.*.*", + "*.a", + "*.dylib", + "*.stackdump", + "*.lib", + "*.pdb", + "*.dll", + "*.exe", + "*.sln", + "*.vcxproj", + "*.vcxproj.filters", + "*.vcxproj.user", + "*.vcxproj.user.*", + "build.ninja", + ".ninja_*", + "Release", + "Debug", + "RelWithDebInfo", + "MinSizeRel", + "x64", + "x86", + "ARM", + "ARM64", + "*.suo", + "*.user", + "*.user.*", + "*.dir", + "__pycache__", + "dist", + "cppp-reiconv-*", + "*.tar.xz", + "*.deb", + "lib/generated/genaliases", + "*.gperf", + "*.orig", + "*.rej", + "*~", + "*.kate-swp", + "*.swp", + ".vscode", + ".cache", + "build-aux/", + "tests/data/UTF-8.TXT", + "tests/data/GB18030-2005.TXT", + "tests/data/GB18030-2022.TXT", + "tests/tmp-*.TXT", + "*.tmp", + ] + +steps: + - name: 📦 Make source distribution directory + mkdir: ${{ project.name }}-${{ project.version }} + - mkdir: dist + + - name: 📦 Copy files to source distribution directory + copy: ${{ cwd }} + to: ${{ project.name }}-${{ project.version }} + excludes: ${{ ignores }} + + - name: 📦 Packing the source distribution + compress: ${{ project.name }}-${{ project.version }} + to: dist/${{ project.name }}-${{ project.version }} + format: [zip, tar.xz] diff --git a/.rubisco/test.yml b/.rubisco/test.yml index 2340f847..a2785c7a 100644 --- a/.rubisco/test.yml +++ b/.rubisco/test.yml @@ -1,9 +1,9 @@ name: 🧪 Run tests for ${{ project.name }} steps: - - name: 🛠️ Build + - name: 🛠️ Configure and build run: | - cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install + cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON cmake --build build --config Release -v -j ${{ nproc }} - name: 🧪 Run tests diff --git a/repo.json b/repo.json index ad6734df..65657315 100644 --- a/repo.json +++ b/repo.json @@ -8,6 +8,9 @@ "build": { "run": ".rubisco/build.yml" }, + "dist": { + "run": ".rubisco/dist.yml" + }, "test": { "run": ".rubisco/test.yml" } From 540bfc630c193311d0671d3a98f34772ff24ef29 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 11 Feb 2025 13:49:58 +0800 Subject: [PATCH 75/77] Fix build failure on Windows. --- lib/locale_charset.c | 4 +++- lib/localecharset/lc_types.h | 2 +- lib/localecharset/windows_getcp.h | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/locale_charset.c b/lib/locale_charset.c index 82576f75..4698faf9 100644 --- a/lib/locale_charset.c +++ b/lib/locale_charset.c @@ -120,14 +120,16 @@ _CPPP_API const char *locale_charset() if (p == NULL) { // No dot. - return DEFAULT_CHARSET; + return REICONV_DEFAULT_CHARSET; } // Split the locale into two parts. codeset = p + 1; return codeset; +#if locale_table_defined done_table_lookup: +#endif #if IS_DARWIN7 /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8" diff --git a/lib/localecharset/lc_types.h b/lib/localecharset/lc_types.h index 6a51878d..81ac392d 100644 --- a/lib/localecharset/lc_types.h +++ b/lib/localecharset/lc_types.h @@ -24,7 +24,7 @@ #ifndef _LC_TYPES_H_ #define _LC_TYPES_H_ -#define DEFAULT_CHARSET "UTF-8" +#define REICONV_DEFAULT_CHARSET "UTF-8" struct locale_table_entry { diff --git a/lib/localecharset/windows_getcp.h b/lib/localecharset/windows_getcp.h index 7c0d6436..60c27688 100644 --- a/lib/localecharset/windows_getcp.h +++ b/lib/localecharset/windows_getcp.h @@ -32,7 +32,7 @@ #include -static const char *windows_getcp(char *resultbuf) +static const char *windows_getcp() { #ifdef _CONSOLE UINT cp = GetConsoleOutputCP(); From 741f3b8dd3be5ab0fdac1042a239d4536a93cef2 Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 11 Feb 2025 15:35:54 +0800 Subject: [PATCH 76/77] Refactor CI publish workflow. --- .github/workflows/build.yml | 221 ++++++++++++++++-------------------- 1 file changed, 96 insertions(+), 125 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f92aa102..a6638a16 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,6 +20,11 @@ jobs: with: host: x86_64-linux-gnu + - name: 📁 Collect subpackages + run: | + git clone https://github.com/cppp-project/build-aux --depth 1 + git clone https://github.com/cppp-project/cppp-platform --depth 1 + - name: 📦 Build source distribution run: | rubisco dist @@ -82,6 +87,11 @@ jobs: sudo apt-get install gcc-${{ matrix.host }} g++-${{ matrix.host }} -y ; fi + - name: 📁 Collect subpackages + run: | + git clone https://github.com/cppp-project/build-aux --depth 1 + git clone https://github.com/cppp-project/cppp-platform --depth 1 + - name: 🧳 Prepare for building run: | mkdir -p ${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }} @@ -98,7 +108,7 @@ jobs: mkdir build cd build - cmake .. -DCMAKE_INSTALL_PREFIX="${{ steps.rubisco.outputs.srcdir }}/${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }}" -DCMAKE_C_COMPILER=$CC_CROSS -DCMAKE_CXX_COMPILER=$CXX_CROSS -DCMAKE_LINKER=$LD + cmake .. -DBUILD_TESTING=OFF -DICONV_COMPAT=OFF -DCMAKE_INSTALL_PREFIX="${{ steps.rubisco.outputs.srcdir }}/${{ steps.rubisco.outputs.pkgname }}-${{ matrix.host }}" -DCMAKE_C_COMPILER=$CC_CROSS -DCMAKE_CXX_COMPILER=$CXX_CROSS -DCMAKE_LINKER=$LD cmake --build . --config=Release -j $(nproc) cmake --install . --config=Release cd .. @@ -120,153 +130,114 @@ jobs: tag_name: ${{ steps.rubisco.outputs.tag }} files: ./dist/* - build-macos: - - needs: build-dist - - strategy: - fail-fast: false - matrix: - arch: [ - x86_64, - arm64 - ] + build-darwin: runs-on: macos-latest steps: - - #--------------------------------------------collect-------------------------------------------- - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable + - name: 📁 Checkout + uses: actions/checkout@v4 - - name: 🏷️ Get infomations - run: | - tag="${GITHUB_REF#refs/tags/}" - echo "tag=$tag" >> $GITHUB_ENV - echo "pkgname=cppp-reiconv-$tag" >> $GITHUB_ENV - echo "srcdir=$(pwd)" >> $GITHUB_ENV + - name: 🧰 Setup Rubisco + id: rubisco + uses: cppp-project/rubisco@main + with: + host: arm64-apple-darwin - name: 📁 Collect dependencies run: | - brew install p7zip zip xz wget md5sha1sum - brew install gperf cmake - - - name: 📁 Get source distribution tarball + brew install coreutils + + - name: 📁 Collect subpackages run: | - wget https://github.com/${{ github.repository }}/releases/download/${{ env.tag }}/${{ env.pkgname }}.tar.gz - tar zxvf ${{ env.pkgname }}.tar.gz - mv ${{ env.pkgname }}/* . - - #--------------------------------------------build-------------------------------------------- - - name: 🧳 Prepare for binary distribution building + git clone https://github.com/cppp-project/build-aux --depth 1 + git clone https://github.com/cppp-project/cppp-platform --depth 1 + + - name: 🧳 Prepare for building run: | + mkdir -p ${{ steps.rubisco.outputs.pkgname }}-arm64-apple-darwin mkdir -p dist - + - name: 🛠️ Build binary distribution run: | - export CC_CROSS="clang" - export CXX_CROSS="clang++" - mkdir build cd build - cmake .. -DCMAKE_INSTALL_PREFIX=${{ env.srcdir }}/${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple -DCMAKE_C_COMPILER=$CC_CROSS -DCMAKE_CXX_COMPILER=$CXX_CROSS -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -arch ${{ matrix.arch }}" -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -arch ${{ matrix.arch }}" - cmake --build . --config=Release - cmake --install . + cmake .. -DBUILD_TESTING=OFF -DICONV_COMPAT=OFF -DCMAKE_INSTALL_PREFIX="${{ steps.rubisco.outputs.srcdir }}/${{ steps.rubisco.outputs.pkgname }}-arm64-apple-darwin" + cmake --build . --config=Release -j $(nproc) + cmake --install . --config=Release cd .. - + - name: 📦 Make packages run: | - tar cvf ${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.tar ${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple - zip -r -9 dist/${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.zip ${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple - 7z a dist/${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.7z ${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple - xz -c -9 -k ${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.tar > dist/${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.tar.xz - gzip -c -9 -k ${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.tar > dist/${{ env.pkgname }}-${{ matrix.arch }}-darwin-apple.tar.gz + tar cvf dist/${{ steps.rubisco.outputs.pkgname }}-arm64-apple-darwin.tar ${{ steps.rubisco.outputs.pkgname }}-arm64-apple-darwin + xz -9 dist/${{ steps.rubisco.outputs.pkgname }}-arm64-apple-darwin.tar + - name: 📦 Generate checksum + run: | cd dist - for i in $(ls) ; do md5sum $i > $i.md5 ; done - cd .. - #--------------------------------------------publish-------------------------------------------- + for i in $(ls) ; do sha256sum $i > $i.sha256 ; done + cd .. - name: ⬆️ Create release and upload assets uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.tag }} + tag_name: ${{ steps.rubisco.outputs.tag }} files: ./dist/* - build-msvc: - - needs: build-dist - - strategy: - fail-fast: false - matrix: - include: - - { arch: amd64, msvc_arch: x64 } - - { arch: i386, msvc_arch: Win32 } - - { arch: arm64, msvc_arch: ARM64 } - - { arch: arm, msvc_arch: ARM } - - runs-on: windows-latest - - steps: - - #--------------------------------------------collect-------------------------------------------- - - name: 🧳 Set up MSVC - uses: microsoft/setup-msbuild@v1 - - - name: 🏷️ Get infomations - run: | - $tag="$env:GITHUB_REF_NAME" - echo "tag=$tag" >> $env:GITHUB_ENV - echo "pkgname=cppp-reiconv-$tag" >> $env:GITHUB_ENV - echo "srcdir=$($PWD.Path)" >> $env:GITHUB_ENV - - - name: 📁 Collect dependencies - run: | - choco install 7zip.commandline zip gzip dos2unix wget mingw -y - - - name: 📁 Get source distribution tarball - run: | - wget https://github.com/${{ github.repository }}/releases/download/${{ env.tag }}/${{ env.pkgname }}.tar.gz - tar zxvf ${{ env.pkgname }}.tar.gz - Move-Item -Path ${{ env.pkgname }}\* -Destination . - - - name: 🧳 Prepare for binary distribution building - run: | - mkdir dist - - - name: 🛠️ Build binary distribution - run: | - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=${{ env.srcdir }}/${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc -A ${{ matrix.msvc_arch }} - cmake --build . --config=Release - cmake --install . - cd .. - - - name: 📦 Make packages - run: | - tar cvf ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.tar ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc - zip -r -9 dist/${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.zip ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc - 7z a dist/${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.7z ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc - xz -9 -k ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.tar - gzip -9 -k ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.tar - mv ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.tar.xz dist - mv ${{ env.pkgname }}-${{ matrix.arch }}-windows-msvc.tar.gz dist - - cd dist - Get-ChildItem | ForEach-Object { - md5sum $_.Name > ($_.Name + ".md5") - dos2unix ($_.Name + ".md5") - } - cd .. - - #--------------------------------------------publish-------------------------------------------- - - - name: ⬆️ Create release and upload assets - uses: softprops/action-gh-release@v1 - with: - tag_name: ${{ env.tag }} - files: ./dist/* + # Rubisco cannot been install due to encoding problems on Windows. + # build-windows: + + # runs-on: windows-latest + + # steps: + # - name: 📁 Checkout + # uses: actions/checkout@v4 + + # - name: 🧰 Setup Rubisco + # id: rubisco + # uses: cppp-project/rubisco@main + # with: + # host: x86_64-windows-msvc + + # - name: 📁 Collect dependencies + # run: | + # choco install zip dos2unix mingw -y + + # - name: 📁 Collect subpackages + # run: | + # git clone https://github.com/cppp-project/build-aux --depth 1 + # git clone https://github.com/cppp-project/cppp-platform --depth 1 + + # - name: 🧳 Prepare for building + # run: | + # mkdir -p ${{ steps.rubisco.outputs.pkgname }}-x86_64-windows-msvc + # mkdir -p dist + + # - name: 🛠️ Build binary distribution + # run: | + # mkdir build + # cd build + # cmake .. -DBUILD_TESTING=OFF -DICONV_COMPAT=ON -DCMAKE_INSTALL_PREFIX="${{ steps.rubisco.outputs.srcdir }}/${{ steps.rubisco.outputs.pkgname }}-x86_64-windows-msvc" + # cmake --build . --config=Release -j $(nproc) + # cmake --install . --config=Release + # cd .. + + # - name: 📦 Make packages + # run: | + # tar cvf dist/${{ steps.rubisco.outputs.pkgname }}-x86_64-windows-msvc.tar ${{ steps.rubisco.outputs.pkgname }}-x86_64-windows-msvc + # xz -9 dist/${{ steps.rubisco.outputs.pkgname }}-x86_64-windows-msvc.tar + + # - name: 📦 Generate checksum + # run: | + # cd dist + # Get-ChildItem | ForEach-Object { + # sha256sum $_.Name > ($_.Name + ".sha256") + # dos2unix ($_.Name + ".sha256") + # } + # cd .. + + # - name: ⬆️ Create release and upload assets + # uses: softprops/action-gh-release@v1 + # with: + # tag_name: ${{ steps.rubisco.outputs.tag }} + # files: ./dist/* From 497c961b47b57e96a3a08ba7f66d1f78c6174a9f Mon Sep 17 00:00:00 2001 From: ChenPi11 Date: Tue, 11 Feb 2025 15:46:13 +0800 Subject: [PATCH 77/77] Update `NEWS.md`. --- NEWS.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/NEWS.md b/NEWS.md index 39a6764e..0a917741 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,21 @@ +New in 3.0.0: +* Refactor ALL API. Provide C and C++ API. +* Remove `//ZOS_UNIX` support. +* Remove unused code. +* Refactor testing suites. +* Add API documentation. +* Use Rubisco for project manager. +* Enable all encodings by default. +* Add codepage lookup support. +* Add CPack configuration for DEB packages. +* Synchronize with upstream GNU LIBICONV. +* Fix `assert_compare_file()` function issue #5. +* Optimize the project structure. +* Add iconv compatibility support. +* Add locale character set detection support. +* Fix a bug in test suite caused by line feeds. +* Remove NLS support. + New in 2.1.0: * Add NLS support for the include file, only support en_US and zh_CN. * Add CTest support for Windows.