public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/5] gconv module configuration improvements
@ 2021-06-07  8:52 Siddhesh Poyarekar
  2021-06-07  8:52 ` [PATCH 1/5] iconvconfig: Make file handling more general purpose Siddhesh Poyarekar
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  8:52 UTC (permalink / raw)
  To: libc-alpha

This patchset proposes to replace the single gconv-modules file in the
GCONV_PATH directory with a gconv-modules.d directory with configuration
files suffixed with .conf to allow a single module directory to have
multiple module configurations.

The main intent of this change is to make the installation of modules
shipped in glibc more configurable.  The change allows the glibc gconv
modules to be classified into 'minimal' and 'extra' sets wherein the former
are the most commonly used converters, e.g. UTF, ISO8859-1{,5}, etc. and
the latter set constitutes everything else.

In future, the 'extra' set could could be further subdivided and mapped
to languages, allowing finer grained control in distributions over which
modules get installed.  This has a number of advantages, chief among
them being reduction in size.  There is the secondary advantage of the
possibility of reducing attack surface by removing all 'extra' modules
since many of them are not as extensively used and hence haven't had as
much testing.

The patchset has been tested in Fedora on x86_64 and s390x.

Siddhesh Poyarekar (5):
  iconvconfig: Make file handling more general purpose
  iconvconfig: Read configuration from gconv-modules.d subdirectory
  gconv_conf: Read configuration files in gconv-modules.d
  iconvdata: Move gconv-modules configuration to gconv-modules.conf
  iconvdata: Split out non-essential gconv module configuration

 iconv/gconv_conf.c                            |  49 +++++++-
 iconv/iconvconfig.c                           | 103 ++++++++++++----
 iconvdata/Makefile                            |  46 ++++---
 ...gconv-modules => gconv-modules-extra.conf} |  83 -------------
 iconvdata/gconv-modules.conf                  | 115 ++++++++++++++++++
 localedata/Makefile                           |   4 +-
 sysdeps/s390/Makefile                         |  16 ++-
 ...{gconv-modules => gconv-modules-s390.conf} |   0
 8 files changed, 280 insertions(+), 136 deletions(-)
 rename iconvdata/{gconv-modules => gconv-modules-extra.conf} (95%)
 create mode 100644 iconvdata/gconv-modules.conf
 rename sysdeps/s390/{gconv-modules => gconv-modules-s390.conf} (100%)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 1/5] iconvconfig: Make file handling more general purpose
  2021-06-07  8:52 [PATCH 0/5] gconv module configuration improvements Siddhesh Poyarekar
@ 2021-06-07  8:52 ` Siddhesh Poyarekar
  2021-06-08 20:53   ` DJ Delorie
  2021-06-07  8:52 ` [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory Siddhesh Poyarekar
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  8:52 UTC (permalink / raw)
  To: libc-alpha

Split out configuration file handling code from handle_dir into its
own function so that it can be reused for multiple configuration
files.
---
 iconv/iconvconfig.c | 65 ++++++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 25 deletions(-)

diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c
index e04dd8a2e1..f5aba636d7 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;
 }
 
 
-- 
2.31.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory
  2021-06-07  8:52 [PATCH 0/5] gconv module configuration improvements Siddhesh Poyarekar
  2021-06-07  8:52 ` [PATCH 1/5] iconvconfig: Make file handling more general purpose Siddhesh Poyarekar
@ 2021-06-07  8:52 ` Siddhesh Poyarekar
  2021-06-07  9:06   ` Andreas Schwab
  2021-06-08 21:46   ` DJ Delorie
  2021-06-07  8:52 ` [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d Siddhesh Poyarekar
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  8:52 UTC (permalink / raw)
  To: libc-alpha

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.
---
 iconv/iconvconfig.c | 50 +++++++++++++++++++++++++++++++++++++++------
 1 file changed, 44 insertions(+), 6 deletions(-)

diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c
index f5aba636d7..b2a868919c 100644
--- a/iconv/iconvconfig.c
+++ b/iconv/iconvconfig.c
@@ -18,6 +18,7 @@
 
 #include <argp.h>
 #include <assert.h>
+#include <dirent.h>
 #include <error.h>
 #include <errno.h>
 #include <fcntl.h>
@@ -33,6 +34,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/cdefs.h>
+#include <sys/types.h>
 #include <sys/uio.h>
 
 #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;
-- 
2.31.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d
  2021-06-07  8:52 [PATCH 0/5] gconv module configuration improvements Siddhesh Poyarekar
  2021-06-07  8:52 ` [PATCH 1/5] iconvconfig: Make file handling more general purpose Siddhesh Poyarekar
  2021-06-07  8:52 ` [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory Siddhesh Poyarekar
@ 2021-06-07  8:52 ` Siddhesh Poyarekar
  2021-06-08 23:33   ` DJ Delorie
  2021-06-09  2:07   ` DJ Delorie
  2021-06-07  8:52 ` [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf Siddhesh Poyarekar
  2021-06-07  8:52 ` [PATCH 5/5] iconvdata: Split out non-essential gconv module configuration Siddhesh Poyarekar
  4 siblings, 2 replies; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  8:52 UTC (permalink / raw)
  To: libc-alpha

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.
---
 iconv/gconv_conf.c | 49 ++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 43 insertions(+), 6 deletions(-)

diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
index 682f949834..c8ad8099a4 100644
--- a/iconv/gconv_conf.c
+++ b/iconv/gconv_conf.c
@@ -19,6 +19,7 @@
 
 #include <assert.h>
 #include <ctype.h>
+#include <dirent.h>
 #include <errno.h>
 #include <limits.h>
 #include <locale.h>
@@ -30,6 +31,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/param.h>
+#include <sys/types.h>
 
 #include <libc-lock.h>
 #include <gconv_int.h>
@@ -57,6 +59,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
@@ -556,18 +559,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
 
-- 
2.31.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-07  8:52 [PATCH 0/5] gconv module configuration improvements Siddhesh Poyarekar
                   ` (2 preceding siblings ...)
  2021-06-07  8:52 ` [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d Siddhesh Poyarekar
@ 2021-06-07  8:52 ` Siddhesh Poyarekar
  2021-06-09  1:33   ` DJ Delorie
  2021-06-10 10:23   ` Andreas Schwab
  2021-06-07  8:52 ` [PATCH 5/5] iconvdata: Split out non-essential gconv module configuration Siddhesh Poyarekar
  4 siblings, 2 replies; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  8:52 UTC (permalink / raw)
  To: libc-alpha

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.
---
 iconvdata/Makefile                            | 46 +++++++++++--------
 .../{gconv-modules => gconv-modules.conf}     |  0
 localedata/Makefile                           |  4 +-
 sysdeps/s390/Makefile                         | 16 ++++++-
 ...{gconv-modules => gconv-modules-s390.conf} |  0
 5 files changed, 44 insertions(+), 22 deletions(-)
 rename iconvdata/{gconv-modules => gconv-modules.conf} (100%)
 rename sysdeps/s390/{gconv-modules => gconv-modules-s390.conf} (100%)

diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 6eeb92f4b3..8925a684eb 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -137,10 +137,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.
 
@@ -182,7 +185,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.
@@ -250,7 +253,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
@@ -303,28 +307,29 @@ $(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.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)" \
@@ -332,7 +337,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/ \
@@ -345,9 +351,13 @@ 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 $< $@
 
 # Test requires BIG5HKSCS.
-$(objpfx)tst-iconv-big5-hkscs-to-2ucs4.out: $(objpfx)gconv-modules \
+$(objpfx)tst-iconv-big5-hkscs-to-2ucs4.out: \
+			 $(addprefix $(modpfx), $(gconv-modules)) \
 			 $(addprefix $(objpfx),$(modules.so))
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 14e04cd3c5..364d7c758d 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -183,7 +183,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
 
@@ -464,5 +464,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 a8c49c928f..ade8663218 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),elf)
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
-- 
2.31.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 5/5] iconvdata: Split out non-essential gconv module configuration
  2021-06-07  8:52 [PATCH 0/5] gconv module configuration improvements Siddhesh Poyarekar
                   ` (3 preceding siblings ...)
  2021-06-07  8:52 ` [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf Siddhesh Poyarekar
@ 2021-06-07  8:52 ` Siddhesh Poyarekar
  2021-06-09  2:00   ` DJ Delorie
  4 siblings, 1 reply; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  8:52 UTC (permalink / raw)
  To: libc-alpha

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.
---
 iconvdata/Makefile                 |    2 +-
 iconvdata/gconv-modules-extra.conf | 1889 ++++++++++++++++++++++++++++
 iconvdata/gconv-modules.conf       | 1857 ---------------------------
 3 files changed, 1890 insertions(+), 1858 deletions(-)
 create mode 100644 iconvdata/gconv-modules-extra.conf

diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 8925a684eb..3c6929fb59 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -137,7 +137,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 0000000000..edbd4d9be4
--- /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
+# <https://www.gnu.org/licenses/>.
+
+# 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 8540225b1c..4acbba062f 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
@@ -1533,440 +113,3 @@ module	INTERNAL		UTF-32BE//		UTF-32		1
 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
-- 
2.31.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory
  2021-06-07  8:52 ` [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory Siddhesh Poyarekar
@ 2021-06-07  9:06   ` Andreas Schwab
  2021-06-07  9:17     ` Siddhesh Poyarekar
  2021-06-08 21:46   ` DJ Delorie
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Schwab @ 2021-06-07  9:06 UTC (permalink / raw)
  To: Siddhesh Poyarekar via Libc-alpha; +Cc: Siddhesh Poyarekar

On Jun 07 2021, Siddhesh Poyarekar via Libc-alpha wrote:

> +  /* 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;

Should this also handle DT_UNKNOWN?

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory
  2021-06-07  9:06   ` Andreas Schwab
@ 2021-06-07  9:17     ` Siddhesh Poyarekar
  0 siblings, 0 replies; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-07  9:17 UTC (permalink / raw)
  To: Andreas Schwab, Siddhesh Poyarekar via Libc-alpha

On 6/7/21 2:36 PM, Andreas Schwab wrote:
> On Jun 07 2021, Siddhesh Poyarekar via Libc-alpha wrote:
> 
>> +  /* 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;
> 
> Should this also handle DT_UNKNOWN?

I suppose I could fall back to lstat to get the file type if dt_type is 
not supported by the underlying filesystem.

Siddhesh

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/5] iconvconfig: Make file handling more general purpose
  2021-06-07  8:52 ` [PATCH 1/5] iconvconfig: Make file handling more general purpose Siddhesh Poyarekar
@ 2021-06-08 20:53   ` DJ Delorie
  0 siblings, 0 replies; 19+ messages in thread
From: DJ Delorie @ 2021-06-08 20:53 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha


Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:
> diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c
> -
> -/* 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)

Rename existing function.  Keep "dir" as its used elsewhere in this
function, not shown by the patch.  Ok.

> -  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");

This portion is moved to handle_dir (below).  Ok.

>    fp = fopen (infile, "r");
>    if (fp == NULL)
> -    {
> -      error (0, errno, "cannot open `%s'", infile);
> -      return 1;
> -    }
> +    return false;

Error handling moved too, ok.

>    /* No threads present.  */
>    __fsetlocking (fp, FSETLOCKING_BYCALLER);
> @@ -723,7 +703,42 @@ handle_dir (const char *dir)
>  
>    fclose (fp);
>  
> -  return 0;
> +  return true;
> +}

Likewise.

> +/* 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;
>  }

This looks a little weird as-is, but I realize further patches need it
this way, so OK.

Reviewed-by: DJ Delorie <dj@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory
  2021-06-07  8:52 ` [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory Siddhesh Poyarekar
  2021-06-07  9:06   ` Andreas Schwab
@ 2021-06-08 21:46   ` DJ Delorie
  1 sibling, 0 replies; 19+ messages in thread
From: DJ Delorie @ 2021-06-08 21:46 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha

Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:
> 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.
> ---
>  iconv/iconvconfig.c | 50 +++++++++++++++++++++++++++++++++++++++------
>  1 file changed, 44 insertions(+), 6 deletions(-)

> diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c
> +#include <dirent.h>

Ok.

> +#include <sys/types.h>

Ok.

> @@ -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"

sizeof includes one for the NUL, so OK.  

> @@ -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");

max string is "<prefix><dir>gconv-modules"

> -  found |= handle_file (dir, infile);
> +  found |= handle_file (dir, buf);

Looks for gconv-modules files, ok.

> +  /* 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';

buf[] is now "...gconv-modules.d"

> +  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.  */

But it doesn't go out of scope until the function *exits* although one
could assume that the compiler would re-use (overlap) them.  Shouldn't
be a problem unless there's a stupid number of conf files in a subdir.

> +	      char *conf = alloca (BUF_LEN + len + 1);

The byte for NUL in BUF_LEN is reused here, the "1" is for "/".  Ok.

> +	      cp = stpcpy (conf, buf);
> +	      sprintf (cp, "/%s", ent->d_name);
> +	      found |= handle_file (dir, conf);
> +	    }
> +	}
> +      closedir (confdir);
> +    }

Ok.

>    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.");
>      }

Ok.

Reviewed-by: DJ Delorie <dj@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d
  2021-06-07  8:52 ` [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d Siddhesh Poyarekar
@ 2021-06-08 23:33   ` DJ Delorie
  2021-06-09  2:07   ` DJ Delorie
  1 sibling, 0 replies; 19+ messages in thread
From: DJ Delorie @ 2021-06-08 23:33 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha


Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:
> diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
> +#include <dirent.h>

Ok

> +#include <sys/types.h>

Ok.

>  static const char gconv_conf_filename[] = "gconv-modules";
> +static const char gconv_conf_dirname[] = "gconv-modules.d";

Ok.

>  /* Filename extension for the modules.  */
>  #ifndef MODULE_EXT
> @@ -556,18 +559,52 @@ __gconv_read_conf (void)
>  
>    for (cnt = 0; __gconv_path_elem[cnt].name != NULL; ++cnt)
>      {
> +#define BUF_LEN elem_len + sizeof (gconv_conf_dirname)
> +

Includes NUL through sizeof, ok.

>        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--;

Because cp pointed after the NUL, not after the filename. ok.

> +      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)

Ok.

> +		{
> +		  /* 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

Ok.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-07  8:52 ` [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf Siddhesh Poyarekar
@ 2021-06-09  1:33   ` DJ Delorie
  2021-06-10 10:23   ` Andreas Schwab
  1 sibling, 0 replies; 19+ messages in thread
From: DJ Delorie @ 2021-06-09  1:33 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha


Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:

> +gconv-modules = gconv-modules.conf
> +modpfx = $(objpfx)gconv-modules.d/

Ok

>  install-others	= $(addprefix $(inst_gconvdir)/, $(modules.so))	\
> -		  $(inst_gconvdir)/gconv-modules
> +		  $(addprefix $(inst_gconvdir)/gconv-modules.d/, \
> +			      $(gconv-modules))

from .../gconv-modules to .../gconv-modules.d/gconv-modules.conf, ok

>  ifdef objpfx
> -generated += gconv-modules
> +generated += $(addprefix gconv-modules.d/,$(gconv-modules))
>  endif

Same, ok

> -$(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)

Ok.

> @@ -303,28 +307,29 @@ $(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.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))

Ok.

> -$(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

Ok.

> -$(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/ \

Ok.

> -$(objpfx)gconv-modules: gconv-modules
> -	cat $(sysdeps-gconv-modules) $^ > $@
> +$(modpfx):
> +	mkdir -p $@
> +
> +$(modpfx)%: % $(modpfx)
> +	cp $< $@

Ok.

>  # Test requires BIG5HKSCS.
> -$(objpfx)tst-iconv-big5-hkscs-to-2ucs4.out: $(objpfx)gconv-modules \
> +$(objpfx)tst-iconv-big5-hkscs-to-2ucs4.out: \
> +			 $(addprefix $(modpfx), $(gconv-modules)) \
>  			 $(addprefix $(objpfx),$(modules.so))

Ok.

> 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

Ok.

> diff --git a/localedata/Makefile b/localedata/Makefile
>  
> -tests: $(objdir)/iconvdata/gconv-modules
> +tests: $(objdir)/iconvdata/gconv-modules.d/gconv-modules.conf

Ok.

> -$(objdir)/iconvdata/gconv-modules:
> +$(objdir)/iconvdata/gconv-modules.d/gconv-modules.conf:
>  	$(MAKE) -C ../iconvdata subdir=iconvdata $@

Ok.

> diff --git a/sysdeps/s390/Makefile b/sysdeps/s390/Makefile
> -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

Ok

>  $(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

Ok

> 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

Ok

Reviewed-by: DJ Delorie <dj@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 5/5] iconvdata: Split out non-essential gconv module configuration
  2021-06-07  8:52 ` [PATCH 5/5] iconvdata: Split out non-essential gconv module configuration Siddhesh Poyarekar
@ 2021-06-09  2:00   ` DJ Delorie
  0 siblings, 0 replies; 19+ messages in thread
From: DJ Delorie @ 2021-06-09  2:00 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha

Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:
> Split module configuration so that only the bare minimum charsets,

Confirmed it's just a split, no modifications.

> diff --git a/iconvdata/Makefile b/iconvdata/Makefile
> index 8925a684eb..3c6929fb59 100644
> --- a/iconvdata/Makefile
> +++ b/iconvdata/Makefile
> @@ -137,7 +137,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/

Ok.

> diff --git a/iconvdata/gconv-modules-extra.conf b/iconvdata/gconv-modules-extra.conf
> +++ b/iconvdata/gconv-modules-extra.conf
> @@ -0,0 +1,1889 @@
> +# GNU libc iconv configuration.
> +# Copyright (C) 1997-2021 Free Software Foundation, Inc.

Ok.

> +# 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
> +# <https://www.gnu.org/licenses/>.
> +
> +# 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

Ok.

> +alias	ISO-IR-4//		BS_4730//

The rest is just moving lines.

Reviewed-by: DJ Delorie <dj@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d
  2021-06-07  8:52 ` [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d Siddhesh Poyarekar
  2021-06-08 23:33   ` DJ Delorie
@ 2021-06-09  2:07   ` DJ Delorie
  1 sibling, 0 replies; 19+ messages in thread
From: DJ Delorie @ 2021-06-09  2:07 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: libc-alpha


[this time with reviewed-by]
Reviewed-by: DJ Delorie <dj@redhat.com>

Siddhesh Poyarekar via Libc-alpha <libc-alpha@sourceware.org> writes:
> diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
> +#include <dirent.h>

Ok

> +#include <sys/types.h>

Ok.

>  static const char gconv_conf_filename[] = "gconv-modules";
> +static const char gconv_conf_dirname[] = "gconv-modules.d";

Ok.

>  /* Filename extension for the modules.  */
>  #ifndef MODULE_EXT
> @@ -556,18 +559,52 @@ __gconv_read_conf (void)
>  
>    for (cnt = 0; __gconv_path_elem[cnt].name != NULL; ++cnt)
>      {
> +#define BUF_LEN elem_len + sizeof (gconv_conf_dirname)
> +

Includes NUL through sizeof, ok.

>        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--;

Because cp pointed after the NUL, not after the filename. ok.

> +      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)

Ok.

> +		{
> +		  /* 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

Ok.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-07  8:52 ` [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf Siddhesh Poyarekar
  2021-06-09  1:33   ` DJ Delorie
@ 2021-06-10 10:23   ` Andreas Schwab
  2021-06-10 11:11     ` Siddhesh Poyarekar
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Schwab @ 2021-06-10 10:23 UTC (permalink / raw)
  To: Siddhesh Poyarekar via Libc-alpha; +Cc: Siddhesh Poyarekar

On Jun 07 2021, Siddhesh Poyarekar via Libc-alpha wrote:

> 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.

Why is that needed?  Why can't GCONV_PATH/gconv-modules remain the
master?

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-10 10:23   ` Andreas Schwab
@ 2021-06-10 11:11     ` Siddhesh Poyarekar
  2021-06-10 11:24       ` Andreas Schwab
  0 siblings, 1 reply; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-10 11:11 UTC (permalink / raw)
  To: Andreas Schwab, Siddhesh Poyarekar via Libc-alpha

On 6/10/21 3:53 PM, Andreas Schwab wrote:
> On Jun 07 2021, Siddhesh Poyarekar via Libc-alpha wrote:
> 
>> 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.
> 
> Why is that needed?  Why can't GCONV_PATH/gconv-modules remain the
> master?

I did it to move all configuration files into a single place in 
gconv-modules.d/ since that seemed more consistent than having 
GCONV_PATH/gconv-modules and 
GCONV_PATH/gconv-modules.d/gconv-modules-extra.conf.

Siddhesh

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-10 11:11     ` Siddhesh Poyarekar
@ 2021-06-10 11:24       ` Andreas Schwab
  2021-06-10 11:28         ` Siddhesh Poyarekar
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Schwab @ 2021-06-10 11:24 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: Siddhesh Poyarekar via Libc-alpha

On Jun 10 2021, Siddhesh Poyarekar wrote:

> I did it to move all configuration files into a single place in
> gconv-modules.d/ since that seemed more consistent than having 
> GCONV_PATH/gconv-modules and
> GCONV_PATH/gconv-modules.d/gconv-modules-extra.conf.

Why is that a problem?  After all, GCONV_PATH/gconv-modules is still
being read.  Usually, *.d is reserved for add-ons.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-10 11:24       ` Andreas Schwab
@ 2021-06-10 11:28         ` Siddhesh Poyarekar
  2021-06-10 11:58           ` Andreas Schwab
  0 siblings, 1 reply; 19+ messages in thread
From: Siddhesh Poyarekar @ 2021-06-10 11:28 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Siddhesh Poyarekar via Libc-alpha

On 6/10/21 4:54 PM, Andreas Schwab wrote:
> On Jun 10 2021, Siddhesh Poyarekar wrote:
> 
>> I did it to move all configuration files into a single place in
>> gconv-modules.d/ since that seemed more consistent than having
>> GCONV_PATH/gconv-modules and
>> GCONV_PATH/gconv-modules.d/gconv-modules-extra.conf.
> 
> Why is that a problem?  After all, GCONV_PATH/gconv-modules is still
> being read.  Usually, *.d is reserved for add-ons.

It was really just an aesthetic choice on my part.  How about:

GCONV_PATH/gconv-modules:
All of the core modules (UTF*, etc.)

GCONV_PATH/gconv-modules.d/gconv-modules-extra.conf:
All remaining modules

GCONV_PATH/gconv-modules.d/gconv-modules-s390.conf:
S390 modules

I'll post a patch to rejig them once we agree on the structure.

Siddhesh

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf
  2021-06-10 11:28         ` Siddhesh Poyarekar
@ 2021-06-10 11:58           ` Andreas Schwab
  0 siblings, 0 replies; 19+ messages in thread
From: Andreas Schwab @ 2021-06-10 11:58 UTC (permalink / raw)
  To: Siddhesh Poyarekar; +Cc: Siddhesh Poyarekar via Libc-alpha

On Jun 10 2021, Siddhesh Poyarekar wrote:

> It was really just an aesthetic choice on my part.  How about:
>
> GCONV_PATH/gconv-modules:
> All of the core modules (UTF*, etc.)
>
> GCONV_PATH/gconv-modules.d/gconv-modules-extra.conf:
> All remaining modules
>
> GCONV_PATH/gconv-modules.d/gconv-modules-s390.conf:
> S390 modules

Looks ok.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-06-10 11:58 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-07  8:52 [PATCH 0/5] gconv module configuration improvements Siddhesh Poyarekar
2021-06-07  8:52 ` [PATCH 1/5] iconvconfig: Make file handling more general purpose Siddhesh Poyarekar
2021-06-08 20:53   ` DJ Delorie
2021-06-07  8:52 ` [PATCH 2/5] iconvconfig: Read configuration from gconv-modules.d subdirectory Siddhesh Poyarekar
2021-06-07  9:06   ` Andreas Schwab
2021-06-07  9:17     ` Siddhesh Poyarekar
2021-06-08 21:46   ` DJ Delorie
2021-06-07  8:52 ` [PATCH 3/5] gconv_conf: Read configuration files in gconv-modules.d Siddhesh Poyarekar
2021-06-08 23:33   ` DJ Delorie
2021-06-09  2:07   ` DJ Delorie
2021-06-07  8:52 ` [PATCH 4/5] iconvdata: Move gconv-modules configuration to gconv-modules.conf Siddhesh Poyarekar
2021-06-09  1:33   ` DJ Delorie
2021-06-10 10:23   ` Andreas Schwab
2021-06-10 11:11     ` Siddhesh Poyarekar
2021-06-10 11:24       ` Andreas Schwab
2021-06-10 11:28         ` Siddhesh Poyarekar
2021-06-10 11:58           ` Andreas Schwab
2021-06-07  8:52 ` [PATCH 5/5] iconvdata: Split out non-essential gconv module configuration Siddhesh Poyarekar
2021-06-09  2:00   ` DJ Delorie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).