diff --git a/SOURCES/glibc-rh1971664-1.patch b/SOURCES/glibc-rh1971664-1.patch new file mode 100644 index 0000000..5a858d2 --- /dev/null +++ b/SOURCES/glibc-rh1971664-1.patch @@ -0,0 +1,102 @@ +commit 0c78b0bb78d87a7de18726a033d88904f158f0fe +Author: Siddhesh Poyarekar +Date: Mon Jun 7 14:22:17 2021 +0530 + + iconvconfig: Make file handling more general purpose + + Split out configuration file handling code from handle_dir into its + own function so that it can be reused for multiple configuration + files. + + Reviewed-by: DJ Delorie + +diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c +index b6fef1553cbbdd3d..2b3c587bc77cfdcd 100644 +--- a/iconv/iconvconfig.c ++++ b/iconv/iconvconfig.c +@@ -644,37 +644,17 @@ add_module (char *rp, const char *directory) + cost, need_ext); + } + +- +-/* Read the config file and add the data for this directory to that. */ +-static int +-handle_dir (const char *dir) ++/* Read a gconv-modules configuration file. */ ++static bool ++handle_file (const char *dir, const char *infile) + { +- char *cp; + FILE *fp; + char *line = NULL; + size_t linelen = 0; +- size_t dirlen = strlen (dir); +- +- if (dir[dirlen - 1] != '/') +- { +- char *newp = (char *) xmalloc (dirlen + 2); +- dir = memcpy (newp, dir, dirlen); +- newp[dirlen++] = '/'; +- newp[dirlen] = '\0'; +- } +- +- char infile[prefix_len + dirlen + sizeof "gconv-modules"]; +- cp = infile; +- if (dir[0] == '/') +- cp = mempcpy (cp, prefix, prefix_len); +- strcpy (mempcpy (cp, dir, dirlen), "gconv-modules"); + + fp = fopen (infile, "r"); + if (fp == NULL) +- { +- error (0, errno, "cannot open `%s'", infile); +- return 1; +- } ++ return false; + + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +@@ -723,7 +703,42 @@ handle_dir (const char *dir) + + fclose (fp); + +- return 0; ++ return true; ++} ++ ++/* Read config files and add the data for this directory to cache. */ ++static int ++handle_dir (const char *dir) ++{ ++ char *cp; ++ size_t dirlen = strlen (dir); ++ bool found = false; ++ ++ if (dir[dirlen - 1] != '/') ++ { ++ char *newp = (char *) xmalloc (dirlen + 2); ++ dir = memcpy (newp, dir, dirlen); ++ newp[dirlen++] = '/'; ++ newp[dirlen] = '\0'; ++ } ++ ++ char infile[prefix_len + dirlen + sizeof "gconv-modules"]; ++ cp = infile; ++ if (dir[0] == '/') ++ cp = mempcpy (cp, prefix, prefix_len); ++ strcpy (mempcpy (cp, dir, dirlen), "gconv-modules"); ++ ++ found |= handle_file (dir, infile); ++ ++ if (!found) ++ { ++ error (0, errno, "failed to open gconv configuration file in `%s'", ++ dir); ++ error (0, 0, ++ "ensure that the directory contains a valid gconv-modules file."); ++ } ++ ++ return found ? 0 : 1; + } + + diff --git a/SOURCES/glibc-rh1971664-10.patch b/SOURCES/glibc-rh1971664-10.patch new file mode 100644 index 0000000..a265910 --- /dev/null +++ b/SOURCES/glibc-rh1971664-10.patch @@ -0,0 +1,188 @@ +commit eeac390eecf7de24a110dc84e77e1190f42c5305 +Author: Siddhesh Poyarekar +Date: Thu Jun 10 14:31:57 2021 +0530 + + iconvconfig: Use common gconv module parsing function + + Drop local copy of gconv file parsing and use the one in + gconv_parseconfdir.h instead. Now there is a single implementation of + configuration file parsing. + + Reviewed-by: DJ Delorie + +diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c +index 2f9d5f45ad3a8159..01ecf6f67d55dbbf 100644 +--- a/iconv/iconvconfig.c ++++ b/iconv/iconvconfig.c +@@ -18,7 +18,6 @@ + + #include + #include +-#include + #include + #include + #include +@@ -34,10 +33,10 @@ + #include + #include + #include +-#include + #include + + #include "iconvconfig.h" ++#include + + /* Get libc version number. */ + #include "../version.h" +@@ -568,7 +567,9 @@ new_module (const char *fromname, size_t fromlen, const char *toname, + + /* Add new module. */ + static void +-add_module (char *rp, const char *directory) ++add_module (char *rp, const char *directory, ++ size_t dirlen __attribute__ ((__unused__)), ++ int modcount __attribute__ ((__unused__))) + { + /* We expect now + 1. `from' name +@@ -646,131 +647,28 @@ add_module (char *rp, const char *directory) + cost, need_ext); + } + +-/* Read a gconv-modules configuration file. */ +-static bool +-handle_file (const char *dir, const char *infile) +-{ +- FILE *fp; +- char *line = NULL; +- size_t linelen = 0; +- +- fp = fopen (infile, "r"); +- if (fp == NULL) +- return false; +- +- /* No threads present. */ +- __fsetlocking (fp, FSETLOCKING_BYCALLER); +- +- while (!feof_unlocked (fp)) +- { +- char *rp, *endp, *word; +- ssize_t n = __getdelim (&line, &linelen, '\n', fp); +- +- if (n < 0) +- /* An error occurred. */ +- break; +- +- rp = line; +- /* Terminate the line (excluding comments or newline) with a NUL +- byte to simplify the following code. */ +- endp = strchr (rp, '#'); +- if (endp != NULL) +- *endp = '\0'; +- else +- if (rp[n - 1] == '\n') +- rp[n - 1] = '\0'; +- +- while (isspace (*rp)) +- ++rp; +- +- /* If this is an empty line go on with the next one. */ +- if (rp == endp) +- continue; +- +- word = rp; +- while (*rp != '\0' && !isspace (*rp)) +- ++rp; +- +- if (rp - word == sizeof ("alias") - 1 +- && memcmp (word, "alias", sizeof ("alias") - 1) == 0) +- add_alias (rp); +- else if (rp - word == sizeof ("module") - 1 +- && memcmp (word, "module", sizeof ("module") - 1) == 0) +- add_module (rp, dir); +- /* else */ +- /* Otherwise ignore the line. */ +- } +- +- free (line); +- +- fclose (fp); +- +- return true; +-} +- + /* Read config files and add the data for this directory to cache. */ + static int + handle_dir (const char *dir) + { +- char *cp; + size_t dirlen = strlen (dir); + bool found = false; + ++ /* Add the prefix before sending it off to the parser. */ ++ char *fulldir = xmalloc (prefix_len + dirlen + 2); ++ char *cp = mempcpy (mempcpy (fulldir, prefix, prefix_len), dir, dirlen); ++ + if (dir[dirlen - 1] != '/') + { +- char *newp = (char *) xmalloc (dirlen + 2); +- dir = memcpy (newp, dir, dirlen); +- newp[dirlen++] = '/'; +- newp[dirlen] = '\0'; ++ *cp++ = '/'; ++ *cp = '\0'; ++ dirlen++; + } + +- /* First, look for a gconv-modules file. */ +- char *buf = malloc (prefix_len + dirlen + sizeof "gconv-modules.d"); +- if (buf == NULL) +- goto out; +- +- cp = buf; +- if (dir[0] == '/') +- cp = mempcpy (cp, prefix, prefix_len); +- cp = mempcpy (cp, dir, dirlen); +- cp = stpcpy (cp, "gconv-modules"); +- +- found |= handle_file (dir, buf); +- +- /* Next, see if there is a gconv-modules.d directory containing configuration +- files and if it is non-empty. */ +- cp[0] = '.'; +- cp[1] = 'd'; +- cp[2] = '\0'; +- +- DIR *confdir = opendir (buf); +- if (confdir != NULL) +- { +- struct dirent *ent; +- while ((ent = readdir (confdir)) != NULL) +- { +- if (ent->d_type != DT_REG) +- continue; +- +- size_t len = strlen (ent->d_name); +- const char *suffix = ".conf"; +- +- if (len > strlen (suffix) +- && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) +- { +- char *conf; +- if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) +- continue; +- found |= handle_file (dir, conf); +- free (conf); +- } +- } +- closedir (confdir); +- } ++ found = gconv_parseconfdir (fulldir, dirlen + prefix_len); + +- free (buf); ++ free (fulldir); + +-out: + if (!found) + { + error (0, errno, "failed to open gconv configuration files in `%s'", diff --git a/SOURCES/glibc-rh1971664-11.patch b/SOURCES/glibc-rh1971664-11.patch new file mode 100644 index 0000000..cc5074d --- /dev/null +++ b/SOURCES/glibc-rh1971664-11.patch @@ -0,0 +1,53 @@ +Changes specific to RHEL-8: + +- lstat64 is a macro, so undefine it first + +commit f3629a4be82a393ff56646c388da2fda0101f557 +Author: Siddhesh Poyarekar +Date: Thu Jun 10 14:56:37 2021 +0530 + + Handle DT_UNKNOWN in gconv-modules.d + + On filesystems that do not support dt_type, a regular file shows up as + DT_UNKNOWN. Fall back to using lstat64 to read file properties in + such cases. + + Reviewed-by: DJ Delorie + +diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h +index 3d4d58d4be10a250..ba9b3fd36d9e30f9 100644 +--- a/iconv/gconv_parseconfdir.h ++++ b/iconv/gconv_parseconfdir.h +@@ -32,6 +32,8 @@ + # define readdir __readdir + # define closedir __closedir + # define mempcpy __mempcpy ++# undef lstat64 ++# define lstat64 __lstat64 + #endif + + /* Name of the file containing the module information in the directories +@@ -138,7 +140,7 @@ gconv_parseconfdir (const char *dir, size_t dir_len) + struct dirent *ent; + while ((ent = readdir (confdir)) != NULL) + { +- if (ent->d_type != DT_REG) ++ if (ent->d_type != DT_REG && ent->d_type != DT_UNKNOWN) + continue; + + size_t len = strlen (ent->d_name); +@@ -148,8 +150,14 @@ gconv_parseconfdir (const char *dir, size_t dir_len) + && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) + { + char *conf; ++ struct stat64 st; + if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) + continue; ++ if (ent->d_type == DT_UNKNOWN ++ && (lstat64 (conf, &st) == -1 ++ || !S_ISREG (st.st_mode))) ++ continue; ++ + found |= read_conf_file (conf, dir, dir_len); + free (conf); + } diff --git a/SOURCES/glibc-rh1971664-12.patch b/SOURCES/glibc-rh1971664-12.patch new file mode 100644 index 0000000..0d375f1 --- /dev/null +++ b/SOURCES/glibc-rh1971664-12.patch @@ -0,0 +1,98 @@ +commit 9429049c178b3af3d6afeb3717ff1f2214dc9572 +Author: Siddhesh Poyarekar +Date: Mon Jun 28 09:15:55 2021 +0530 + + iconvconfig: Fix multiple issues + + It was noticed on big-endian systems that msgfmt would fail with the + following error: + + msgfmt: gconv_builtin.c:70: __gconv_get_builtin_trans: Assertion `cnt < sizeof (map) / sizeof (map[0])' failed. + Aborted (core dumped) + + This is only seen on installed systems because it was due to a + corrupted gconv-modules.cache. iconvconfig had the following issues + (it was specifically freeing fulldir that caused this issue, but other + cleanups are also needed) that this patch fixes. + + - Add prefix only if dir starts with '/' + - Use asprintf instead of mempcpy so that the directory string is NULL + terminated + - Make a copy of the directory reference in new_module so that fulldir + can be freed within the same scope in handle_dir. + + Reviewed-by: Florian Weimer + +diff --git a/iconv/Makefile b/iconv/Makefile +index d09b8ac842731780..6df9862e748ae588 100644 +--- a/iconv/Makefile ++++ b/iconv/Makefile +@@ -33,7 +33,7 @@ vpath %.c ../locale/programs ../intl + iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \ + dummy-repertoire simple-hash xstrdup xmalloc \ + record-status +-iconvconfig-modules = strtab xmalloc hash-string ++iconvconfig-modules = strtab xmalloc xasprintf xstrdup hash-string + extra-objs = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o) + CFLAGS-iconv_prog.c += -I../locale/programs + CFLAGS-iconv_charmap.c += -I../locale/programs +diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c +index 01ecf6f67d55dbbf..777da870d2f8e99a 100644 +--- a/iconv/iconvconfig.c ++++ b/iconv/iconvconfig.c +@@ -250,6 +250,7 @@ static const char gconv_module_ext[] = MODULE_EXT; + + + #include ++#include + + + /* C string table handling. */ +@@ -519,11 +520,12 @@ module_compare (const void *p1, const void *p2) + /* Create new module record. */ + static void + new_module (const char *fromname, size_t fromlen, const char *toname, +- size_t tolen, const char *directory, ++ size_t tolen, const char *dir_in, + const char *filename, size_t filelen, int cost, size_t need_ext) + { + struct module *new_module; +- size_t dirlen = strlen (directory) + 1; ++ size_t dirlen = strlen (dir_in) + 1; ++ const char *directory = xstrdup (dir_in); + char *tmp; + void **inserted; + +@@ -654,20 +656,10 @@ handle_dir (const char *dir) + size_t dirlen = strlen (dir); + bool found = false; + +- /* Add the prefix before sending it off to the parser. */ +- char *fulldir = xmalloc (prefix_len + dirlen + 2); +- char *cp = mempcpy (mempcpy (fulldir, prefix, prefix_len), dir, dirlen); ++ char *fulldir = xasprintf ("%s%s%s", dir[0] == '/' ? prefix : "", ++ dir, dir[dirlen - 1] != '/' ? "/" : ""); + +- if (dir[dirlen - 1] != '/') +- { +- *cp++ = '/'; +- *cp = '\0'; +- dirlen++; +- } +- +- found = gconv_parseconfdir (fulldir, dirlen + prefix_len); +- +- free (fulldir); ++ found = gconv_parseconfdir (fulldir, strlen (fulldir)); + + if (!found) + { +@@ -679,6 +671,8 @@ handle_dir (const char *dir) + "configuration files with names ending in .conf."); + } + ++ free (fulldir); ++ + return found ? 0 : 1; + } + diff --git a/SOURCES/glibc-rh1971664-13.patch b/SOURCES/glibc-rh1971664-13.patch new file mode 100644 index 0000000..23e523a --- /dev/null +++ b/SOURCES/glibc-rh1971664-13.patch @@ -0,0 +1,34 @@ +commit 7f784fabcb186ffaa082ed0aeed52a56b7d96cee +Author: Siddhesh Poyarekar +Date: Fri Jul 2 16:53:25 2021 +0530 + + iconvconfig: Use the public feof_unlocked + + Build of iconvconfig failed with CFLAGS=-Os since __feof_unlocked is + not a public symbol. Replace with feof_unlocked (defined to + __feof_unlocked when IS_IN (libc)) to fix this. + + Reported-by: Szabolcs Nagy + Reviewed-by: Szabolcs Nagy + +diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h +index ba9b3fd36d9e30f9..234b85a586f1d79a 100644 +--- a/iconv/gconv_parseconfdir.h ++++ b/iconv/gconv_parseconfdir.h +@@ -34,6 +34,7 @@ + # define mempcpy __mempcpy + # undef lstat64 + # define lstat64 __lstat64 ++# define feof_unlocked __feof_unlocked + #endif + + /* Name of the file containing the module information in the directories +@@ -65,7 +66,7 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len) + + /* Process the known entries of the file. Comments start with `#' and + end with the end of the line. Empty lines are ignored. */ +- while (!__feof_unlocked (fp)) ++ while (!feof_unlocked (fp)) + { + char *rp, *endp, *word; + ssize_t n = __getdelim (&line, &line_len, '\n', fp); diff --git a/SOURCES/glibc-rh1971664-14.patch b/SOURCES/glibc-rh1971664-14.patch new file mode 100644 index 0000000..09e3493 --- /dev/null +++ b/SOURCES/glibc-rh1971664-14.patch @@ -0,0 +1,32 @@ +commit 5f9b78fe35d08739b6da1e5b356786d41116c108 +Author: Siddhesh Poyarekar +Date: Tue Aug 3 21:10:20 2021 +0530 + + gconv_parseconfdir: Fix memory leak + + The allocated `conf` would leak if we have to skip over the file due + to the underlying filesystem not supporting dt_type. + + Reviewed-by: Arjun Shankar + +diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h +index 915b60845ca11c03..e4c3c16d1f96ce0c 100644 +--- a/iconv/gconv_parseconfdir.h ++++ b/iconv/gconv_parseconfdir.h +@@ -153,12 +153,11 @@ gconv_parseconfdir (const char *dir, size_t dir_len) + struct stat64 st; + if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) + continue; +- if (ent->d_type == DT_UNKNOWN +- && (lstat64 (conf, &st) == -1 +- || !S_ISREG (st.st_mode))) +- continue; + +- found |= read_conf_file (conf, dir, dir_len); ++ if (ent->d_type != DT_UNKNOWN ++ || (lstat64 (conf, &st) != -1 && S_ISREG (st.st_mode))) ++ found |= read_conf_file (conf, dir, dir_len); ++ + free (conf); + } + } diff --git a/SOURCES/glibc-rh1971664-15.patch b/SOURCES/glibc-rh1971664-15.patch new file mode 100644 index 0000000..8029cf6 --- /dev/null +++ b/SOURCES/glibc-rh1971664-15.patch @@ -0,0 +1,116 @@ +commit 43cea6d5652b6b9e61ac6ecc69419c909b504f47 +Author: Siddhesh Poyarekar +Date: Mon Sep 13 20:48:35 2021 +0530 + + iconvconfig: Fix behaviour with --prefix [BZ #28199] + + The consolidation of configuration parsing broke behaviour with + --prefix, where the prefix bled into the modules cache. Accept a + prefix which, when non-NULL, is prepended to the path when looking for + configuration files but only the original directory is added to the + modules cache. + + This has no effect on the codegen of gconv_conf since it passes NULL. + + Reported-by: Patrick McCarty + Reported-by: Michael Hudson-Doyle + Reviewed-by: Andreas Schwab + +diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c +index ce64faa928dc1c52..3f5a692f1510157c 100644 +--- a/iconv/gconv_conf.c ++++ b/iconv/gconv_conf.c +@@ -476,7 +476,7 @@ __gconv_read_conf (void) + __gconv_get_path (); + + for (cnt = 0; __gconv_path_elem[cnt].name != NULL; ++cnt) +- gconv_parseconfdir (__gconv_path_elem[cnt].name, ++ gconv_parseconfdir (NULL, __gconv_path_elem[cnt].name, + __gconv_path_elem[cnt].len); + #endif + +diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h +index e4c3c16d1f96ce0c..433aa18bab5083b0 100644 +--- a/iconv/gconv_parseconfdir.h ++++ b/iconv/gconv_parseconfdir.h +@@ -39,7 +39,6 @@ + /* Name of the file containing the module information in the directories + along the path. */ + static const char gconv_conf_filename[] = "gconv-modules"; +-static const char gconv_conf_dirname[] = "gconv-modules.d"; + + static void add_alias (char *); + static void add_module (char *, const char *, size_t, int); +@@ -110,19 +109,28 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len) + return true; + } + ++/* Prefix DIR (with length DIR_LEN) with PREFIX if the latter is non-NULL and ++ parse configuration in it. */ ++ + static __always_inline bool +-gconv_parseconfdir (const char *dir, size_t dir_len) ++gconv_parseconfdir (const char *prefix, const char *dir, size_t dir_len) + { +- /* No slash needs to be inserted between dir and gconv_conf_filename; +- dir already ends in a slash. */ +- char *buf = malloc (dir_len + sizeof (gconv_conf_dirname)); ++ /* No slash needs to be inserted between dir and gconv_conf_filename; dir ++ already ends in a slash. The additional 2 is to accommodate the ".d" ++ when looking for configuration files in gconv-modules.d. */ ++ size_t buflen = dir_len + sizeof (gconv_conf_filename) + 2; ++ char *buf = malloc (buflen + (prefix != NULL ? strlen (prefix) : 0)); ++ char *cp = buf; + bool found = false; + + if (buf == NULL) + return false; + +- char *cp = mempcpy (mempcpy (buf, dir, dir_len), gconv_conf_filename, +- sizeof (gconv_conf_filename)); ++ if (prefix != NULL) ++ cp = stpcpy (cp, prefix); ++ ++ cp = mempcpy (mempcpy (cp, dir, dir_len), gconv_conf_filename, ++ sizeof (gconv_conf_filename)); + + /* Read the gconv-modules configuration file first. */ + found = read_conf_file (buf, dir, dir_len); +diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c +index 777da870d2f8e99a..b1fd4100b5cbc9d2 100644 +--- a/iconv/iconvconfig.c ++++ b/iconv/iconvconfig.c +@@ -653,13 +653,21 @@ add_module (char *rp, const char *directory, + static int + handle_dir (const char *dir) + { ++ char *newp = NULL; + size_t dirlen = strlen (dir); + bool found = false; + +- char *fulldir = xasprintf ("%s%s%s", dir[0] == '/' ? prefix : "", +- dir, dir[dirlen - 1] != '/' ? "/" : ""); ++ /* End directory path with a '/' if it doesn't already. */ ++ if (dir[dirlen - 1] != '/') ++ { ++ newp = xmalloc (dirlen + 2); ++ memcpy (newp, dir, dirlen); ++ newp[dirlen++] = '/'; ++ newp[dirlen] = '\0'; ++ dir = newp; ++ } + +- found = gconv_parseconfdir (fulldir, strlen (fulldir)); ++ found = gconv_parseconfdir (dir[0] == '/' ? prefix : NULL, dir, dirlen); + + if (!found) + { +@@ -671,7 +679,7 @@ handle_dir (const char *dir) + "configuration files with names ending in .conf."); + } + +- free (fulldir); ++ free (newp); + + return found ? 0 : 1; + } diff --git a/SOURCES/glibc-rh1971664-2.patch b/SOURCES/glibc-rh1971664-2.patch new file mode 100644 index 0000000..06119e0 --- /dev/null +++ b/SOURCES/glibc-rh1971664-2.patch @@ -0,0 +1,109 @@ +commit 3979c3e1bae20459d9b6d424bdb49927d9cd6fec +Author: Siddhesh Poyarekar +Date: Mon Jun 7 14:22:18 2021 +0530 + + iconvconfig: Read configuration from gconv-modules.d subdirectory + + In addition to GCONV_PATH/gconv-modules, also read module + configuration from *.conf files in GCONV_PATH/gconv-modules.d. This + allows a single gconv directory to have multiple sets of gconv modules + but at the same time, a single modules cache. + + With this feature, one could separate the glibc supported gconv + modules into a minimal essential set (ISO-8859-*, UTF, etc.) from the + remaining modules. In future, these could be further segregated into + langpack-associated sets with their own + gconv-modules.d/someconfig.conf. + + Reviewed-by: DJ Delorie + +diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c +index 2b3c587bc77cfdcd..fafc686ae25fb5c1 100644 +--- a/iconv/iconvconfig.c ++++ b/iconv/iconvconfig.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -33,6 +34,7 @@ + #include + #include + #include ++#include + #include + + #include "iconvconfig.h" +@@ -710,6 +712,7 @@ handle_file (const char *dir, const char *infile) + static int + handle_dir (const char *dir) + { ++#define BUF_LEN prefix_len + dirlen + sizeof "gconv-modules.d" + char *cp; + size_t dirlen = strlen (dir); + bool found = false; +@@ -722,20 +725,55 @@ handle_dir (const char *dir) + newp[dirlen] = '\0'; + } + +- char infile[prefix_len + dirlen + sizeof "gconv-modules"]; +- cp = infile; ++ /* First, look for a gconv-modules file. */ ++ char buf[BUF_LEN]; ++ cp = buf; + if (dir[0] == '/') + cp = mempcpy (cp, prefix, prefix_len); +- strcpy (mempcpy (cp, dir, dirlen), "gconv-modules"); ++ cp = mempcpy (cp, dir, dirlen); ++ cp = stpcpy (cp, "gconv-modules"); + +- found |= handle_file (dir, infile); ++ found |= handle_file (dir, buf); ++ ++ /* Next, see if there is a gconv-modules.d directory containing configuration ++ files and if it is non-empty. */ ++ cp[0] = '.'; ++ cp[1] = 'd'; ++ cp[2] = '\0'; ++ ++ DIR *confdir = opendir (buf); ++ if (confdir != NULL) ++ { ++ struct dirent *ent; ++ while ((ent = readdir (confdir)) != NULL) ++ { ++ if (ent->d_type != DT_REG) ++ continue; ++ ++ size_t len = strlen (ent->d_name); ++ const char *suffix = ".conf"; ++ ++ if (len > strlen (suffix) ++ && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) ++ { ++ /* LEN <= PATH_MAX so this alloca is not unbounded. */ ++ char *conf = alloca (BUF_LEN + len + 1); ++ cp = stpcpy (conf, buf); ++ sprintf (cp, "/%s", ent->d_name); ++ found |= handle_file (dir, conf); ++ } ++ } ++ closedir (confdir); ++ } + + if (!found) + { +- error (0, errno, "failed to open gconv configuration file in `%s'", ++ error (0, errno, "failed to open gconv configuration files in `%s'", + dir); + error (0, 0, +- "ensure that the directory contains a valid gconv-modules file."); ++ "ensure that the directory contains either a valid " ++ "gconv-modules file or a gconv-modules.d directory with " ++ "configuration files with names ending in .conf."); + } + + return found ? 0 : 1; diff --git a/SOURCES/glibc-rh1971664-3.patch b/SOURCES/glibc-rh1971664-3.patch new file mode 100644 index 0000000..a8dedd1 --- /dev/null +++ b/SOURCES/glibc-rh1971664-3.patch @@ -0,0 +1,99 @@ +commit b17d29b390154df9dfad9d21f1e6605422521fd2 +Author: Siddhesh Poyarekar +Date: Mon Jun 7 14:22:19 2021 +0530 + + gconv_conf: Read configuration files in gconv-modules.d + + Read configuration files with names ending in .conf in + GCONV_PATH/gconv-modules.d to mirror configuration flexibility in + iconvconfig into the iconv program and function. + + Reviewed-by: DJ Delorie + +diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c +index f173cde71b2a61d7..8eb981fca7cee36a 100644 +--- a/iconv/gconv_conf.c ++++ b/iconv/gconv_conf.c +@@ -19,6 +19,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -30,6 +31,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -50,6 +52,7 @@ static const struct path_elem empty_path_elem = { NULL, 0 }; + /* Name of the file containing the module information in the directories + along the path. */ + static const char gconv_conf_filename[] = "gconv-modules"; ++static const char gconv_conf_dirname[] = "gconv-modules.d"; + + /* Filename extension for the modules. */ + #ifndef MODULE_EXT +@@ -554,18 +557,52 @@ __gconv_read_conf (void) + + for (cnt = 0; __gconv_path_elem[cnt].name != NULL; ++cnt) + { ++#define BUF_LEN elem_len + sizeof (gconv_conf_dirname) ++ + const char *elem = __gconv_path_elem[cnt].name; + size_t elem_len = __gconv_path_elem[cnt].len; +- char *filename; ++ char *buf; + + /* No slash needs to be inserted between elem and gconv_conf_filename; + elem already ends in a slash. */ +- filename = alloca (elem_len + sizeof (gconv_conf_filename)); +- __mempcpy (__mempcpy (filename, elem, elem_len), +- gconv_conf_filename, sizeof (gconv_conf_filename)); ++ buf = alloca (BUF_LEN); ++ char *cp = __mempcpy (__mempcpy (buf, elem, elem_len), ++ gconv_conf_filename, sizeof (gconv_conf_filename)); ++ ++ /* Read the gconv-modules configuration file first. */ ++ read_conf_file (buf, elem, elem_len, &modules, &nmodules); ++ ++ /* Next, see if there is a gconv-modules.d directory containing ++ configuration files and if it is non-empty. */ ++ cp--; ++ cp[0] = '.'; ++ cp[1] = 'd'; ++ cp[2] = '\0'; ++ ++ DIR *confdir = __opendir (buf); ++ if (confdir != NULL) ++ { ++ struct dirent *ent; ++ while ((ent = __readdir (confdir)) != NULL) ++ { ++ if (ent->d_type != DT_REG) ++ continue; ++ ++ size_t len = strlen (ent->d_name); ++ const char *suffix = ".conf"; + +- /* Read the next configuration file. */ +- read_conf_file (filename, elem, elem_len, &modules, &nmodules); ++ if (len > strlen (suffix) ++ && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) ++ { ++ /* LEN <= PATH_MAX so this alloca is not unbounded. */ ++ char *conf = alloca (BUF_LEN + len + 1); ++ cp = stpcpy (conf, buf); ++ sprintf (cp, "/%s", ent->d_name); ++ read_conf_file (conf, elem, elem_len, &modules, &nmodules); ++ } ++ } ++ __closedir (confdir); ++ } + } + #endif + diff --git a/SOURCES/glibc-rh1971664-4.patch b/SOURCES/glibc-rh1971664-4.patch new file mode 100644 index 0000000..e6cc136 --- /dev/null +++ b/SOURCES/glibc-rh1971664-4.patch @@ -0,0 +1,179 @@ +commit fc5bfade69ca12d034967dc6b929dbe3dd715172 +Author: Siddhesh Poyarekar +Date: Mon Jun 7 14:22:20 2021 +0530 + + iconvdata: Move gconv-modules configuration to gconv-modules.conf + + Move all gconv-modules configuration files to gconv-modules.conf. + That is, the S390 extensions now become gconv-modules-s390.conf. Move + both configuration files into gconv-modules.d. + + Now GCONV_PATH/gconv-modules is read only for backward compatibility + for third-party gconv modules directories. + + Reviewed-by: DJ Delorie + +# Conflicts: +# iconvdata/Makefile + +diff --git a/iconvdata/Makefile b/iconvdata/Makefile +index 32656ad31d9b434b..fc403e8abe3cc11f 100644 +--- a/iconvdata/Makefile ++++ b/iconvdata/Makefile +@@ -136,10 +136,13 @@ charmaps = ../localedata/charmaps + extra-modules-left := $(modules) + include extra-module.mk + ++gconv-modules = gconv-modules.conf ++modpfx = $(objpfx)gconv-modules.d/ + + extra-objs += $(modules.so) + install-others = $(addprefix $(inst_gconvdir)/, $(modules.so)) \ +- $(inst_gconvdir)/gconv-modules ++ $(addprefix $(inst_gconvdir)/gconv-modules.d/, \ ++ $(gconv-modules)) + + # We can build the conversion tables for numerous charsets automatically. + +@@ -181,7 +184,7 @@ generated += $(generated-modules:=.h) $(generated-modules:=.stmp) \ + iconv-test.out iconv-rules tst-loading.mtrace \ + mtrace-tst-loading.out tst-tables.out iconv-test.xxx + ifdef objpfx +-generated += gconv-modules ++generated += $(addprefix gconv-modules.d/,$(gconv-modules)) + endif + + # Rules to generate the headers. +@@ -249,7 +252,8 @@ headers: $(addprefix $(objpfx), $(generated-modules:=.h)) + $(addprefix $(inst_gconvdir)/, $(modules.so)): \ + $(inst_gconvdir)/%: $(objpfx)% $(+force) + $(do-install-program) +-$(inst_gconvdir)/gconv-modules: $(objpfx)gconv-modules $(+force) ++$(addprefix $(inst_gconvdir)/gconv-modules.d/, $(gconv-modules)): \ ++ $(inst_gconvdir)/gconv-modules.d/%: $(modpfx)% $(+force) + $(do-install) + ifeq (no,$(cross-compiling)) + # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary +@@ -297,29 +301,30 @@ $(objpfx)mtrace-tst-loading.out: $(objpfx)tst-loading.out + $(common-objpfx)malloc/mtrace $(objpfx)tst-loading.mtrace > $@; \ + $(evaluate-test) + +-$(objpfx)bug-iconv1.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv1.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv2.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv2.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) + $(objpfx)bug-iconv3: $(libdl) +-$(objpfx)bug-iconv3.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv3.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv5.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv5.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)tst-loading.out: $(objpfx)gconv-modules \ ++$(objpfx)tst-loading.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)tst-iconv4.out: $(objpfx)gconv-modules \ ++$(objpfx)tst-iconv4.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)tst-iconv7.out: $(objpfx)gconv-modules \ ++$(objpfx)tst-iconv7.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv10.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv10.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv12.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv12.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv14.out: $(objpfx)gconv-modules \ ++$(objpfx)bug-iconv14.out: $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) + +-$(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ ++$(objpfx)iconv-test.out: run-iconv-test.sh \ ++ $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) \ + $(common-objdir)/iconv/iconv_prog TESTS + iconv_modules="$(modules)" \ +@@ -327,7 +332,8 @@ $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ + '$(run-program-env)' > $@; \ + $(evaluate-test) + +-$(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \ ++$(objpfx)tst-tables.out: tst-tables.sh \ ++ $(addprefix $(modpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) \ + $(objpfx)tst-table-from $(objpfx)tst-table-to + $(SHELL) $< $(common-objpfx) $(common-objpfx)iconvdata/ \ +@@ -340,5 +346,8 @@ do-tests-clean common-mostlyclean: tst-tables-clean + tst-tables-clean: + -rm -f $(objpfx)tst-*.table $(objpfx)tst-EUC-TW.irreversible + +-$(objpfx)gconv-modules: gconv-modules +- cat $(sysdeps-gconv-modules) $^ > $@ ++$(modpfx): ++ mkdir -p $@ ++ ++$(modpfx)%: % $(modpfx) ++ cp $< $@ +diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules.conf +similarity index 100% +rename from iconvdata/gconv-modules +rename to iconvdata/gconv-modules.conf +diff --git a/localedata/Makefile b/localedata/Makefile +index 14fcc37fed21e740..a5ca7a31f43d50c3 100644 +--- a/localedata/Makefile ++++ b/localedata/Makefile +@@ -179,7 +179,7 @@ install-others := $(addprefix $(inst_i18ndir)/, \ + $(locales)) + endif + +-tests: $(objdir)/iconvdata/gconv-modules ++tests: $(objdir)/iconvdata/gconv-modules.d/gconv-modules.conf + + tests-static += tst-langinfo-newlocale-static tst-langinfo-setlocale-static + +@@ -442,5 +442,5 @@ $(objpfx)mtrace-tst-leaks.out: $(objpfx)tst-leaks.out + bug-setlocale1-ENV-only = LOCPATH=$(objpfx) LC_CTYPE=de_DE.UTF-8 + bug-setlocale1-static-ENV-only = $(bug-setlocale1-ENV-only) + +-$(objdir)/iconvdata/gconv-modules: ++$(objdir)/iconvdata/gconv-modules.d/gconv-modules.conf: + $(MAKE) -C ../iconvdata subdir=iconvdata $@ +diff --git a/sysdeps/s390/Makefile b/sysdeps/s390/Makefile +index 8bc82e523f9049db..5c8e1170b4d799ba 100644 +--- a/sysdeps/s390/Makefile ++++ b/sysdeps/s390/Makefile +@@ -21,13 +21,25 @@ lib := iconvdata + include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) + + extra-objs += $(addsuffix .so, $(s390x-iconv-modules)) +-install-others += $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules)) ++install-others += $(patsubst %, $(inst_gconvdir)/%.so, \ ++ $(s390x-iconv-modules)) \ ++ $(inst_gconvdir)/gconv-modules.d/gconv-modules-s390.conf + + $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules)) : \ + $(inst_gconvdir)/%.so: $(objpfx)%.so $(+force) + $(do-install-program) + +-sysdeps-gconv-modules = ../sysdeps/s390/gconv-modules ++ifdef objpfx ++generated += gconv-modules.d/gconv-modules-s390.conf ++endif ++ ++$(inst_gconvdir)/gconv-modules.d/gconv-modules-s390.conf: \ ++ $(modpfx)gconv-modules-s390.conf $(+force) ++ $(do-install) ++ ++$(modpfx)gconv-modules-s390.conf: ../sysdeps/s390/gconv-modules-s390.conf \ ++ $(modpfx) ++ cp $< $@ + endif + + ifeq ($(subdir),string) +diff --git a/sysdeps/s390/gconv-modules b/sysdeps/s390/gconv-modules-s390.conf +similarity index 100% +rename from sysdeps/s390/gconv-modules +rename to sysdeps/s390/gconv-modules-s390.conf diff --git a/SOURCES/glibc-rh1971664-5.patch b/SOURCES/glibc-rh1971664-5.patch new file mode 100644 index 0000000..0e6f3df --- /dev/null +++ b/SOURCES/glibc-rh1971664-5.patch @@ -0,0 +1,3825 @@ +commit 5a5b48136567de019f35a2996513bd7bbeb8175e +Author: Siddhesh Poyarekar +Date: Mon Jun 7 14:22:21 2021 +0530 + + iconvdata: Split out non-essential gconv module configuration + + Split module configuration so that only the bare minimum charsets, + i.e. ANSI_X3.110, ISO8859-15, ISO8859-1, CP1252, UNICODE, UTF-16, + UTF-32 and UTF-7 are configured in gconv-modules.conf. The remaining + module configurations are now in gconv-modules-extra.conf. + + Reviewed-by: DJ Delorie + +# Conflicts: +# iconvdata/gconv-modules.conf + +diff --git a/iconvdata/Makefile b/iconvdata/Makefile +index fc403e8abe3cc11f..d682a98b5c4a8003 100644 +--- a/iconvdata/Makefile ++++ b/iconvdata/Makefile +@@ -136,7 +136,7 @@ charmaps = ../localedata/charmaps + extra-modules-left := $(modules) + include extra-module.mk + +-gconv-modules = gconv-modules.conf ++gconv-modules = gconv-modules.conf gconv-modules-extra.conf + modpfx = $(objpfx)gconv-modules.d/ + + extra-objs += $(modules.so) +diff --git a/iconvdata/gconv-modules-extra.conf b/iconvdata/gconv-modules-extra.conf +new file mode 100644 +index 0000000000000000..edbd4d9be4b533b9 +--- /dev/null ++++ b/iconvdata/gconv-modules-extra.conf +@@ -0,0 +1,1889 @@ ++# GNU libc iconv configuration. ++# Copyright (C) 1997-2021 Free Software Foundation, Inc. ++# This file is part of the GNU C Library. ++ ++# The GNU C 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 2.1 of the License, or (at your option) any later version. ++ ++# The GNU C 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 GNU C Library; if not, see ++# . ++ ++# All lines contain the following information: ++ ++# If the lines start with `module' ++# fromset: either a name triple or a regular expression triple. ++# toset: a name triple or an expression with \N to get regular ++# expression matching results. ++# filename: filename of the module implementing the transformation. ++# If it is not absolute the path is made absolute by prepending ++# the directory the configuration file is found in. ++# cost: optional cost of the transformation. Default is 1. ++ ++# If the lines start with `alias' ++# alias: alias name which is not really recognized. ++# name: the real name of the character set ++ ++alias ISO-IR-4// BS_4730// ++alias ISO646-GB// BS_4730// ++alias GB// BS_4730// ++alias UK// BS_4730// ++alias CSISO4UNITEDKINGDOM// BS_4730// ++module BS_4730// INTERNAL ISO646 2 ++module INTERNAL BS_4730// ISO646 2 ++ ++alias ISO-IR-121// CSA_Z243.4-1985-1// ++alias ISO646-CA// CSA_Z243.4-1985-1// ++alias CSA7-1// CSA_Z243.4-1985-1// ++alias CA// CSA_Z243.4-1985-1// ++alias CSISO121CANADIAN1// CSA_Z243.4-1985-1// ++alias CSA_Z243.419851// CSA_Z243.4-1985-1// ++module CSA_Z243.4-1985-1// INTERNAL ISO646 2 ++module INTERNAL CSA_Z243.4-1985-1// ISO646 2 ++ ++alias ISO-IR-122// CSA_Z243.4-1985-2// ++alias ISO646-CA2// CSA_Z243.4-1985-2// ++alias CSA7-2// CSA_Z243.4-1985-2// ++alias CSISO122CANADIAN2// CSA_Z243.4-1985-2// ++alias CSA_Z243.419852// CSA_Z243.4-1985-2// ++module CSA_Z243.4-1985-2// INTERNAL ISO646 2 ++module INTERNAL CSA_Z243.4-1985-2// ISO646 2 ++ ++alias ISO-IR-21// DIN_66003// ++alias DE// DIN_66003// ++alias ISO646-DE// DIN_66003// ++alias CSISO21GERMAN// DIN_66003// ++module DIN_66003// INTERNAL ISO646 2 ++module INTERNAL DIN_66003// ISO646 2 ++ ++alias DS2089// DS_2089// ++alias ISO646-DK// DS_2089// ++alias DK// DS_2089// ++alias CSISO646DANISH// DS_2089// ++module DS_2089// INTERNAL ISO646 2 ++module INTERNAL DS_2089// ISO646 2 ++ ++alias ISO-IR-17// ES// ++alias ISO646-ES// ES// ++alias CSISO17SPANISH// ES// ++module ES// INTERNAL ISO646 2 ++module INTERNAL ES// ISO646 2 ++ ++alias ISO-IR-85// ES2// ++alias ISO646-ES2// ES2// ++alias CSISO85SPANISH2// ES2// ++module ES2// INTERNAL ISO646 2 ++module INTERNAL ES2// ISO646 2 ++ ++alias ISO-IR-57// GB_1988-80// ++alias CN// GB_1988-80// ++alias ISO646-CN// GB_1988-80// ++alias CSISO58GB1988// GB_1988-80// ++alias GB_198880// GB_1988-80// ++module GB_1988-80// INTERNAL ISO646 2 ++module INTERNAL GB_1988-80// ISO646 2 ++ ++alias ISO-IR-15// IT// ++alias ISO646-IT// IT// ++alias CSISO15ITALIAN// IT// ++module IT// INTERNAL ISO646 2 ++module INTERNAL IT// ISO646 2 ++ ++alias ISO-IR-14// JIS_C6220-1969-RO// ++alias JP// JIS_C6220-1969-RO// ++alias ISO646-JP// JIS_C6220-1969-RO// ++alias CSISO14JISC6220RO// JIS_C6220-1969-RO// ++alias JIS_C62201969RO// JIS_C6220-1969-RO// ++module JIS_C6220-1969-RO// INTERNAL ISO646 2 ++module INTERNAL JIS_C6220-1969-RO// ISO646 2 ++ ++alias ISO-IR-92// JIS_C6229-1984-B// ++alias ISO646-JP-OCR-B// JIS_C6229-1984-B// ++alias JP-OCR-B// JIS_C6229-1984-B// ++alias CSISO92JISC62991984B// JIS_C6229-1984-B// ++alias JIS_C62291984B// JIS_C6229-1984-B// ++module JIS_C6229-1984-B// INTERNAL ISO646 2 ++module INTERNAL JIS_C6229-1984-B// ISO646 2 ++ ++alias ISO-IR-141// JUS_I.B1.002// ++alias ISO646-YU// JUS_I.B1.002// ++alias JS// JUS_I.B1.002// ++alias YU// JUS_I.B1.002// ++alias CSISO141JUSIB1002// JUS_I.B1.002// ++module JUS_I.B1.002// INTERNAL ISO646 2 ++module INTERNAL JUS_I.B1.002// ISO646 2 ++ ++alias ISO646-KR// KSC5636// ++alias CSKSC5636// KSC5636// ++module KSC5636// INTERNAL ISO646 2 ++module INTERNAL KSC5636// ISO646 2 ++ ++alias ISO-IR-86// MSZ_7795.3// ++alias ISO646-HU// MSZ_7795.3// ++alias HU// MSZ_7795.3// ++alias CSISO86HUNGARIAN// MSZ_7795.3// ++module MSZ_7795.3// INTERNAL ISO646 2 ++module INTERNAL MSZ_7795.3// ISO646 2 ++ ++alias CUBA// NC_NC00-10// ++alias NC_NC00-10:81// NC_NC00-10// ++alias ISO-IR-151// NC_NC00-10// ++alias ISO646-CU// NC_NC00-10// ++alias CSISO151CUBA// NC_NC00-10// ++alias NC_NC0010// NC_NC00-10// ++module NC_NC00-10// INTERNAL ISO646 2 ++module INTERNAL NC_NC00-10// ISO646 2 ++ ++alias ISO-IR-69// NF_Z_62-010// ++alias ISO646-FR// NF_Z_62-010// ++alias FR// NF_Z_62-010// ++alias CSISO69FRENCH// NF_Z_62-010// ++alias NF_Z_62010// NF_Z_62-010// ++module NF_Z_62-010// INTERNAL ISO646 2 ++module INTERNAL NF_Z_62-010// ISO646 2 ++ ++alias ISO-IR-25// NF_Z_62-010_1973// ++alias ISO646-FR1// NF_Z_62-010_1973// ++alias NF_Z_62-010_(1973)// NF_Z_62-010_1973// ++alias CSISO25FRENCH// NF_Z_62-010_1973// ++alias NF_Z_62010_1973// NF_Z_62-010_1973// ++module NF_Z_62-010_1973// INTERNAL ISO646 2 ++module INTERNAL NF_Z_62-010_1973// ISO646 2 ++ ++alias ISO-IR-60// NS_4551-1// ++alias ISO646-NO// NS_4551-1// ++alias NO// NS_4551-1// ++alias CSISO60DANISHNORWEGIAN// NS_4551-1// ++alias CSISO60NORWEGIAN1// NS_4551-1// ++alias NS_45511// NS_4551-1// ++module NS_4551-1// INTERNAL ISO646 2 ++module INTERNAL NS_4551-1// ISO646 2 ++ ++alias ISO646-NO2// NS_4551-2// ++alias ISO-IR-61// NS_4551-2// ++alias NO2// NS_4551-2// ++alias CSISO61NORWEGIAN2// NS_4551-2// ++alias NS_45512// NS_4551-2// ++module NS_4551-2// INTERNAL ISO646 2 ++module INTERNAL NS_4551-2// ISO646 2 ++ ++alias ISO-IR-16// PT// ++alias ISO646-PT// PT// ++alias CSISO16PORTUGESE// PT// ++module PT// INTERNAL ISO646 2 ++module INTERNAL PT// ISO646 2 ++ ++alias ISO-IR-84// PT2// ++alias ISO646-PT2// PT2// ++alias CSISO84PORTUGUESE2// PT2// ++module PT2// INTERNAL ISO646 2 ++module INTERNAL PT2// ISO646 2 ++ ++alias ISO-IR-10// SEN_850200_B// ++alias FI// SEN_850200_B// ++alias ISO646-FI// SEN_850200_B// ++alias ISO646-SE// SEN_850200_B// ++alias SE// SEN_850200_B// ++alias CSISO10SWEDISH// SEN_850200_B// ++alias SS636127// SEN_850200_B// ++module SEN_850200_B// INTERNAL ISO646 2 ++module INTERNAL SEN_850200_B// ISO646 2 ++ ++alias ISO-IR-11// SEN_850200_C// ++alias ISO646-SE2// SEN_850200_C// ++alias SE2// SEN_850200_C// ++alias CSISO11SWEDISHFORNAMES// SEN_850200_C// ++module SEN_850200_C// INTERNAL ISO646 2 ++module INTERNAL SEN_850200_C// ISO646 2 ++ ++# from to module cost ++alias ISO-IR-101// ISO-8859-2// ++alias ISO_8859-2:1987// ISO-8859-2// ++alias ISO_8859-2// ISO-8859-2// ++alias ISO8859-2// ISO-8859-2// ++alias ISO88592// ISO-8859-2// ++alias LATIN2// ISO-8859-2// ++alias L2// ISO-8859-2// ++alias CSISOLATIN2// ISO-8859-2// ++alias 8859_2// ISO-8859-2// ++alias OSF00010002// ISO-8859-2// ++alias IBM912// ISO-8859-2// ++alias CP912// ISO-8859-2// ++module ISO-8859-2// INTERNAL ISO8859-2 1 ++module INTERNAL ISO-8859-2// ISO8859-2 1 ++ ++# from to module cost ++alias ISO-IR-109// ISO-8859-3// ++alias ISO_8859-3:1988// ISO-8859-3// ++alias ISO_8859-3// ISO-8859-3// ++alias ISO8859-3// ISO-8859-3// ++alias ISO88593// ISO-8859-3// ++alias LATIN3// ISO-8859-3// ++alias L3// ISO-8859-3// ++alias CSISOLATIN3// ISO-8859-3// ++alias 8859_3// ISO-8859-3// ++alias OSF00010003// ISO-8859-3// ++module ISO-8859-3// INTERNAL ISO8859-3 1 ++module INTERNAL ISO-8859-3// ISO8859-3 1 ++ ++# from to module cost ++alias ISO-IR-110// ISO-8859-4// ++alias ISO_8859-4:1988// ISO-8859-4// ++alias ISO_8859-4// ISO-8859-4// ++alias ISO8859-4// ISO-8859-4// ++alias ISO88594// ISO-8859-4// ++alias LATIN4// ISO-8859-4// ++alias L4// ISO-8859-4// ++alias CSISOLATIN4// ISO-8859-4// ++alias 8859_4// ISO-8859-4// ++alias OSF00010004// ISO-8859-4// ++module ISO-8859-4// INTERNAL ISO8859-4 1 ++module INTERNAL ISO-8859-4// ISO8859-4 1 ++ ++# from to module cost ++alias ISO-IR-144// ISO-8859-5// ++alias ISO_8859-5:1988// ISO-8859-5// ++alias ISO_8859-5// ISO-8859-5// ++alias ISO8859-5// ISO-8859-5// ++alias ISO88595// ISO-8859-5// ++alias CYRILLIC// ISO-8859-5// ++alias CSISOLATINCYRILLIC// ISO-8859-5// ++alias 8859_5// ISO-8859-5// ++alias OSF00010005// ISO-8859-5// ++alias IBM915// ISO-8859-5// ++alias CP915// ISO-8859-5// ++module ISO-8859-5// INTERNAL ISO8859-5 1 ++module INTERNAL ISO-8859-5// ISO8859-5 1 ++ ++# from to module cost ++alias ISO-IR-127// ISO-8859-6// ++alias ISO_8859-6:1987// ISO-8859-6// ++alias ISO_8859-6// ISO-8859-6// ++alias ISO8859-6// ISO-8859-6// ++alias ISO88596// ISO-8859-6// ++alias ECMA-114// ISO-8859-6// ++alias ASMO-708// ISO-8859-6// ++alias ARABIC// ISO-8859-6// ++alias CSISOLATINARABIC// ISO-8859-6// ++alias 8859_6// ISO-8859-6// ++alias OSF00010006// ISO-8859-6// ++alias IBM1089// ISO-8859-6// ++alias CP1089// ISO-8859-6// ++module ISO-8859-6// INTERNAL ISO8859-6 1 ++module INTERNAL ISO-8859-6// ISO8859-6 1 ++ ++# from to module cost ++alias ISO-IR-126// ISO-8859-7// ++alias ISO_8859-7:2003// ISO-8859-7// ++alias ISO_8859-7:1987// ISO-8859-7// ++alias ISO_8859-7// ISO-8859-7// ++alias ISO8859-7// ISO-8859-7// ++alias ISO88597// ISO-8859-7// ++alias ELOT_928// ISO-8859-7// ++alias ECMA-118// ISO-8859-7// ++alias GREEK// ISO-8859-7// ++alias GREEK8// ISO-8859-7// ++alias CSISOLATINGREEK// ISO-8859-7// ++alias 8859_7// ISO-8859-7// ++alias OSF00010007// ISO-8859-7// ++alias IBM813// ISO-8859-7// ++alias CP813// ISO-8859-7// ++module ISO-8859-7// INTERNAL ISO8859-7 1 ++module INTERNAL ISO-8859-7// ISO8859-7 1 ++ ++# from to module cost ++alias ISO-IR-138// ISO-8859-8// ++alias ISO_8859-8:1988// ISO-8859-8// ++alias ISO_8859-8// ISO-8859-8// ++alias ISO8859-8// ISO-8859-8// ++alias ISO88598// ISO-8859-8// ++alias HEBREW// ISO-8859-8// ++alias CSISOLATINHEBREW// ISO-8859-8// ++alias 8859_8// ISO-8859-8// ++alias OSF00010008// ISO-8859-8// ++alias IBM916// ISO-8859-8// ++alias CP916// ISO-8859-8// ++module ISO-8859-8// INTERNAL ISO8859-8 1 ++module INTERNAL ISO-8859-8// ISO8859-8 1 ++ ++# from to module cost ++alias ISO-IR-148// ISO-8859-9// ++alias ISO_8859-9:1989// ISO-8859-9// ++alias ISO_8859-9// ISO-8859-9// ++alias ISO8859-9// ISO-8859-9// ++alias ISO88599// ISO-8859-9// ++alias LATIN5// ISO-8859-9// ++alias L5// ISO-8859-9// ++alias CSISOLATIN5// ISO-8859-9// ++alias 8859_9// ISO-8859-9// ++alias OSF00010009// ISO-8859-9// ++alias IBM920// ISO-8859-9// ++alias CP920// ISO-8859-9// ++alias TS-5881// ISO-8859-9// ++alias ECMA-128// ISO-8859-9// ++module ISO-8859-9// INTERNAL ISO8859-9 1 ++module INTERNAL ISO-8859-9// ISO8859-9 1 ++ ++# from to module cost ++alias ISO-IR-157// ISO-8859-10// ++alias ISO_8859-10:1992// ISO-8859-10// ++alias ISO_8859-10// ISO-8859-10// ++alias ISO8859-10// ISO-8859-10// ++alias ISO885910// ISO-8859-10// ++alias LATIN6// ISO-8859-10// ++alias L6// ISO-8859-10// ++alias CSISOLATIN6// ISO-8859-10// ++alias OSF0001000A// ISO-8859-10// ++module ISO-8859-10// INTERNAL ISO8859-10 1 ++module INTERNAL ISO-8859-10// ISO8859-10 1 ++ ++# from to module cost ++alias ISO8859-11// ISO-8859-11// ++alias ISO885911// ISO-8859-11// ++module ISO-8859-11// INTERNAL ISO8859-11 1 ++module INTERNAL ISO-8859-11// ISO8859-11 1 ++ ++# from to module cost ++alias ISO8859-13// ISO-8859-13// ++alias ISO885913// ISO-8859-13// ++alias ISO-IR-179// ISO-8859-13// ++alias LATIN7// ISO-8859-13// ++alias L7// ISO-8859-13// ++alias BALTIC// ISO-8859-13// ++module ISO-8859-13// INTERNAL ISO8859-13 1 ++module INTERNAL ISO-8859-13// ISO8859-13 1 ++ ++# from to module cost ++alias ISO8859-14// ISO-8859-14// ++alias ISO885914// ISO-8859-14// ++alias ISO-IR-199// ISO-8859-14// ++alias LATIN8// ISO-8859-14// ++alias L8// ISO-8859-14// ++alias ISO_8859-14:1998// ISO-8859-14// ++alias ISO_8859-14// ISO-8859-14// ++alias ISO-CELTIC// ISO-8859-14// ++module ISO-8859-14// INTERNAL ISO8859-14 1 ++module INTERNAL ISO-8859-14// ISO8859-14 1 ++ ++# from to module cost ++alias ISO8859-16// ISO-8859-16// ++alias ISO885916// ISO-8859-16// ++alias ISO-IR-226// ISO-8859-16// ++alias LATIN10// ISO-8859-16// ++alias L10// ISO-8859-16// ++alias ISO_8859-16:2001// ISO-8859-16// ++alias ISO_8859-16// ISO-8859-16// ++module ISO-8859-16// INTERNAL ISO8859-16 1 ++module INTERNAL ISO-8859-16// ISO8859-16 1 ++ ++# from to module cost ++alias T.61// T.61-8BIT// ++alias ISO-IR-103// T.61-8BIT// ++alias CSISO103T618BIT// T.61-8BIT// ++alias T.618BIT// T.61-8BIT// ++module T.61-8BIT// INTERNAL T.61 1 ++module INTERNAL T.61-8BIT// T.61 1 ++ ++# from to module cost ++alias ISO-IR-156// ISO_6937// ++alias ISO_6937:1992// ISO_6937// ++alias ISO6937// ISO_6937// ++module ISO_6937// INTERNAL ISO_6937 1 ++module INTERNAL ISO_6937// ISO_6937 1 ++ ++ ++# from to module cost ++alias ISO-IR-90// ISO_6937-2// ++alias ISO_6937-2:1983// ISO_6937-2// ++alias CSISO90// ISO_6937-2// ++alias ISO_69372// ISO_6937-2// ++module ISO_6937-2// INTERNAL ISO_6937-2 1 ++module INTERNAL ISO_6937-2// ISO_6937-2 1 ++ ++# from to module cost ++alias SHIFT-JIS// SJIS// ++alias SHIFT_JIS// SJIS// ++alias MS_KANJI// SJIS// ++alias CSSHIFTJIS// SJIS// ++module SJIS// INTERNAL SJIS 1 ++module INTERNAL SJIS// SJIS 1 ++ ++# from to module cost ++alias WINDOWS-31J// CP932// ++alias MS932// CP932// ++alias SJIS-OPEN// CP932// ++alias SJIS-WIN// CP932// ++alias CSWINDOWS31J// CP932// ++module CP932// INTERNAL CP932 1 ++module INTERNAL CP932// CP932 1 ++ ++# from to module cost ++alias KOI8// KOI-8// ++module KOI-8// INTERNAL KOI-8 1 ++module INTERNAL KOI-8// KOI-8 1 ++ ++# from to module cost ++alias CSKOI8R// KOI8-R// ++alias KOI8R// KOI8-R// ++module KOI8-R// INTERNAL KOI8-R 1 ++module INTERNAL KOI8-R// KOI8-R 1 ++ ++# from to module cost ++alias ISO-IR-19// LATIN-GREEK// ++alias CSISO19LATINGREEK// LATIN-GREEK// ++alias LATINGREEK// LATIN-GREEK// ++module LATIN-GREEK// INTERNAL LATIN-GREEK 1 ++module INTERNAL LATIN-GREEK// LATIN-GREEK 1 ++ ++# from to module cost ++alias ISO-IR-27// LATIN-GREEK-1// ++alias CSISO27LATINGREEK1// LATIN-GREEK-1// ++alias LATINGREEK1// LATIN-GREEK-1// ++module LATIN-GREEK-1// INTERNAL LATIN-GREEK-1 1 ++module INTERNAL LATIN-GREEK-1// LATIN-GREEK-1 1 ++ ++# from to module cost ++alias ROMAN8// HP-ROMAN8// ++alias R8// HP-ROMAN8// ++alias CSHPROMAN8// HP-ROMAN8// ++alias OSF10010001// HP-ROMAN8// ++alias HPROMAN8// HP-ROMAN8// ++module HP-ROMAN8// INTERNAL HP-ROMAN8 1 ++module INTERNAL HP-ROMAN8// HP-ROMAN8 1 ++ ++# from to module cost ++alias CSEBCDICATDE// EBCDIC-AT-DE// ++alias EBCDICATDE// EBCDIC-AT-DE// ++module EBCDIC-AT-DE// INTERNAL EBCDIC-AT-DE 1 ++module INTERNAL EBCDIC-AT-DE// EBCDIC-AT-DE 1 ++ ++# from to module cost ++alias CSEBCDICATDEA// EBCDIC-AT-DE-A// ++alias EBCDICATDEA// EBCDIC-AT-DE-A// ++module EBCDIC-AT-DE-A// INTERNAL EBCDIC-AT-DE-A 1 ++module INTERNAL EBCDIC-AT-DE-A// EBCDIC-AT-DE-A 1 ++ ++# from to module cost ++alias CSEBCDICCAFR// EBCDIC-CA-FR// ++alias EBCDICCAFR// EBCDIC-CA-FR// ++module EBCDIC-CA-FR// INTERNAL EBCDIC-CA-FR 1 ++module INTERNAL EBCDIC-CA-FR// EBCDIC-CA-FR 1 ++ ++# from to module cost ++alias CSEBCDICDKNO// EBCDIC-DK-NO// ++alias EBCDICDKNO// EBCDIC-DK-NO// ++module EBCDIC-DK-NO// INTERNAL EBCDIC-DK-NO 1 ++module INTERNAL EBCDIC-DK-NO// EBCDIC-DK-NO 1 ++ ++# from to module cost ++alias CSEBCDICDKNOA// EBCDIC-DK-NO-A// ++alias EBCDICDKNOA// EBCDIC-DK-NO-A// ++module EBCDIC-DK-NO-A// INTERNAL EBCDIC-DK-NO-A 1 ++module INTERNAL EBCDIC-DK-NO-A// EBCDIC-DK-NO-A 1 ++ ++# from to module cost ++alias CSEBCDICES// EBCDIC-ES// ++alias EBCDICES// EBCDIC-ES// ++module EBCDIC-ES// INTERNAL EBCDIC-ES 1 ++module INTERNAL EBCDIC-ES// EBCDIC-ES 1 ++ ++# from to module cost ++alias CSEBCDICESA// EBCDIC-ES-A// ++alias EBCDICESA// EBCDIC-ES-A// ++module EBCDIC-ES-A// INTERNAL EBCDIC-ES-A 1 ++module INTERNAL EBCDIC-ES-A// EBCDIC-ES-A 1 ++ ++# from to module cost ++alias CSEBCDICESS// EBCDIC-ES-S// ++alias EBCDICESS// EBCDIC-ES-S// ++module EBCDIC-ES-S// INTERNAL EBCDIC-ES-S 1 ++module INTERNAL EBCDIC-ES-S// EBCDIC-ES-S 1 ++ ++# from to module cost ++alias CSEBCDICFISE// EBCDIC-FI-SE// ++alias EBCDICFISE// EBCDIC-FI-SE// ++module EBCDIC-FI-SE// INTERNAL EBCDIC-FI-SE 1 ++module INTERNAL EBCDIC-FI-SE// EBCDIC-FI-SE 1 ++ ++# from to module cost ++alias CSEBCDICFISEA// EBCDIC-FI-SE-A// ++alias EBCDICFISEA// EBCDIC-FI-SE-A// ++module EBCDIC-FI-SE-A// INTERNAL EBCDIC-FI-SE-A 1 ++module INTERNAL EBCDIC-FI-SE-A// EBCDIC-FI-SE-A 1 ++ ++# from to module cost ++alias CSEBCDICFR// EBCDIC-FR// ++alias EBCDICFR// EBCDIC-FR// ++module EBCDIC-FR// INTERNAL EBCDIC-FR 1 ++module INTERNAL EBCDIC-FR// EBCDIC-FR 1 ++ ++# from to module cost ++alias EBCDICISFRISS// EBCDIC-IS-FRISS// ++module EBCDIC-IS-FRISS// INTERNAL EBCDIC-IS-FRISS 1 ++module INTERNAL EBCDIC-IS-FRISS// EBCDIC-IS-FRISS 1 ++ ++# from to module cost ++alias CSEBCDICIT// EBCDIC-IT// ++alias EBCDICIT// EBCDIC-IT// ++module EBCDIC-IT// INTERNAL EBCDIC-IT 1 ++module INTERNAL EBCDIC-IT// EBCDIC-IT 1 ++ ++# from to module cost ++alias CSEBCDICPT// EBCDIC-PT// ++alias EBCDICPT// EBCDIC-PT// ++module EBCDIC-PT// INTERNAL EBCDIC-PT 1 ++module INTERNAL EBCDIC-PT// EBCDIC-PT 1 ++ ++# from to module cost ++alias CSEBCDICUK// EBCDIC-UK// ++alias EBCDICUK// EBCDIC-UK// ++module EBCDIC-UK// INTERNAL EBCDIC-UK 1 ++module INTERNAL EBCDIC-UK// EBCDIC-UK 1 ++ ++# from to module cost ++alias CSEBCDICUS// EBCDIC-US// ++alias EBCDICUS// EBCDIC-US// ++module EBCDIC-US// INTERNAL EBCDIC-US 1 ++module INTERNAL EBCDIC-US// EBCDIC-US 1 ++ ++# from to module cost ++alias CP037// IBM037// ++alias EBCDIC-CP-US// IBM037// ++alias EBCDIC-CP-CA// IBM037// ++alias EBCDIC-CP-WT// IBM037// ++alias EBCDIC-CP-NL// IBM037// ++alias CSIBM037// IBM037// ++alias OSF10020025// IBM037// ++alias CP1070// IBM037// ++alias CP282// IBM037// ++module IBM037// INTERNAL IBM037 1 ++module INTERNAL IBM037// IBM037 1 ++ ++# from to module cost ++alias EBCDIC-INT// IBM038// ++alias CP038// IBM038// ++alias CSIBM038// IBM038// ++module IBM038// INTERNAL IBM038 1 ++module INTERNAL IBM038// IBM038 1 ++ ++# from to module cost ++alias EBCDIC-INT1// IBM256// ++module IBM256// INTERNAL IBM256 1 ++module INTERNAL IBM256// IBM256 1 ++ ++# from to module cost ++alias CP273// IBM273// ++alias CSIBM273// IBM273// ++alias OSF10020111// IBM273// ++module IBM273// INTERNAL IBM273 1 ++module INTERNAL IBM273// IBM273 1 ++ ++# from to module cost ++alias EBCDIC-BE// IBM274// ++alias CP274// IBM274// ++alias CSIBM274// IBM274// ++module IBM274// INTERNAL IBM274 1 ++module INTERNAL IBM274// IBM274 1 ++ ++# from to module cost ++alias EBCDIC-BR// IBM275// ++alias CP275// IBM275// ++alias CSIBM275// IBM275// ++module IBM275// INTERNAL IBM275 1 ++module INTERNAL IBM275// IBM275 1 ++ ++# from to module cost ++alias EBCDIC-CP-DK// IBM277// ++alias EBCDIC-CP-NO// IBM277// ++alias CSIBM277// IBM277// ++alias OSF10020115// IBM277// ++module IBM277// INTERNAL IBM277 1 ++module INTERNAL IBM277// IBM277 1 ++ ++# from to module cost ++alias CP278// IBM278// ++alias EBCDIC-CP-FI// IBM278// ++alias EBCDIC-CP-SE// IBM278// ++alias CSIBM278// IBM278// ++alias OSF10020116// IBM278// ++module IBM278// INTERNAL IBM278 1 ++module INTERNAL IBM278// IBM278 1 ++ ++# from to module cost ++alias CP280// IBM280// ++alias EBCDIC-CP-IT// IBM280// ++alias CSIBM280// IBM280// ++alias OSF10020118// IBM280// ++module IBM280// INTERNAL IBM280 1 ++module INTERNAL IBM280// IBM280 1 ++ ++# from to module cost ++alias EBCDIC-JP-E// IBM281// ++alias CP281// IBM281// ++alias CSIBM281// IBM281// ++module IBM281// INTERNAL IBM281 1 ++module INTERNAL IBM281// IBM281 1 ++ ++# from to module cost ++alias CP284// IBM284// ++alias EBCDIC-CP-ES// IBM284// ++alias CSIBM284// IBM284// ++alias OSF1002011C// IBM284// ++alias CP1079// IBM284// ++module IBM284// INTERNAL IBM284 1 ++module INTERNAL IBM284// IBM284 1 ++ ++# from to module cost ++alias CP285// IBM285// ++alias EBCDIC-CP-GB// IBM285// ++alias CSIBM285// IBM285// ++alias OSF1002011D// IBM285// ++module IBM285// INTERNAL IBM285 1 ++module INTERNAL IBM285// IBM285 1 ++ ++# from to module cost ++alias CP290// IBM290// ++alias EBCDIC-JP-KANA// IBM290// ++alias CSIBM290// IBM290// ++alias OSF10020122// IBM290// ++module IBM290// INTERNAL IBM290 1 ++module INTERNAL IBM290// IBM290 1 ++ ++# from to module cost ++alias CP297// IBM297// ++alias EBCDIC-CP-FR// IBM297// ++alias CSIBM297// IBM297// ++alias OSF10020129// IBM297// ++alias CP1081// IBM297// ++module IBM297// INTERNAL IBM297 1 ++module INTERNAL IBM297// IBM297 1 ++ ++# from to module cost ++alias CP420// IBM420// ++alias EBCDIC-CP-AR1// IBM420// ++alias CSIBM420// IBM420// ++alias OSF100201A4// IBM420// ++module IBM420// INTERNAL IBM420 1 ++module INTERNAL IBM420// IBM420 1 ++ ++# from to module cost ++alias CP423// IBM423// ++alias EBCDIC-CP-GR// IBM423// ++alias CSIBM423// IBM423// ++module IBM423// INTERNAL IBM423 1 ++module INTERNAL IBM423// IBM423 1 ++ ++# from to module cost ++alias CP424// IBM424// ++alias EBCDIC-CP-HE// IBM424// ++alias CSIBM424// IBM424// ++alias OSF100201A8// IBM424// ++module IBM424// INTERNAL IBM424 1 ++module INTERNAL IBM424// IBM424 1 ++ ++# from to module cost ++alias CP437// IBM437// ++alias 437// IBM437// ++alias CSPC8CODEPAGE437// IBM437// ++alias OSF100201B5// IBM437// ++module IBM437// INTERNAL IBM437 1 ++module INTERNAL IBM437// IBM437 1 ++ ++# from to module cost ++alias CP500// IBM500// ++alias 500// IBM500// ++alias 500V1// IBM500// ++alias EBCDIC-CP-BE// IBM500// ++alias EBCDIC-CP-CH// IBM500// ++alias CSIBM500// IBM500// ++alias OSF100201F4// IBM500// ++alias CP1084// IBM500// ++module IBM500// INTERNAL IBM500 1 ++module INTERNAL IBM500// IBM500 1 ++ ++# from to module cost ++alias CP850// IBM850// ++alias 850// IBM850// ++alias CSPC850MULTILINGUAL// IBM850// ++alias OSF10020352// IBM850// ++module IBM850// INTERNAL IBM850 1 ++module INTERNAL IBM850// IBM850 1 ++ ++# from to module cost ++alias CP858// IBM858// ++alias 858// IBM858// ++alias CSPC858MULTILINGUAL// IBM858// ++module IBM858// INTERNAL IBM858 1 ++module INTERNAL IBM858// IBM858 1 ++ ++# from to module cost ++alias CP851// IBM851// ++alias 851// IBM851// ++alias CSIBM851// IBM851// ++module IBM851// INTERNAL IBM851 1 ++module INTERNAL IBM851// IBM851 1 ++ ++# from to module cost ++alias CP852// IBM852// ++alias 852// IBM852// ++alias CSPCP852// IBM852// ++alias OSF10020354// IBM852// ++module IBM852// INTERNAL IBM852 1 ++module INTERNAL IBM852// IBM852 1 ++ ++# from to module cost ++alias CP855// IBM855// ++alias 855// IBM855// ++alias CSIBM855// IBM855// ++alias OSF10020357// IBM855// ++module IBM855// INTERNAL IBM855 1 ++module INTERNAL IBM855// IBM855 1 ++ ++# from to module cost ++alias IBM-856// IBM856// ++alias CP856// IBM856// ++alias 856// IBM856// ++alias CSIBM856// IBM856// ++module IBM856// INTERNAL IBM856 1 ++module INTERNAL IBM856// IBM856 1 ++ ++# from to module cost ++alias CP857// IBM857// ++alias 857// IBM857// ++alias CSIBM857// IBM857// ++alias OSF10020359// IBM857// ++module IBM857// INTERNAL IBM857 1 ++module INTERNAL IBM857// IBM857 1 ++ ++# from to module cost ++alias CP860// IBM860// ++alias 860// IBM860// ++alias CSIBM860// IBM860// ++module IBM860// INTERNAL IBM860 1 ++module INTERNAL IBM860// IBM860 1 ++ ++# from to module cost ++alias CP861// IBM861// ++alias 861// IBM861// ++alias CPIBM861// IBM861// ++alias OSF1002035D// IBM861// ++module IBM861// INTERNAL IBM861 1 ++module INTERNAL IBM861// IBM861 1 ++ ++# from to module cost ++alias CP862// IBM862// ++alias 862// IBM862// ++alias CSPC862LATINHEBREW// IBM862// ++alias OSF1002035E// IBM862// ++module IBM862// INTERNAL IBM862 1 ++module INTERNAL IBM862// IBM862 1 ++ ++# from to module cost ++alias CP863// IBM863// ++alias 863// IBM863// ++alias CSIBM863// IBM863// ++alias OSF1002035F// IBM863// ++module IBM863// INTERNAL IBM863 1 ++module INTERNAL IBM863// IBM863 1 ++ ++# from to module cost ++alias CP864// IBM864// ++alias 864// IBM864// ++alias CSIBM864// IBM864// ++alias OSF10020360// IBM864// ++module IBM864// INTERNAL IBM864 1 ++module INTERNAL IBM864// IBM864 1 ++ ++# from to module cost ++alias CP865// IBM865// ++alias 865// IBM865// ++alias CSIBM865// IBM865// ++module IBM865// INTERNAL IBM865 1 ++module INTERNAL IBM865// IBM865 1 ++ ++# from to module cost ++alias CP866// IBM866// ++alias 866// IBM866// ++alias CSIBM866// IBM866// ++module IBM866// INTERNAL IBM866 1 ++module INTERNAL IBM866// IBM866 1 ++ ++# from to module cost ++alias CP866NAV// IBM866NAV// ++alias 866NAV// IBM866NAV// ++module IBM866NAV// INTERNAL IBM866NAV 1 ++module INTERNAL IBM866NAV// IBM866NAV 1 ++ ++# from to module cost ++alias CP868// IBM868// ++alias CP-AR// IBM868// ++alias CSIBM868// IBM868// ++alias OSF10020364// IBM868// ++module IBM868// INTERNAL IBM868 1 ++module INTERNAL IBM868// IBM868 1 ++ ++# from to module cost ++alias CP869// IBM869// ++alias 869// IBM869// ++alias CP-GR// IBM869// ++alias CSIBM869// IBM869// ++alias OSF10020365// IBM869// ++module IBM869// INTERNAL IBM869 1 ++module INTERNAL IBM869// IBM869 1 ++ ++# from to module cost ++alias CP870// IBM870// ++alias EBCDIC-CP-ROECE// IBM870// ++alias EBCDIC-CP-YU// IBM870// ++alias CSIBM870// IBM870// ++alias OSF10020366// IBM870// ++module IBM870// INTERNAL IBM870 1 ++module INTERNAL IBM870// IBM870 1 ++ ++# from to module cost ++alias CP871// IBM871// ++alias EBCDIC-CP-IS// IBM871// ++alias CSIBM871// IBM871// ++alias OSF10020367// IBM871// ++module IBM871// INTERNAL IBM871 1 ++module INTERNAL IBM871// IBM871 1 ++ ++# from to module cost ++alias CP875// IBM875// ++alias EBCDIC-GREEK// IBM875// ++alias OSF1002036B// IBM875// ++module IBM875// INTERNAL IBM875 1 ++module INTERNAL IBM875// IBM875 1 ++ ++# from to module cost ++alias CP880// IBM880// ++alias EBCDIC-CYRILLIC// IBM880// ++alias CSIBM880// IBM880// ++alias OSF10020370// IBM880// ++module IBM880// INTERNAL IBM880 1 ++module INTERNAL IBM880// IBM880 1 ++ ++# from to module cost ++alias CP891// IBM891// ++alias CSIBM891// IBM891// ++alias OSF1002037B// IBM891// ++module IBM891// INTERNAL IBM891 1 ++module INTERNAL IBM891// IBM891 1 ++ ++# from to module cost ++alias CP903// IBM903// ++alias CSIBM903// IBM903// ++alias OSF10020387// IBM903// ++module IBM903// INTERNAL IBM903 1 ++module INTERNAL IBM903// IBM903 1 ++ ++# from to module cost ++alias CP904// IBM904// ++alias 904// IBM904// ++alias CSIBM904// IBM904// ++alias OSF10020388// IBM904// ++module IBM904// INTERNAL IBM904 1 ++module INTERNAL IBM904// IBM904 1 ++ ++# from to module cost ++alias CP905// IBM905// ++alias EBCDIC-CP-TR// IBM905// ++alias CSIBM905// IBM905// ++module IBM905// INTERNAL IBM905 1 ++module INTERNAL IBM905// IBM905 1 ++ ++# from to module cost ++alias CP918// IBM918// ++alias EBCDIC-CP-AR2// IBM918// ++alias CSIBM918// IBM918// ++alias OSF10020396// IBM918// ++module IBM918// INTERNAL IBM918 1 ++module INTERNAL IBM918// IBM918 1 ++ ++# from to module cost ++alias IBM-922// IBM922// ++alias CP922// IBM922// ++alias CSIBM922// IBM922// ++module IBM922// INTERNAL IBM922 1 ++module INTERNAL IBM922// IBM922 1 ++ ++# from to module cost ++alias IBM-930// IBM930// ++alias CP930// IBM930// ++alias CSIBM930// IBM930// ++module IBM930// INTERNAL IBM930 1 ++module INTERNAL IBM930// IBM930 1 ++ ++# from to module cost ++alias IBM-932// IBM932// ++alias CSIBM932// IBM932// ++module IBM932// INTERNAL IBM932 1 ++module INTERNAL IBM932// IBM932 1 ++ ++# from to module cost ++alias IBM-933// IBM933// ++alias CP933// IBM933// ++alias CSIBM933// IBM933// ++module IBM933// INTERNAL IBM933 1 ++module INTERNAL IBM933// IBM933 1 ++ ++# from to module cost ++alias IBM-935// IBM935// ++alias CP935// IBM935// ++alias CSIBM935// IBM935// ++module IBM935// INTERNAL IBM935 1 ++module INTERNAL IBM935// IBM935 1 ++ ++# from to module cost ++alias IBM-937// IBM937// ++alias CP937// IBM937// ++alias CSIBM937// IBM937// ++module IBM937// INTERNAL IBM937 1 ++module INTERNAL IBM937// IBM937 1 ++ ++# from to module cost ++alias IBM-939// IBM939// ++alias CP939// IBM939// ++alias CSIBM939// IBM939// ++module IBM939// INTERNAL IBM939 1 ++module INTERNAL IBM939// IBM939 1 ++ ++# from to module cost ++alias IBM-943// IBM943// ++alias CSIBM943// IBM943// ++module IBM943// INTERNAL IBM943 1 ++module INTERNAL IBM943// IBM943 1 ++ ++# from to module cost ++alias CP1004// IBM1004// ++alias OS2LATIN1// IBM1004// ++module IBM1004// INTERNAL IBM1004 1 ++module INTERNAL IBM1004// IBM1004 1 ++ ++# from to module cost ++alias CP1026// IBM1026// ++alias 1026// IBM1026// ++alias CSIBM1026// IBM1026// ++alias OSF10020402// IBM1026// ++module IBM1026// INTERNAL IBM1026 1 ++module INTERNAL IBM1026// IBM1026 1 ++ ++# from to module cost ++alias IBM-1046// IBM1046// ++alias CP1046// IBM1046// ++alias 1046// IBM1046// ++module IBM1046// INTERNAL IBM1046 1 ++module INTERNAL IBM1046// IBM1046 1 ++ ++# from to module cost ++alias IBM-1047// IBM1047// ++alias CP1047// IBM1047// ++alias 1047// IBM1047// ++alias OSF10020417// IBM1047// ++module IBM1047// INTERNAL IBM1047 1 ++module INTERNAL IBM1047// IBM1047 1 ++ ++# from to module cost ++alias IBM-1124// IBM1124// ++alias CP1124// IBM1124// ++alias CSIBM1124// IBM1124// ++module IBM1124// INTERNAL IBM1124 1 ++module INTERNAL IBM1124// IBM1124 1 ++ ++# from to module cost ++alias IBM-1129// IBM1129// ++alias CP1129// IBM1129// ++alias CSIBM1129// IBM1129// ++module IBM1129// INTERNAL IBM1129 1 ++module INTERNAL IBM1129// IBM1129 1 ++ ++# from to module cost ++alias IBM-1160// IBM1160// ++alias CP1160// IBM1160// ++alias CSIBM1160// IBM1160// ++module IBM1160// INTERNAL IBM1160 1 ++module INTERNAL IBM1160// IBM1160 1 ++ ++# from to module cost ++alias IBM-1161// IBM1161// ++alias CP1161// IBM1161// ++alias CSIBM1161// IBM1161// ++module IBM1161// INTERNAL IBM1161 1 ++module INTERNAL IBM1161// IBM1161 1 ++ ++# from to module cost ++alias IBM-1132// IBM1132// ++alias CP1132// IBM1132// ++alias CSIBM1132// IBM1132// ++module IBM1132// INTERNAL IBM1132 1 ++module INTERNAL IBM1132// IBM1132 1 ++ ++# from to module cost ++alias IBM-1133// IBM1133// ++alias CP1133// IBM1133// ++alias CSIBM1133// IBM1133// ++module IBM1133// INTERNAL IBM1133 1 ++module INTERNAL IBM1133// IBM1133 1 ++ ++# from to module cost ++alias IBM-1162// IBM1162// ++alias CP1162// IBM1162// ++alias CSIBM11621162// IBM1162// ++module IBM1162// INTERNAL IBM1162 1 ++module INTERNAL IBM1162// IBM1162 1 ++ ++# from to module cost ++alias IBM-1163// IBM1163// ++alias CP1163// IBM1163// ++alias CSIBM1163// IBM1163// ++module IBM1163// INTERNAL IBM1163 1 ++module INTERNAL IBM1163// IBM1163 1 ++ ++# from to module cost ++alias IBM-1164// IBM1164// ++alias CP1164// IBM1164// ++alias CSIBM1164// IBM1164// ++module IBM1164// INTERNAL IBM1164 1 ++module INTERNAL IBM1164// IBM1164 1 ++ ++# from to module cost ++alias EUCKR// EUC-KR// ++alias CSEUCKR// EUC-KR// ++alias OSF0004000a// EUC-KR// ++module EUC-KR// INTERNAL EUC-KR 1 ++module INTERNAL EUC-KR// EUC-KR 1 ++ ++# from to module cost ++alias MSCP949// UHC// ++alias CP949// UHC// ++alias OSF100203B5// UHC// ++module UHC// INTERNAL UHC 1 ++module INTERNAL UHC// UHC 1 ++ ++# from to module cost ++alias MSCP1361// JOHAB// ++alias CP1361// JOHAB// ++module JOHAB// INTERNAL JOHAB 1 ++module INTERNAL JOHAB// JOHAB 1 ++ ++# from to module cost ++alias BIG-FIVE// BIG5// ++alias BIGFIVE// BIG5// ++alias BIG-5// BIG5// ++alias CN-BIG5// BIG5// ++alias CP950// BIG5// ++module BIG5// INTERNAL BIG5 1 ++module INTERNAL BIG5// BIG5 1 ++ ++# from to module cost ++alias BIG5-HKSCS// BIG5HKSCS// ++module BIG5HKSCS// INTERNAL BIG5HKSCS 1 ++module INTERNAL BIG5HKSCS// BIG5HKSCS 1 ++ ++# from to module cost ++alias EUCJP-MS// EUC-JP-MS// ++alias EUCJP-OPEN// EUC-JP-MS// ++alias EUCJP-WIN// EUC-JP-MS// ++module EUC-JP-MS// INTERNAL EUC-JP-MS 1 ++module INTERNAL EUC-JP-MS// EUC-JP-MS 1 ++ ++# from to module cost ++alias EUCJP// EUC-JP// ++alias CSEUCPKDFMTJAPANESE// EUC-JP// ++alias OSF00030010// EUC-JP// ++alias UJIS// EUC-JP// ++module EUC-JP// INTERNAL EUC-JP 1 ++module INTERNAL EUC-JP// EUC-JP 1 ++ ++# from to module cost ++alias EUCCN// EUC-CN// ++alias GB2312// EUC-CN// ++alias csGB2312// EUC-CN// ++alias CN-GB// EUC-CN// ++module EUC-CN// INTERNAL EUC-CN 1 ++module INTERNAL EUC-CN// EUC-CN 1 ++ ++# from to module cost ++module EUC-CN// BIG5// GBBIG5 1 ++module BIG5// EUC-CN// GBBIG5 1 ++ ++# from to module cost ++alias GB13000// GBK// ++alias CP936// GBK// ++alias MS936// GBK// ++alias WINDOWS-936// GBK// ++module GBK// INTERNAL GBK 1 ++module INTERNAL GBK// GBK 1 ++ ++# from to module cost ++module GBK// EUC-CN// GBGBK 1 ++module EUC-CN// GBK// GBGBK 1 ++ ++# from to module cost ++alias EUCTW// EUC-TW// ++alias OSF0005000a// EUC-TW// ++module EUC-TW// INTERNAL EUC-TW 1 ++module INTERNAL EUC-TW// EUC-TW 1 ++ ++# from to module cost ++alias RUSCII// CP1125// ++alias IBM848// CP1125// ++module CP1125// INTERNAL CP1125 1 ++module INTERNAL CP1125// CP1125 1 ++ ++# from to module cost ++alias MS-EE// CP1250// ++alias WINDOWS-1250// CP1250// ++module CP1250// INTERNAL CP1250 1 ++module INTERNAL CP1250// CP1250 1 ++ ++# from to module cost ++alias MS-CYRL// CP1251// ++alias WINDOWS-1251// CP1251// ++module CP1251// INTERNAL CP1251 1 ++module INTERNAL CP1251// CP1251 1 ++ ++# from to module cost ++alias MS-GREEK// CP1253// ++alias WINDOWS-1253// CP1253// ++module CP1253// INTERNAL CP1253 1 ++module INTERNAL CP1253// CP1253 1 ++ ++# from to module cost ++alias MS-TURK// CP1254// ++alias WINDOWS-1254// CP1254// ++module CP1254// INTERNAL CP1254 1 ++module INTERNAL CP1254// CP1254 1 ++ ++# from to module cost ++alias MS-HEBR// CP1255// ++alias WINDOWS-1255// CP1255// ++module CP1255// INTERNAL CP1255 1 ++module INTERNAL CP1255// CP1255 1 ++ ++# from to module cost ++alias MS-ARAB// CP1256// ++alias WINDOWS-1256// CP1256// ++module CP1256// INTERNAL CP1256 1 ++module INTERNAL CP1256// CP1256 1 ++ ++# from to module cost ++alias WINBALTRIM// CP1257// ++alias WINDOWS-1257// CP1257// ++module CP1257// INTERNAL CP1257 1 ++module INTERNAL CP1257// CP1257 1 ++ ++# from to module cost ++alias WINDOWS-1258// CP1258// ++module CP1258// INTERNAL CP1258 1 ++module INTERNAL CP1258// CP1258 1 ++ ++# from to module cost ++alias 874// IBM874// ++alias CP874// IBM874// ++alias WINDOWS-874// IBM874// ++module IBM874// INTERNAL IBM874 1 ++module INTERNAL IBM874// IBM874 1 ++ ++# from to module cost ++module CP737// INTERNAL CP737 1 ++module INTERNAL CP737// CP737 1 ++ ++# from to module cost ++module CP770// INTERNAL CP770 1 ++module INTERNAL CP770// CP770 1 ++ ++# from to module cost ++module CP771// INTERNAL CP771 1 ++module INTERNAL CP771// CP771 1 ++ ++# from to module cost ++module CP772// INTERNAL CP772 1 ++module INTERNAL CP772// CP772 1 ++ ++# from to module cost ++module CP773// INTERNAL CP773 1 ++module INTERNAL CP773// CP773 1 ++ ++# from to module cost ++module CP774// INTERNAL CP774 1 ++module INTERNAL CP774// CP774 1 ++ ++# from to module cost ++alias IBM775// CP775// ++alias CSPC775BALTIC// CP775// ++module CP775// INTERNAL CP775 1 ++module INTERNAL CP775// CP775 1 ++ ++# from to module cost ++alias CSISO2022JP// ISO-2022-JP// ++alias ISO2022JP// ISO-2022-JP// ++module ISO-2022-JP// INTERNAL ISO-2022-JP 1 ++module INTERNAL ISO-2022-JP// ISO-2022-JP 1 ++ ++# from to module cost ++alias CSISO2022JP2// ISO-2022-JP-2// ++alias ISO2022JP2// ISO-2022-JP-2// ++module ISO-2022-JP-2// INTERNAL ISO-2022-JP 1 ++module INTERNAL ISO-2022-JP-2// ISO-2022-JP 1 ++ ++# from to module cost ++module ISO-2022-JP-3// INTERNAL ISO-2022-JP-3 1 ++module INTERNAL ISO-2022-JP-3// ISO-2022-JP-3 1 ++ ++# from to module cost ++alias CSISO2022KR// ISO-2022-KR// ++alias ISO2022KR// ISO-2022-KR// ++module ISO-2022-KR// INTERNAL ISO-2022-KR 1 ++module INTERNAL ISO-2022-KR// ISO-2022-KR 1 ++ ++# from to module cost ++alias CSISO2022CN// ISO-2022-CN// ++alias ISO2022CN// ISO-2022-CN// ++module ISO-2022-CN// INTERNAL ISO-2022-CN 1 ++module INTERNAL ISO-2022-CN// ISO-2022-CN 1 ++ ++# from to module cost ++alias ISO2022CNEXT// ISO-2022-CN-EXT// ++module ISO-2022-CN-EXT// INTERNAL ISO-2022-CN-EXT 1 ++module INTERNAL ISO-2022-CN-EXT// ISO-2022-CN-EXT 1 ++ ++# from to module cost ++alias MAC// MACINTOSH// ++alias CSMACINTOSH// MACINTOSH// ++module MACINTOSH// INTERNAL MACINTOSH 1 ++module INTERNAL MACINTOSH// MACINTOSH 1 ++ ++# from to module cost ++alias ISO-IR-143// IEC_P27-1// ++alias CSISO143IECP271// IEC_P27-1// ++alias IEC_P271// IEC_P27-1// ++module IEC_P27-1// INTERNAL IEC_P27-1 1 ++module INTERNAL IEC_P27-1// IEC_P27-1 1 ++ ++# from to module cost ++alias ISO_9036// ASMO_449// ++alias ARABIC7// ASMO_449// ++alias ISO-IR-89// ASMO_449// ++alias CSISO89ASMO449// ASMO_449// ++module ASMO_449// INTERNAL ASMO_449 1 ++module INTERNAL ASMO_449// ASMO_449 1 ++ ++# from to module cost ++alias ISO-IR-139// CSN_369103// ++alias CSISO139CSN369103// CSN_369103// ++module CSN_369103// INTERNAL CSN_369103 1 ++module INTERNAL CSN_369103// CSN_369103 1 ++ ++# from to module cost ++alias CWI-2// CWI// ++alias CP-HU// CWI// ++module CWI// INTERNAL CWI 1 ++module INTERNAL CWI// CWI 1 ++ ++# from to module cost ++alias DEC// DEC-MCS// ++alias CSDECMCS// DEC-MCS// ++alias DECMCS// DEC-MCS// ++module DEC-MCS// INTERNAL DEC-MCS 1 ++module INTERNAL DEC-MCS// DEC-MCS 1 ++ ++# from to module cost ++alias ISO-IR-111// ECMA-CYRILLIC// ++alias CSISO111ECMACYRILLIC// ECMA-CYRILLIC// ++alias ECMACYRILLIC// ECMA-CYRILLIC// ++module ECMA-CYRILLIC// INTERNAL ECMA-CYRILLIC 1 ++module INTERNAL ECMA-CYRILLIC// ECMA-CYRILLIC 1 ++ ++# from to module cost ++alias ST_SEV_358-88// GOST_19768-74// ++alias GOST_19768// GOST_19768-74// ++alias ISO-IR-153// GOST_19768-74// ++alias CSISO153GOST1976874// GOST_19768-74// ++alias GOST_1976874// GOST_19768-74// ++module GOST_19768-74// INTERNAL GOST_19768-74 1 ++module INTERNAL GOST_19768-74// GOST_19768-74 1 ++ ++# from to module cost ++alias ISO-IR-150// GREEK-CCITT// ++alias CSISO150// GREEK-CCITT// ++alias CSISO150GREEKCCITT// GREEK-CCITT// ++alias GREEKCCITT// GREEK-CCITT// ++module GREEK-CCITT// INTERNAL GREEK-CCITT 1 ++module INTERNAL GREEK-CCITT// GREEK-CCITT 1 ++ ++# from to module cost ++alias ISO-IR-88// GREEK7// ++alias CSISO88GREEK7// GREEK7// ++module GREEK7// INTERNAL GREEK7 1 ++module INTERNAL GREEK7// GREEK7 1 ++ ++# from to module cost ++alias ISO-IR-18// GREEK7-OLD// ++alias CSISO18GREEK7OLD// GREEK7-OLD// ++alias GREEK7OLD// GREEK7-OLD// ++module GREEK7-OLD// INTERNAL GREEK7-OLD 1 ++module INTERNAL GREEK7-OLD// GREEK7-OLD 1 ++ ++# from to module cost ++alias ISO-IR-49// INIS// ++alias CSISO49INIS// INIS// ++module INIS// INTERNAL INIS 1 ++module INTERNAL INIS// INIS 1 ++ ++# from to module cost ++alias ISO-IR-50// INIS-8// ++alias CSISO50INIS8// INIS-8// ++alias INIS8// INIS-8// ++module INIS-8// INTERNAL INIS-8 1 ++module INTERNAL INIS-8// INIS-8 1 ++ ++# from to module cost ++alias ISO-IR-51// INIS-CYRILLIC// ++alias CSISO51INISCYRILLIC// INIS-CYRILLIC// ++alias INISCYRILLIC// INIS-CYRILLIC// ++module INIS-CYRILLIC// INTERNAL INIS-CYRILLIC 1 ++module INTERNAL INIS-CYRILLIC// INIS-CYRILLIC 1 ++ ++# from to module cost ++alias ISO-IR-98// ISO_2033// ++alias ISO_2033-1983// ISO_2033// ++alias E13B// ISO_2033// ++alias CSISO2033// ISO_2033// ++module ISO_2033// INTERNAL ISO_2033 1 ++module INTERNAL ISO_2033// ISO_2033 1 ++ ++# from to module cost ++alias ISO-IR-37// ISO_5427// ++alias KOI-7// ISO_5427// ++alias CSISO5427CYRILLIC// ISO_5427// ++module ISO_5427// INTERNAL ISO_5427 1 ++module INTERNAL ISO_5427// ISO_5427 1 ++ ++# from to module cost ++alias ISO-IR-54// ISO_5427-EXT// ++alias ISO_5427:1981// ISO_5427-EXT// ++alias CSISO5427CYRILLIC1981// ISO_5427-EXT// ++alias ISO_5427EXT// ISO_5427-EXT// ++module ISO_5427-EXT// INTERNAL ISO_5427-EXT 1 ++module INTERNAL ISO_5427-EXT// ISO_5427-EXT 1 ++ ++# from to module cost ++alias ISO-IR-55// ISO_5428// ++alias ISO_5428:1980// ISO_5428// ++alias CSISO5428GREEK// ISO_5428// ++module ISO_5428// INTERNAL ISO_5428 1 ++module INTERNAL ISO_5428// ISO_5428 1 ++ ++# from to module cost ++alias ISO-IR-155// ISO_10367-BOX// ++alias CSISO10367BOX// ISO_10367-BOX// ++alias ISO_10367BOX// ISO_10367-BOX// ++module ISO_10367-BOX// INTERNAL ISO_10367-BOX 1 ++module INTERNAL ISO_10367-BOX// ISO_10367-BOX 1 ++ ++# from to module cost ++alias MACIS// MAC-IS// ++module MAC-IS// INTERNAL MAC-IS 1 ++module INTERNAL MAC-IS// MAC-IS 1 ++ ++# from to module cost ++alias MACUK// MAC-UK// ++alias MACUKRAINIAN// MAC-UK// ++alias MAC-CYRILLIC// MAC-UK// ++alias MACCYRILLIC// MAC-UK// ++module MAC-UK// INTERNAL MAC-UK 1 ++module INTERNAL MAC-UK// MAC-UK 1 ++ ++# from to module cost ++alias MS-MAC-CYRILLIC// CP10007// ++alias MSMACCYRILLIC// CP10007// ++module CP10007// INTERNAL CP10007 1 ++module INTERNAL CP10007// CP10007 1 ++ ++# from to module cost ++alias ISO-IR-9-1// NATS-DANO// ++alias CSNATSDANO// NATS-DANO// ++alias NATSDANO// NATS-DANO// ++module NATS-DANO// INTERNAL NATS-DANO 1 ++module INTERNAL NATS-DANO// NATS-DANO 1 ++ ++# from to module cost ++alias ISO-IR-8-1// NATS-SEFI// ++alias CSNATSSEFI// NATS-SEFI// ++alias NATSSEFI// NATS-SEFI// ++module NATS-SEFI// INTERNAL NATS-SEFI 1 ++module INTERNAL NATS-SEFI// NATS-SEFI 1 ++ ++# from to module cost ++alias WS2// WIN-SAMI-2// ++alias WINSAMI2// WIN-SAMI-2// ++module WIN-SAMI-2// INTERNAL SAMI-WS2 1 ++module INTERNAL WIN-SAMI-2// SAMI-WS2 1 ++ ++# from to module cost ++module ISO-IR-197// INTERNAL ISO-IR-197 1 ++module INTERNAL ISO-IR-197// ISO-IR-197 1 ++ ++# from to module cost ++alias TIS620// TIS-620// ++alias TIS620-0// TIS-620// ++alias TIS620.2529-1// TIS-620// ++alias TIS620.2533-0// TIS-620// ++alias ISO-IR-166// TIS-620// ++module TIS-620// INTERNAL TIS-620 1 ++module INTERNAL TIS-620// TIS-620 1 ++ ++# from to module cost ++alias KOI8U// KOI8-U// ++module KOI8-U// INTERNAL KOI8-U 1 ++module INTERNAL KOI8-U// KOI8-U 1 ++ ++# from to module cost ++alias ISIRI3342// ISIRI-3342// ++module ISIRI-3342// INTERNAL ISIRI-3342 1 ++module INTERNAL ISIRI-3342// ISIRI-3342 1 ++ ++# from to module cost ++module GB18030// INTERNAL GB18030 1 ++module INTERNAL GB18030// GB18030 1 ++ ++# from to module cost ++module VISCII// INTERNAL VISCII 1 ++module INTERNAL VISCII// VISCII 1 ++ ++# from to module cost ++module KOI8-T// INTERNAL KOI8-T 1 ++module INTERNAL KOI8-T// KOI8-T 1 ++ ++# from to module cost ++module GEORGIAN-PS// INTERNAL GEORGIAN-PS 1 ++module INTERNAL GEORGIAN-PS// GEORGIAN-PS 1 ++ ++# from to module cost ++module GEORGIAN-ACADEMY// INTERNAL GEORGIAN-ACADEMY 1 ++module INTERNAL GEORGIAN-ACADEMY// GEORGIAN-ACADEMY 1 ++ ++# from to module cost ++module ISO-IR-209// INTERNAL ISO-IR-209 1 ++module INTERNAL ISO-IR-209// ISO-IR-209 1 ++ ++# from to module cost ++module MAC-SAMI// INTERNAL MAC-SAMI 1 ++module INTERNAL MAC-SAMI// MAC-SAMI 1 ++ ++# from to module cost ++alias ARMSCII8// ARMSCII-8// ++module ARMSCII-8// INTERNAL ARMSCII-8 1 ++module INTERNAL ARMSCII-8// ARMSCII-8 1 ++ ++# from to module cost ++alias TCVN// TCVN5712-1// ++alias TCVN-5712// TCVN5712-1// ++alias TCVN5712-1:1993// TCVN5712-1// ++module TCVN5712-1// INTERNAL TCVN5712-1 1 ++module INTERNAL TCVN5712-1// TCVN5712-1 1 ++ ++# from to module cost ++module EUC-JISX0213// INTERNAL EUC-JISX0213 1 ++module INTERNAL EUC-JISX0213// EUC-JISX0213 1 ++ ++# from to module cost ++alias ShiftJISX0213// Shift_JISX0213// ++module Shift_JISX0213// INTERNAL SHIFT_JISX0213 1 ++module INTERNAL Shift_JISX0213// SHIFT_JISX0213 1 ++ ++# from to module cost ++module TSCII// INTERNAL TSCII 1 ++module INTERNAL TSCII// TSCII 1 ++ ++# from to module cost ++module PT154// INTERNAL PT154 1 ++module INTERNAL PT154// PT154 1 ++ ++# from to module cost ++alias STRK1048-2002// RK1048// ++module RK1048// INTERNAL RK1048 1 ++module INTERNAL RK1048// RK1048 1 ++ ++# from to module cost ++alias IBM-1025// IBM1025// ++alias CP1025// IBM1025// ++alias CSIBM1025// IBM1025// ++module IBM1025// INTERNAL IBM1025 1 ++module INTERNAL IBM1025// IBM1025 1 ++ ++# from to module cost ++alias IBM-1122// IBM1122// ++alias CP1122// IBM1122// ++alias CSIBM1122// IBM1122// ++module IBM1122// INTERNAL IBM1122 1 ++module INTERNAL IBM1122// IBM1122 1 ++ ++# from to module cost ++alias IBM-1137// IBM1137// ++alias CP1137// IBM1137// ++alias CSIBM1137// IBM1137// ++module IBM1137// INTERNAL IBM1137 1 ++module INTERNAL IBM1137// IBM1137 1 ++ ++# from to module cost ++alias IBM-1153// IBM1153// ++alias CP1153// IBM1153// ++alias CSIBM1153// IBM1153// ++module IBM1153// INTERNAL IBM1153 1 ++module INTERNAL IBM1153// IBM1153 1 ++ ++# from to module cost ++alias IBM-1154// IBM1154// ++alias CP1154// IBM1154// ++alias CSIBM1154// IBM1154// ++module IBM1154// INTERNAL IBM1154 1 ++module INTERNAL IBM1154// IBM1154 1 ++ ++# from to module cost ++alias IBM-1155// IBM1155// ++alias CP1155// IBM1155// ++alias CSIBM1155// IBM1155// ++module IBM1155// INTERNAL IBM1155 1 ++module INTERNAL IBM1155// IBM1155 1 ++ ++# from to module cost ++alias IBM-1156// IBM1156// ++alias CP1156// IBM1156// ++alias CSIBM1156// IBM1156// ++module IBM1156// INTERNAL IBM1156 1 ++module INTERNAL IBM1156// IBM1156 1 ++ ++# from to module cost ++alias IBM-1157// IBM1157// ++alias CP1157// IBM1157// ++alias CSIBM1157// IBM1157// ++module IBM1157// INTERNAL IBM1157 1 ++module INTERNAL IBM1157// IBM1157 1 ++ ++# from to module cost ++alias IBM-1158// IBM1158// ++alias CP1158// IBM1158// ++alias CSIBM1158// IBM1158// ++module IBM1158// INTERNAL IBM1158 1 ++module INTERNAL IBM1158// IBM1158 1 ++ ++# from to module cost ++alias IBM-803// IBM803// ++alias CP803// IBM803// ++alias CSIBM803// IBM803// ++module IBM803// INTERNAL IBM803 1 ++module INTERNAL IBM803// IBM803 1 ++ ++# from to module cost ++alias IBM-901// IBM901// ++alias CP901// IBM901// ++alias CSIBM901// IBM901// ++module IBM901// INTERNAL IBM901 1 ++module INTERNAL IBM901// IBM901 1 ++ ++# from to module cost ++alias IBM-902// IBM902// ++alias CP902// IBM902// ++alias CSIBM902// IBM902// ++module IBM902// INTERNAL IBM902 1 ++module INTERNAL IBM902// IBM902 1 ++ ++# from to module cost ++alias IBM-921// IBM921// ++alias CP921// IBM921// ++alias CSIBM921// IBM921// ++module IBM921// INTERNAL IBM921 1 ++module INTERNAL IBM921// IBM921 1 ++ ++# from to module cost ++alias IBM-1008// IBM1008// ++alias CP1008// IBM1008// ++alias CSIBM1008// IBM1008// ++module IBM1008// INTERNAL IBM1008 1 ++module INTERNAL IBM1008// IBM1008 1 ++ ++# from to module cost ++module IBM1008// IBM420// IBM1008_420 1 ++module IBM420// IBM1008// IBM1008_420 1 ++ ++# from to module cost ++alias IBM-1097// IBM1097// ++alias CP1097// IBM1097// ++alias CSIBM1097// IBM1097// ++module IBM1097// INTERNAL IBM1097 1 ++module INTERNAL IBM1097// IBM1097 1 ++ ++# from to module cost ++alias IBM-1112// IBM1112// ++alias CP1112// IBM1112// ++alias CSIBM1112// IBM1112// ++module IBM1112// INTERNAL IBM1112 1 ++module INTERNAL IBM1112// IBM1112 1 ++ ++# from to module cost ++alias IBM-1123// IBM1123// ++alias CP1123// IBM1123// ++alias CSIBM1123// IBM1123// ++module IBM1123// INTERNAL IBM1123 1 ++module INTERNAL IBM1123// IBM1123 1 ++ ++# from to module cost ++alias IBM-1130// IBM1130// ++alias CP1130// IBM1130// ++alias CSIBM1130// IBM1130// ++module IBM1130// INTERNAL IBM1130 1 ++module INTERNAL IBM1130// IBM1130 1 ++ ++# from to module cost ++alias IBM-1140// IBM1140// ++alias CP1140// IBM1140// ++alias CSIBM1140// IBM1140// ++module IBM1140// INTERNAL IBM1140 1 ++module INTERNAL IBM1140// IBM1140 1 ++ ++# from to module cost ++alias IBM-1141// IBM1141// ++alias CP1141// IBM1141// ++alias CSIBM1141// IBM1141// ++module IBM1141// INTERNAL IBM1141 1 ++module INTERNAL IBM1141// IBM1141 1 ++ ++# from to module cost ++alias IBM-1142// IBM1142// ++alias CP1142// IBM1142// ++alias CSIBM1142// IBM1142// ++module IBM1142// INTERNAL IBM1142 1 ++module INTERNAL IBM1142// IBM1142 1 ++ ++# from to module cost ++alias IBM-1143// IBM1143// ++alias CP1143// IBM1143// ++alias CSIBM1143// IBM1143// ++module IBM1143// INTERNAL IBM1143 1 ++module INTERNAL IBM1143// IBM1143 1 ++ ++# from to module cost ++alias IBM-1144// IBM1144// ++alias CP1144// IBM1144// ++alias CSIBM1144// IBM1144// ++module IBM1144// INTERNAL IBM1144 1 ++module INTERNAL IBM1144// IBM1144 1 ++ ++# from to module cost ++alias IBM-1145// IBM1145// ++alias CP1145// IBM1145// ++alias CSIBM1145// IBM1145// ++module IBM1145// INTERNAL IBM1145 1 ++module INTERNAL IBM1145// IBM1145 1 ++ ++# from to module cost ++alias IBM-1146// IBM1146// ++alias CP1146// IBM1146// ++alias CSIBM1146// IBM1146// ++module IBM1146// INTERNAL IBM1146 1 ++module INTERNAL IBM1146// IBM1146 1 ++ ++# from to module cost ++alias IBM-1147// IBM1147// ++alias CP1147// IBM1147// ++alias CSIBM1147// IBM1147// ++module IBM1147// INTERNAL IBM1147 1 ++module INTERNAL IBM1147// IBM1147 1 ++ ++# from to module cost ++alias IBM-1148// IBM1148// ++alias CP1148// IBM1148// ++alias CSIBM1148// IBM1148// ++module IBM1148// INTERNAL IBM1148 1 ++module INTERNAL IBM1148// IBM1148 1 ++ ++# from to module cost ++alias IBM-1149// IBM1149// ++alias CP1149// IBM1149// ++alias CSIBM1149// IBM1149// ++module IBM1149// INTERNAL IBM1149 1 ++module INTERNAL IBM1149// IBM1149 1 ++ ++# from to module cost ++alias IBM-1166// IBM1166// ++alias CP1166// IBM1166// ++alias CSIBM1166// IBM1166// ++module IBM1166// INTERNAL IBM1166 1 ++module INTERNAL IBM1166// IBM1166 1 ++ ++# from to module cost ++alias IBM-1167// IBM1167// ++alias CP1167// IBM1167// ++alias CSIBM1167// IBM1167// ++module IBM1167// INTERNAL IBM1167 1 ++module INTERNAL IBM1167// IBM1167 1 ++ ++# from to module cost ++alias IBM-4517// IBM4517// ++alias CP4517// IBM4517// ++alias CSIBM4517// IBM4517// ++module IBM4517// INTERNAL IBM4517 1 ++module INTERNAL IBM4517// IBM4517 1 ++ ++# from to module cost ++alias IBM-4899// IBM4899// ++alias CP4899// IBM4899// ++alias CSIBM4899// IBM4899// ++module IBM4899// INTERNAL IBM4899 1 ++module INTERNAL IBM4899// IBM4899 1 ++ ++# from to module cost ++alias IBM-4909// IBM4909// ++alias CP4909// IBM4909// ++alias CSIBM4909// IBM4909// ++module IBM4909// INTERNAL IBM4909 1 ++module INTERNAL IBM4909// IBM4909 1 ++ ++# from to module cost ++alias IBM-4971// IBM4971// ++alias CP4971// IBM4971// ++alias CSIBM4971// IBM4971// ++module IBM4971// INTERNAL IBM4971 1 ++module INTERNAL IBM4971// IBM4971 1 ++ ++# from to module cost ++alias IBM-5347// IBM5347// ++alias CP5347// IBM5347// ++alias CSIBM5347// IBM5347// ++module IBM5347// INTERNAL IBM5347 1 ++module INTERNAL IBM5347// IBM5347 1 ++ ++# from to module cost ++alias IBM-9030// IBM9030// ++alias CP9030// IBM9030// ++alias CSIBM9030// IBM9030// ++module IBM9030// INTERNAL IBM9030 1 ++module INTERNAL IBM9030// IBM9030 1 ++ ++# from to module cost ++alias IBM-9066// IBM9066// ++alias CP9066// IBM9066// ++alias CSIBM9066// IBM9066// ++module IBM9066// INTERNAL IBM9066 1 ++module INTERNAL IBM9066// IBM9066 1 ++ ++# from to module cost ++alias IBM-9448// IBM9448// ++alias CP9448// IBM9448// ++alias CSIBM9448// IBM9448// ++module IBM9448// INTERNAL IBM9448 1 ++module INTERNAL IBM9448// IBM9448 1 ++ ++# from to module cost ++alias IBM-12712// IBM12712// ++alias CP12712// IBM12712// ++alias CSIBM12712// IBM12712// ++module IBM12712// INTERNAL IBM12712 1 ++module INTERNAL IBM12712// IBM12712 1 ++ ++# from to module cost ++alias IBM-16804// IBM16804// ++alias CP16804// IBM16804// ++alias CSIBM16804// IBM16804// ++module IBM16804// INTERNAL IBM16804 1 ++module INTERNAL IBM16804// IBM16804 1 ++ ++# from to module cost ++alias IBM-1364// IBM1364// ++alias CP1364// IBM1364// ++alias CSIBM1364// IBM1364// ++module IBM1364// INTERNAL IBM1364 1 ++module INTERNAL IBM1364// IBM1364 1 ++ ++# from to module cost ++alias IBM-1371// IBM1371// ++alias CP1371// IBM1371// ++alias CSIBM1371// IBM1371// ++module IBM1371// INTERNAL IBM1371 1 ++module INTERNAL IBM1371// IBM1371 1 ++ ++# from to module cost ++alias IBM-1388// IBM1388// ++alias CP1388// IBM1388// ++alias CSIBM1388// IBM1388// ++module IBM1388// INTERNAL IBM1388 1 ++module INTERNAL IBM1388// IBM1388 1 ++ ++# from to module cost ++alias IBM-1390// IBM1390// ++alias CP1390// IBM1390// ++alias CSIBM1390// IBM1390// ++module IBM1390// INTERNAL IBM1390 1 ++module INTERNAL IBM1390// IBM1390 1 ++ ++# from to module cost ++alias IBM-1399// IBM1399// ++alias CP1399// IBM1399// ++alias CSIBM1399// IBM1399// ++module IBM1399// INTERNAL IBM1399 1 ++module INTERNAL IBM1399// IBM1399 1 ++ ++# from to module cost ++alias ISO/TR_11548-1/ ISO_11548-1// ++alias ISO11548-1// ISO_11548-1// ++module ISO_11548-1// INTERNAL ISO_11548-1 1 ++module INTERNAL ISO_11548-1// ISO_11548-1 1 ++ ++# from to module cost ++module MIK// INTERNAL MIK 1 ++module INTERNAL MIK// MIK 1 ++ ++# from to module cost ++module BRF// INTERNAL BRF 1 ++module INTERNAL BRF// BRF 1 ++ ++# from to module cost ++alias CP1282// MAC-CENTRALEUROPE// ++module MAC-CENTRALEUROPE// INTERNAL MAC-CENTRALEUROPE 1 ++module INTERNAL MAC-CENTRALEUROPE// MAC-CENTRALEUROPE 1 ++ ++# from to module cost ++module KOI8-RU// INTERNAL KOI8-RU 1 ++module INTERNAL KOI8-RU// KOI8-RU 1 ++ ++# from to module cost ++alias ISO_8859-9E// ISO-8859-9E// ++alias ISO8859-9E// ISO-8859-9E// ++alias ISO88599E// ISO-8859-9E// ++module ISO-8859-9E// INTERNAL ISO8859-9E 1 ++module INTERNAL ISO-8859-9E// ISO8859-9E 1 ++ ++# from to module cost ++alias ROMAN9// HP-ROMAN9// ++alias R9// HP-ROMAN9// ++alias HPROMAN9// HP-ROMAN9// ++module HP-ROMAN9// INTERNAL HP-ROMAN9 1 ++module INTERNAL HP-ROMAN9// HP-ROMAN9 1 ++ ++# from to module cost ++alias TURKISH8// HP-TURKISH8// ++alias HPTURKISH8// HP-TURKISH8// ++alias OSF10010006// HP-TURKISH8// ++module HP-TURKISH8// INTERNAL HP-TURKISH8 1 ++module INTERNAL HP-TURKISH8// HP-TURKISH8 1 ++ ++# from to module cost ++alias THAI8// HP-THAI8// ++alias HPTHAI8// HP-THAI8// ++module HP-THAI8// INTERNAL HP-THAI8 1 ++module INTERNAL HP-THAI8// HP-THAI8 1 ++ ++# from to module cost ++alias HPGREEK8// HP-GREEK8// ++alias OSF10010004// HP-GREEK8// ++module HP-GREEK8// INTERNAL HP-GREEK8 1 ++module INTERNAL HP-GREEK8// HP-GREEK8 1 +diff --git a/iconvdata/gconv-modules.conf b/iconvdata/gconv-modules.conf +index e12b0aa2ed41a234..e63dda673d749001 100644 +--- a/iconvdata/gconv-modules.conf ++++ b/iconvdata/gconv-modules.conf +@@ -31,178 +31,6 @@ + # alias: alias name which is not really recognized. + # name: the real name of the character set + +-alias ISO-IR-4// BS_4730// +-alias ISO646-GB// BS_4730// +-alias GB// BS_4730// +-alias UK// BS_4730// +-alias CSISO4UNITEDKINGDOM// BS_4730// +-module BS_4730// INTERNAL ISO646 2 +-module INTERNAL BS_4730// ISO646 2 +- +-alias ISO-IR-121// CSA_Z243.4-1985-1// +-alias ISO646-CA// CSA_Z243.4-1985-1// +-alias CSA7-1// CSA_Z243.4-1985-1// +-alias CA// CSA_Z243.4-1985-1// +-alias CSISO121CANADIAN1// CSA_Z243.4-1985-1// +-alias CSA_Z243.419851// CSA_Z243.4-1985-1// +-module CSA_Z243.4-1985-1// INTERNAL ISO646 2 +-module INTERNAL CSA_Z243.4-1985-1// ISO646 2 +- +-alias ISO-IR-122// CSA_Z243.4-1985-2// +-alias ISO646-CA2// CSA_Z243.4-1985-2// +-alias CSA7-2// CSA_Z243.4-1985-2// +-alias CSISO122CANADIAN2// CSA_Z243.4-1985-2// +-alias CSA_Z243.419852// CSA_Z243.4-1985-2// +-module CSA_Z243.4-1985-2// INTERNAL ISO646 2 +-module INTERNAL CSA_Z243.4-1985-2// ISO646 2 +- +-alias ISO-IR-21// DIN_66003// +-alias DE// DIN_66003// +-alias ISO646-DE// DIN_66003// +-alias CSISO21GERMAN// DIN_66003// +-module DIN_66003// INTERNAL ISO646 2 +-module INTERNAL DIN_66003// ISO646 2 +- +-alias DS2089// DS_2089// +-alias ISO646-DK// DS_2089// +-alias DK// DS_2089// +-alias CSISO646DANISH// DS_2089// +-module DS_2089// INTERNAL ISO646 2 +-module INTERNAL DS_2089// ISO646 2 +- +-alias ISO-IR-17// ES// +-alias ISO646-ES// ES// +-alias CSISO17SPANISH// ES// +-module ES// INTERNAL ISO646 2 +-module INTERNAL ES// ISO646 2 +- +-alias ISO-IR-85// ES2// +-alias ISO646-ES2// ES2// +-alias CSISO85SPANISH2// ES2// +-module ES2// INTERNAL ISO646 2 +-module INTERNAL ES2// ISO646 2 +- +-alias ISO-IR-57// GB_1988-80// +-alias CN// GB_1988-80// +-alias ISO646-CN// GB_1988-80// +-alias CSISO58GB1988// GB_1988-80// +-alias GB_198880// GB_1988-80// +-module GB_1988-80// INTERNAL ISO646 2 +-module INTERNAL GB_1988-80// ISO646 2 +- +-alias ISO-IR-15// IT// +-alias ISO646-IT// IT// +-alias CSISO15ITALIAN// IT// +-module IT// INTERNAL ISO646 2 +-module INTERNAL IT// ISO646 2 +- +-alias ISO-IR-14// JIS_C6220-1969-RO// +-alias JP// JIS_C6220-1969-RO// +-alias ISO646-JP// JIS_C6220-1969-RO// +-alias CSISO14JISC6220RO// JIS_C6220-1969-RO// +-alias JIS_C62201969RO// JIS_C6220-1969-RO// +-module JIS_C6220-1969-RO// INTERNAL ISO646 2 +-module INTERNAL JIS_C6220-1969-RO// ISO646 2 +- +-alias ISO-IR-92// JIS_C6229-1984-B// +-alias ISO646-JP-OCR-B// JIS_C6229-1984-B// +-alias JP-OCR-B// JIS_C6229-1984-B// +-alias CSISO92JISC62991984B// JIS_C6229-1984-B// +-alias JIS_C62291984B// JIS_C6229-1984-B// +-module JIS_C6229-1984-B// INTERNAL ISO646 2 +-module INTERNAL JIS_C6229-1984-B// ISO646 2 +- +-alias ISO-IR-141// JUS_I.B1.002// +-alias ISO646-YU// JUS_I.B1.002// +-alias JS// JUS_I.B1.002// +-alias YU// JUS_I.B1.002// +-alias CSISO141JUSIB1002// JUS_I.B1.002// +-module JUS_I.B1.002// INTERNAL ISO646 2 +-module INTERNAL JUS_I.B1.002// ISO646 2 +- +-alias ISO646-KR// KSC5636// +-alias CSKSC5636// KSC5636// +-module KSC5636// INTERNAL ISO646 2 +-module INTERNAL KSC5636// ISO646 2 +- +-alias ISO-IR-86// MSZ_7795.3// +-alias ISO646-HU// MSZ_7795.3// +-alias HU// MSZ_7795.3// +-alias CSISO86HUNGARIAN// MSZ_7795.3// +-module MSZ_7795.3// INTERNAL ISO646 2 +-module INTERNAL MSZ_7795.3// ISO646 2 +- +-alias CUBA// NC_NC00-10// +-alias NC_NC00-10:81// NC_NC00-10// +-alias ISO-IR-151// NC_NC00-10// +-alias ISO646-CU// NC_NC00-10// +-alias CSISO151CUBA// NC_NC00-10// +-alias NC_NC0010// NC_NC00-10// +-module NC_NC00-10// INTERNAL ISO646 2 +-module INTERNAL NC_NC00-10// ISO646 2 +- +-alias ISO-IR-69// NF_Z_62-010// +-alias ISO646-FR// NF_Z_62-010// +-alias FR// NF_Z_62-010// +-alias CSISO69FRENCH// NF_Z_62-010// +-alias NF_Z_62010// NF_Z_62-010// +-module NF_Z_62-010// INTERNAL ISO646 2 +-module INTERNAL NF_Z_62-010// ISO646 2 +- +-alias ISO-IR-25// NF_Z_62-010_1973// +-alias ISO646-FR1// NF_Z_62-010_1973// +-alias NF_Z_62-010_(1973)// NF_Z_62-010_1973// +-alias CSISO25FRENCH// NF_Z_62-010_1973// +-alias NF_Z_62010_1973// NF_Z_62-010_1973// +-module NF_Z_62-010_1973// INTERNAL ISO646 2 +-module INTERNAL NF_Z_62-010_1973// ISO646 2 +- +-alias ISO-IR-60// NS_4551-1// +-alias ISO646-NO// NS_4551-1// +-alias NO// NS_4551-1// +-alias CSISO60DANISHNORWEGIAN// NS_4551-1// +-alias CSISO60NORWEGIAN1// NS_4551-1// +-alias NS_45511// NS_4551-1// +-module NS_4551-1// INTERNAL ISO646 2 +-module INTERNAL NS_4551-1// ISO646 2 +- +-alias ISO646-NO2// NS_4551-2// +-alias ISO-IR-61// NS_4551-2// +-alias NO2// NS_4551-2// +-alias CSISO61NORWEGIAN2// NS_4551-2// +-alias NS_45512// NS_4551-2// +-module NS_4551-2// INTERNAL ISO646 2 +-module INTERNAL NS_4551-2// ISO646 2 +- +-alias ISO-IR-16// PT// +-alias ISO646-PT// PT// +-alias CSISO16PORTUGESE// PT// +-module PT// INTERNAL ISO646 2 +-module INTERNAL PT// ISO646 2 +- +-alias ISO-IR-84// PT2// +-alias ISO646-PT2// PT2// +-alias CSISO84PORTUGUESE2// PT2// +-module PT2// INTERNAL ISO646 2 +-module INTERNAL PT2// ISO646 2 +- +-alias ISO-IR-10// SEN_850200_B// +-alias FI// SEN_850200_B// +-alias ISO646-FI// SEN_850200_B// +-alias ISO646-SE// SEN_850200_B// +-alias SE// SEN_850200_B// +-alias CSISO10SWEDISH// SEN_850200_B// +-alias SS636127// SEN_850200_B// +-module SEN_850200_B// INTERNAL ISO646 2 +-module INTERNAL SEN_850200_B// ISO646 2 +- +-alias ISO-IR-11// SEN_850200_C// +-alias ISO646-SE2// SEN_850200_C// +-alias SE2// SEN_850200_C// +-alias CSISO11SWEDISHFORNAMES// SEN_850200_C// +-module SEN_850200_C// INTERNAL ISO646 2 +-module INTERNAL SEN_850200_C// ISO646 2 +- + # from to module cost + alias ISO-IR-100// ISO-8859-1// + alias ISO_8859-1:1987// ISO-8859-1// +@@ -219,175 +47,6 @@ alias OSF00010001// ISO-8859-1// + module ISO-8859-1// INTERNAL ISO8859-1 1 + module INTERNAL ISO-8859-1// ISO8859-1 1 + +-# from to module cost +-alias ISO-IR-101// ISO-8859-2// +-alias ISO_8859-2:1987// ISO-8859-2// +-alias ISO_8859-2// ISO-8859-2// +-alias ISO8859-2// ISO-8859-2// +-alias ISO88592// ISO-8859-2// +-alias LATIN2// ISO-8859-2// +-alias L2// ISO-8859-2// +-alias CSISOLATIN2// ISO-8859-2// +-alias 8859_2// ISO-8859-2// +-alias OSF00010002// ISO-8859-2// +-alias IBM912// ISO-8859-2// +-alias CP912// ISO-8859-2// +-module ISO-8859-2// INTERNAL ISO8859-2 1 +-module INTERNAL ISO-8859-2// ISO8859-2 1 +- +-# from to module cost +-alias ISO-IR-109// ISO-8859-3// +-alias ISO_8859-3:1988// ISO-8859-3// +-alias ISO_8859-3// ISO-8859-3// +-alias ISO8859-3// ISO-8859-3// +-alias ISO88593// ISO-8859-3// +-alias LATIN3// ISO-8859-3// +-alias L3// ISO-8859-3// +-alias CSISOLATIN3// ISO-8859-3// +-alias 8859_3// ISO-8859-3// +-alias OSF00010003// ISO-8859-3// +-module ISO-8859-3// INTERNAL ISO8859-3 1 +-module INTERNAL ISO-8859-3// ISO8859-3 1 +- +-# from to module cost +-alias ISO-IR-110// ISO-8859-4// +-alias ISO_8859-4:1988// ISO-8859-4// +-alias ISO_8859-4// ISO-8859-4// +-alias ISO8859-4// ISO-8859-4// +-alias ISO88594// ISO-8859-4// +-alias LATIN4// ISO-8859-4// +-alias L4// ISO-8859-4// +-alias CSISOLATIN4// ISO-8859-4// +-alias 8859_4// ISO-8859-4// +-alias OSF00010004// ISO-8859-4// +-module ISO-8859-4// INTERNAL ISO8859-4 1 +-module INTERNAL ISO-8859-4// ISO8859-4 1 +- +-# from to module cost +-alias ISO-IR-144// ISO-8859-5// +-alias ISO_8859-5:1988// ISO-8859-5// +-alias ISO_8859-5// ISO-8859-5// +-alias ISO8859-5// ISO-8859-5// +-alias ISO88595// ISO-8859-5// +-alias CYRILLIC// ISO-8859-5// +-alias CSISOLATINCYRILLIC// ISO-8859-5// +-alias 8859_5// ISO-8859-5// +-alias OSF00010005// ISO-8859-5// +-alias IBM915// ISO-8859-5// +-alias CP915// ISO-8859-5// +-module ISO-8859-5// INTERNAL ISO8859-5 1 +-module INTERNAL ISO-8859-5// ISO8859-5 1 +- +-# from to module cost +-alias ISO-IR-127// ISO-8859-6// +-alias ISO_8859-6:1987// ISO-8859-6// +-alias ISO_8859-6// ISO-8859-6// +-alias ISO8859-6// ISO-8859-6// +-alias ISO88596// ISO-8859-6// +-alias ECMA-114// ISO-8859-6// +-alias ASMO-708// ISO-8859-6// +-alias ARABIC// ISO-8859-6// +-alias CSISOLATINARABIC// ISO-8859-6// +-alias 8859_6// ISO-8859-6// +-alias OSF00010006// ISO-8859-6// +-alias IBM1089// ISO-8859-6// +-alias CP1089// ISO-8859-6// +-module ISO-8859-6// INTERNAL ISO8859-6 1 +-module INTERNAL ISO-8859-6// ISO8859-6 1 +- +-# from to module cost +-alias ISO-IR-126// ISO-8859-7// +-alias ISO_8859-7:2003// ISO-8859-7// +-alias ISO_8859-7:1987// ISO-8859-7// +-alias ISO_8859-7// ISO-8859-7// +-alias ISO8859-7// ISO-8859-7// +-alias ISO88597// ISO-8859-7// +-alias ELOT_928// ISO-8859-7// +-alias ECMA-118// ISO-8859-7// +-alias GREEK// ISO-8859-7// +-alias GREEK8// ISO-8859-7// +-alias CSISOLATINGREEK// ISO-8859-7// +-alias 8859_7// ISO-8859-7// +-alias OSF00010007// ISO-8859-7// +-alias IBM813// ISO-8859-7// +-alias CP813// ISO-8859-7// +-module ISO-8859-7// INTERNAL ISO8859-7 1 +-module INTERNAL ISO-8859-7// ISO8859-7 1 +- +-# from to module cost +-alias ISO-IR-138// ISO-8859-8// +-alias ISO_8859-8:1988// ISO-8859-8// +-alias ISO_8859-8// ISO-8859-8// +-alias ISO8859-8// ISO-8859-8// +-alias ISO88598// ISO-8859-8// +-alias HEBREW// ISO-8859-8// +-alias CSISOLATINHEBREW// ISO-8859-8// +-alias 8859_8// ISO-8859-8// +-alias OSF00010008// ISO-8859-8// +-alias IBM916// ISO-8859-8// +-alias CP916// ISO-8859-8// +-module ISO-8859-8// INTERNAL ISO8859-8 1 +-module INTERNAL ISO-8859-8// ISO8859-8 1 +- +-# from to module cost +-alias ISO-IR-148// ISO-8859-9// +-alias ISO_8859-9:1989// ISO-8859-9// +-alias ISO_8859-9// ISO-8859-9// +-alias ISO8859-9// ISO-8859-9// +-alias ISO88599// ISO-8859-9// +-alias LATIN5// ISO-8859-9// +-alias L5// ISO-8859-9// +-alias CSISOLATIN5// ISO-8859-9// +-alias 8859_9// ISO-8859-9// +-alias OSF00010009// ISO-8859-9// +-alias IBM920// ISO-8859-9// +-alias CP920// ISO-8859-9// +-alias TS-5881// ISO-8859-9// +-alias ECMA-128// ISO-8859-9// +-module ISO-8859-9// INTERNAL ISO8859-9 1 +-module INTERNAL ISO-8859-9// ISO8859-9 1 +- +-# from to module cost +-alias ISO-IR-157// ISO-8859-10// +-alias ISO_8859-10:1992// ISO-8859-10// +-alias ISO_8859-10// ISO-8859-10// +-alias ISO8859-10// ISO-8859-10// +-alias ISO885910// ISO-8859-10// +-alias LATIN6// ISO-8859-10// +-alias L6// ISO-8859-10// +-alias CSISOLATIN6// ISO-8859-10// +-alias OSF0001000A// ISO-8859-10// +-module ISO-8859-10// INTERNAL ISO8859-10 1 +-module INTERNAL ISO-8859-10// ISO8859-10 1 +- +-# from to module cost +-alias ISO8859-11// ISO-8859-11// +-alias ISO885911// ISO-8859-11// +-module ISO-8859-11// INTERNAL ISO8859-11 1 +-module INTERNAL ISO-8859-11// ISO8859-11 1 +- +-# from to module cost +-alias ISO8859-13// ISO-8859-13// +-alias ISO885913// ISO-8859-13// +-alias ISO-IR-179// ISO-8859-13// +-alias LATIN7// ISO-8859-13// +-alias L7// ISO-8859-13// +-alias BALTIC// ISO-8859-13// +-module ISO-8859-13// INTERNAL ISO8859-13 1 +-module INTERNAL ISO-8859-13// ISO8859-13 1 +- +-# from to module cost +-alias ISO8859-14// ISO-8859-14// +-alias ISO885914// ISO-8859-14// +-alias ISO-IR-199// ISO-8859-14// +-alias LATIN8// ISO-8859-14// +-alias L8// ISO-8859-14// +-alias ISO_8859-14:1998// ISO-8859-14// +-alias ISO_8859-14// ISO-8859-14// +-alias ISO-CELTIC// ISO-8859-14// +-module ISO-8859-14// INTERNAL ISO8859-14 1 +-module INTERNAL ISO-8859-14// ISO8859-14 1 +- + # from to module cost + alias ISO8859-15// ISO-8859-15// + alias ISO885915// ISO-8859-15// +@@ -399,916 +58,12 @@ alias ISO_8859-15:1998// ISO-8859-15// + module ISO-8859-15// INTERNAL ISO8859-15 1 + module INTERNAL ISO-8859-15// ISO8859-15 1 + +-# from to module cost +-alias ISO8859-16// ISO-8859-16// +-alias ISO885916// ISO-8859-16// +-alias ISO-IR-226// ISO-8859-16// +-alias LATIN10// ISO-8859-16// +-alias L10// ISO-8859-16// +-alias ISO_8859-16:2001// ISO-8859-16// +-alias ISO_8859-16// ISO-8859-16// +-module ISO-8859-16// INTERNAL ISO8859-16 1 +-module INTERNAL ISO-8859-16// ISO8859-16 1 +- +-# from to module cost +-alias T.61// T.61-8BIT// +-alias ISO-IR-103// T.61-8BIT// +-alias CSISO103T618BIT// T.61-8BIT// +-alias T.618BIT// T.61-8BIT// +-module T.61-8BIT// INTERNAL T.61 1 +-module INTERNAL T.61-8BIT// T.61 1 +- +-# from to module cost +-alias ISO-IR-156// ISO_6937// +-alias ISO_6937:1992// ISO_6937// +-alias ISO6937// ISO_6937// +-module ISO_6937// INTERNAL ISO_6937 1 +-module INTERNAL ISO_6937// ISO_6937 1 +- +- +-# from to module cost +-alias ISO-IR-90// ISO_6937-2// +-alias ISO_6937-2:1983// ISO_6937-2// +-alias CSISO90// ISO_6937-2// +-alias ISO_69372// ISO_6937-2// +-module ISO_6937-2// INTERNAL ISO_6937-2 1 +-module INTERNAL ISO_6937-2// ISO_6937-2 1 +- +-# from to module cost +-alias SHIFT-JIS// SJIS// +-alias SHIFT_JIS// SJIS// +-alias MS_KANJI// SJIS// +-alias CSSHIFTJIS// SJIS// +-module SJIS// INTERNAL SJIS 1 +-module INTERNAL SJIS// SJIS 1 +- +-# from to module cost +-alias WINDOWS-31J// CP932// +-alias MS932// CP932// +-alias SJIS-OPEN// CP932// +-alias SJIS-WIN// CP932// +-alias CSWINDOWS31J// CP932// +-module CP932// INTERNAL CP932 1 +-module INTERNAL CP932// CP932 1 +- +-# from to module cost +-alias KOI8// KOI-8// +-module KOI-8// INTERNAL KOI-8 1 +-module INTERNAL KOI-8// KOI-8 1 +- +-# from to module cost +-alias CSKOI8R// KOI8-R// +-alias KOI8R// KOI8-R// +-module KOI8-R// INTERNAL KOI8-R 1 +-module INTERNAL KOI8-R// KOI8-R 1 +- +-# from to module cost +-alias ISO-IR-19// LATIN-GREEK// +-alias CSISO19LATINGREEK// LATIN-GREEK// +-alias LATINGREEK// LATIN-GREEK// +-module LATIN-GREEK// INTERNAL LATIN-GREEK 1 +-module INTERNAL LATIN-GREEK// LATIN-GREEK 1 +- +-# from to module cost +-alias ISO-IR-27// LATIN-GREEK-1// +-alias CSISO27LATINGREEK1// LATIN-GREEK-1// +-alias LATINGREEK1// LATIN-GREEK-1// +-module LATIN-GREEK-1// INTERNAL LATIN-GREEK-1 1 +-module INTERNAL LATIN-GREEK-1// LATIN-GREEK-1 1 +- +-# from to module cost +-alias ROMAN8// HP-ROMAN8// +-alias R8// HP-ROMAN8// +-alias CSHPROMAN8// HP-ROMAN8// +-alias OSF10010001// HP-ROMAN8// +-alias HPROMAN8// HP-ROMAN8// +-module HP-ROMAN8// INTERNAL HP-ROMAN8 1 +-module INTERNAL HP-ROMAN8// HP-ROMAN8 1 +- +-# from to module cost +-alias CSEBCDICATDE// EBCDIC-AT-DE// +-alias EBCDICATDE// EBCDIC-AT-DE// +-module EBCDIC-AT-DE// INTERNAL EBCDIC-AT-DE 1 +-module INTERNAL EBCDIC-AT-DE// EBCDIC-AT-DE 1 +- +-# from to module cost +-alias CSEBCDICATDEA// EBCDIC-AT-DE-A// +-alias EBCDICATDEA// EBCDIC-AT-DE-A// +-module EBCDIC-AT-DE-A// INTERNAL EBCDIC-AT-DE-A 1 +-module INTERNAL EBCDIC-AT-DE-A// EBCDIC-AT-DE-A 1 +- +-# from to module cost +-alias CSEBCDICCAFR// EBCDIC-CA-FR// +-alias EBCDICCAFR// EBCDIC-CA-FR// +-module EBCDIC-CA-FR// INTERNAL EBCDIC-CA-FR 1 +-module INTERNAL EBCDIC-CA-FR// EBCDIC-CA-FR 1 +- +-# from to module cost +-alias CSEBCDICDKNO// EBCDIC-DK-NO// +-alias EBCDICDKNO// EBCDIC-DK-NO// +-module EBCDIC-DK-NO// INTERNAL EBCDIC-DK-NO 1 +-module INTERNAL EBCDIC-DK-NO// EBCDIC-DK-NO 1 +- +-# from to module cost +-alias CSEBCDICDKNOA// EBCDIC-DK-NO-A// +-alias EBCDICDKNOA// EBCDIC-DK-NO-A// +-module EBCDIC-DK-NO-A// INTERNAL EBCDIC-DK-NO-A 1 +-module INTERNAL EBCDIC-DK-NO-A// EBCDIC-DK-NO-A 1 +- +-# from to module cost +-alias CSEBCDICES// EBCDIC-ES// +-alias EBCDICES// EBCDIC-ES// +-module EBCDIC-ES// INTERNAL EBCDIC-ES 1 +-module INTERNAL EBCDIC-ES// EBCDIC-ES 1 +- +-# from to module cost +-alias CSEBCDICESA// EBCDIC-ES-A// +-alias EBCDICESA// EBCDIC-ES-A// +-module EBCDIC-ES-A// INTERNAL EBCDIC-ES-A 1 +-module INTERNAL EBCDIC-ES-A// EBCDIC-ES-A 1 +- +-# from to module cost +-alias CSEBCDICESS// EBCDIC-ES-S// +-alias EBCDICESS// EBCDIC-ES-S// +-module EBCDIC-ES-S// INTERNAL EBCDIC-ES-S 1 +-module INTERNAL EBCDIC-ES-S// EBCDIC-ES-S 1 +- +-# from to module cost +-alias CSEBCDICFISE// EBCDIC-FI-SE// +-alias EBCDICFISE// EBCDIC-FI-SE// +-module EBCDIC-FI-SE// INTERNAL EBCDIC-FI-SE 1 +-module INTERNAL EBCDIC-FI-SE// EBCDIC-FI-SE 1 +- +-# from to module cost +-alias CSEBCDICFISEA// EBCDIC-FI-SE-A// +-alias EBCDICFISEA// EBCDIC-FI-SE-A// +-module EBCDIC-FI-SE-A// INTERNAL EBCDIC-FI-SE-A 1 +-module INTERNAL EBCDIC-FI-SE-A// EBCDIC-FI-SE-A 1 +- +-# from to module cost +-alias CSEBCDICFR// EBCDIC-FR// +-alias EBCDICFR// EBCDIC-FR// +-module EBCDIC-FR// INTERNAL EBCDIC-FR 1 +-module INTERNAL EBCDIC-FR// EBCDIC-FR 1 +- +-# from to module cost +-alias EBCDICISFRISS// EBCDIC-IS-FRISS// +-module EBCDIC-IS-FRISS// INTERNAL EBCDIC-IS-FRISS 1 +-module INTERNAL EBCDIC-IS-FRISS// EBCDIC-IS-FRISS 1 +- +-# from to module cost +-alias CSEBCDICIT// EBCDIC-IT// +-alias EBCDICIT// EBCDIC-IT// +-module EBCDIC-IT// INTERNAL EBCDIC-IT 1 +-module INTERNAL EBCDIC-IT// EBCDIC-IT 1 +- +-# from to module cost +-alias CSEBCDICPT// EBCDIC-PT// +-alias EBCDICPT// EBCDIC-PT// +-module EBCDIC-PT// INTERNAL EBCDIC-PT 1 +-module INTERNAL EBCDIC-PT// EBCDIC-PT 1 +- +-# from to module cost +-alias CSEBCDICUK// EBCDIC-UK// +-alias EBCDICUK// EBCDIC-UK// +-module EBCDIC-UK// INTERNAL EBCDIC-UK 1 +-module INTERNAL EBCDIC-UK// EBCDIC-UK 1 +- +-# from to module cost +-alias CSEBCDICUS// EBCDIC-US// +-alias EBCDICUS// EBCDIC-US// +-module EBCDIC-US// INTERNAL EBCDIC-US 1 +-module INTERNAL EBCDIC-US// EBCDIC-US 1 +- +-# from to module cost +-alias CP037// IBM037// +-alias EBCDIC-CP-US// IBM037// +-alias EBCDIC-CP-CA// IBM037// +-alias EBCDIC-CP-WT// IBM037// +-alias EBCDIC-CP-NL// IBM037// +-alias CSIBM037// IBM037// +-alias OSF10020025// IBM037// +-alias CP1070// IBM037// +-alias CP282// IBM037// +-module IBM037// INTERNAL IBM037 1 +-module INTERNAL IBM037// IBM037 1 +- +-# from to module cost +-alias EBCDIC-INT// IBM038// +-alias CP038// IBM038// +-alias CSIBM038// IBM038// +-module IBM038// INTERNAL IBM038 1 +-module INTERNAL IBM038// IBM038 1 +- +-# from to module cost +-alias EBCDIC-INT1// IBM256// +-module IBM256// INTERNAL IBM256 1 +-module INTERNAL IBM256// IBM256 1 +- +-# from to module cost +-alias CP273// IBM273// +-alias CSIBM273// IBM273// +-alias OSF10020111// IBM273// +-module IBM273// INTERNAL IBM273 1 +-module INTERNAL IBM273// IBM273 1 +- +-# from to module cost +-alias EBCDIC-BE// IBM274// +-alias CP274// IBM274// +-alias CSIBM274// IBM274// +-module IBM274// INTERNAL IBM274 1 +-module INTERNAL IBM274// IBM274 1 +- +-# from to module cost +-alias EBCDIC-BR// IBM275// +-alias CP275// IBM275// +-alias CSIBM275// IBM275// +-module IBM275// INTERNAL IBM275 1 +-module INTERNAL IBM275// IBM275 1 +- +-# from to module cost +-alias EBCDIC-CP-DK// IBM277// +-alias EBCDIC-CP-NO// IBM277// +-alias CSIBM277// IBM277// +-alias OSF10020115// IBM277// +-module IBM277// INTERNAL IBM277 1 +-module INTERNAL IBM277// IBM277 1 +- +-# from to module cost +-alias CP278// IBM278// +-alias EBCDIC-CP-FI// IBM278// +-alias EBCDIC-CP-SE// IBM278// +-alias CSIBM278// IBM278// +-alias OSF10020116// IBM278// +-module IBM278// INTERNAL IBM278 1 +-module INTERNAL IBM278// IBM278 1 +- +-# from to module cost +-alias CP280// IBM280// +-alias EBCDIC-CP-IT// IBM280// +-alias CSIBM280// IBM280// +-alias OSF10020118// IBM280// +-module IBM280// INTERNAL IBM280 1 +-module INTERNAL IBM280// IBM280 1 +- +-# from to module cost +-alias EBCDIC-JP-E// IBM281// +-alias CP281// IBM281// +-alias CSIBM281// IBM281// +-module IBM281// INTERNAL IBM281 1 +-module INTERNAL IBM281// IBM281 1 +- +-# from to module cost +-alias CP284// IBM284// +-alias EBCDIC-CP-ES// IBM284// +-alias CSIBM284// IBM284// +-alias OSF1002011C// IBM284// +-alias CP1079// IBM284// +-module IBM284// INTERNAL IBM284 1 +-module INTERNAL IBM284// IBM284 1 +- +-# from to module cost +-alias CP285// IBM285// +-alias EBCDIC-CP-GB// IBM285// +-alias CSIBM285// IBM285// +-alias OSF1002011D// IBM285// +-module IBM285// INTERNAL IBM285 1 +-module INTERNAL IBM285// IBM285 1 +- +-# from to module cost +-alias CP290// IBM290// +-alias EBCDIC-JP-KANA// IBM290// +-alias CSIBM290// IBM290// +-alias OSF10020122// IBM290// +-module IBM290// INTERNAL IBM290 1 +-module INTERNAL IBM290// IBM290 1 +- +-# from to module cost +-alias CP297// IBM297// +-alias EBCDIC-CP-FR// IBM297// +-alias CSIBM297// IBM297// +-alias OSF10020129// IBM297// +-alias CP1081// IBM297// +-module IBM297// INTERNAL IBM297 1 +-module INTERNAL IBM297// IBM297 1 +- +-# from to module cost +-alias CP420// IBM420// +-alias EBCDIC-CP-AR1// IBM420// +-alias CSIBM420// IBM420// +-alias OSF100201A4// IBM420// +-module IBM420// INTERNAL IBM420 1 +-module INTERNAL IBM420// IBM420 1 +- +-# from to module cost +-alias CP423// IBM423// +-alias EBCDIC-CP-GR// IBM423// +-alias CSIBM423// IBM423// +-module IBM423// INTERNAL IBM423 1 +-module INTERNAL IBM423// IBM423 1 +- +-# from to module cost +-alias CP424// IBM424// +-alias EBCDIC-CP-HE// IBM424// +-alias CSIBM424// IBM424// +-alias OSF100201A8// IBM424// +-module IBM424// INTERNAL IBM424 1 +-module INTERNAL IBM424// IBM424 1 +- +-# from to module cost +-alias CP437// IBM437// +-alias 437// IBM437// +-alias CSPC8CODEPAGE437// IBM437// +-alias OSF100201B5// IBM437// +-module IBM437// INTERNAL IBM437 1 +-module INTERNAL IBM437// IBM437 1 +- +-# from to module cost +-alias CP500// IBM500// +-alias 500// IBM500// +-alias 500V1// IBM500// +-alias EBCDIC-CP-BE// IBM500// +-alias EBCDIC-CP-CH// IBM500// +-alias CSIBM500// IBM500// +-alias OSF100201F4// IBM500// +-alias CP1084// IBM500// +-module IBM500// INTERNAL IBM500 1 +-module INTERNAL IBM500// IBM500 1 +- +-# from to module cost +-alias CP850// IBM850// +-alias 850// IBM850// +-alias CSPC850MULTILINGUAL// IBM850// +-alias OSF10020352// IBM850// +-module IBM850// INTERNAL IBM850 1 +-module INTERNAL IBM850// IBM850 1 +- +-# from to module cost +-alias CP858// IBM858// +-alias 858// IBM858// +-alias CSPC858MULTILINGUAL// IBM858// +-module IBM858// INTERNAL IBM858 1 +-module INTERNAL IBM858// IBM858 1 +- +-# from to module cost +-alias CP851// IBM851// +-alias 851// IBM851// +-alias CSIBM851// IBM851// +-module IBM851// INTERNAL IBM851 1 +-module INTERNAL IBM851// IBM851 1 +- +-# from to module cost +-alias CP852// IBM852// +-alias 852// IBM852// +-alias CSPCP852// IBM852// +-alias OSF10020354// IBM852// +-module IBM852// INTERNAL IBM852 1 +-module INTERNAL IBM852// IBM852 1 +- +-# from to module cost +-alias CP855// IBM855// +-alias 855// IBM855// +-alias CSIBM855// IBM855// +-alias OSF10020357// IBM855// +-module IBM855// INTERNAL IBM855 1 +-module INTERNAL IBM855// IBM855 1 +- +-# from to module cost +-alias IBM-856// IBM856// +-alias CP856// IBM856// +-alias 856// IBM856// +-alias CSIBM856// IBM856// +-module IBM856// INTERNAL IBM856 1 +-module INTERNAL IBM856// IBM856 1 +- +-# from to module cost +-alias CP857// IBM857// +-alias 857// IBM857// +-alias CSIBM857// IBM857// +-alias OSF10020359// IBM857// +-module IBM857// INTERNAL IBM857 1 +-module INTERNAL IBM857// IBM857 1 +- +-# from to module cost +-alias CP860// IBM860// +-alias 860// IBM860// +-alias CSIBM860// IBM860// +-module IBM860// INTERNAL IBM860 1 +-module INTERNAL IBM860// IBM860 1 +- +-# from to module cost +-alias CP861// IBM861// +-alias 861// IBM861// +-alias CPIBM861// IBM861// +-alias OSF1002035D// IBM861// +-module IBM861// INTERNAL IBM861 1 +-module INTERNAL IBM861// IBM861 1 +- +-# from to module cost +-alias CP862// IBM862// +-alias 862// IBM862// +-alias CSPC862LATINHEBREW// IBM862// +-alias OSF1002035E// IBM862// +-module IBM862// INTERNAL IBM862 1 +-module INTERNAL IBM862// IBM862 1 +- +-# from to module cost +-alias CP863// IBM863// +-alias 863// IBM863// +-alias CSIBM863// IBM863// +-alias OSF1002035F// IBM863// +-module IBM863// INTERNAL IBM863 1 +-module INTERNAL IBM863// IBM863 1 +- +-# from to module cost +-alias CP864// IBM864// +-alias 864// IBM864// +-alias CSIBM864// IBM864// +-alias OSF10020360// IBM864// +-module IBM864// INTERNAL IBM864 1 +-module INTERNAL IBM864// IBM864 1 +- +-# from to module cost +-alias CP865// IBM865// +-alias 865// IBM865// +-alias CSIBM865// IBM865// +-module IBM865// INTERNAL IBM865 1 +-module INTERNAL IBM865// IBM865 1 +- +-# from to module cost +-alias CP866// IBM866// +-alias 866// IBM866// +-alias CSIBM866// IBM866// +-module IBM866// INTERNAL IBM866 1 +-module INTERNAL IBM866// IBM866 1 +- +-# from to module cost +-alias CP866NAV// IBM866NAV// +-alias 866NAV// IBM866NAV// +-module IBM866NAV// INTERNAL IBM866NAV 1 +-module INTERNAL IBM866NAV// IBM866NAV 1 +- +-# from to module cost +-alias CP868// IBM868// +-alias CP-AR// IBM868// +-alias CSIBM868// IBM868// +-alias OSF10020364// IBM868// +-module IBM868// INTERNAL IBM868 1 +-module INTERNAL IBM868// IBM868 1 +- +-# from to module cost +-alias CP869// IBM869// +-alias 869// IBM869// +-alias CP-GR// IBM869// +-alias CSIBM869// IBM869// +-alias OSF10020365// IBM869// +-module IBM869// INTERNAL IBM869 1 +-module INTERNAL IBM869// IBM869 1 +- +-# from to module cost +-alias CP870// IBM870// +-alias EBCDIC-CP-ROECE// IBM870// +-alias EBCDIC-CP-YU// IBM870// +-alias CSIBM870// IBM870// +-alias OSF10020366// IBM870// +-module IBM870// INTERNAL IBM870 1 +-module INTERNAL IBM870// IBM870 1 +- +-# from to module cost +-alias CP871// IBM871// +-alias EBCDIC-CP-IS// IBM871// +-alias CSIBM871// IBM871// +-alias OSF10020367// IBM871// +-module IBM871// INTERNAL IBM871 1 +-module INTERNAL IBM871// IBM871 1 +- +-# from to module cost +-alias CP875// IBM875// +-alias EBCDIC-GREEK// IBM875// +-alias OSF1002036B// IBM875// +-module IBM875// INTERNAL IBM875 1 +-module INTERNAL IBM875// IBM875 1 +- +-# from to module cost +-alias CP880// IBM880// +-alias EBCDIC-CYRILLIC// IBM880// +-alias CSIBM880// IBM880// +-alias OSF10020370// IBM880// +-module IBM880// INTERNAL IBM880 1 +-module INTERNAL IBM880// IBM880 1 +- +-# from to module cost +-alias CP891// IBM891// +-alias CSIBM891// IBM891// +-alias OSF1002037B// IBM891// +-module IBM891// INTERNAL IBM891 1 +-module INTERNAL IBM891// IBM891 1 +- +-# from to module cost +-alias CP903// IBM903// +-alias CSIBM903// IBM903// +-alias OSF10020387// IBM903// +-module IBM903// INTERNAL IBM903 1 +-module INTERNAL IBM903// IBM903 1 +- +-# from to module cost +-alias CP904// IBM904// +-alias 904// IBM904// +-alias CSIBM904// IBM904// +-alias OSF10020388// IBM904// +-module IBM904// INTERNAL IBM904 1 +-module INTERNAL IBM904// IBM904 1 +- +-# from to module cost +-alias CP905// IBM905// +-alias EBCDIC-CP-TR// IBM905// +-alias CSIBM905// IBM905// +-module IBM905// INTERNAL IBM905 1 +-module INTERNAL IBM905// IBM905 1 +- +-# from to module cost +-alias CP918// IBM918// +-alias EBCDIC-CP-AR2// IBM918// +-alias CSIBM918// IBM918// +-alias OSF10020396// IBM918// +-module IBM918// INTERNAL IBM918 1 +-module INTERNAL IBM918// IBM918 1 +- +-# from to module cost +-alias IBM-922// IBM922// +-alias CP922// IBM922// +-alias CSIBM922// IBM922// +-module IBM922// INTERNAL IBM922 1 +-module INTERNAL IBM922// IBM922 1 +- +-# from to module cost +-alias IBM-930// IBM930// +-alias CP930// IBM930// +-alias CSIBM930// IBM930// +-module IBM930// INTERNAL IBM930 1 +-module INTERNAL IBM930// IBM930 1 +- +-# from to module cost +-alias IBM-932// IBM932// +-alias CSIBM932// IBM932// +-module IBM932// INTERNAL IBM932 1 +-module INTERNAL IBM932// IBM932 1 +- +-# from to module cost +-alias IBM-933// IBM933// +-alias CP933// IBM933// +-alias CSIBM933// IBM933// +-module IBM933// INTERNAL IBM933 1 +-module INTERNAL IBM933// IBM933 1 +- +-# from to module cost +-alias IBM-935// IBM935// +-alias CP935// IBM935// +-alias CSIBM935// IBM935// +-module IBM935// INTERNAL IBM935 1 +-module INTERNAL IBM935// IBM935 1 +- +-# from to module cost +-alias IBM-937// IBM937// +-alias CP937// IBM937// +-alias CSIBM937// IBM937// +-module IBM937// INTERNAL IBM937 1 +-module INTERNAL IBM937// IBM937 1 +- +-# from to module cost +-alias IBM-939// IBM939// +-alias CP939// IBM939// +-alias CSIBM939// IBM939// +-module IBM939// INTERNAL IBM939 1 +-module INTERNAL IBM939// IBM939 1 +- +-# from to module cost +-alias IBM-943// IBM943// +-alias CSIBM943// IBM943// +-module IBM943// INTERNAL IBM943 1 +-module INTERNAL IBM943// IBM943 1 +- +-# from to module cost +-alias CP1004// IBM1004// +-alias OS2LATIN1// IBM1004// +-module IBM1004// INTERNAL IBM1004 1 +-module INTERNAL IBM1004// IBM1004 1 +- +-# from to module cost +-alias CP1026// IBM1026// +-alias 1026// IBM1026// +-alias CSIBM1026// IBM1026// +-alias OSF10020402// IBM1026// +-module IBM1026// INTERNAL IBM1026 1 +-module INTERNAL IBM1026// IBM1026 1 +- +-# from to module cost +-alias IBM-1046// IBM1046// +-alias CP1046// IBM1046// +-alias 1046// IBM1046// +-module IBM1046// INTERNAL IBM1046 1 +-module INTERNAL IBM1046// IBM1046 1 +- +-# from to module cost +-alias IBM-1047// IBM1047// +-alias CP1047// IBM1047// +-alias 1047// IBM1047// +-alias OSF10020417// IBM1047// +-module IBM1047// INTERNAL IBM1047 1 +-module INTERNAL IBM1047// IBM1047 1 +- +-# from to module cost +-alias IBM-1124// IBM1124// +-alias CP1124// IBM1124// +-alias CSIBM1124// IBM1124// +-module IBM1124// INTERNAL IBM1124 1 +-module INTERNAL IBM1124// IBM1124 1 +- +-# from to module cost +-alias IBM-1129// IBM1129// +-alias CP1129// IBM1129// +-alias CSIBM1129// IBM1129// +-module IBM1129// INTERNAL IBM1129 1 +-module INTERNAL IBM1129// IBM1129 1 +- +-# from to module cost +-alias IBM-1160// IBM1160// +-alias CP1160// IBM1160// +-alias CSIBM1160// IBM1160// +-module IBM1160// INTERNAL IBM1160 1 +-module INTERNAL IBM1160// IBM1160 1 +- +-# from to module cost +-alias IBM-1161// IBM1161// +-alias CP1161// IBM1161// +-alias CSIBM1161// IBM1161// +-module IBM1161// INTERNAL IBM1161 1 +-module INTERNAL IBM1161// IBM1161 1 +- +-# from to module cost +-alias IBM-1132// IBM1132// +-alias CP1132// IBM1132// +-alias CSIBM1132// IBM1132// +-module IBM1132// INTERNAL IBM1132 1 +-module INTERNAL IBM1132// IBM1132 1 +- +-# from to module cost +-alias IBM-1133// IBM1133// +-alias CP1133// IBM1133// +-alias CSIBM1133// IBM1133// +-module IBM1133// INTERNAL IBM1133 1 +-module INTERNAL IBM1133// IBM1133 1 +- +-# from to module cost +-alias IBM-1162// IBM1162// +-alias CP1162// IBM1162// +-alias CSIBM11621162// IBM1162// +-module IBM1162// INTERNAL IBM1162 1 +-module INTERNAL IBM1162// IBM1162 1 +- +-# from to module cost +-alias IBM-1163// IBM1163// +-alias CP1163// IBM1163// +-alias CSIBM1163// IBM1163// +-module IBM1163// INTERNAL IBM1163 1 +-module INTERNAL IBM1163// IBM1163 1 +- +-# from to module cost +-alias IBM-1164// IBM1164// +-alias CP1164// IBM1164// +-alias CSIBM1164// IBM1164// +-module IBM1164// INTERNAL IBM1164 1 +-module INTERNAL IBM1164// IBM1164 1 +- +-# from to module cost +-alias EUCKR// EUC-KR// +-alias CSEUCKR// EUC-KR// +-alias OSF0004000a// EUC-KR// +-module EUC-KR// INTERNAL EUC-KR 1 +-module INTERNAL EUC-KR// EUC-KR 1 +- +-# from to module cost +-alias MSCP949// UHC// +-alias CP949// UHC// +-alias OSF100203B5// UHC// +-module UHC// INTERNAL UHC 1 +-module INTERNAL UHC// UHC 1 +- +-# from to module cost +-alias MSCP1361// JOHAB// +-alias CP1361// JOHAB// +-module JOHAB// INTERNAL JOHAB 1 +-module INTERNAL JOHAB// JOHAB 1 +- +-# from to module cost +-alias BIG-FIVE// BIG5// +-alias BIGFIVE// BIG5// +-alias BIG-5// BIG5// +-alias CN-BIG5// BIG5// +-alias CP950// BIG5// +-module BIG5// INTERNAL BIG5 1 +-module INTERNAL BIG5// BIG5 1 +- +-# from to module cost +-alias BIG5-HKSCS// BIG5HKSCS// +-module BIG5HKSCS// INTERNAL BIG5HKSCS 1 +-module INTERNAL BIG5HKSCS// BIG5HKSCS 1 +- +-# from to module cost +-alias EUCJP-MS// EUC-JP-MS// +-alias EUCJP-OPEN// EUC-JP-MS// +-alias EUCJP-WIN// EUC-JP-MS// +-module EUC-JP-MS// INTERNAL EUC-JP-MS 1 +-module INTERNAL EUC-JP-MS// EUC-JP-MS 1 +- +-# from to module cost +-alias EUCJP// EUC-JP// +-alias CSEUCPKDFMTJAPANESE// EUC-JP// +-alias OSF00030010// EUC-JP// +-alias UJIS// EUC-JP// +-module EUC-JP// INTERNAL EUC-JP 1 +-module INTERNAL EUC-JP// EUC-JP 1 +- +-# from to module cost +-alias EUCCN// EUC-CN// +-alias GB2312// EUC-CN// +-alias csGB2312// EUC-CN// +-alias CN-GB// EUC-CN// +-module EUC-CN// INTERNAL EUC-CN 1 +-module INTERNAL EUC-CN// EUC-CN 1 +- +-# from to module cost +-module EUC-CN// BIG5// GBBIG5 1 +-module BIG5// EUC-CN// GBBIG5 1 +- +-# from to module cost +-alias GB13000// GBK// +-alias CP936// GBK// +-alias MS936// GBK// +-alias WINDOWS-936// GBK// +-module GBK// INTERNAL GBK 1 +-module INTERNAL GBK// GBK 1 +- +-# from to module cost +-module GBK// EUC-CN// GBGBK 1 +-module EUC-CN// GBK// GBGBK 1 +- +-# from to module cost +-alias EUCTW// EUC-TW// +-alias OSF0005000a// EUC-TW// +-module EUC-TW// INTERNAL EUC-TW 1 +-module INTERNAL EUC-TW// EUC-TW 1 +- +-# from to module cost +-alias RUSCII// CP1125// +-alias IBM848// CP1125// +-module CP1125// INTERNAL CP1125 1 +-module INTERNAL CP1125// CP1125 1 +- +-# from to module cost +-alias MS-EE// CP1250// +-alias WINDOWS-1250// CP1250// +-module CP1250// INTERNAL CP1250 1 +-module INTERNAL CP1250// CP1250 1 +- +-# from to module cost +-alias MS-CYRL// CP1251// +-alias WINDOWS-1251// CP1251// +-module CP1251// INTERNAL CP1251 1 +-module INTERNAL CP1251// CP1251 1 +- + # from to module cost + alias MS-ANSI// CP1252// + alias WINDOWS-1252// CP1252// + module CP1252// INTERNAL CP1252 1 + module INTERNAL CP1252// CP1252 1 + +-# from to module cost +-alias MS-GREEK// CP1253// +-alias WINDOWS-1253// CP1253// +-module CP1253// INTERNAL CP1253 1 +-module INTERNAL CP1253// CP1253 1 +- +-# from to module cost +-alias MS-TURK// CP1254// +-alias WINDOWS-1254// CP1254// +-module CP1254// INTERNAL CP1254 1 +-module INTERNAL CP1254// CP1254 1 +- +-# from to module cost +-alias MS-HEBR// CP1255// +-alias WINDOWS-1255// CP1255// +-module CP1255// INTERNAL CP1255 1 +-module INTERNAL CP1255// CP1255 1 +- +-# from to module cost +-alias MS-ARAB// CP1256// +-alias WINDOWS-1256// CP1256// +-module CP1256// INTERNAL CP1256 1 +-module INTERNAL CP1256// CP1256 1 +- +-# from to module cost +-alias WINBALTRIM// CP1257// +-alias WINDOWS-1257// CP1257// +-module CP1257// INTERNAL CP1257 1 +-module INTERNAL CP1257// CP1257 1 +- +-# from to module cost +-alias WINDOWS-1258// CP1258// +-module CP1258// INTERNAL CP1258 1 +-module INTERNAL CP1258// CP1258 1 +- +-# from to module cost +-alias 874// IBM874// +-alias CP874// IBM874// +-alias WINDOWS-874// IBM874// +-module IBM874// INTERNAL IBM874 1 +-module INTERNAL IBM874// IBM874 1 +- +-# from to module cost +-module CP737// INTERNAL CP737 1 +-module INTERNAL CP737// CP737 1 +- +-# from to module cost +-module CP770// INTERNAL CP770 1 +-module INTERNAL CP770// CP770 1 +- +-# from to module cost +-module CP771// INTERNAL CP771 1 +-module INTERNAL CP771// CP771 1 +- +-# from to module cost +-module CP772// INTERNAL CP772 1 +-module INTERNAL CP772// CP772 1 +- +-# from to module cost +-module CP773// INTERNAL CP773 1 +-module INTERNAL CP773// CP773 1 +- +-# from to module cost +-module CP774// INTERNAL CP774 1 +-module INTERNAL CP774// CP774 1 +- +-# from to module cost +-alias IBM775// CP775// +-alias CSPC775BALTIC// CP775// +-module CP775// INTERNAL CP775 1 +-module INTERNAL CP775// CP775 1 +- +-# from to module cost +-alias CSISO2022JP// ISO-2022-JP// +-alias ISO2022JP// ISO-2022-JP// +-module ISO-2022-JP// INTERNAL ISO-2022-JP 1 +-module INTERNAL ISO-2022-JP// ISO-2022-JP 1 +- +-# from to module cost +-alias CSISO2022JP2// ISO-2022-JP-2// +-alias ISO2022JP2// ISO-2022-JP-2// +-module ISO-2022-JP-2// INTERNAL ISO-2022-JP 1 +-module INTERNAL ISO-2022-JP-2// ISO-2022-JP 1 +- +-# from to module cost +-module ISO-2022-JP-3// INTERNAL ISO-2022-JP-3 1 +-module INTERNAL ISO-2022-JP-3// ISO-2022-JP-3 1 +- +-# from to module cost +-alias CSISO2022KR// ISO-2022-KR// +-alias ISO2022KR// ISO-2022-KR// +-module ISO-2022-KR// INTERNAL ISO-2022-KR 1 +-module INTERNAL ISO-2022-KR// ISO-2022-KR 1 +- +-# from to module cost +-alias CSISO2022CN// ISO-2022-CN// +-alias ISO2022CN// ISO-2022-CN// +-module ISO-2022-CN// INTERNAL ISO-2022-CN 1 +-module INTERNAL ISO-2022-CN// ISO-2022-CN 1 +- +-# from to module cost +-alias ISO2022CNEXT// ISO-2022-CN-EXT// +-module ISO-2022-CN-EXT// INTERNAL ISO-2022-CN-EXT 1 +-module INTERNAL ISO-2022-CN-EXT// ISO-2022-CN-EXT 1 +- +-# from to module cost +-alias MAC// MACINTOSH// +-alias CSMACINTOSH// MACINTOSH// +-module MACINTOSH// INTERNAL MACINTOSH 1 +-module INTERNAL MACINTOSH// MACINTOSH 1 +- +-# from to module cost +-alias ISO-IR-143// IEC_P27-1// +-alias CSISO143IECP271// IEC_P27-1// +-alias IEC_P271// IEC_P27-1// +-module IEC_P27-1// INTERNAL IEC_P27-1 1 +-module INTERNAL IEC_P27-1// IEC_P27-1 1 +- +-# from to module cost +-alias ISO_9036// ASMO_449// +-alias ARABIC7// ASMO_449// +-alias ISO-IR-89// ASMO_449// +-alias CSISO89ASMO449// ASMO_449// +-module ASMO_449// INTERNAL ASMO_449 1 +-module INTERNAL ASMO_449// ASMO_449 1 +- + # from to module cost + alias ANSI_X3.110-1983// ANSI_X3.110// + alias ISO-IR-99// ANSI_X3.110// +@@ -1319,181 +74,6 @@ alias CSISO99NAPLPS// ANSI_X3.110// + module ANSI_X3.110// INTERNAL ANSI_X3.110 1 + module INTERNAL ANSI_X3.110// ANSI_X3.110 1 + +-# from to module cost +-alias ISO-IR-139// CSN_369103// +-alias CSISO139CSN369103// CSN_369103// +-module CSN_369103// INTERNAL CSN_369103 1 +-module INTERNAL CSN_369103// CSN_369103 1 +- +-# from to module cost +-alias CWI-2// CWI// +-alias CP-HU// CWI// +-module CWI// INTERNAL CWI 1 +-module INTERNAL CWI// CWI 1 +- +-# from to module cost +-alias DEC// DEC-MCS// +-alias CSDECMCS// DEC-MCS// +-alias DECMCS// DEC-MCS// +-module DEC-MCS// INTERNAL DEC-MCS 1 +-module INTERNAL DEC-MCS// DEC-MCS 1 +- +-# from to module cost +-alias ISO-IR-111// ECMA-CYRILLIC// +-alias CSISO111ECMACYRILLIC// ECMA-CYRILLIC// +-alias ECMACYRILLIC// ECMA-CYRILLIC// +-module ECMA-CYRILLIC// INTERNAL ECMA-CYRILLIC 1 +-module INTERNAL ECMA-CYRILLIC// ECMA-CYRILLIC 1 +- +-# from to module cost +-alias ST_SEV_358-88// GOST_19768-74// +-alias GOST_19768// GOST_19768-74// +-alias ISO-IR-153// GOST_19768-74// +-alias CSISO153GOST1976874// GOST_19768-74// +-alias GOST_1976874// GOST_19768-74// +-module GOST_19768-74// INTERNAL GOST_19768-74 1 +-module INTERNAL GOST_19768-74// GOST_19768-74 1 +- +-# from to module cost +-alias ISO-IR-150// GREEK-CCITT// +-alias CSISO150// GREEK-CCITT// +-alias CSISO150GREEKCCITT// GREEK-CCITT// +-alias GREEKCCITT// GREEK-CCITT// +-module GREEK-CCITT// INTERNAL GREEK-CCITT 1 +-module INTERNAL GREEK-CCITT// GREEK-CCITT 1 +- +-# from to module cost +-alias ISO-IR-88// GREEK7// +-alias CSISO88GREEK7// GREEK7// +-module GREEK7// INTERNAL GREEK7 1 +-module INTERNAL GREEK7// GREEK7 1 +- +-# from to module cost +-alias ISO-IR-18// GREEK7-OLD// +-alias CSISO18GREEK7OLD// GREEK7-OLD// +-alias GREEK7OLD// GREEK7-OLD// +-module GREEK7-OLD// INTERNAL GREEK7-OLD 1 +-module INTERNAL GREEK7-OLD// GREEK7-OLD 1 +- +-# from to module cost +-alias ISO-IR-49// INIS// +-alias CSISO49INIS// INIS// +-module INIS// INTERNAL INIS 1 +-module INTERNAL INIS// INIS 1 +- +-# from to module cost +-alias ISO-IR-50// INIS-8// +-alias CSISO50INIS8// INIS-8// +-alias INIS8// INIS-8// +-module INIS-8// INTERNAL INIS-8 1 +-module INTERNAL INIS-8// INIS-8 1 +- +-# from to module cost +-alias ISO-IR-51// INIS-CYRILLIC// +-alias CSISO51INISCYRILLIC// INIS-CYRILLIC// +-alias INISCYRILLIC// INIS-CYRILLIC// +-module INIS-CYRILLIC// INTERNAL INIS-CYRILLIC 1 +-module INTERNAL INIS-CYRILLIC// INIS-CYRILLIC 1 +- +-# from to module cost +-alias ISO-IR-98// ISO_2033// +-alias ISO_2033-1983// ISO_2033// +-alias E13B// ISO_2033// +-alias CSISO2033// ISO_2033// +-module ISO_2033// INTERNAL ISO_2033 1 +-module INTERNAL ISO_2033// ISO_2033 1 +- +-# from to module cost +-alias ISO-IR-37// ISO_5427// +-alias KOI-7// ISO_5427// +-alias CSISO5427CYRILLIC// ISO_5427// +-module ISO_5427// INTERNAL ISO_5427 1 +-module INTERNAL ISO_5427// ISO_5427 1 +- +-# from to module cost +-alias ISO-IR-54// ISO_5427-EXT// +-alias ISO_5427:1981// ISO_5427-EXT// +-alias CSISO5427CYRILLIC1981// ISO_5427-EXT// +-alias ISO_5427EXT// ISO_5427-EXT// +-module ISO_5427-EXT// INTERNAL ISO_5427-EXT 1 +-module INTERNAL ISO_5427-EXT// ISO_5427-EXT 1 +- +-# from to module cost +-alias ISO-IR-55// ISO_5428// +-alias ISO_5428:1980// ISO_5428// +-alias CSISO5428GREEK// ISO_5428// +-module ISO_5428// INTERNAL ISO_5428 1 +-module INTERNAL ISO_5428// ISO_5428 1 +- +-# from to module cost +-alias ISO-IR-155// ISO_10367-BOX// +-alias CSISO10367BOX// ISO_10367-BOX// +-alias ISO_10367BOX// ISO_10367-BOX// +-module ISO_10367-BOX// INTERNAL ISO_10367-BOX 1 +-module INTERNAL ISO_10367-BOX// ISO_10367-BOX 1 +- +-# from to module cost +-alias MACIS// MAC-IS// +-module MAC-IS// INTERNAL MAC-IS 1 +-module INTERNAL MAC-IS// MAC-IS 1 +- +-# from to module cost +-alias MACUK// MAC-UK// +-alias MACUKRAINIAN// MAC-UK// +-alias MAC-CYRILLIC// MAC-UK// +-alias MACCYRILLIC// MAC-UK// +-module MAC-UK// INTERNAL MAC-UK 1 +-module INTERNAL MAC-UK// MAC-UK 1 +- +-# from to module cost +-alias MS-MAC-CYRILLIC// CP10007// +-alias MSMACCYRILLIC// CP10007// +-module CP10007// INTERNAL CP10007 1 +-module INTERNAL CP10007// CP10007 1 +- +-# from to module cost +-alias ISO-IR-9-1// NATS-DANO// +-alias CSNATSDANO// NATS-DANO// +-alias NATSDANO// NATS-DANO// +-module NATS-DANO// INTERNAL NATS-DANO 1 +-module INTERNAL NATS-DANO// NATS-DANO 1 +- +-# from to module cost +-alias ISO-IR-8-1// NATS-SEFI// +-alias CSNATSSEFI// NATS-SEFI// +-alias NATSSEFI// NATS-SEFI// +-module NATS-SEFI// INTERNAL NATS-SEFI 1 +-module INTERNAL NATS-SEFI// NATS-SEFI 1 +- +-# from to module cost +-alias WS2// WIN-SAMI-2// +-alias WINSAMI2// WIN-SAMI-2// +-module WIN-SAMI-2// INTERNAL SAMI-WS2 1 +-module INTERNAL WIN-SAMI-2// SAMI-WS2 1 +- +-# from to module cost +-module ISO-IR-197// INTERNAL ISO-IR-197 1 +-module INTERNAL ISO-IR-197// ISO-IR-197 1 +- +-# from to module cost +-alias TIS620// TIS-620// +-alias TIS620-0// TIS-620// +-alias TIS620.2529-1// TIS-620// +-alias TIS620.2533-0// TIS-620// +-alias ISO-IR-166// TIS-620// +-module TIS-620// INTERNAL TIS-620 1 +-module INTERNAL TIS-620// TIS-620 1 +- +-# from to module cost +-alias KOI8U// KOI8-U// +-module KOI8-U// INTERNAL KOI8-U 1 +-module INTERNAL KOI8-U// KOI8-U 1 +- +-# from to module cost +-alias ISIRI3342// ISIRI-3342// +-module ISIRI-3342// INTERNAL ISIRI-3342 1 +-module INTERNAL ISIRI-3342// ISIRI-3342 1 +- + # from to module cost + alias UTF16// UTF-16// + module UTF-16// INTERNAL UTF-16 1 +@@ -1534,442 +114,5 @@ alias UTF7// UTF-7// + module UTF-7// INTERNAL UTF-7 1 + module INTERNAL UTF-7// UTF-7 1 + +-# from to module cost +-module GB18030// INTERNAL GB18030 1 +-module INTERNAL GB18030// GB18030 1 +- +-# from to module cost +-module VISCII// INTERNAL VISCII 1 +-module INTERNAL VISCII// VISCII 1 +- +-# from to module cost +-module KOI8-T// INTERNAL KOI8-T 1 +-module INTERNAL KOI8-T// KOI8-T 1 +- +-# from to module cost +-module GEORGIAN-PS// INTERNAL GEORGIAN-PS 1 +-module INTERNAL GEORGIAN-PS// GEORGIAN-PS 1 +- +-# from to module cost +-module GEORGIAN-ACADEMY// INTERNAL GEORGIAN-ACADEMY 1 +-module INTERNAL GEORGIAN-ACADEMY// GEORGIAN-ACADEMY 1 +- +-# from to module cost +-module ISO-IR-209// INTERNAL ISO-IR-209 1 +-module INTERNAL ISO-IR-209// ISO-IR-209 1 +- +-# from to module cost +-module MAC-SAMI// INTERNAL MAC-SAMI 1 +-module INTERNAL MAC-SAMI// MAC-SAMI 1 +- +-# from to module cost +-alias ARMSCII8// ARMSCII-8// +-module ARMSCII-8// INTERNAL ARMSCII-8 1 +-module INTERNAL ARMSCII-8// ARMSCII-8 1 +- +-# from to module cost +-alias TCVN// TCVN5712-1// +-alias TCVN-5712// TCVN5712-1// +-alias TCVN5712-1:1993// TCVN5712-1// +-module TCVN5712-1// INTERNAL TCVN5712-1 1 +-module INTERNAL TCVN5712-1// TCVN5712-1 1 +- +-# from to module cost +-module EUC-JISX0213// INTERNAL EUC-JISX0213 1 +-module INTERNAL EUC-JISX0213// EUC-JISX0213 1 +- +-# from to module cost +-alias ShiftJISX0213// Shift_JISX0213// +-module Shift_JISX0213// INTERNAL SHIFT_JISX0213 1 +-module INTERNAL Shift_JISX0213// SHIFT_JISX0213 1 +- +-# from to module cost +-module TSCII// INTERNAL TSCII 1 +-module INTERNAL TSCII// TSCII 1 +- +-# from to module cost +-module PT154// INTERNAL PT154 1 +-module INTERNAL PT154// PT154 1 +- +-# from to module cost +-alias STRK1048-2002// RK1048// +-module RK1048// INTERNAL RK1048 1 +-module INTERNAL RK1048// RK1048 1 +- +-# from to module cost +-alias IBM-1025// IBM1025// +-alias CP1025// IBM1025// +-alias CSIBM1025// IBM1025// +-module IBM1025// INTERNAL IBM1025 1 +-module INTERNAL IBM1025// IBM1025 1 +- +-# from to module cost +-alias IBM-1122// IBM1122// +-alias CP1122// IBM1122// +-alias CSIBM1122// IBM1122// +-module IBM1122// INTERNAL IBM1122 1 +-module INTERNAL IBM1122// IBM1122 1 +- +-# from to module cost +-alias IBM-1137// IBM1137// +-alias CP1137// IBM1137// +-alias CSIBM1137// IBM1137// +-module IBM1137// INTERNAL IBM1137 1 +-module INTERNAL IBM1137// IBM1137 1 +- +-# from to module cost +-alias IBM-1153// IBM1153// +-alias CP1153// IBM1153// +-alias CSIBM1153// IBM1153// +-module IBM1153// INTERNAL IBM1153 1 +-module INTERNAL IBM1153// IBM1153 1 +- +-# from to module cost +-alias IBM-1154// IBM1154// +-alias CP1154// IBM1154// +-alias CSIBM1154// IBM1154// +-module IBM1154// INTERNAL IBM1154 1 +-module INTERNAL IBM1154// IBM1154 1 +- +-# from to module cost +-alias IBM-1155// IBM1155// +-alias CP1155// IBM1155// +-alias CSIBM1155// IBM1155// +-module IBM1155// INTERNAL IBM1155 1 +-module INTERNAL IBM1155// IBM1155 1 +- +-# from to module cost +-alias IBM-1156// IBM1156// +-alias CP1156// IBM1156// +-alias CSIBM1156// IBM1156// +-module IBM1156// INTERNAL IBM1156 1 +-module INTERNAL IBM1156// IBM1156 1 +- +-# from to module cost +-alias IBM-1157// IBM1157// +-alias CP1157// IBM1157// +-alias CSIBM1157// IBM1157// +-module IBM1157// INTERNAL IBM1157 1 +-module INTERNAL IBM1157// IBM1157 1 +- +-# from to module cost +-alias IBM-1158// IBM1158// +-alias CP1158// IBM1158// +-alias CSIBM1158// IBM1158// +-module IBM1158// INTERNAL IBM1158 1 +-module INTERNAL IBM1158// IBM1158 1 +- +-# from to module cost +-alias IBM-803// IBM803// +-alias CP803// IBM803// +-alias CSIBM803// IBM803// +-module IBM803// INTERNAL IBM803 1 +-module INTERNAL IBM803// IBM803 1 +- +-# from to module cost +-alias IBM-901// IBM901// +-alias CP901// IBM901// +-alias CSIBM901// IBM901// +-module IBM901// INTERNAL IBM901 1 +-module INTERNAL IBM901// IBM901 1 +- +-# from to module cost +-alias IBM-902// IBM902// +-alias CP902// IBM902// +-alias CSIBM902// IBM902// +-module IBM902// INTERNAL IBM902 1 +-module INTERNAL IBM902// IBM902 1 +- +-# from to module cost +-alias IBM-921// IBM921// +-alias CP921// IBM921// +-alias CSIBM921// IBM921// +-module IBM921// INTERNAL IBM921 1 +-module INTERNAL IBM921// IBM921 1 +- +-# from to module cost +-alias IBM-1008// IBM1008// +-alias CP1008// IBM1008// +-alias CSIBM1008// IBM1008// +-module IBM1008// INTERNAL IBM1008 1 +-module INTERNAL IBM1008// IBM1008 1 +- +-# from to module cost +-module IBM1008// IBM420// IBM1008_420 1 +-module IBM420// IBM1008// IBM1008_420 1 +- +-# from to module cost +-alias IBM-1097// IBM1097// +-alias CP1097// IBM1097// +-alias CSIBM1097// IBM1097// +-module IBM1097// INTERNAL IBM1097 1 +-module INTERNAL IBM1097// IBM1097 1 +- +-# from to module cost +-alias IBM-1112// IBM1112// +-alias CP1112// IBM1112// +-alias CSIBM1112// IBM1112// +-module IBM1112// INTERNAL IBM1112 1 +-module INTERNAL IBM1112// IBM1112 1 +- +-# from to module cost +-alias IBM-1123// IBM1123// +-alias CP1123// IBM1123// +-alias CSIBM1123// IBM1123// +-module IBM1123// INTERNAL IBM1123 1 +-module INTERNAL IBM1123// IBM1123 1 +- +-# from to module cost +-alias IBM-1130// IBM1130// +-alias CP1130// IBM1130// +-alias CSIBM1130// IBM1130// +-module IBM1130// INTERNAL IBM1130 1 +-module INTERNAL IBM1130// IBM1130 1 +- +-# from to module cost +-alias IBM-1140// IBM1140// +-alias CP1140// IBM1140// +-alias CSIBM1140// IBM1140// +-module IBM1140// INTERNAL IBM1140 1 +-module INTERNAL IBM1140// IBM1140 1 +- +-# from to module cost +-alias IBM-1141// IBM1141// +-alias CP1141// IBM1141// +-alias CSIBM1141// IBM1141// +-module IBM1141// INTERNAL IBM1141 1 +-module INTERNAL IBM1141// IBM1141 1 +- +-# from to module cost +-alias IBM-1142// IBM1142// +-alias CP1142// IBM1142// +-alias CSIBM1142// IBM1142// +-module IBM1142// INTERNAL IBM1142 1 +-module INTERNAL IBM1142// IBM1142 1 +- +-# from to module cost +-alias IBM-1143// IBM1143// +-alias CP1143// IBM1143// +-alias CSIBM1143// IBM1143// +-module IBM1143// INTERNAL IBM1143 1 +-module INTERNAL IBM1143// IBM1143 1 +- +-# from to module cost +-alias IBM-1144// IBM1144// +-alias CP1144// IBM1144// +-alias CSIBM1144// IBM1144// +-module IBM1144// INTERNAL IBM1144 1 +-module INTERNAL IBM1144// IBM1144 1 +- +-# from to module cost +-alias IBM-1145// IBM1145// +-alias CP1145// IBM1145// +-alias CSIBM1145// IBM1145// +-module IBM1145// INTERNAL IBM1145 1 +-module INTERNAL IBM1145// IBM1145 1 +- +-# from to module cost +-alias IBM-1146// IBM1146// +-alias CP1146// IBM1146// +-alias CSIBM1146// IBM1146// +-module IBM1146// INTERNAL IBM1146 1 +-module INTERNAL IBM1146// IBM1146 1 +- +-# from to module cost +-alias IBM-1147// IBM1147// +-alias CP1147// IBM1147// +-alias CSIBM1147// IBM1147// +-module IBM1147// INTERNAL IBM1147 1 +-module INTERNAL IBM1147// IBM1147 1 +- +-# from to module cost +-alias IBM-1148// IBM1148// +-alias CP1148// IBM1148// +-alias CSIBM1148// IBM1148// +-module IBM1148// INTERNAL IBM1148 1 +-module INTERNAL IBM1148// IBM1148 1 +- +-# from to module cost +-alias IBM-1149// IBM1149// +-alias CP1149// IBM1149// +-alias CSIBM1149// IBM1149// +-module IBM1149// INTERNAL IBM1149 1 +-module INTERNAL IBM1149// IBM1149 1 +- +-# from to module cost +-alias IBM-1166// IBM1166// +-alias CP1166// IBM1166// +-alias CSIBM1166// IBM1166// +-module IBM1166// INTERNAL IBM1166 1 +-module INTERNAL IBM1166// IBM1166 1 +- +-# from to module cost +-alias IBM-1167// IBM1167// +-alias CP1167// IBM1167// +-alias CSIBM1167// IBM1167// +-module IBM1167// INTERNAL IBM1167 1 +-module INTERNAL IBM1167// IBM1167 1 +- +-# from to module cost +-alias IBM-4517// IBM4517// +-alias CP4517// IBM4517// +-alias CSIBM4517// IBM4517// +-module IBM4517// INTERNAL IBM4517 1 +-module INTERNAL IBM4517// IBM4517 1 +- +-# from to module cost +-alias IBM-4899// IBM4899// +-alias CP4899// IBM4899// +-alias CSIBM4899// IBM4899// +-module IBM4899// INTERNAL IBM4899 1 +-module INTERNAL IBM4899// IBM4899 1 +- +-# from to module cost +-alias IBM-4909// IBM4909// +-alias CP4909// IBM4909// +-alias CSIBM4909// IBM4909// +-module IBM4909// INTERNAL IBM4909 1 +-module INTERNAL IBM4909// IBM4909 1 +- +-# from to module cost +-alias IBM-4971// IBM4971// +-alias CP4971// IBM4971// +-alias CSIBM4971// IBM4971// +-module IBM4971// INTERNAL IBM4971 1 +-module INTERNAL IBM4971// IBM4971 1 +- +-# from to module cost +-alias IBM-5347// IBM5347// +-alias CP5347// IBM5347// +-alias CSIBM5347// IBM5347// +-module IBM5347// INTERNAL IBM5347 1 +-module INTERNAL IBM5347// IBM5347 1 +- +-# from to module cost +-alias IBM-9030// IBM9030// +-alias CP9030// IBM9030// +-alias CSIBM9030// IBM9030// +-module IBM9030// INTERNAL IBM9030 1 +-module INTERNAL IBM9030// IBM9030 1 +- +-# from to module cost +-alias IBM-9066// IBM9066// +-alias CP9066// IBM9066// +-alias CSIBM9066// IBM9066// +-module IBM9066// INTERNAL IBM9066 1 +-module INTERNAL IBM9066// IBM9066 1 +- +-# from to module cost +-alias IBM-9448// IBM9448// +-alias CP9448// IBM9448// +-alias CSIBM9448// IBM9448// +-module IBM9448// INTERNAL IBM9448 1 +-module INTERNAL IBM9448// IBM9448 1 +- +-# from to module cost +-alias IBM-12712// IBM12712// +-alias CP12712// IBM12712// +-alias CSIBM12712// IBM12712// +-module IBM12712// INTERNAL IBM12712 1 +-module INTERNAL IBM12712// IBM12712 1 +- +-# from to module cost +-alias IBM-16804// IBM16804// +-alias CP16804// IBM16804// +-alias CSIBM16804// IBM16804// +-module IBM16804// INTERNAL IBM16804 1 +-module INTERNAL IBM16804// IBM16804 1 +- +-# from to module cost +-alias IBM-1364// IBM1364// +-alias CP1364// IBM1364// +-alias CSIBM1364// IBM1364// +-module IBM1364// INTERNAL IBM1364 1 +-module INTERNAL IBM1364// IBM1364 1 +- +-# from to module cost +-alias IBM-1371// IBM1371// +-alias CP1371// IBM1371// +-alias CSIBM1371// IBM1371// +-module IBM1371// INTERNAL IBM1371 1 +-module INTERNAL IBM1371// IBM1371 1 +- +-# from to module cost +-alias IBM-1388// IBM1388// +-alias CP1388// IBM1388// +-alias CSIBM1388// IBM1388// +-module IBM1388// INTERNAL IBM1388 1 +-module INTERNAL IBM1388// IBM1388 1 +- +-# from to module cost +-alias IBM-1390// IBM1390// +-alias CP1390// IBM1390// +-alias CSIBM1390// IBM1390// +-module IBM1390// INTERNAL IBM1390 1 +-module INTERNAL IBM1390// IBM1390 1 +- +-# from to module cost +-alias IBM-1399// IBM1399// +-alias CP1399// IBM1399// +-alias CSIBM1399// IBM1399// +-module IBM1399// INTERNAL IBM1399 1 +-module INTERNAL IBM1399// IBM1399 1 +- +-# from to module cost +-alias ISO/TR_11548-1/ ISO_11548-1// +-alias ISO11548-1// ISO_11548-1// +-module ISO_11548-1// INTERNAL ISO_11548-1 1 +-module INTERNAL ISO_11548-1// ISO_11548-1 1 +- +-# from to module cost +-module MIK// INTERNAL MIK 1 +-module INTERNAL MIK// MIK 1 +- +-# from to module cost +-module BRF// INTERNAL BRF 1 +-module INTERNAL BRF// BRF 1 +- +-# from to module cost +-alias CP1282// MAC-CENTRALEUROPE// +-module MAC-CENTRALEUROPE// INTERNAL MAC-CENTRALEUROPE 1 +-module INTERNAL MAC-CENTRALEUROPE// MAC-CENTRALEUROPE 1 +- +-# from to module cost +-module KOI8-RU// INTERNAL KOI8-RU 1 +-module INTERNAL KOI8-RU// KOI8-RU 1 +- +-# from to module cost +-alias ISO_8859-9E// ISO-8859-9E// +-alias ISO8859-9E// ISO-8859-9E// +-alias ISO88599E// ISO-8859-9E// +-module ISO-8859-9E// INTERNAL ISO8859-9E 1 +-module INTERNAL ISO-8859-9E// ISO8859-9E 1 +- +-# from to module cost +-alias ROMAN9// HP-ROMAN9// +-alias R9// HP-ROMAN9// +-alias HPROMAN9// HP-ROMAN9// +-module HP-ROMAN9// INTERNAL HP-ROMAN9 1 +-module INTERNAL HP-ROMAN9// HP-ROMAN9 1 +- +-# from to module cost +-alias TURKISH8// HP-TURKISH8// +-alias HPTURKISH8// HP-TURKISH8// +-alias OSF10010006// HP-TURKISH8// +-module HP-TURKISH8// INTERNAL HP-TURKISH8 1 +-module INTERNAL HP-TURKISH8// HP-TURKISH8 1 +- +-# from to module cost +-alias THAI8// HP-THAI8// +-alias HPTHAI8// HP-THAI8// +-module HP-THAI8// INTERNAL HP-THAI8 1 +-module INTERNAL HP-THAI8// HP-THAI8 1 +- +-# from to module cost +-alias HPGREEK8// HP-GREEK8// +-alias OSF10010004// HP-GREEK8// +-module HP-GREEK8// INTERNAL HP-GREEK8 1 +-module INTERNAL HP-GREEK8// HP-GREEK8 1 +- + alias ISO-10646-UCS-2// UNICODE// + alias ISO-10646-UCS-2// ISO-10646/UTF8/ diff --git a/SOURCES/glibc-rh1971664-6.patch b/SOURCES/glibc-rh1971664-6.patch new file mode 100644 index 0000000..b0d40a0 --- /dev/null +++ b/SOURCES/glibc-rh1971664-6.patch @@ -0,0 +1,137 @@ +commit 06a1b794073c4d6adbfb2e4b11339985a14d7a00 +Author: Siddhesh Poyarekar +Date: Mon Jun 14 11:09:56 2021 +0530 + + Reinstate gconv-modules as the default configuration file + + Reinstate gconv-modules as the main file so that the configuration + files in gconv-modules.d/ become add-on configuration. With this, the + effective user visible change is that GCONV_PATH can now have + supplementary configuration in GCONV_PATH/gconv-modules.d/ in addition + to the main GCONV_PATH/gconv-modules file. + +# Conflicts: +# iconvdata/Makefile + +diff --git a/iconvdata/Makefile b/iconvdata/Makefile +index d682a98b5c4a8003..95e5fb8f722a513b 100644 +--- a/iconvdata/Makefile ++++ b/iconvdata/Makefile +@@ -136,13 +136,12 @@ charmaps = ../localedata/charmaps + extra-modules-left := $(modules) + include extra-module.mk + +-gconv-modules = gconv-modules.conf gconv-modules-extra.conf ++gconv-modules = gconv-modules gconv-modules.d/gconv-modules-extra.conf + modpfx = $(objpfx)gconv-modules.d/ + + extra-objs += $(modules.so) + install-others = $(addprefix $(inst_gconvdir)/, $(modules.so)) \ +- $(addprefix $(inst_gconvdir)/gconv-modules.d/, \ +- $(gconv-modules)) ++ $(addprefix $(inst_gconvdir)/, $(gconv-modules)) + + # We can build the conversion tables for numerous charsets automatically. + +@@ -184,7 +183,7 @@ generated += $(generated-modules:=.h) $(generated-modules:=.stmp) \ + iconv-test.out iconv-rules tst-loading.mtrace \ + mtrace-tst-loading.out tst-tables.out iconv-test.xxx + ifdef objpfx +-generated += $(addprefix gconv-modules.d/,$(gconv-modules)) ++generated += $(gconv-modules) + endif + + # Rules to generate the headers. +@@ -252,8 +251,8 @@ headers: $(addprefix $(objpfx), $(generated-modules:=.h)) + $(addprefix $(inst_gconvdir)/, $(modules.so)): \ + $(inst_gconvdir)/%: $(objpfx)% $(+force) + $(do-install-program) +-$(addprefix $(inst_gconvdir)/gconv-modules.d/, $(gconv-modules)): \ +- $(inst_gconvdir)/gconv-modules.d/%: $(modpfx)% $(+force) ++$(addprefix $(inst_gconvdir)/, $(gconv-modules)): \ ++ $(inst_gconvdir)/%: $(objpfx)% $(+force) + $(do-install) + ifeq (no,$(cross-compiling)) + # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary +@@ -301,30 +300,30 @@ $(objpfx)mtrace-tst-loading.out: $(objpfx)tst-loading.out + $(common-objpfx)malloc/mtrace $(objpfx)tst-loading.mtrace > $@; \ + $(evaluate-test) + +-$(objpfx)bug-iconv1.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv1.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv2.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv2.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) + $(objpfx)bug-iconv3: $(libdl) +-$(objpfx)bug-iconv3.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv3.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv5.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv5.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)tst-loading.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)tst-loading.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)tst-iconv4.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)tst-iconv4.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)tst-iconv7.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)tst-iconv7.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv10.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv10.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv12.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv12.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) +-$(objpfx)bug-iconv14.out: $(addprefix $(modpfx), $(gconv-modules)) \ ++$(objpfx)bug-iconv14.out: $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) + + $(objpfx)iconv-test.out: run-iconv-test.sh \ +- $(addprefix $(modpfx), $(gconv-modules)) \ ++ $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) \ + $(common-objdir)/iconv/iconv_prog TESTS + iconv_modules="$(modules)" \ +@@ -333,7 +332,7 @@ $(objpfx)iconv-test.out: run-iconv-test.sh \ + $(evaluate-test) + + $(objpfx)tst-tables.out: tst-tables.sh \ +- $(addprefix $(modpfx), $(gconv-modules)) \ ++ $(addprefix $(objpfx), $(gconv-modules)) \ + $(addprefix $(objpfx),$(modules.so)) \ + $(objpfx)tst-table-from $(objpfx)tst-table-to + $(SHELL) $< $(common-objpfx) $(common-objpfx)iconvdata/ \ +@@ -351,3 +350,6 @@ $(modpfx): + + $(modpfx)%: % $(modpfx) + cp $< $@ ++ ++$(objpfx)gconv-modules: gconv-modules ++ cp $^ $@ +diff --git a/iconvdata/gconv-modules.conf b/iconvdata/gconv-modules +similarity index 100% +rename from iconvdata/gconv-modules.conf +rename to iconvdata/gconv-modules +diff --git a/localedata/Makefile b/localedata/Makefile +index a5ca7a31f43d50c3..14fcc37fed21e740 100644 +--- a/localedata/Makefile ++++ b/localedata/Makefile +@@ -179,7 +179,7 @@ install-others := $(addprefix $(inst_i18ndir)/, \ + $(locales)) + endif + +-tests: $(objdir)/iconvdata/gconv-modules.d/gconv-modules.conf ++tests: $(objdir)/iconvdata/gconv-modules + + tests-static += tst-langinfo-newlocale-static tst-langinfo-setlocale-static + +@@ -442,5 +442,5 @@ $(objpfx)mtrace-tst-leaks.out: $(objpfx)tst-leaks.out + bug-setlocale1-ENV-only = LOCPATH=$(objpfx) LC_CTYPE=de_DE.UTF-8 + bug-setlocale1-static-ENV-only = $(bug-setlocale1-ENV-only) + +-$(objdir)/iconvdata/gconv-modules.d/gconv-modules.conf: ++$(objdir)/iconvdata/gconv-modules: + $(MAKE) -C ../iconvdata subdir=iconvdata $@ diff --git a/SOURCES/glibc-rh1971664-7.patch b/SOURCES/glibc-rh1971664-7.patch new file mode 100644 index 0000000..f7c4dd8 --- /dev/null +++ b/SOURCES/glibc-rh1971664-7.patch @@ -0,0 +1,107 @@ +commit e3217c7fd9e67aa2d53700bb1da9a966e73b9684 +Author: Siddhesh Poyarekar +Date: Thu Jun 10 00:41:35 2021 +0530 + + iconv: Remove alloca use in gconv-modules configuration parsing + + The alloca sizes ought to be constrained to PATH_MAX, but replace them + with dynamic allocation to be safe. A static PATH_MAX array would + have worked too but Hurd does not have PATH_MAX and the code path is + not hot enough to micro-optimise this allocation. Revisit if any of + those realities change. + + Reviewed-by: DJ Delorie + +diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c +index 8eb981fca7cee36a..3099bf192adce711 100644 +--- a/iconv/gconv_conf.c ++++ b/iconv/gconv_conf.c +@@ -557,15 +557,15 @@ __gconv_read_conf (void) + + for (cnt = 0; __gconv_path_elem[cnt].name != NULL; ++cnt) + { +-#define BUF_LEN elem_len + sizeof (gconv_conf_dirname) +- + const char *elem = __gconv_path_elem[cnt].name; + size_t elem_len = __gconv_path_elem[cnt].len; +- char *buf; + + /* No slash needs to be inserted between elem and gconv_conf_filename; + elem already ends in a slash. */ +- buf = alloca (BUF_LEN); ++ char *buf = malloc (elem_len + sizeof (gconv_conf_dirname)); ++ if (buf == NULL) ++ continue; ++ + char *cp = __mempcpy (__mempcpy (buf, elem, elem_len), + gconv_conf_filename, sizeof (gconv_conf_filename)); + +@@ -594,15 +594,16 @@ __gconv_read_conf (void) + if (len > strlen (suffix) + && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) + { +- /* LEN <= PATH_MAX so this alloca is not unbounded. */ +- char *conf = alloca (BUF_LEN + len + 1); +- cp = stpcpy (conf, buf); +- sprintf (cp, "/%s", ent->d_name); ++ char *conf; ++ if (__asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) ++ continue; + read_conf_file (conf, elem, elem_len, &modules, &nmodules); ++ free (conf); + } + } + __closedir (confdir); + } ++ free (buf); + } + #endif + +diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c +index fafc686ae25fb5c1..2f9d5f45ad3a8159 100644 +--- a/iconv/iconvconfig.c ++++ b/iconv/iconvconfig.c +@@ -712,7 +712,6 @@ handle_file (const char *dir, const char *infile) + static int + handle_dir (const char *dir) + { +-#define BUF_LEN prefix_len + dirlen + sizeof "gconv-modules.d" + char *cp; + size_t dirlen = strlen (dir); + bool found = false; +@@ -726,7 +725,10 @@ handle_dir (const char *dir) + } + + /* First, look for a gconv-modules file. */ +- char buf[BUF_LEN]; ++ char *buf = malloc (prefix_len + dirlen + sizeof "gconv-modules.d"); ++ if (buf == NULL) ++ goto out; ++ + cp = buf; + if (dir[0] == '/') + cp = mempcpy (cp, prefix, prefix_len); +@@ -756,16 +758,19 @@ handle_dir (const char *dir) + if (len > strlen (suffix) + && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) + { +- /* LEN <= PATH_MAX so this alloca is not unbounded. */ +- char *conf = alloca (BUF_LEN + len + 1); +- cp = stpcpy (conf, buf); +- sprintf (cp, "/%s", ent->d_name); ++ char *conf; ++ if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) ++ continue; + found |= handle_file (dir, conf); ++ free (conf); + } + } + closedir (confdir); + } + ++ free (buf); ++ ++out: + if (!found) + { + error (0, errno, "failed to open gconv configuration files in `%s'", diff --git a/SOURCES/glibc-rh1971664-8.patch b/SOURCES/glibc-rh1971664-8.patch new file mode 100644 index 0000000..ec11f7b --- /dev/null +++ b/SOURCES/glibc-rh1971664-8.patch @@ -0,0 +1,113 @@ +commit 23e15ea1ae80ec2120afdf643691359644cf2873 +Author: Siddhesh Poyarekar +Date: Thu Jun 10 09:51:50 2021 +0530 + + gconv_conf: Remove unused variables + + The modules and nmodules parameters passed to add_modules, add_alias, + etc. are not used and are hence unnecessary. Remove them so that + their signatures match the functions in iconvconfig. + + Reviewed-by: DJ Delorie + Reviewed-by: Andreas Schwab + +diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c +index 3099bf192adce711..dc12ce24844474cc 100644 +--- a/iconv/gconv_conf.c ++++ b/iconv/gconv_conf.c +@@ -125,7 +125,7 @@ detect_conflict (const char *alias) + + /* The actual code to add aliases. */ + static void +-add_alias2 (const char *from, const char *to, const char *wp, void *modules) ++add_alias2 (const char *from, const char *to, const char *wp) + { + /* Test whether this alias conflicts with any available module. */ + if (detect_conflict (from)) +@@ -154,7 +154,7 @@ add_alias2 (const char *from, const char *to, const char *wp, void *modules) + + /* Add new alias. */ + static void +-add_alias (char *rp, void *modules) ++add_alias (char *rp) + { + /* We now expect two more string. The strings are normalized + (converted to UPPER case) and strored in the alias database. */ +@@ -179,7 +179,7 @@ add_alias (char *rp, void *modules) + return; + *wp++ = '\0'; + +- add_alias2 (from, to, wp, modules); ++ add_alias2 (from, to, wp); + } + + +@@ -243,8 +243,7 @@ insert_module (struct gconv_module *newp, int tobefreed) + + /* Add new module. */ + static void +-add_module (char *rp, const char *directory, size_t dir_len, void **modules, +- size_t *nmodules, int modcounter) ++add_module (char *rp, const char *directory, size_t dir_len, int modcounter) + { + /* We expect now + 1. `from' name +@@ -357,8 +356,7 @@ add_module (char *rp, const char *directory, size_t dir_len, void **modules, + + /* Read the next configuration file. */ + static void +-read_conf_file (const char *filename, const char *directory, size_t dir_len, +- void **modules, size_t *nmodules) ++read_conf_file (const char *filename, const char *directory, size_t dir_len) + { + /* Note the file is opened with cancellation in the I/O functions + disabled. */ +@@ -408,10 +406,10 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len, + + if (rp - word == sizeof ("alias") - 1 + && memcmp (word, "alias", sizeof ("alias") - 1) == 0) +- add_alias (rp, *modules); ++ add_alias (rp); + else if (rp - word == sizeof ("module") - 1 + && memcmp (word, "module", sizeof ("module") - 1) == 0) +- add_module (rp, directory, dir_len, modules, nmodules, modcounter++); ++ add_module (rp, directory, dir_len, modcounter++); + /* else */ + /* Otherwise ignore the line. */ + } +@@ -537,8 +535,6 @@ void + attribute_hidden + __gconv_read_conf (void) + { +- void *modules = NULL; +- size_t nmodules = 0; + int save_errno = errno; + size_t cnt; + +@@ -570,7 +566,7 @@ __gconv_read_conf (void) + gconv_conf_filename, sizeof (gconv_conf_filename)); + + /* Read the gconv-modules configuration file first. */ +- read_conf_file (buf, elem, elem_len, &modules, &nmodules); ++ read_conf_file (buf, elem, elem_len); + + /* Next, see if there is a gconv-modules.d directory containing + configuration files and if it is non-empty. */ +@@ -597,7 +593,7 @@ __gconv_read_conf (void) + char *conf; + if (__asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) + continue; +- read_conf_file (conf, elem, elem_len, &modules, &nmodules); ++ read_conf_file (conf, elem, elem_len); + free (conf); + } + } +@@ -631,7 +627,7 @@ __gconv_read_conf (void) + const char *to = __rawmemchr (from, '\0') + 1; + cp = __rawmemchr (to, '\0') + 1; + +- add_alias2 (from, to, cp, modules); ++ add_alias2 (from, to, cp); + } + while (*cp != '\0'); + diff --git a/SOURCES/glibc-rh1971664-9.patch b/SOURCES/glibc-rh1971664-9.patch new file mode 100644 index 0000000..c1c1369 --- /dev/null +++ b/SOURCES/glibc-rh1971664-9.patch @@ -0,0 +1,360 @@ +commit d8e8097f3be5b3c49fc741fa19e1da0b0431384c +Author: Siddhesh Poyarekar +Date: Thu Jun 10 14:07:27 2021 +0530 + + gconv_conf: Split out configuration file processing + + Split configuration file processing into a separate header file and + include it. Macroize all calls that need to go through internal + interfaces so that iconvconfig can also use them. + + Reviewed-by: DJ Delorie + +# Conflicts: +# iconv/gconv_conf.c + +diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c +index dc12ce24844474cc..ce64faa928dc1c52 100644 +--- a/iconv/gconv_conf.c ++++ b/iconv/gconv_conf.c +@@ -19,7 +19,6 @@ + + #include + #include +-#include + #include + #include + #include +@@ -31,11 +30,10 @@ + #include + #include + #include +-#include + + #include + #include +- ++#include + + /* This is the default path where we look for module lists. */ + static const char default_gconv_path[] = GCONV_PATH; +@@ -49,11 +47,6 @@ size_t __gconv_max_path_elem_len; + /* We use the following struct if we couldn't allocate memory. */ + static const struct path_elem empty_path_elem = { NULL, 0 }; + +-/* Name of the file containing the module information in the directories +- along the path. */ +-static const char gconv_conf_filename[] = "gconv-modules"; +-static const char gconv_conf_dirname[] = "gconv-modules.d"; +- + /* Filename extension for the modules. */ + #ifndef MODULE_EXT + # define MODULE_EXT ".so" +@@ -92,9 +85,6 @@ static const char builtin_aliases[] = + #undef BUILTIN_ALIAS + }; + +-#include +-#define __getdelim(line, len, c, fp) _IO_getdelim (line, len, c, fp) +- + + /* Value of the GCONV_PATH environment variable. */ + const char *__gconv_path_envvar; +@@ -354,72 +344,6 @@ add_module (char *rp, const char *directory, size_t dir_len, int modcounter) + } + + +-/* Read the next configuration file. */ +-static void +-read_conf_file (const char *filename, const char *directory, size_t dir_len) +-{ +- /* Note the file is opened with cancellation in the I/O functions +- disabled. */ +- FILE *fp = fopen (filename, "rce"); +- char *line = NULL; +- size_t line_len = 0; +- static int modcounter; +- +- /* Don't complain if a file is not present or readable, simply silently +- ignore it. */ +- if (fp == NULL) +- return; +- +- /* No threads reading from this stream. */ +- __fsetlocking (fp, FSETLOCKING_BYCALLER); +- +- /* Process the known entries of the file. Comments start with `#' and +- end with the end of the line. Empty lines are ignored. */ +- while (!__feof_unlocked (fp)) +- { +- char *rp, *endp, *word; +- ssize_t n = __getdelim (&line, &line_len, '\n', fp); +- if (n < 0) +- /* An error occurred. */ +- break; +- +- rp = line; +- /* Terminate the line (excluding comments or newline) by an NUL byte +- to simplify the following code. */ +- endp = strchr (rp, '#'); +- if (endp != NULL) +- *endp = '\0'; +- else +- if (rp[n - 1] == '\n') +- rp[n - 1] = '\0'; +- +- while (__isspace_l (*rp, _nl_C_locobj_ptr)) +- ++rp; +- +- /* If this is an empty line go on with the next one. */ +- if (rp == endp) +- continue; +- +- word = rp; +- while (*rp != '\0' && !__isspace_l (*rp, _nl_C_locobj_ptr)) +- ++rp; +- +- if (rp - word == sizeof ("alias") - 1 +- && memcmp (word, "alias", sizeof ("alias") - 1) == 0) +- add_alias (rp); +- else if (rp - word == sizeof ("module") - 1 +- && memcmp (word, "module", sizeof ("module") - 1) == 0) +- add_module (rp, directory, dir_len, modcounter++); +- /* else */ +- /* Otherwise ignore the line. */ +- } +- +- free (line); +- +- fclose (fp); +-} +- +- + /* Determine the directories we are looking for data in. */ + void + __gconv_get_path (void) +@@ -552,55 +476,8 @@ __gconv_read_conf (void) + __gconv_get_path (); + + for (cnt = 0; __gconv_path_elem[cnt].name != NULL; ++cnt) +- { +- const char *elem = __gconv_path_elem[cnt].name; +- size_t elem_len = __gconv_path_elem[cnt].len; +- +- /* No slash needs to be inserted between elem and gconv_conf_filename; +- elem already ends in a slash. */ +- char *buf = malloc (elem_len + sizeof (gconv_conf_dirname)); +- if (buf == NULL) +- continue; +- +- char *cp = __mempcpy (__mempcpy (buf, elem, elem_len), +- gconv_conf_filename, sizeof (gconv_conf_filename)); +- +- /* Read the gconv-modules configuration file first. */ +- read_conf_file (buf, elem, elem_len); +- +- /* Next, see if there is a gconv-modules.d directory containing +- configuration files and if it is non-empty. */ +- cp--; +- cp[0] = '.'; +- cp[1] = 'd'; +- cp[2] = '\0'; +- +- DIR *confdir = __opendir (buf); +- if (confdir != NULL) +- { +- struct dirent *ent; +- while ((ent = __readdir (confdir)) != NULL) +- { +- if (ent->d_type != DT_REG) +- continue; +- +- size_t len = strlen (ent->d_name); +- const char *suffix = ".conf"; +- +- if (len > strlen (suffix) +- && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) +- { +- char *conf; +- if (__asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) +- continue; +- read_conf_file (conf, elem, elem_len); +- free (conf); +- } +- } +- __closedir (confdir); +- } +- free (buf); +- } ++ gconv_parseconfdir (__gconv_path_elem[cnt].name, ++ __gconv_path_elem[cnt].len); + #endif + + /* Add the internal modules. */ +diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h +new file mode 100644 +index 0000000000000000..3d4d58d4be10a250 +--- /dev/null ++++ b/iconv/gconv_parseconfdir.h +@@ -0,0 +1,161 @@ ++/* Handle configuration data. ++ Copyright (C) 2021 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C 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 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C 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 GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++ ++#if IS_IN (libc) ++# include ++# define __getdelim(line, len, c, fp) _IO_getdelim (line, len, c, fp) ++ ++# undef isspace ++# define isspace(__c) __isspace_l ((__c), _nl_C_locobj_ptr) ++# define asprintf __asprintf ++# define opendir __opendir ++# define readdir __readdir ++# define closedir __closedir ++# define mempcpy __mempcpy ++#endif ++ ++/* Name of the file containing the module information in the directories ++ along the path. */ ++static const char gconv_conf_filename[] = "gconv-modules"; ++static const char gconv_conf_dirname[] = "gconv-modules.d"; ++ ++static void add_alias (char *); ++static void add_module (char *, const char *, size_t, int); ++ ++/* Read the next configuration file. */ ++static bool ++read_conf_file (const char *filename, const char *directory, size_t dir_len) ++{ ++ /* Note the file is opened with cancellation in the I/O functions ++ disabled. */ ++ FILE *fp = fopen (filename, "rce"); ++ char *line = NULL; ++ size_t line_len = 0; ++ static int modcounter; ++ ++ /* Don't complain if a file is not present or readable, simply silently ++ ignore it. */ ++ if (fp == NULL) ++ return false; ++ ++ /* No threads reading from this stream. */ ++ __fsetlocking (fp, FSETLOCKING_BYCALLER); ++ ++ /* Process the known entries of the file. Comments start with `#' and ++ end with the end of the line. Empty lines are ignored. */ ++ while (!__feof_unlocked (fp)) ++ { ++ char *rp, *endp, *word; ++ ssize_t n = __getdelim (&line, &line_len, '\n', fp); ++ if (n < 0) ++ /* An error occurred. */ ++ break; ++ ++ rp = line; ++ /* Terminate the line (excluding comments or newline) by an NUL byte ++ to simplify the following code. */ ++ endp = strchr (rp, '#'); ++ if (endp != NULL) ++ *endp = '\0'; ++ else ++ if (rp[n - 1] == '\n') ++ rp[n - 1] = '\0'; ++ ++ while (isspace (*rp)) ++ ++rp; ++ ++ /* If this is an empty line go on with the next one. */ ++ if (rp == endp) ++ continue; ++ ++ word = rp; ++ while (*rp != '\0' && !isspace (*rp)) ++ ++rp; ++ ++ if (rp - word == sizeof ("alias") - 1 ++ && memcmp (word, "alias", sizeof ("alias") - 1) == 0) ++ add_alias (rp); ++ else if (rp - word == sizeof ("module") - 1 ++ && memcmp (word, "module", sizeof ("module") - 1) == 0) ++ add_module (rp, directory, dir_len, modcounter++); ++ /* else */ ++ /* Otherwise ignore the line. */ ++ } ++ ++ free (line); ++ ++ fclose (fp); ++ return true; ++} ++ ++static __always_inline bool ++gconv_parseconfdir (const char *dir, size_t dir_len) ++{ ++ /* No slash needs to be inserted between dir and gconv_conf_filename; ++ dir already ends in a slash. */ ++ char *buf = malloc (dir_len + sizeof (gconv_conf_dirname)); ++ bool found = false; ++ ++ if (buf == NULL) ++ return false; ++ ++ char *cp = mempcpy (mempcpy (buf, dir, dir_len), gconv_conf_filename, ++ sizeof (gconv_conf_filename)); ++ ++ /* Read the gconv-modules configuration file first. */ ++ found = read_conf_file (buf, dir, dir_len); ++ ++ /* Next, see if there is a gconv-modules.d directory containing ++ configuration files and if it is non-empty. */ ++ cp--; ++ cp[0] = '.'; ++ cp[1] = 'd'; ++ cp[2] = '\0'; ++ ++ DIR *confdir = opendir (buf); ++ if (confdir != NULL) ++ { ++ struct dirent *ent; ++ while ((ent = readdir (confdir)) != NULL) ++ { ++ if (ent->d_type != DT_REG) ++ continue; ++ ++ size_t len = strlen (ent->d_name); ++ const char *suffix = ".conf"; ++ ++ if (len > strlen (suffix) ++ && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0) ++ { ++ char *conf; ++ if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0) ++ continue; ++ found |= read_conf_file (conf, dir, dir_len); ++ free (conf); ++ } ++ } ++ closedir (confdir); ++ } ++ free (buf); ++ return found; ++} diff --git a/SPECS/glibc.spec b/SPECS/glibc.spec index fbc88ac..0cecfa4 100644 --- a/SPECS/glibc.spec +++ b/SPECS/glibc.spec @@ -1,6 +1,6 @@ %define glibcsrcdir glibc-2.28 %define glibcversion 2.28 -%define glibcrelease 164%{?dist} +%define glibcrelease 166%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # @@ -85,6 +85,47 @@ # here. If the arch is not listed here then a single core debuginfo package # will be created for the architecture. %define debuginfocommonarches %{biarcharches} alpha alphaev6 + +############################################################################## +# Utility functions for pre/post scripts. Stick them at the beginning of +# any lua %pre, %post, %postun, etc. sections to have them expand into +# those scripts. It only works in lua sections and not anywhere else. +%define glibc_post_funcs() \ +-- We use lua posix.exec because there may be no shell that we can \ +-- run during glibc upgrade. We used to implement much of %%post as a \ +-- C program, but from an overall maintenance perspective the lua in \ +-- the spec file was simpler and safer given the operations required. \ +-- All lua code will be ignored by rpm-ostree; see: \ +-- https://github.com/projectatomic/rpm-ostree/pull/1869 \ +-- If we add new lua actions to the %%post code we should coordinate \ +-- with rpm-ostree and ensure that their glibc install is functional. \ +function post_exec (program, ...) \ + local pid = posix.fork () \ + if pid == 0 then \ + posix.exec (program, ...) \ + assert (nil) \ + elseif pid > 0 then \ + posix.wait (pid) \ + end \ +end \ +\ +function update_gconv_modules_cache () \ + local iconv_dir = "%{_libdir}/gconv" \ + local iconv_cache = iconv_dir .. "/gconv-modules.cache" \ + local iconv_modules = iconv_dir .. "/gconv-modules" \ + if (posix.utime (iconv_modules) == 0) then \ + if (posix.utime (iconv_cache) == 0) then \ + post_exec ("%{_prefix}/sbin/iconvconfig", \ + "-o", iconv_cache, \ + "--nostdlib", \ + iconv_dir) \ + else \ + io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n") \ + end \ + end \ +end \ +%{nil} + ############################################################################## # %%package glibc - The GNU C Library (glibc) core package. ############################################################################## @@ -719,6 +760,21 @@ Patch582: glibc-rh1966472-1.patch Patch583: glibc-rh1966472-2.patch Patch584: glibc-rh1966472-3.patch Patch585: glibc-rh1966472-4.patch +Patch586: glibc-rh1971664-1.patch +Patch587: glibc-rh1971664-2.patch +Patch588: glibc-rh1971664-3.patch +Patch589: glibc-rh1971664-4.patch +Patch590: glibc-rh1971664-5.patch +Patch591: glibc-rh1971664-6.patch +Patch592: glibc-rh1971664-7.patch +Patch593: glibc-rh1971664-8.patch +Patch594: glibc-rh1971664-9.patch +Patch595: glibc-rh1971664-10.patch +Patch596: glibc-rh1971664-11.patch +Patch597: glibc-rh1971664-12.patch +Patch598: glibc-rh1971664-13.patch +Patch599: glibc-rh1971664-14.patch +Patch600: glibc-rh1971664-15.patch ############################################################################## # Continued list of core "glibc" package information: @@ -849,6 +905,10 @@ BuildRequires: libidn2 Requires: glibc-langpack = %{version}-%{release} Suggests: glibc-all-langpacks = %{version}-%{release} +# Suggest extra gconv modules so that they are installed by default but can be +# removed if needed to build a minimal OS image. +Requires: glibc-gconv-extra%{_isa} = %{version}-%{release} + %description The glibc package contains standard libraries which are used by multiple programs on the system. In order to save disk space and @@ -1098,6 +1158,15 @@ nothing else. It is designed for assembling a minimal system. %files minimal-langpack %endif +# Infrequently used iconv converter modules. +%package gconv-extra +Summary: All iconv converter modules for %{name}. +Requires: %{name}%{_isa} = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} + +%description gconv-extra +This package contains all iconv converter modules built in %{name}. + ############################################################################## # glibc "nscd" sub-package ############################################################################## @@ -1875,6 +1944,7 @@ touch master.filelist touch glibc.filelist touch common.filelist touch utils.filelist +touch gconv.filelist touch nscd.filelist touch devel.filelist touch headers.filelist @@ -1897,10 +1967,10 @@ touch debuginfocommon.filelist find %{glibc_sysroot} \( -type f -o -type l \) \ \( \ -name etc -printf "%%%%config " -o \ - -name gconv-modules \ - -printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " -o \ - -name gconv-modules.cache \ - -printf "%%%%verify(not md5 size mtime) " \ + -name gconv-modules.cache \ + -printf "%%%%verify(not md5 size mtime) " -o \ + -name gconv-modules* \ + -printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " \ , \ ! -path "*/lib/debug/*" -printf "/%%P\n" \) # List all directories with a %%dir prefix. We omit the info directory and @@ -1952,6 +2022,7 @@ chmod 0444 master.filelist # - All bench test binaries. # - The aux-cache, since it's handled specially in the files section. # - The build-locale-archive binary since it's in the common package. +# - Extra gconv modules. We add the required modules later. cat master.filelist \ | grep -v \ -e '%{_infodir}' \ @@ -1960,6 +2031,8 @@ cat master.filelist \ -e '%{_libdir}/lib.*\.a' \ -e '%{_libdir}/.*\.o' \ -e '%{_libdir}/lib.*\.so' \ + -e '%{_libdir}/gconv/.*\.so$' \ + -e '%{_libdir}/gconv/gconv-modules.d/gconv-modules-extra\.conf$' \ -e 'nscd' \ -e '%{_prefix}/bin' \ -e '%{_prefix}/lib/locale' \ @@ -1985,6 +2058,34 @@ done grep -e "libmemusage.so" -e "libpcprofile.so" master.filelist >> glibc.filelist ############################################################################### +# glibc-gconv-extra +############################################################################### + +grep -e "gconv-modules-extra.conf" master.filelist > gconv.filelist + +# Put the essential gconv modules into the main package. +GconvBaseModules="ANSI_X3.110 ISO8859-15 ISO8859-1 CP1252" +GconvBaseModules="$GconvBaseModules UNICODE UTF-16 UTF-32 UTF-7" +%ifarch s390 s390x +GconvBaseModules="$GconvBaseModules ISO-8859-1_CP037_Z900 UTF8_UTF16_Z9" +GconvBaseModules="$GconvBaseModules UTF16_UTF32_Z9 UTF8_UTF32_Z9" +%endif +GconvAllModules=$(cat master.filelist | + sed -n 's|%{_libdir}/gconv/\(.*\)\.so|\1|p') + +# Put the base modules into glibc and the rest into glibc-gconv-extra +for conv in $GconvAllModules; do + if echo $GconvBaseModules | grep -q $conv; then + grep -E -e "%{_libdir}/gconv/$conv.so$" \ + master.filelist >> glibc.filelist + else + grep -E -e "%{_libdir}/gconv/$conv.so$" \ + master.filelist >> gconv.filelist + fi +done + + +############################################################################### # glibc-devel ############################################################################### @@ -2148,6 +2249,7 @@ find_debuginfo_args="$find_debuginfo_args \ -l nscd.filelist \ -p '.*/(sbin|libexec)/.*' \ -o debuginfocommon.filelist \ + -l gconv.filelist \ -l nss_db.filelist -l nss_hesiod.filelist \ -l libnsl.filelist -l glibc.filelist \ %if %{with benchtests} @@ -2350,17 +2452,7 @@ if rpm.vercmp(rel, required) < 0 then end %post -p --- We use lua's posix.exec because there may be no shell that we can --- run during glibc upgrade. -function post_exec (program, ...) - local pid = posix.fork () - if pid == 0 then - assert (posix.exec (program, ...)) - elseif pid > 0 then - posix.wait (pid) - end -end - +%glibc_post_funcs -- (1) Remove multilib libraries from previous installs. -- In order to support in-place upgrades, we must immediately remove -- obsolete platform directories after installing a new glibc @@ -2469,16 +2561,7 @@ post_exec ("%{_prefix}/sbin/ldconfig") -- We assume that the cache is in _libdir/gconv and called -- "gconv-modules.cache". -local iconv_dir = "%{_libdir}/gconv" -local iconv_cache = iconv_dir .. "/gconv-modules.cache" -if (posix.utime (iconv_cache) == 0) then - post_exec ("%{_prefix}/sbin/iconvconfig", - "-o", iconv_cache, - "--nostdlib", - iconv_dir) -else - io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n") -end +update_gconv_modules_cache() %posttrans all-langpacks -e -p -- If at the end of the transaction we are still installed @@ -2519,6 +2602,14 @@ if [ "$1" = 0 ]; then fi %endif +%post gconv-extra -p +%glibc_post_funcs +update_gconv_modules_cache () + +%postun gconv-extra -p +%glibc_post_funcs +update_gconv_modules_cache () + %pre -n nscd getent group nscd >/dev/null || /usr/sbin/groupadd -g 28 -r nscd getent passwd nscd >/dev/null || @@ -2551,6 +2642,7 @@ fi %dir /etc/ld.so.conf.d %dir %{_prefix}/libexec/getconf %dir %{_libdir}/gconv +%dir %{_libdir}/gconv/gconv-modules.d %dir %attr(0700,root,root) /var/cache/ldconfig %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/cache/ldconfig/aux-cache %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache @@ -2586,6 +2678,8 @@ fi %files -f utils.filelist utils +%files -f gconv.filelist gconv-extra + %files -f nscd.filelist -n nscd %config(noreplace) /etc/nscd.conf %dir %attr(0755,root,root) /var/run/nscd @@ -2631,6 +2725,12 @@ fi %files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared %changelog +* Wed Oct 13 2021 Siddhesh Poyarekar - 2.28-166 +- Fix debuginfo location for gconv-extra and make glibc Require it (#1971664). + +* Wed Oct 6 2021 Siddhesh Poyarekar - 2.28-165 +- Split extra gconv modules into a separate package (#1971664). + * Mon Aug 9 2021 Siddhesh Poyarekar - 2.28-164 - librt: fix NULL pointer dereference (#1966472).