about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog226
-rw-r--r--iconv/gconv_int.h2
-rw-r--r--iconv/gconv_simple.c65
-rw-r--r--iconv/iconv_prog.c8
-rw-r--r--iconv/skeleton.c4
-rw-r--r--iconvdata/8bit-gap.c2
-rw-r--r--iconvdata/Makefile253
-rw-r--r--iconvdata/TESTS46
-rw-r--r--iconvdata/big5.c2
-rw-r--r--iconvdata/cns11643.h11
-rw-r--r--iconvdata/cns11643l1.h10
-rw-r--r--iconvdata/cp1250.c29
-rw-r--r--iconvdata/cp1251.c29
-rw-r--r--iconvdata/cp1252.c29
-rw-r--r--iconvdata/cp1253.c29
-rw-r--r--iconvdata/cp1254.c29
-rw-r--r--iconvdata/cp1255.c29
-rw-r--r--iconvdata/cp1256.c29
-rw-r--r--iconvdata/cp1257.c29
-rw-r--r--iconvdata/ebcdic-at-de-a.c2
-rw-r--r--iconvdata/ebcdic-at-de.c2
-rw-r--r--iconvdata/ebcdic-ca-fr.c2
-rw-r--r--iconvdata/ebcdic-dk-no-a.c29
-rw-r--r--iconvdata/ebcdic-dk-no.c29
-rw-r--r--iconvdata/ebcdic-es-a.c29
-rw-r--r--iconvdata/ebcdic-es-s.c29
-rw-r--r--iconvdata/ebcdic-es.c29
-rw-r--r--iconvdata/ebcdic-fi-se-a.c29
-rw-r--r--iconvdata/ebcdic-fi-se.c29
-rw-r--r--iconvdata/ebcdic-fr.c29
-rw-r--r--iconvdata/ebcdic-is-friss.c29
-rw-r--r--iconvdata/ebcdic-it.c29
-rw-r--r--iconvdata/ebcdic-pt.c29
-rw-r--r--iconvdata/ebcdic-uk.c29
-rw-r--r--iconvdata/ebcdic-us.c29
-rw-r--r--iconvdata/euccn.c2
-rw-r--r--iconvdata/eucjp.c2
-rw-r--r--iconvdata/euckr.c4
-rw-r--r--iconvdata/euctw.c2
-rw-r--r--iconvdata/gb2312.h4
-rw-r--r--iconvdata/gconv-modules501
-rw-r--r--iconvdata/hp-roman8.c2
-rw-r--r--iconvdata/ibm037.c29
-rw-r--r--iconvdata/ibm038.c29
-rw-r--r--iconvdata/ibm1004.c29
-rw-r--r--iconvdata/ibm1026.c29
-rw-r--r--iconvdata/ibm1047.c29
-rw-r--r--iconvdata/ibm256.c29
-rw-r--r--iconvdata/ibm273.c29
-rw-r--r--iconvdata/ibm274.c29
-rw-r--r--iconvdata/ibm275.c29
-rw-r--r--iconvdata/ibm277.c29
-rw-r--r--iconvdata/ibm278.c29
-rw-r--r--iconvdata/ibm280.c29
-rw-r--r--iconvdata/ibm281.c29
-rw-r--r--iconvdata/ibm284.c29
-rw-r--r--iconvdata/ibm285.c29
-rw-r--r--iconvdata/ibm290.c29
-rw-r--r--iconvdata/ibm297.c29
-rw-r--r--iconvdata/ibm420.c29
-rw-r--r--iconvdata/ibm423.c29
-rw-r--r--iconvdata/ibm424.c29
-rw-r--r--iconvdata/ibm437.c29
-rw-r--r--iconvdata/ibm500.c29
-rw-r--r--iconvdata/ibm850.c29
-rw-r--r--iconvdata/ibm851.c29
-rw-r--r--iconvdata/ibm852.c29
-rw-r--r--iconvdata/ibm855.c29
-rw-r--r--iconvdata/ibm857.c29
-rw-r--r--iconvdata/ibm860.c29
-rw-r--r--iconvdata/ibm861.c29
-rw-r--r--iconvdata/ibm862.c29
-rw-r--r--iconvdata/ibm863.c29
-rw-r--r--iconvdata/ibm864.c29
-rw-r--r--iconvdata/ibm865.c29
-rw-r--r--iconvdata/ibm868.c29
-rw-r--r--iconvdata/ibm869.c29
-rw-r--r--iconvdata/ibm870.c29
-rw-r--r--iconvdata/ibm871.c29
-rw-r--r--iconvdata/ibm875.c29
-rw-r--r--iconvdata/ibm880.c29
-rw-r--r--iconvdata/ibm891.c29
-rw-r--r--iconvdata/ibm903.c29
-rw-r--r--iconvdata/ibm904.c29
-rw-r--r--iconvdata/ibm905.c29
-rw-r--r--iconvdata/ibm918.c29
-rw-r--r--iconvdata/iso646.c788
-rw-r--r--iconvdata/iso6937.c2
-rw-r--r--iconvdata/iso8859-1.c2
-rw-r--r--iconvdata/iso8859-10.c2
-rw-r--r--iconvdata/iso8859-2.c2
-rw-r--r--iconvdata/iso8859-3.c2
-rw-r--r--iconvdata/iso8859-4.c2
-rw-r--r--iconvdata/iso8859-5.c2
-rw-r--r--iconvdata/iso8859-6.c2
-rw-r--r--iconvdata/iso8859-7.c2
-rw-r--r--iconvdata/iso8859-8.c2
-rw-r--r--iconvdata/iso8859-9.c2
-rw-r--r--iconvdata/jis0212.h8
-rw-r--r--iconvdata/johab.c4
-rw-r--r--iconvdata/koi-8.c2
-rw-r--r--iconvdata/koi8-r.c2
-rw-r--r--iconvdata/koi8-r.h2
-rw-r--r--iconvdata/ksc5601.h9
-rw-r--r--iconvdata/latin-greek-1.c2
-rw-r--r--iconvdata/latin-greek-1.h2
-rw-r--r--iconvdata/latin-greek.c2
-rw-r--r--iconvdata/latin-greek.h2
-rw-r--r--iconvdata/sjis.c2
-rw-r--r--iconvdata/t61.c6
-rw-r--r--iconvdata/testdata/CSA_Z243.4-1985-16
-rw-r--r--iconvdata/testdata/CSA_Z243.4-1985-1..UCS2bin0 -> 392 bytes
-rw-r--r--iconvdata/testdata/CSA_Z243.4-1985-26
-rw-r--r--iconvdata/testdata/CSA_Z243.4-1985-2..UCS4bin0 -> 784 bytes
-rw-r--r--iconvdata/testdata/DIN_660036
-rw-r--r--iconvdata/testdata/DIN_66003..UTF86
-rw-r--r--iconvdata/testdata/DS_20896
-rw-r--r--iconvdata/testdata/DS_2089..UTF86
-rw-r--r--iconvdata/testdata/ES6
-rw-r--r--iconvdata/testdata/ES..UTF86
-rw-r--r--iconvdata/testdata/ES26
-rw-r--r--iconvdata/testdata/ES2..UTF86
-rw-r--r--iconvdata/testdata/GB_1988-806
-rw-r--r--iconvdata/testdata/GB_1988-80..UTF86
-rw-r--r--iconvdata/testdata/IT6
-rw-r--r--iconvdata/testdata/IT..UTF86
-rw-r--r--iconvdata/testdata/JIS_C6220-1969-RO6
-rw-r--r--iconvdata/testdata/JIS_C6220-1969-RO..UTF86
-rw-r--r--iconvdata/testdata/JIS_C6229-1984-B6
-rw-r--r--iconvdata/testdata/JIS_C6229-1984-B..UTF86
-rw-r--r--iconvdata/testdata/JUS_I.B1.0026
-rw-r--r--iconvdata/testdata/JUS_I.B1.002..UTF86
-rw-r--r--iconvdata/testdata/KSC56366
-rw-r--r--iconvdata/testdata/KSC5636..UTF86
-rw-r--r--iconvdata/testdata/MSZ_7795.36
-rw-r--r--iconvdata/testdata/MSZ_7795.3..UTF86
-rw-r--r--iconvdata/testdata/NC_NC00-106
-rw-r--r--iconvdata/testdata/NC_NC00-10..UTF86
-rw-r--r--iconvdata/testdata/NF_Z_62-0106
-rw-r--r--iconvdata/testdata/NF_Z_62-010..UTF86
-rw-r--r--iconvdata/testdata/NF_Z_62-010_19736
-rw-r--r--iconvdata/testdata/NF_Z_62-010_1973..UTF86
-rw-r--r--iconvdata/testdata/NS_4551-16
-rw-r--r--iconvdata/testdata/NS_4551-1..UTF86
-rw-r--r--iconvdata/testdata/NS_4551-26
-rw-r--r--iconvdata/testdata/NS_4551-2..UTF86
-rw-r--r--iconvdata/testdata/PT6
-rw-r--r--iconvdata/testdata/PT..UTF86
-rw-r--r--iconvdata/testdata/PT26
-rw-r--r--iconvdata/testdata/PT2..UTF86
-rw-r--r--iconvdata/testdata/SEN_850200_B6
-rw-r--r--iconvdata/testdata/SEN_850200_B..UTF86
-rw-r--r--iconvdata/testdata/SEN_850200_C6
-rw-r--r--iconvdata/testdata/SEN_850200_C..UTF86
-rw-r--r--iconvdata/uhc.c6
-rw-r--r--io/ftw.h4
-rw-r--r--localedata/locales/pt_BR2
-rw-r--r--posix/Makefile2
-rw-r--r--stdio-common/vfscanf.c52
-rw-r--r--stdio/stdio.h20
-rw-r--r--sysdeps/gnu/utmp_file.c2
-rw-r--r--sysdeps/mach/hurd/Makefile4
-rw-r--r--sysdeps/mach/hurd/bits/dirent.h67
-rw-r--r--sysdeps/mach/hurd/readdir64.c51
-rw-r--r--sysdeps/mach/hurd/readdir64_r.c57
165 files changed, 4222 insertions, 187 deletions
diff --git a/ChangeLog b/ChangeLog
index d8c3631b91..2086314328 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,232 @@
+<<<<<<< ChangeLog
+1998-04-23 22:43  Ulrich Drepper  <drepper@cygnus.com>
+
+	* elf/dl-load.c (fillin_rpath): Handle empty element returned by
+	strsep as current directory.
+
+	* iconv/gconv_builtin.h: Add aliases unicode and unicodebig for
+	Java.  Add definitions for unicodelittle implementation.
+	* iconv/gconv_int.h: Add declaration for unicodelittle functions.
+	* iconv/gconv_simple.c: Define unicodelittle functions.
+
+	* iconv/iconv_prog.c: Make program print information about position
+	of illegal character in input.
+
+	* iconv/skeleton.c: Use __strcasecmp instead of __strcasestr for
+	comparison of charset name.
+	* iconvdata/big5.c (CHARSET_NAME): Adapt for this.
+	* iconvdata/ebcdic-at-de-a.c: Likewise.
+	* iconvdata/ebcdic-at-de.c: Likewise.
+	* iconvdata/ebcdic-ca-fr.c: Likewise.
+	* iconvdata/euccn.c: Likewise.
+	* iconvdata/eucjp.c: Likewise.
+	* iconvdata/euckr.c: Likewise.
+	* iconvdata/euctw.c: Likewise.
+	* iconvdata/hp-roman8.c: Likewise.
+	* iconvdata/iso6937.c: Likewise.
+	* iconvdata/iso8859-1.c: Likewise.
+	* iconvdata/iso8859-10.c: Likewise.
+	* iconvdata/iso8859-2.c: Likewise.
+	* iconvdata/iso8859-3.c: Likewise.
+	* iconvdata/iso8859-4.c: Likewise.
+	* iconvdata/iso8859-5.c: Likewise.
+	* iconvdata/iso8859-6.c: Likewise.
+	* iconvdata/iso8859-7.c: Likewise.
+	* iconvdata/iso8859-8.c: Likewise.
+	* iconvdata/iso8859-9.c: Likewise.
+	* iconvdata/johab.c: Likewise.
+	* iconvdata/koi-8.c: Likewise.
+	* iconvdata/koi8-r.c: Likewise.
+	* iconvdata/latin-greek-1.c: Likewise.
+	* iconvdata/latin-greek.c: Likewise.
+	* iconvdata/sjis.c: Likewise.
+	* iconvdata/t61.c: Likewise.
+	* iconvdata/uhc.c: Likewise.
+
+	* iconvdata/iso646.c: Add support for more ISO 646 variants.
+	* iconvdata/TESTS: Add tests for ISO646 module.
+	* iconvdata/gconv-modules: Add new modules.
+	* iconvdata/testdate/CSA_Z243.4-1985-1: New tests for ISO646 module.
+	* iconvdata/testdate/CSA_Z243.4-1985-1..UCS2: Likewise.
+	* iconvdata/testdate/CSA_Z243.4-1985-2: Likewise.
+	* iconvdata/testdate/CSA_Z243.4-1985-2..UCS4: Likewise.
+	* iconvdata/testdate/DIN_66003: Likewise.
+	* iconvdata/testdate/DIN_66003..UTF8: Likewise.
+	* iconvdata/testdate/DS_2089: Likewise.
+	* iconvdata/testdate/DS_2089..UTF8: Likewise.
+	* iconvdata/testdate/ES: Likewise.
+	* iconvdata/testdate/ES..UTF8: Likewise.
+	* iconvdata/testdate/ES2: Likewise.
+	* iconvdata/testdate/ES2..UTF8: Likewise.
+	* iconvdata/testdate/GB_1988-80: Likewise.
+	* iconvdata/testdate/GB_1988-80..UTF8: Likewise.
+	* iconvdata/testdate/IT: Likewise.
+	* iconvdata/testdate/IT..UTF8: Likewise.
+	* iconvdata/testdate/JIS_C6220-1969-RO: Likewise.
+	* iconvdata/testdate/JIS_C6220-1969-RO..UTF8: Likewise.
+	* iconvdata/testdate/JIS_C6229-1984-B: Likewise.
+	* iconvdata/testdate/JIS_C6229-1984-B..UTF8: Likewise.
+	* iconvdata/testdate/JUS_I.B1.002: Likewise.
+	* iconvdata/testdate/JUS_I.B1.002..UTF8: Likewise.
+	* iconvdata/testdate/KSC5636: Likewise.
+	* iconvdata/testdate/KSC5636..UTF8: Likewise.
+	* iconvdata/testdate/MSZ_7795.3: Likewise.
+	* iconvdata/testdate/MSZ_7795.3..UTF8: Likewise.
+	* iconvdata/testdate/NC_NC00-10: Likewise.
+	* iconvdata/testdate/NC_NC00-10..UTF8: Likewise.
+	* iconvdata/testdate/NF_Z_62-010: Likewise.
+	* iconvdata/testdate/NF_Z_62-010..UTF8: Likewise.
+	* iconvdata/testdate/NF_Z_62-010_1973: Likewise.
+	* iconvdata/testdate/NF_Z_62-010_1973..UTF8: Likewise.
+	* iconvdata/testdate/NS_4551-1: Likewise.
+	* iconvdata/testdate/NS_4551-1..UTF8: Likewise.
+	* iconvdata/testdate/NS_4551-2: Likewise.
+	* iconvdata/testdate/NS_4551-2..UTF8: Likewise.
+	* iconvdata/testdate/PT: Likewise.
+	* iconvdata/testdate/PT..UTF8: Likewise.
+	* iconvdata/testdate/PT2: Likewise.
+	* iconvdata/testdate/PT2..UTF8: Likewise.
+	* iconvdata/testdate/SEN_850200_B: Likewise.
+	* iconvdata/testdate/SEN_850200_B..UTF8: Likewise.
+	* iconvdata/testdate/SEN_850200_C: Likewise.
+	* iconvdata/testdate/SEN_850200_C..UTF8: Likewise.
+
+	* iconvdata/cns11643.h: Use uint32_t instead of wchar_t.
+	* iconvdata/cns11643l1.h: Likewise.
+	* iconvdata/latin-greek-1.h: Likewise.
+	* iconvdata/latin-greek.h: Likewise.
+	* iconvdata/koi8-r.h: Likewise.
+	* iconvdata/jis0212.h: Likewise.
+	* iconvdata/gb2312.h: Likewise.
+	* iconvdata/ksc5601.h: Likewise.
+
+	* iconvdata/8bit-gap.c: Use 32 bit type for idx element of struct gap.
+
+	* iconvdata/Makefile: Add rules for lots of more modules.
+	* iconvdata/cp1250.c: New file.
+	* iconvdata/cp1251.c: New file.
+	* iconvdata/cp1252.c: New file.
+	* iconvdata/cp1253.c: New file.
+	* iconvdata/cp1254.c: New file.
+	* iconvdata/cp1255.c: New file.
+	* iconvdata/cp1256.c: New file.
+	* iconvdata/cp1257.c: New file.
+	* iconvdata/ebcdic-dk-no-a.c: New file.
+	* iconvdata/ebcdic-dk-no.c: New file.
+	* iconvdata/ebcdic-es-a.c: New file.
+	* iconvdata/ebcdic-es-s.c: New file.
+	* iconvdata/ebcdic-es.c: New file.
+	* iconvdata/ebcdic-fi-se-a.c: New file.
+	* iconvdata/ebcdic-fi-se.c: New file.
+	* iconvdata/ebcdic-fr.c: New file.
+	* iconvdata/ebcdic-is-friss.c: New file.
+	* iconvdata/ebcdic-it.c: New file.
+	* iconvdata/ebcdic-pt.c: New file.
+	* iconvdata/ebcdic-uk.c: New file.
+	* iconvdata/ebcdic-us.c: New file.
+	* iconvdata/ibm037.c: New file.
+	* iconvdata/ibm038.c: New file.
+	* iconvdata/ibm1004.c: New file.
+	* iconvdata/ibm1026.c: New file.
+	* iconvdata/ibm1047.c: New file.
+	* iconvdata/ibm256.c: New file.
+	* iconvdata/ibm273.c: New file.
+	* iconvdata/ibm274.c: New file.
+	* iconvdata/ibm275.c: New file.
+	* iconvdata/ibm277.c: New file.
+	* iconvdata/ibm278.c: New file.
+	* iconvdata/ibm280.c: New file.
+	* iconvdata/ibm281.c: New file.
+	* iconvdata/ibm284.c: New file.
+	* iconvdata/ibm285.c: New file.
+	* iconvdata/ibm290.c: New file.
+	* iconvdata/ibm297.c: New file.
+	* iconvdata/ibm420.c: New file.
+	* iconvdata/ibm423.c: New file.
+	* iconvdata/ibm424.c: New file.
+	* iconvdata/ibm437.c: New file.
+	* iconvdata/ibm500.c: New file.
+	* iconvdata/ibm850.c: New file.
+	* iconvdata/ibm851.c: New file.
+	* iconvdata/ibm852.c: New file.
+	* iconvdata/ibm855.c: New file.
+	* iconvdata/ibm857.c: New file.
+	* iconvdata/ibm860.c: New file.
+	* iconvdata/ibm861.c: New file.
+	* iconvdata/ibm862.c: New file.
+	* iconvdata/ibm863.c: New file.
+	* iconvdata/ibm864.c: New file.
+	* iconvdata/ibm865.c: New file.
+	* iconvdata/ibm868.c: New file.
+	* iconvdata/ibm869.c: New file.
+	* iconvdata/ibm870.c: New file.
+	* iconvdata/ibm871.c: New file.
+	* iconvdata/ibm875.c: New file.
+	* iconvdata/ibm880.c: New file.
+	* iconvdata/ibm891.c: New file.
+	* iconvdata/ibm903.c: New file.
+	* iconvdata/ibm904.c: New file.
+	* iconvdata/ibm905.c: New file.
+	* iconvdata/ibm918.c: New file.
+
+	* locale/iso-4217.def: Update.
+	* localedata/locales/pt_BR: Correct.  Patches by Andreas Jaeger.
+
+	* stdio-common/vfscanf.h: Recognize nan and inf in floating-point
+	formats.
+
+1998-04-22  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* elf/dl-load.c (_dl_init_paths): ';' is also a terminal for
+	LD_LIBRARY_PATH.
+
+1998-04-22  Gordon Matzigkeit  <gord@profitpress.com>
+
+	* Makerules: Change occurances of `cd dir; cmd' to `cd dir && cmd'.
+	* Makefile: Likewise.
+	* posix/Makefile: Likewise.
+	* sysdeps/mach/hurd/Makefile: Likewise.
+
+1998-04-22  Gordon Matzigkeit  <gord@profitpress.com>
+
+	* sysdeps/mach/hurd/bits/dirent.h: New file.
+	* sysdeps/mach/hurd/readdir64.c: New file.
+	* sysdeps/mach/hurd/readdir64_r.c: New file.
+
+1998-04-21  Gordon Matzigkeit  <gord@profitpress.com>
+
+	* stdio/stdio.h (vasprintf, __asprintf, asprintf, vdprintf,
+	dprintf): Synchronize declarations with libio/stdio.h.
+
+1998-04-21  Gordon Matzigkeit  <gord@profitpress.com>
+
+	* elf/dlerror.c (dlerror): Don't assume that
+	__libc_internal_tsd_get is defined.  __libc_getspecific is already
+	well-protected, so just use it directly.
+
+1998-04-22  Gordon Matzigkeit  <gord@profitpress.com>
+
+	* io/ftw.h (ftw): Fix typo.
+
+1998-04-21  Gordon Matzigkeit  <gord@profitpress.com>
+
+	* sysdeps/gnu/utmp_file.c: Fix typo.
+
+1998-04-22 11:06  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* iconvdata/run-iconv-test.sh: Fix more portability bugs.  When
+	one part of a test fails move on to the next test.
+
 1998-04-24  5:45  Richard Henderson  <rth@cygnus.com>
 
 	* sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Added.
 
-Wed Apr 22 11:06:09 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+1998-04-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* sysdeps/i386/bits/setjmp.h (_JMPBUF_UNWINDS): Compare addresses
+	as pointers, not signed integers.
+
+1998-04-22 11:06  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
 
 	* sysdeps/m68k/bits/setjmp.h (_JMPBUF_UNWINDS): Added.
 
diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h
index 86e892f874..80cced4d4a 100644
--- a/iconv/gconv_int.h
+++ b/iconv/gconv_int.h
@@ -158,6 +158,8 @@ __BUILTIN_TRANS (__gconv_transform_utf8_internal);
 __BUILTIN_TRANS (__gconv_transform_internal_utf8);
 __BUILTIN_TRANS (__gconv_transform_ucs2_internal);
 __BUILTIN_TRANS (__gconv_transform_internal_ucs2);
+__BUILTIN_TRANS (__gconv_transform_ucs2little_internal);
+__BUILTIN_TRANS (__gconv_transform_internal_ucs2little);
 __BUILTIN_TRANS (__gconv_transform_internal_ucs4);
 # undef __BUITLIN_TRANS
 
diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c
index 95b4a66daf..c491c97ccd 100644
--- a/iconv/gconv_simple.c
+++ b/iconv/gconv_simple.c
@@ -418,3 +418,68 @@ internal_ucs4_loop (const unsigned char **inptrp, const unsigned char *inend,
 #endif
 #include <iconv/loop.c>
 #include <iconv/skeleton.c>
+
+
+/* Convert from UCS2 in little endian to the internal (UCS4-like) format.  */
+#define DEFINE_INIT		0
+#define DEFINE_FINI		0
+#define MIN_NEEDED_FROM		2
+#define MIN_NEEDED_TO		4
+#define FROM_DIRECTION		1
+#define FROM_LOOP		ucs2little_internal_loop
+#define TO_LOOP			ucs2little_internal_loop /* This is not used.*/
+#define FUNCTION_NAME		__gconv_transform_ucs2little_internal
+
+#define MIN_NEEDED_INPUT	MIN_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT	MIN_NEEDED_TO
+#define LOOPFCT			FROM_LOOP
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define BODY \
+  *((uint32_t *) outptr)++ = *((uint16_t *) inptr)++;
+#else
+# define BODY \
+  *((uint32_t *) outptr)++ = bswap_16 (*((uint16_t *) inptr)++);
+#endif
+#include <iconv/loop.c>
+#include <iconv/skeleton.c>
+
+
+/* Convert from the internal (UCS4-like) format to UCS2 in little endian.  */
+#define DEFINE_INIT		0
+#define DEFINE_FINI		0
+#define MIN_NEEDED_FROM		4
+#define MIN_NEEDED_TO		2
+#define FROM_DIRECTION		1
+#define FROM_LOOP		internal_ucs2little_loop
+#define TO_LOOP			internal_ucs2little_loop /* This is not used.*/
+#define FUNCTION_NAME		__gconv_transform_internal_ucs2little
+
+#define MIN_NEEDED_INPUT	MIN_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT	MIN_NEEDED_TO
+#define LOOPFCT			FROM_LOOP
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define BODY \
+  {									      \
+    if (*((uint32_t *) inptr) >= 0x10000)				      \
+      {									      \
+	result = GCONV_ILLEGAL_INPUT;					      \
+	break;								      \
+      }									      \
+    *((uint16_t *) outptr)++ = *((uint32_t *) inptr)++;			      \
+  }
+#else
+# define BODY \
+  {									      \
+    if (*((uint32_t *) inptr) >= 0x10000)				      \
+      {									      \
+	result = GCONV_ILLEGAL_INPUT;					      \
+	break;								      \
+      }									      \
+    /* Please note that we use the `uint32_t' from-pointer as an `uint16_t'   \
+       pointer which works since we are on a little endian machine.  */	      \
+    *((uint16_t *) outptr)++ = bswap_16 (*((uint16_t *) inptr));	      \
+    inptr += 4;								      \
+  }
+#endif
+#include <iconv/loop.c>
+#include <iconv/skeleton.c>
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index 2452a88c5e..5a08a21819 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -298,6 +298,7 @@ static int
 process_block (iconv_t cd, const char *addr, size_t len, FILE *output)
 {
 #define OUTBUF_SIZE	32768
+  const char *start = addr;
   char outbuf[OUTBUF_SIZE];
   char *outptr;
   size_t outlen;
@@ -332,7 +333,8 @@ conversion stopped due to problem in writing the output"));
 	  switch (errno)
 	    {
 	    case EILSEQ:
-	      error (0, 0, _("illegal input sequence"));
+	      error (0, 0, _("illegal input sequence at position %ld"),
+		     addr - start);
 	      break;
 	    case EINVAL:
 	      error (0, 0, _("\
@@ -448,7 +450,7 @@ insert_print_list (const void *nodep, VISIT value, int level)
   if (value == leaf || value == postorder)
     {
       const struct gconv_alias *s = *(const struct gconv_alias **) nodep;
-      tsearch (s->fromname, &printlist, (__compar_fn_t) strcoll);
+      tsearch (s->fromname, &printlist, (__compar_fn_t) strverscmp);
     }
 }
 
@@ -487,7 +489,7 @@ do_print  (const void *nodep, VISIT value, int level)
 	    }
 	}
       else
-	  not_first = 1;
+	not_first = 1;
 
       fwrite (s, len, 1, stdout);
       column += len;
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
index 8421941a1e..78f584e9fe 100644
--- a/iconv/skeleton.c
+++ b/iconv/skeleton.c
@@ -137,9 +137,9 @@ int
 gconv_init (struct gconv_step *step)
 {
   /* Determine which direction.  */
-  if (__strcasestr (step->from_name, CHARSET_NAME) != NULL)
+  if (__strcasecmp (step->from_name, CHARSET_NAME) == 0)
     step->data = &from_object;
-  else if (__strcasestr (step->to_name, CHARSET_NAME) != NULL)
+  else if (__strcasecmp (step->to_name, CHARSET_NAME) == 0)
     step->data = &to_object;
   else
     return GCONV_NOCONV;
diff --git a/iconvdata/8bit-gap.c b/iconvdata/8bit-gap.c
index 4065a6d777..137a61b047 100644
--- a/iconvdata/8bit-gap.c
+++ b/iconvdata/8bit-gap.c
@@ -25,7 +25,7 @@ struct gap
 {
   uint16_t start;
   uint16_t end;
-  int16_t idx;
+  int32_t idx;
 };
 
 /* Now we can include the tables.  */
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index d8fda78330..45d5dad936 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -22,12 +22,21 @@
 subdir	:= iconvdata
 
 # Names of all the shared objects which implement the transformations.
-modules	:= ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5		\
-	   ISO8859-6 ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10		\
-	   T.61 ISO_6937 SJIS KOI-8 KOI8-R LATIN-GREEK LATIN-GREEK-1	\
-	   HP-ROMAN8 EBCDIC-AT-DE EBCDIC-AT-DE-A EBCDIC-CA-FR		\
-	   EUC-KR UHC JOHAB libJIS libKSC BIG5 EUC-JP libGB		\
-	   EUC-CN libCNS EUC-TW ISO646
+modules	:= ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5		 \
+	   ISO8859-6 ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10		 \
+	   T.61 ISO_6937 SJIS KOI-8 KOI8-R LATIN-GREEK LATIN-GREEK-1	 \
+	   HP-ROMAN8 EBCDIC-AT-DE EBCDIC-AT-DE-A EBCDIC-CA-FR		 \
+	   EUC-KR UHC JOHAB libJIS libKSC BIG5 EUC-JP libGB		 \
+	   EUC-CN libCNS EUC-TW ISO646 EBCDIC-DK-NO EBCDIC-DK-NO-A	 \
+	   EBCDIC-ES EBCDIC-ES-A EBCDIC-ES-S EBCDIC-FI-SE EBCDIC-FI-SE-A \
+	   EBCDIC-FR EBCDIC-IS-FRISS EBCDIC-IT EBCDIC-PT EBCDIC-UK	 \
+	   EBCDIC-US IBM037 IBM038 IBM256 IBM273 IBM274 IBM275 IBM277	 \
+	   IBM278 IBM280 IBM281 IBM284 IBM285 IBM290 IBM297 IBM420	 \
+	   IBM423 IBM424 IBM437 IBM500 IBM850 IBM851 IBM852 IBM855	 \
+	   IBM857 IBM860 IBM861 IBM862 IBM863 IBM864 IBM865 IBM868	 \
+	   IBM869 IBM870 IBM871 IBM875 IBM880 IBM891 IBM903 IBM904	 \
+	   IBM905 IBM918 IBM1004 IBM1026 IBM1047 CP1250 CP1251 CP1252	 \
+	   CP1253 CP1254 CP1255 CP1256 CP1257
 modules.so := $(addsuffix .so, $(modules))
 
 
@@ -55,6 +64,71 @@ HP-ROMAN8-routines := hp-roman8
 EBCDIC-AT-DE-routines := ebcdic-at-de
 EBCDIC-AT-DE-A-routines := ebcdic-at-de-a
 EBCDIC-CA-FR-routines := ebcdic-ca-fr
+EBCDIC-DK-NO-routines := ebcdic-dk-no
+EBCDIC-DK-NO-A_routines := ebcdic-dk-no-a
+EBCDIC-ES-routines := ebcdic-es
+EBCDIC-ES-A-routines := ebcdic-es-a
+EBCDIC-ES-S-routines := ebcdic-es-s
+EBCDIC-FI-SE-routines := ebcdic-fi-se
+EBCDIC-FI-SE-A-routines := ebcdic-fi-se-a
+EBCDIC-FR-routines := ebcdic-fr
+EBCDIC-IS-FRISS-routines := ebcdic-is-friss
+EBCDIC-IT-routines := ebcdic-it
+EBCDIC-PT-routines := ebcdic-pt
+EBCDIC-UK-routines := ebcdic-uk
+EBCDIC-US-routines := ebcdic-us
+IBM037-routines := ibm037
+IBM038-routines := ibm038
+IBM256-routines := ibm256
+IBM273-routines := ibm273
+IBM274-routines := ibm274
+IBM275-routines := ibm275
+IBM277-routines := ibm277
+IBM278-routines := ibm278
+IBM280-routines := ibm280
+IBM281-routines := ibm281
+IBM284-routines := ibm284
+IBM285-routines := ibm285
+IBM290-routines := ibm290
+IBM297-routines := ibm297
+IBM420-routines := ibm420
+IBM423-routines := ibm423
+IBM424-routines := ibm424
+IBM437-routines := ibm437
+IBM500-routines := ibm500
+IBM850-routines := ibm850
+IBM851-routines := ibm851
+IBM852-routines := ibm852
+IBM855-routines := ibm855
+IBM857-routines := ibm857
+IBM860-routines := ibm860
+IBM861-routines := ibm861
+IBM862-routines := ibm862
+IBM863-routines := ibm863
+IBM864-routines := ibm864
+IBM865-routines := ibm865
+IBM868-routines := ibm868
+IBM869-routines := ibm869
+IBM870-routines := ibm870
+IBM871-routines := ibm871
+IBM875-routines := ibm875
+IBM880-routines := ibm880
+IBM891-routines := ibm891
+IBM903-routines := ibm903
+IBM904-routines := ibm904
+IBM905-routines := ibm905
+IBM918-routines := ibm918
+IBM1004-routines := ibm1004
+IBM1026-routines := ibm1026
+IBM1047-routines := ibm1047
+CP1250-routines := cp1250
+CP1251-routines := cp1251
+CP1252-routines := cp1252
+CP1253-routines := cp1253
+CP1254-routines := cp1254
+CP1255-routines := cp1255
+CP1256-routines := cp1256
+CP1257-routines := cp1257
 EUC-KR-routines := euckr
 JOHAB-routines := johab
 UHC-routines := uhc
@@ -95,7 +169,19 @@ distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl gconv-modules	    \
 	      extra-module.mk euckr.c johab.c uhc.c ksc5601.c ksc5601.h	    \
 	      iso646.c big5.c eucjp.c gb2312.c gb2312.h euccn.c euctw.c	    \
 	      cns11643l1.c cns11643l1.h cns11643.h cns11643.c		    \
-	      run-iconv-test.sh $(wildcard testdata/*)
+	      run-iconv-test.sh $(wildcard testdata/*) ebcdic-dk-no.c	    \
+	      ebcdic-dk-no-a.c ebcdic-es.c ebcdic-es-a.c ebcdic-es-s.c	    \
+	      ebcdic-fi-se.c ebcdic-fi-se-a.c ebcdic-fr.c ebcdic-is-friss.c \
+	      ebcdic-it.c ebcdic-pt.c ebcdic-uk.c ebcdic-us.c ibm037.c	    \
+	      ibm038.c ibm256.c ibm273.c ibm274.c ibm275.c ibm277.c	    \
+	      ibm278.c ibm280.c ibm281.c ibm284.c ibm285.c ibm290.c	    \
+	      ibm297.c ibm420.c ibm423.c ibm424.c ibm437.c ibm500.c	    \
+	      ibm850.c ibm851.c ibm852.c ibm855.c ibm857.c ibm860.c	    \
+	      ibm861.c ibm862.c ibm863.c ibm864.c ibm865.c ibm868.c	    \
+	      ibm869.c ibm870.c ibm871.c ibm875.c ibm880.c ibm891.c	    \
+	      ibm903.c ibm904.c ibm905.c ibm918.c ibm1004.c ibm1026.c	    \
+	      ibm1047.c cp1250.c cp1251.c cp1252.c cp1253.c cp1254.c	    \
+	      cp1255.c cp1256.c cp1257.c
 
 # We build the transformation modules only when we build shared libs.
 ifeq (yes,$(build-shared))
@@ -124,7 +210,7 @@ install-others	= $(addprefix $(inst_gconvdir)/, $(modules.so))	\
 # If we have the localedata add-on available we can build the conversion
 # tables for numerous charsets.
 define generate-8bit-table
-( echo "static const wchar_t to_ucs4[256] = {"; \
+( echo "static const uint32_t to_ucs4[256] = {"; \
   sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\1] = 0x\2,/p' -e d $^ | sort -u; \
   echo "};"; \
   echo "static const char from_ucs4[] = {"; \
@@ -135,10 +221,17 @@ endef
 sed-generated-headers := iso8859-2.h iso8859-3.h iso8859-4.h iso8859-5.h \
 			 iso8859-6.h iso8859-7.h iso8859-8.h iso8859-9.h \
 			 iso8859-10.h koi-8.h hp-roman8.h ebcdic-at-de.h \
-			 ebcdic-at-de-a.h ebcdic-ca-fr.h
+			 ebcdic-at-de-a.h ebcdic-ca-fr.h ebcdic-dk-no.h  \
+			 ebcdic-dk-no-a.h ebcdic-es.h ebcdic-es-a.h	 \
+			 ebcdic-es-s.h ebcdic-fi-se.h ebcdic-fi-se-a.h	 \
+			 ebcdic-fr.h ebcdic-is-friss.h ebcdic-it.h	 \
+			 ebcdic-pt.h ebcdic-uk.h ebcdic-us.h ibm037.h	 \
+			 ibm038.h ibm274.h ibm275.h ibm423.h ibm424.h	 \
+			 ibm500.h ibm870.h ibm871.h ibm891.h ibm903.h	 \
+			 ibm904.h ibm905.h ibm1047.h
 
 define generate-8bit-gap-table
-( echo "static const wchar_t to_ucs4[256] = {"; \
+( echo "static const uint32_t to_ucs4[256] = {"; \
   sed -e '/^[^[:space:]]*[[:space:]]*.x00/d' -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/  [0x\1] = 0x\2,/p' -e d $^ | sort -u; \
   echo "};"; \
   echo "static struct gap from_idx[] = {"; \
@@ -150,7 +243,15 @@ define generate-8bit-gap-table
   echo "};" ) > $@.new && rm -f $@ && mv $@.new $@
 endef
 
-perl-generated-headers := koi8-r.h latin-greek.h latin-greek-1.h
+perl-generated-headers := koi8-r.h latin-greek.h latin-greek-1.h	 \
+			  ibm256.h ibm273.h ibm277.h ibm278.h ibm280.h	 \
+			  ibm281.h ibm284.h ibm285.h ibm290.h ibm297.h	 \
+			  ibm420.h ibm437.h ibm850.h ibm851.h ibm852.h	 \
+			  ibm855.h ibm857.h ibm860.h ibm861.h ibm862.h	 \
+			  ibm863.h ibm864.h ibm865.h ibm868.h ibm869.h	 \
+			  ibm875.h ibm880.h ibm918.h ibm1004.h ibm1026.h \
+			  cp1250.h cp1251.h cp1252.h cp1253.h cp1254.h	 \
+			  cp1255.h cp1256.h cp1257.h
 
 # The headers must be generated before the compilation.
 before-compile = $(sed-generated-headers) $(perl-generated-headers)
@@ -188,6 +289,58 @@ ebcdic-at-de-a.h: ../localedata/charmaps/EBCDIC-AT-DE-A Makefile
 	$(generate-8bit-table)
 ebcdic-ca-fr.h: ../localedata/charmaps/EBCDIC-CA-FR Makefile
 	$(generate-8bit-table)
+ebcdic-dk-no.h: ../localedata/charmaps/EBCDIC-DK-NO Makefile
+	$(generate-8bit-table)
+ebcdic-dk-no-a.h: ../localedata/charmaps/EBCDIC-DK-NO-A Makefile
+	$(generate-8bit-table)
+ebcdic-es.h: ../localedata/charmaps/EBCDIC-ES Makefile
+	$(generate-8bit-table)
+ebcdic-es-a.h: ../localedata/charmaps/EBCDIC-ES-A Makefile
+	$(generate-8bit-table)
+ebcdic-es-s.h: ../localedata/charmaps/EBCDIC-ES-S Makefile
+	$(generate-8bit-table)
+ebcdic-fi-se.h: ../localedata/charmaps/EBCDIC-FI-SE Makefile
+	$(generate-8bit-table)
+ebcdic-fi-se-a.h: ../localedata/charmaps/EBCDIC-FI-SE-A Makefile
+	$(generate-8bit-table)
+ebcdic-fr.h: ../localedata/charmaps/EBCDIC-FR Makefile
+	$(generate-8bit-table)
+ebcdic-is-friss.h: ../localedata/charmaps/EBCDIC-IS-FRISS Makefile
+	$(generate-8bit-table)
+ebcdic-it.h: ../localedata/charmaps/EBCDIC-IT Makefile
+	$(generate-8bit-table)
+ebcdic-pt.h: ../localedata/charmaps/EBCDIC-PT Makefile
+	$(generate-8bit-table)
+ebcdic-uk.h: ../localedata/charmaps/EBCDIC-UK Makefile
+	$(generate-8bit-table)
+ebcdic-us.h: ../localedata/charmaps/EBCDIC-US Makefile
+	$(generate-8bit-table)
+ibm037.h: ../localedata/charmaps/IBM037 Makefile
+	$(generate-8bit-table)
+ibm038.h: ../localedata/charmaps/IBM038 Makefile
+	$(generate-8bit-table)
+ibm274.h: ../localedata/charmaps/IBM274 Makefile
+	$(generate-8bit-table)
+ibm275.h: ../localedata/charmaps/IBM275 Makefile
+	$(generate-8bit-table)
+ibm423.h: ../localedata/charmaps/IBM423 Makefile
+	$(generate-8bit-table)
+ibm500.h: ../localedata/charmaps/IBM500 Makefile
+	$(generate-8bit-table)
+ibm870.h: ../localedata/charmaps/IBM870 Makefile
+	$(generate-8bit-table)
+ibm871.h: ../localedata/charmaps/IBM871 Makefile
+	$(generate-8bit-table)
+ibm891.h: ../localedata/charmaps/IBM891 Makefile
+	$(generate-8bit-table)
+ibm903.h: ../localedata/charmaps/IBM903 Makefile
+	$(generate-8bit-table)
+ibm904.h: ../localedata/charmaps/IBM904 Makefile
+	$(generate-8bit-table)
+ibm905.h: ../localedata/charmaps/IBM905 Makefile
+	$(generate-8bit-table)
+ibm1047.h: ../localedata/charmaps/IBM1047 Makefile
+	$(generate-8bit-table)
 
 ifneq ($(PERL),no)
 koi8-r.h: ../localedata/charmaps/KOI8-R Makefile
@@ -196,6 +349,84 @@ latin-greek.h: ../localedata/charmaps/LATIN-GREEK Makefile
 	$(generate-8bit-gap-table)
 latin-greek-1.h: ../localedata/charmaps/LATIN-GREEK-1 Makefile
 	$(generate-8bit-gap-table)
+ibm256.h: ../localedata/charmaps/IBM256 Makefile
+	$(generate-8bit-gap-table)
+ibm273.h: ../localedata/charmaps/IBM273 Makefile
+	$(generate-8bit-gap-table)
+ibm277.h: ../localedata/charmaps/IBM277 Makefile
+	$(generate-8bit-gap-table)
+ibm278.h: ../localedata/charmaps/IBM278 Makefile
+	$(generate-8bit-gap-table)
+ibm280.h: ../localedata/charmaps/IBM280 Makefile
+	$(generate-8bit-gap-table)
+ibm281.h: ../localedata/charmaps/IBM281 Makefile
+	$(generate-8bit-gap-table)
+ibm284.h: ../localedata/charmaps/IBM284 Makefile
+	$(generate-8bit-gap-table)
+ibm285.h: ../localedata/charmaps/IBM285 Makefile
+	$(generate-8bit-gap-table)
+ibm290.h: ../localedata/charmaps/IBM290 Makefile
+	$(generate-8bit-gap-table)
+ibm297.h: ../localedata/charmaps/IBM297 Makefile
+	$(generate-8bit-gap-table)
+ibm420.h: ../localedata/charmaps/IBM420 Makefile
+	$(generate-8bit-gap-table)
+ibm424.h: ../localedata/charmaps/IBM424 Makefile
+	$(generate-8bit-gap-table)
+ibm437.h: ../localedata/charmaps/IBM437 Makefile
+	$(generate-8bit-gap-table)
+ibm850.h: ../localedata/charmaps/IBM850 Makefile
+	$(generate-8bit-gap-table)
+ibm851.h: ../localedata/charmaps/IBM851 Makefile
+	$(generate-8bit-gap-table)
+ibm852.h: ../localedata/charmaps/IBM852 Makefile
+	$(generate-8bit-gap-table)
+ibm855.h: ../localedata/charmaps/IBM855 Makefile
+	$(generate-8bit-gap-table)
+ibm857.h: ../localedata/charmaps/IBM857 Makefile
+	$(generate-8bit-gap-table)
+ibm860.h: ../localedata/charmaps/IBM860 Makefile
+	$(generate-8bit-gap-table)
+ibm861.h: ../localedata/charmaps/IBM861 Makefile
+	$(generate-8bit-gap-table)
+ibm862.h: ../localedata/charmaps/IBM862 Makefile
+	$(generate-8bit-gap-table)
+ibm863.h: ../localedata/charmaps/IBM863 Makefile
+	$(generate-8bit-gap-table)
+ibm864.h: ../localedata/charmaps/IBM864 Makefile
+	$(generate-8bit-gap-table)
+ibm865.h: ../localedata/charmaps/IBM865 Makefile
+	$(generate-8bit-gap-table)
+ibm868.h: ../localedata/charmaps/IBM868 Makefile
+	$(generate-8bit-gap-table)
+ibm869.h: ../localedata/charmaps/IBM869 Makefile
+	$(generate-8bit-gap-table)
+ibm875.h: ../localedata/charmaps/IBM875 Makefile
+	$(generate-8bit-gap-table)
+ibm880.h: ../localedata/charmaps/IBM880 Makefile
+	$(generate-8bit-gap-table)
+ibm918.h: ../localedata/charmaps/IBM918 Makefile
+	$(generate-8bit-gap-table)
+ibm1004.h: ../localedata/charmaps/IBM1004 Makefile
+	$(generate-8bit-gap-table)
+ibm1026.h: ../localedata/charmaps/IBM1026 Makefile
+	$(generate-8bit-gap-table)
+cp1250.h: ../localedata/charmaps/CP1250 Makefile
+	$(generate-8bit-gap-table)
+cp1251.h: ../localedata/charmaps/CP1251 Makefile
+	$(generate-8bit-gap-table)
+cp1252.h: ../localedata/charmaps/CP1252 Makefile
+	$(generate-8bit-gap-table)
+cp1253.h: ../localedata/charmaps/CP1253 Makefile
+	$(generate-8bit-gap-table)
+cp1254.h: ../localedata/charmaps/CP1254 Makefile
+	$(generate-8bit-gap-table)
+cp1255.h: ../localedata/charmaps/CP1255 Makefile
+	$(generate-8bit-gap-table)
+cp1256.h: ../localedata/charmaps/CP1256 Makefile
+	$(generate-8bit-gap-table)
+cp1257.h: ../localedata/charmaps/CP1257 Makefile
+	$(generate-8bit-gap-table)
 endif
 
 headers: $(sed-generated-headers) $(perl-generated-headers)
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index b4c95057c8..d18a808290 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -29,15 +29,37 @@
 # ...
 # N.  target coded character set.
 
-ISO-8859-1	ISO-8859-1	Y	UTF8
-ISO-8859-2	ISO-8859-2	Y	UCS4 UTF8
-ISO-8859-3	ISO-8859-3	Y	UTF8
-ISO-8859-4	ISO-8859-4	Y	UTF8
-ISO-8859-5	ISO-8859-5	Y	UTF8
-ISO-8859-6	ISO-8859-6	Y	UTF8
-ISO-8859-7	ISO-8859-7	Y	UTF8
-ISO-8859-8	ISO-8859-8	Y	UTF8
-ISO-8859-9	ISO-8859-9	Y	UTF8
-ISO-8859-10	ISO-8859-10	Y	UCS2 UTF8
-ANSI_X3.4-1968	ANSI_X3.4-1968	Y	UTF8
-BS_4730		BS_4730		Y	UTF8
+ISO-8859-1		ISO-8859-1		Y	UTF8
+ISO-8859-2		ISO-8859-2		Y	UCS4 UTF8
+ISO-8859-3		ISO-8859-3		Y	UTF8
+ISO-8859-4		ISO-8859-4		Y	UTF8
+ISO-8859-5		ISO-8859-5		Y	UTF8
+ISO-8859-6		ISO-8859-6		Y	UTF8
+ISO-8859-7		ISO-8859-7		Y	UTF8
+ISO-8859-8		ISO-8859-8		Y	UTF8
+ISO-8859-9		ISO-8859-9		Y	UTF8
+ISO-8859-10		ISO-8859-10		Y	UCS2 UTF8
+ANSI_X3.4-1968		ANSI_X3.4-1968		Y	UTF8
+BS_4730			BS_4730			Y	UTF8
+CSA_Z243.4-1985-1	CSA_Z243.4-1985-1	Y	UCS2
+CSA_Z243.4-1985-2	CSA_Z243.4-1985-2	Y	UCS4
+DIN_66003		DIN_66003		Y	UTF8
+DS_2089			DS_2089			Y	UTF8
+ES			ES			Y	UTF8
+ES2			ES2			Y	UTF8
+GB_1988-80		GB_1988-80		Y	UTF8
+IT			IT			Y	UTF8
+JIS_C6220-1969-RO	JIS_C6220-1969-RO	Y	UTF8
+JIS_C6229-1984-B	JIS_C6229-1984-B	Y	UTF8
+JUS_I.B1.002		JUS_I.B1.002		Y	UTF8
+KSC5636			KSC5636			Y	UTF8
+MSZ_7795.3		MSZ_7795.3		Y	UTF8
+NC_NC00-10		NC_NC00-10		Y	UTF8
+NF_Z_62-010		NF_Z_62-010		Y	UTF8
+NF_Z_62-010_1973	NF_Z_62-010_1973	Y	UTF8
+NS_4551-1		NS_4551-1		Y	UTF8
+NS_4551-2		NS_4551-2		Y	UTF8
+PT			PT			Y	UTF8
+PT2			PT2			Y	UTF8
+SEN_850200_B		SEN_850200_B		Y	UTF8
+SEN_850200_C		SEN_850200_C		Y	UTF8
diff --git a/iconvdata/big5.c b/iconvdata/big5.c
index d4d89a04ff..b9ffce6905 100644
--- a/iconvdata/big5.c
+++ b/iconvdata/big5.c
@@ -8412,7 +8412,7 @@ static const char from_ucs4_tab13[][2] =
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"BIG5"
+#define CHARSET_NAME		"BIG5//"
 #define FROM_LOOP		from_big5
 #define TO_LOOP			to_big5
 #define DEFINE_INIT		1
diff --git a/iconvdata/cns11643.h b/iconvdata/cns11643.h
index ccab8011ce..342c8777b6 100644
--- a/iconvdata/cns11643.h
+++ b/iconvdata/cns11643.h
@@ -25,13 +25,13 @@ extern const uint16_t __cns11643l2_to_ucs4_tab[];
 extern const uint16_t __cns11643l14_to_ucs4_tab[];
 
 
-static inline wchar_t
+static inline uint32_t
 cns11643_to_ucs4 (const char **s, size_t avail, unsigned char offset)
 {
   unsigned char ch = *(*s);
   unsigned char ch2;
   unsigned char ch3;
-  wchar_t result;
+  uint32_t result;
   int idx;
 
   if (ch < offset || (ch - offset) <= 0x20 || (ch - offset) > 0x30)
@@ -99,7 +99,7 @@ extern const char __cns11643_from_ucs4_tab[][3];
 
 
 static inline size_t
-ucs4_to_cns11643 (wchar_t wch, char *s, size_t avail)
+ucs4_to_cns11643 (uint32_t wch, char *s, size_t avail)
 {
   unsigned int ch = (unsigned int) wch;
   char buf[2];
@@ -129,7 +129,7 @@ ucs4_to_cns11643 (wchar_t wch, char *s, size_t avail)
     case 0x2109:
       cp = "\x22\x6b";
       break;
-    case 0x2160 ...0x2169:
+    case 0x2160 ... 0x2169:
       buf[0] = '\x24';
       buf[1] = '\x2b' + (ch - 0x2160);
       break;
@@ -157,6 +157,7 @@ ucs4_to_cns11643 (wchar_t wch, char *s, size_t avail)
       break;
     case 0x2500 ... 0x2642:
       cp = __cns11643l1_from_ucs4_tab9[ch - 0x2500];
+      break;
     case 0x3000 ... 0x3029:
       cp = __cns11643l1_from_ucs4_tab10[ch - 0x3000];
       break;
@@ -199,7 +200,7 @@ ucs4_to_cns11643 (wchar_t wch, char *s, size_t avail)
       cp = "\x22\x64";
       break;
     default:
-      cp = "";
+      return UNKNOWN_10646_CHAR;
     }
 
   if (cp[0] == '\0')
diff --git a/iconvdata/cns11643l1.h b/iconvdata/cns11643l1.h
index aa78c26d6c..5e5abb76e4 100644
--- a/iconvdata/cns11643l1.h
+++ b/iconvdata/cns11643l1.h
@@ -25,7 +25,7 @@
 extern const uint16_t __cns11643l1_to_ucs4_tab[];
 
 
-static inline wchar_t
+static inline uint32_t
 cns11643l1_to_ucs4 (const char **s, size_t avail, unsigned char offset)
 {
   unsigned char ch = *(*s);
@@ -70,7 +70,7 @@ extern const char __cns11643l1_from_ucs4_tab14[][2];
 
 
 static inline size_t
-ucs4_to_cns11643l1 (wchar_t wch, char *s, size_t avail)
+ucs4_to_cns11643l1 (uint32_t wch, char *s, size_t avail)
 {
   unsigned int ch = (unsigned int) wch;
   char buf[2];
@@ -86,8 +86,10 @@ ucs4_to_cns11643l1 (wchar_t wch, char *s, size_t avail)
       break;
     case 0x391 ... 0x3c9:
       cp = __cns11643l1_from_ucs4_tab3[ch - 0x391];
+      break;
     case 0x2013 ... 0x203e:
       cp = __cns11643l1_from_ucs4_tab4[ch - 0x2013];
+      break;
     case 0x2103:
       cp = "\x22\x6a";
       break;
@@ -105,7 +107,7 @@ ucs4_to_cns11643l1 (wchar_t wch, char *s, size_t avail)
       buf[0] = '\x26';
       buf[1] = '\x35' + (ch - 0x2170);
       break;
-    case 0x2190 ...0x2199:
+    case 0x2190 ... 0x2199:
       cp = __cns11643l1_from_ucs4_tab5[ch - 0x2190];
       break;
     case 0x2215 ... 0x2267:
@@ -161,7 +163,7 @@ ucs4_to_cns11643l1 (wchar_t wch, char *s, size_t avail)
       cp = "\x22\x64";
       break;
     default:
-      buf[0] = '\0';
+      return UNKNOWN_10646_CHAR;
     }
 
   if (cp[0] == '\0')
diff --git a/iconvdata/cp1250.c b/iconvdata/cp1250.c
new file mode 100644
index 0000000000..7c9deeddbc
--- /dev/null
+++ b/iconvdata/cp1250.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1250.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1250.h>
+
+#define CHARSET_NAME	"CP1250//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1251.c b/iconvdata/cp1251.c
new file mode 100644
index 0000000000..f3cbcc94b7
--- /dev/null
+++ b/iconvdata/cp1251.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1251.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1251.h>
+
+#define CHARSET_NAME	"CP1251//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1252.c b/iconvdata/cp1252.c
new file mode 100644
index 0000000000..84eaf0dc71
--- /dev/null
+++ b/iconvdata/cp1252.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1252.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1252.h>
+
+#define CHARSET_NAME	"CP1252//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1253.c b/iconvdata/cp1253.c
new file mode 100644
index 0000000000..b6273947bd
--- /dev/null
+++ b/iconvdata/cp1253.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1253.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1253.h>
+
+#define CHARSET_NAME	"CP1253//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1254.c b/iconvdata/cp1254.c
new file mode 100644
index 0000000000..aa3b23dcf8
--- /dev/null
+++ b/iconvdata/cp1254.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1254.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1254.h>
+
+#define CHARSET_NAME	"CP1254//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1255.c b/iconvdata/cp1255.c
new file mode 100644
index 0000000000..b9e6ac9bc9
--- /dev/null
+++ b/iconvdata/cp1255.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1255.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1255.h>
+
+#define CHARSET_NAME	"CP1255//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1256.c b/iconvdata/cp1256.c
new file mode 100644
index 0000000000..e7092ab611
--- /dev/null
+++ b/iconvdata/cp1256.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1256.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1256.h>
+
+#define CHARSET_NAME	"CP1256//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/cp1257.c b/iconvdata/cp1257.c
new file mode 100644
index 0000000000..8be05bcb46
--- /dev/null
+++ b/iconvdata/cp1257.c
@@ -0,0 +1,29 @@
+/* Conversion from and to CP1257.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <cp1257.h>
+
+#define CHARSET_NAME	"CP1257//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ebcdic-at-de-a.c b/iconvdata/ebcdic-at-de-a.c
index 654bdf87fd..9a6e779ddd 100644
--- a/iconvdata/ebcdic-at-de-a.c
+++ b/iconvdata/ebcdic-at-de-a.c
@@ -23,7 +23,7 @@
 /* Get the conversion table.  */
 #include <ebcdic-at-de-a.h>
 
-#define CHARSET_NAME	"EBCDIC-AT-DE-A"
+#define CHARSET_NAME	"EBCDIC-AT-DE-A//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-at-de.c b/iconvdata/ebcdic-at-de.c
index ab718851d9..ef6c8c0e9f 100644
--- a/iconvdata/ebcdic-at-de.c
+++ b/iconvdata/ebcdic-at-de.c
@@ -23,7 +23,7 @@
 /* Get the conversion table.  */
 #include <ebcdic-at-de.h>
 
-#define CHARSET_NAME	"EBCDIC-AT-DE"
+#define CHARSET_NAME	"EBCDIC-AT-DE//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-ca-fr.c b/iconvdata/ebcdic-ca-fr.c
index 91cf5aa388..8323a83945 100644
--- a/iconvdata/ebcdic-ca-fr.c
+++ b/iconvdata/ebcdic-ca-fr.c
@@ -23,7 +23,7 @@
 /* Get the conversion table.  */
 #include <ebcdic-ca-fr.h>
 
-#define CHARSET_NAME	"EBCDIC-CA-FR"
+#define CHARSET_NAME	"EBCDIC-CA-FR//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-dk-no-a.c b/iconvdata/ebcdic-dk-no-a.c
new file mode 100644
index 0000000000..771b79cf5a
--- /dev/null
+++ b/iconvdata/ebcdic-dk-no-a.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-DK-NO-A.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-dk-no-a.h>
+
+#define CHARSET_NAME	"EBCDIC-DK-NO-A//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-dk-no.c b/iconvdata/ebcdic-dk-no.c
new file mode 100644
index 0000000000..991429221b
--- /dev/null
+++ b/iconvdata/ebcdic-dk-no.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-DK-NO.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-dk-no.h>
+
+#define CHARSET_NAME	"EBCDIC-DK-NO//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-es-a.c b/iconvdata/ebcdic-es-a.c
new file mode 100644
index 0000000000..5083262c9d
--- /dev/null
+++ b/iconvdata/ebcdic-es-a.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-ES-A.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-es-a.h>
+
+#define CHARSET_NAME	"EBCDIC-ES-A//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-es-s.c b/iconvdata/ebcdic-es-s.c
new file mode 100644
index 0000000000..74a13b5302
--- /dev/null
+++ b/iconvdata/ebcdic-es-s.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-ES-S.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-es-s.h>
+
+#define CHARSET_NAME	"EBCDIC-ES-S//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-es.c b/iconvdata/ebcdic-es.c
new file mode 100644
index 0000000000..111ebaac99
--- /dev/null
+++ b/iconvdata/ebcdic-es.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-ES.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-es.h>
+
+#define CHARSET_NAME	"EBCDIC-ES//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-fi-se-a.c b/iconvdata/ebcdic-fi-se-a.c
new file mode 100644
index 0000000000..d07adc9a59
--- /dev/null
+++ b/iconvdata/ebcdic-fi-se-a.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-FI-SE-A.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-fi-se-a.h>
+
+#define CHARSET_NAME	"EBCDIC-FI-SE-A//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-fi-se.c b/iconvdata/ebcdic-fi-se.c
new file mode 100644
index 0000000000..cceb2d61db
--- /dev/null
+++ b/iconvdata/ebcdic-fi-se.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-FI-SE.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-fi-se.h>
+
+#define CHARSET_NAME	"EBCDIC-FI-SE//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-fr.c b/iconvdata/ebcdic-fr.c
new file mode 100644
index 0000000000..de646a4489
--- /dev/null
+++ b/iconvdata/ebcdic-fr.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-FR.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-fr.h>
+
+#define CHARSET_NAME	"EBCDIC-FR//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-is-friss.c b/iconvdata/ebcdic-is-friss.c
new file mode 100644
index 0000000000..ca86744cf9
--- /dev/null
+++ b/iconvdata/ebcdic-is-friss.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-IS-FRISS.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-is-friss.h>
+
+#define CHARSET_NAME	"EBCDIC-IS-FRISS//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-it.c b/iconvdata/ebcdic-it.c
new file mode 100644
index 0000000000..48f26f9099
--- /dev/null
+++ b/iconvdata/ebcdic-it.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-IT.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-it.h>
+
+#define CHARSET_NAME	"EBCDIC-IT//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-pt.c b/iconvdata/ebcdic-pt.c
new file mode 100644
index 0000000000..a5d267999f
--- /dev/null
+++ b/iconvdata/ebcdic-pt.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-PT.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-pt.h>
+
+#define CHARSET_NAME	"EBCDIC-PT//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-uk.c b/iconvdata/ebcdic-uk.c
new file mode 100644
index 0000000000..4a4c85c853
--- /dev/null
+++ b/iconvdata/ebcdic-uk.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-UK.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-uk.h>
+
+#define CHARSET_NAME	"EBCDIC-UK//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ebcdic-us.c b/iconvdata/ebcdic-us.c
new file mode 100644
index 0000000000..2f8336ef86
--- /dev/null
+++ b/iconvdata/ebcdic-us.c
@@ -0,0 +1,29 @@
+/* Conversion from and to EBCDIC-US.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ebcdic-us.h>
+
+#define CHARSET_NAME	"EBCDIC-US//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/euccn.c b/iconvdata/euccn.c
index 90e82cb41e..7ab670f9f5 100644
--- a/iconvdata/euccn.c
+++ b/iconvdata/euccn.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"EUC-CN"
+#define CHARSET_NAME		"EUC-CN//"
 #define FROM_LOOP		from_euc_cn
 #define TO_LOOP			to_euc_cn
 #define DEFINE_INIT		1
diff --git a/iconvdata/eucjp.c b/iconvdata/eucjp.c
index 24ebed94ec..96e075628c 100644
--- a/iconvdata/eucjp.c
+++ b/iconvdata/eucjp.c
@@ -25,7 +25,7 @@
 #include <jis0212.h>
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"EUC-JP"
+#define CHARSET_NAME		"EUC-JP//"
 #define FROM_LOOP		from_euc_jp
 #define TO_LOOP			to_euc_jp
 #define DEFINE_INIT		1
diff --git a/iconvdata/euckr.c b/iconvdata/euckr.c
index 50e4b40838..51848843d9 100644
--- a/iconvdata/euckr.c
+++ b/iconvdata/euckr.c
@@ -46,7 +46,7 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp)
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"EUC-KR"
+#define CHARSET_NAME		"EUC-KR//"
 #define FROM_LOOP		from_euc_kr
 #define TO_LOOP			to_euc_kr
 #define DEFINE_INIT		1
@@ -70,7 +70,7 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp)
        if (inchar == 0x5c)						      \
 	 ch =  0x20a9;							      \
        else if (inchar <= 0x7f)						      \
-	 ch = (wchar_t) inchar;						      \
+	 ch = (uint32_t) inchar;					      \
     */									      \
 									      \
     if (ch <= 0x7f)							      \
diff --git a/iconvdata/euctw.c b/iconvdata/euctw.c
index 406dd67f29..ca1cdac40e 100644
--- a/iconvdata/euctw.c
+++ b/iconvdata/euctw.c
@@ -23,7 +23,7 @@
 #include <cns11643.h>
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"EUC-TW"
+#define CHARSET_NAME		"EUC-TW//"
 #define FROM_LOOP		from_euc_tw
 #define TO_LOOP			to_euc_tw
 #define DEFINE_INIT		1
diff --git a/iconvdata/gb2312.h b/iconvdata/gb2312.h
index df87950436..5b405a1138 100644
--- a/iconvdata/gb2312.h
+++ b/iconvdata/gb2312.h
@@ -28,7 +28,7 @@
 extern const uint16_t __gb2312_to_ucs[];
 
 
-static inline wchar_t
+static inline uint32_t
 gb2312_to_ucs4 (const char **s, size_t avail, unsigned char offset)
 {
   unsigned char ch = *(*s);
@@ -66,7 +66,7 @@ extern const char __gb2312_from_ucs4_tab8[][2];
 extern const char __gb2312_from_ucs4_tab9[][2];
 
 static inline size_t
-ucs4_to_gb2312 (wchar_t wch, char *s, size_t avail)
+ucs4_to_gb2312 (uint32_t wch, char *s, size_t avail)
 {
   unsigned int ch = (unsigned int) wch;
   char buf[2];
diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules
index d5109dcf29..1648dce5f5 100644
--- a/iconvdata/gconv-modules
+++ b/iconvdata/gconv-modules
@@ -53,6 +53,137 @@ alias	UK//			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//
+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//
+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//
+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//
+module	DS_2089//		INTERNAL		ISO646		2
+module	INTERNAL		DS_2089//		ISO646		2
+
+alias	ISO-IR-17//		ES//
+alias	ISO646-ES//		ES//
+module	ES//			INTERNAL		ISO646		2
+module	INTERNAL		ES//			ISO646		2
+
+alias	ISO-IR-85//		ES2//
+alias	ISO646-ES2//		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//
+module	GB_1988-80//		INTERNAL		ISO646		2
+module	INTERNAL		GB_1988-80//		ISO646		2
+
+alias	ISO-IR-15//		IT//
+alias	ISO646-IT//		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//
+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//
+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//
+module	JUS_I.B1.002//		INTERNAL		ISO646		2
+module	INTERNAL		JUS_I.B1.002//		ISO646		2
+
+alias	ISO646-KR//		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//
+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//
+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//
+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)//
+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//
+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//
+module	NS_4551-2//		INTERNAL		ISO646		2
+module	INTERNAL		NS_4551-2//		ISO646		2
+
+alias	ISO-IR-16//		PT//
+alias	ISO646-PT//		PT//
+module	PT//			INTERNAL		ISO646		2
+module	INTERNAL		PT//			ISO646		2
+
+alias	ISO-IR-84//		PT2//
+alias	ISO646-PT2		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	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//
+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//
@@ -61,6 +192,7 @@ alias	LATIN1//		ISO-8859-1//
 alias	L1//			ISO-8859-1//
 alias	IBM819//		ISO-8859-1//
 alias	CP819//			ISO-8859-1//
+alias	8859_1//		ISO-8859-1//
 module	ISO-8859-1//		INTERNAL		ISO8859-1	1
 module	INTERNAL		ISO-8859-1//		ISO8859-1	1
 
@@ -70,6 +202,7 @@ alias	ISO_8859-2:1987//	ISO-8859-2//
 alias	ISO_8859-2//		ISO-8859-2//
 alias	LATIN2//		ISO-8859-2//
 alias	L2//			ISO-8859-2//
+alias	8859_2//		ISO-8859-2//
 module	ISO-8859-2//		INTERNAL		ISO8859-2	1
 module	INTERNAL		ISO-8859-2//		ISO8859-2	1
 
@@ -79,6 +212,7 @@ alias	ISO_8859-3:1988//	ISO-8859-3//
 alias	ISO_8859-3//		ISO-8859-3//
 alias	LATIN3//		ISO-8859-3//
 alias	L3//			ISO-8859-3//
+alias	8859_3//		ISO-8859-3//
 module	ISO-8859-3//		INTERNAL		ISO8859-3	1
 module	INTERNAL		ISO-8859-3//		ISO8859-3	1
 
@@ -88,6 +222,7 @@ alias	ISO_8859-4:1988//	ISO-8859-4//
 alias	ISO_8859-4//		ISO-8859-4//
 alias	LATIN4//		ISO-8859-4//
 alias	L4//			ISO-8859-4//
+alias	8859_4//		ISO-8859-4//
 module	ISO-8859-4//		INTERNAL		ISO8859-4	1
 module	INTERNAL		ISO-8859-4//		ISO8859-4	1
 
@@ -96,6 +231,7 @@ alias	ISO-IR-144//		ISO-8859-5//
 alias	ISO_8859-5:1988//	ISO-8859-5//
 alias	ISO_8859-5//		ISO-8859-5//
 alias	CYRILLIC//		ISO-8859-5//
+alias	8859_5//		ISO-8859-5//
 module	ISO-8859-5//		INTERNAL		ISO8859-5	1
 module	INTERNAL		ISO-8859-5//		ISO8859-5	1
 
@@ -106,6 +242,7 @@ alias	ISO_8859-6//		ISO-8859-6//
 alias	ECMA-114//		ISO-8859-6//
 alias	ASMO-708//		ISO-8859-6//
 alias	ARABIC//		ISO-8859-6//
+alias	8859_6//		ISO-8859-6//
 module	ISO-8859-6//		INTERNAL		ISO8859-6	1
 module	INTERNAL		ISO-8859-6//		ISO8859-6	1
 
@@ -117,6 +254,7 @@ alias	ELOT_928//		ISO-8859-7//
 alias	ECMA-118//		ISO-8859-7//
 alias	GREEK//			ISO-8859-7//
 alias	GREEK8//		ISO-8859-7//
+alias	8859_7//		ISO-8859-7//
 module	ISO-8859-7//		INTERNAL		ISO8859-7	1
 module	INTERNAL		ISO-8859-7//		ISO8859-7	1
 
@@ -125,6 +263,7 @@ alias	ISO-IR-138//		ISO-8859-8//
 alias	ISO_8859-8:1988//	ISO-8859-8//
 alias	ISO_8859-8//		ISO-8859-8//
 alias	HEBREW//		ISO-8859-8//
+alias	8859_8//		ISO-8859-8//
 module	ISO-8859-8//		INTERNAL		ISO8859-8	1
 module	INTERNAL		ISO-8859-8//		ISO8859-8	1
 
@@ -134,6 +273,7 @@ alias	ISO_8859-9:1989//	ISO-8859-9//
 alias	ISO_8859-9//		ISO-8859-9//
 alias	LATIN5//		ISO-8859-9//
 alias	L5//			ISO-8859-9//
+alias	8859_9//		ISO-8859-9//
 module	ISO-8859-9//		INTERNAL		ISO8859-9	1
 module	INTERNAL		ISO-8859-9//		ISO8859-9	1
 
@@ -201,6 +341,327 @@ module	EBCDIC-CA-FR//		INTERNAL		EBCDIC-CA-FR	1
 module	INTERNAL		EBCDIC-CA-FR//		EBCDIC-CA-FR	1
 
 #	from			  to			module		cost
+module	EBCDIC-DK-NO//		INTERNAL		EBCDIC-DK-NO	1
+module	INTERNAL		EBCDIC-DK-NO//		EBCDIC-DK-NO	1
+
+#	from			  to			module		cost
+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
+module	EBCDIC-ES//		INTERNAL		EBCDIC-ES	1
+module	INTERNAL		EBCDIC-ES//		EBCDIC-ES	1
+
+#	from			  to			module		cost
+module	EBCDIC-ES-A//		INTERNAL		EBCDIC-ES-A	1
+module	INTERNAL		EBCDIC-ES-A//		EBCDIC-ES-A	1
+
+#	from			  to			module		cost
+module	EBCDIC-ES-S//		INTERNAL		EBCDIC-ES-S	1
+module	INTERNAL		EBCDIC-ES-S//		EBCDIC-ES-S	1
+
+#	from			  to			module		cost
+module	EBCDIC-FI-SE//		INTERNAL		EBCDIC-FI-SE	1
+module	INTERNAL		EBCDIC-FI-SE//		EBCDIC-FI-SE	1
+
+#	from			  to			module		cost
+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
+module	EBCDIC-FR//		INTERNAL		EBCDIC-FR	1
+module	INTERNAL		EBCDIC-FR//		EBCDIC-FR	1
+
+#	from			  to			module		cost
+module	EBCDIC-IS-FRISS//	INTERNAL		EBCDIC-IS-FRISS	1
+module	INTERNAL		EBCDIC-IS-FRISS//	EBCDIC-IS-FRISS	1
+
+#	from			  to			module		cost
+module	EBCDIC-IT//		INTERNAL		EBCDIC-IT	1
+module	INTERNAL		EBCDIC-IT//		EBCDIC-IT	1
+
+#	from			  to			module		cost
+module	EBCDIC-PT//		INTERNAL		EBCDIC-PT	1
+module	INTERNAL		EBCDIC-PT//		EBCDIC-PT	1
+
+#	from			  to			module		cost
+module	EBCDIC-UK//		INTERNAL		EBCDIC-UK	1
+module	INTERNAL		EBCDIC-UK//		EBCDIC-UK	1
+
+#	from			  to			module		cost
+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//
+module	IBM037//		INTERNAL		IBM037		1
+module	INTERNAL		IBM037//		IBM037		1
+
+#	from			  to			module		cost
+alias	EBCDIC-INT//		IBM038//
+alias	CP038//			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//
+module	IBM273//		INTERNAL		IBM273		1
+module	INTERNAL		IBM273//		IBM273		1
+
+#	from			  to			module		cost
+alias	EBCDIC-BE//		IBM274//
+alias	CP274//			IBM274//
+module	IBM274//		INTERNAL		IBM274		1
+module	INTERNAL		IBM274//		IBM274		1
+
+#	from			  to			module		cost
+alias	EBCDIC-BR//		IBM275//
+alias	CP275//			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//
+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//
+module	IBM278//		INTERNAL		IBM278		1
+module	INTERNAL		IBM278//		IBM278		1
+
+#	from			  to			module		cost
+alias	CP280//			IBM280//
+alias	EBCDIC-CP-IT//		IBM280//
+module	IBM280//		INTERNAL		IBM280		1
+module	INTERNAL		IBM280//		IBM280		1
+
+#	from			  to			module		cost
+alias	EBCDIC-JP-E//		IBM281//
+alias	CP281//			IBM281//
+module	IBM281//		INTERNAL		IBM281		1
+module	INTERNAL		IBM281//		IBM281		1
+
+#	from			  to			module		cost
+alias	CP284//			IBM284//
+alias	EBCDIC-CP-ES//		IBM284//
+module	IBM284//		INTERNAL		IBM284		1
+module	INTERNAL		IBM284//		IBM284		1
+
+#	from			  to			module		cost
+alias	CP285//			IBM285//
+alias	EBCDIC-CP-GB//		IBM285//
+module	IBM285//		INTERNAL		IBM285		1
+module	INTERNAL		IBM285//		IBM285		1
+
+#	from			  to			module		cost
+alias	CP290//			IBM290//
+alias	EBCDIC-JP-KANA//	IBM290//
+module	IBM290//		INTERNAL		IBM290		1
+module	INTERNAL		IBM290//		IBM290		1
+
+#	from			  to			module		cost
+alias	CP297//			IBM297//
+alias	EBCDIC-CP-FR//		IBM297//
+module	IBM297//		INTERNAL		IBM297		1
+module	INTERNAL		IBM297//		IBM297		1
+
+#	from			  to			module		cost
+alias	CP420//			IBM420//
+alias	EBCDIC-CP-AR1//		IBM420//
+module	IBM420//		INTERNAL		IBM420		1
+module	INTERNAL		IBM420//		IBM420		1
+
+#	from			  to			module		cost
+alias	CP423//			IBM423//
+alias	EBCDIC-CP-GR//		IBM423//
+module	IBM423//		INTERNAL		IBM423		1
+module	INTERNAL		IBM423//		IBM423		1
+
+#	from			  to			module		cost
+alias	CP424//			IBM424//
+alias	EBCDIC-CP-HE//		IBM424//
+module	IBM424//		INTERNAL		IBM424		1
+module	INTERNAL		IBM424//		IBM424		1
+
+#	from			  to			module		cost
+alias	CP437//			IBM437//
+alias	437//			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//
+module	IBM500//		INTERNAL		IBM500		1
+module	INTERNAL		IBM500//		IBM500		1
+
+#	from			  to			module		cost
+alias	CP850//			IBM850//
+alias	850//			IBM850//
+module	IBM850//		INTERNAL		IBM850		1
+module	INTERNAL		IBM850//		IBM850		1
+
+#	from			  to			module		cost
+alias	CP851//			IBM851//
+alias	851//			IBM851//
+module	IBM851//		INTERNAL		IBM851		1
+module	INTERNAL		IBM851//		IBM851		1
+
+#	from			  to			module		cost
+alias	CP852//			IBM852//
+alias	852//			IBM852//
+module	IBM852//		INTERNAL		IBM852		1
+module	INTERNAL		IBM852//		IBM852		1
+
+#	from			  to			module		cost
+alias	CP855//			IBM855//
+alias	855//			IBM855//
+module	IBM855//		INTERNAL		IBM855		1
+module	INTERNAL		IBM855//		IBM855		1
+
+#	from			  to			module		cost
+alias	CP857//			IBM857//
+alias	857//			IBM857//
+module	IBM857//		INTERNAL		IBM857		1
+module	INTERNAL		IBM857//		IBM857		1
+
+#	from			  to			module		cost
+alias	CP860//			IBM860//
+alias	860//			IBM860//
+module	IBM860//		INTERNAL		IBM860		1
+module	INTERNAL		IBM860//		IBM860		1
+
+#	from			  to			module		cost
+alias	CP861//			IBM861//
+alias	861//			IBM861//
+module	IBM861//		INTERNAL		IBM861		1
+module	INTERNAL		IBM861//		IBM861		1
+
+#	from			  to			module		cost
+alias	CP862//			IBM862//
+alias	862//			IBM862//
+module	IBM862//		INTERNAL		IBM862		1
+module	INTERNAL		IBM862//		IBM862		1
+
+#	from			  to			module		cost
+alias	CP863//			IBM863//
+alias	863//			IBM863//
+module	IBM863//		INTERNAL		IBM863		1
+module	INTERNAL		IBM863//		IBM863		1
+
+#	from			  to			module		cost
+alias	CP864//			IBM864//
+alias	864//			IBM864//
+module	IBM864//		INTERNAL		IBM864		1
+module	INTERNAL		IBM864//		IBM864		1
+
+#	from			  to			module		cost
+alias	CP865//			IBM865//
+alias	865//			IBM865//
+module	IBM865//		INTERNAL		IBM865		1
+module	INTERNAL		IBM865//		IBM865		1
+
+#	from			  to			module		cost
+alias	CP868//			IBM868//
+alias	CP-AR//			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//
+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//
+module	IBM870//		INTERNAL		IBM870		1
+module	INTERNAL		IBM870//		IBM870		1
+
+#	from			  to			module		cost
+alias	CP871//			IBM871//
+alias	EBCDIC-CP-IS//		IBM871//
+module	IBM871//		INTERNAL		IBM871		1
+module	INTERNAL		IBM871//		IBM871		1
+
+#	from			  to			module		cost
+alias	CP875//			IBM875//
+alias	EBCDIC-GREEK//		IBM875//
+module	IBM875//		INTERNAL		IBM875		1
+module	INTERNAL		IBM875//		IBM875		1
+
+#	from			  to			module		cost
+alias	CP880//			IBM880//
+alias	EBCDIC-CYRILLIC//	IBM880//
+module	IBM880//		INTERNAL		IBM880		1
+module	INTERNAL		IBM880//		IBM880		1
+
+#	from			  to			module		cost
+alias	CP891//			IBM891//
+module	IBM891//		INTERNAL		IBM891		1
+module	INTERNAL		IBM891//		IBM891		1
+
+#	from			  to			module		cost
+alias	CP903//			IBM903//
+module	IBM903//		INTERNAL		IBM903		1
+module	INTERNAL		IBM903//		IBM903		1
+
+#	from			  to			module		cost
+alias	CP904//			IBM904//
+alias	904//			IBM904//
+module	IBM904//		INTERNAL		IBM904		1
+module	INTERNAL		IBM904//		IBM904		1
+
+#	from			  to			module		cost
+alias	CP905//			IBM905//
+alias	EBCDIC-CP-TR//		IBM905//
+module	IBM905//		INTERNAL		IBM905		1
+module	INTERNAL		IBM905//		IBM905		1
+
+#	from			  to			module		cost
+alias	CP918//			IBM918//
+alias	EBCDIC-CP-AR2//		IBM918//
+module	IBM918//		INTERNAL		IBM918		1
+module	INTERNAL		IBM918//		IBM918		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//
+module	IBM1026//		INTERNAL		IBM1026		1
+module	INTERNAL		IBM1026//		IBM1026		1
+
+#	from			  to			module		cost
+alias	CP1047//		IBM1047//
+alias	1047//			IBM1047//
+module	IBM1047//		INTERNAL		IBM1047		1
+module	INTERNAL		IBM1047//		IBM1047		1
+
+#	from			  to			module		cost
 alias	EUCKR//			EUC-KR//
 module	EUC-KR//		INTERNAL		EUC-KR		1
 module	INTERNAL		EUC-KR//		EUC-KR		1
@@ -236,3 +697,43 @@ module	INTERNAL		EUC-CN//		EUC-CN		1
 alias	EUCTW//			EUC-TW//
 module	EUC-TW//		INTERNAL		EUC-TW		1
 module	INTERNAL		EUC-TW//		EUC-TW		1
+
+#	from			  to			module		cost
+alias	MS-EE//			CP1250//
+module	CP1250//		INTERNAL		CP1250		1
+module	INTERNAL		CP1250//		CP1250		1
+
+#	from			  to			module		cost
+alias	MS-CYRL//		CP1251//
+module	CP1251//		INTERNAL		CP1251		1
+module	INTERNAL		CP1251//		CP1251		1
+
+#	from			  to			module		cost
+alias	MS-ANSI//		CP1252//
+module	CP1252//		INTERNAL		CP1252		1
+module	INTERNAL		CP1252//		CP1252		1
+
+#	from			  to			module		cost
+alias	MS-GREEK//		CP1253//
+module	CP1253//		INTERNAL		CP1253		1
+module	INTERNAL		CP1253//		CP1253		1
+
+#	from			  to			module		cost
+alias	MS-TURK//		CP1254//
+module	CP1254//		INTERNAL		CP1254		1
+module	INTERNAL		CP1254//		CP1254		1
+
+#	from			  to			module		cost
+alias	MS-TURK//		CP1255//
+module	CP1255//		INTERNAL		CP1255		1
+module	INTERNAL		CP1255//		CP1255		1
+
+#	from			  to			module		cost
+alias	MS-ARAB//		CP1256//
+module	CP1256//		INTERNAL		CP1256		1
+module	INTERNAL		CP1256//		CP1256		1
+
+#	from			  to			module		cost
+alias	WINBLATRIM//		CP1257//
+module	CP1257//		INTERNAL		CP1257		1
+module	INTERNAL		CP1257//		CP1257		1
diff --git a/iconvdata/hp-roman8.c b/iconvdata/hp-roman8.c
index 62e29ea463..6f83e8f165 100644
--- a/iconvdata/hp-roman8.c
+++ b/iconvdata/hp-roman8.c
@@ -23,7 +23,7 @@
 /* Get the conversion table.  */
 #include <hp-roman8.h>
 
-#define CHARSET_NAME	"HP-ROMAN8"
+#define CHARSET_NAME	"HP-ROMAN8//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/ibm037.c b/iconvdata/ibm037.c
new file mode 100644
index 0000000000..c790bc7a08
--- /dev/null
+++ b/iconvdata/ibm037.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM037.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm037.h>
+
+#define CHARSET_NAME	"IBM037//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm038.c b/iconvdata/ibm038.c
new file mode 100644
index 0000000000..a769cb12da
--- /dev/null
+++ b/iconvdata/ibm038.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM038.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm038.h>
+
+#define CHARSET_NAME	"IBM038//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm1004.c b/iconvdata/ibm1004.c
new file mode 100644
index 0000000000..a84e7fe00a
--- /dev/null
+++ b/iconvdata/ibm1004.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1004.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1004.h>
+
+#define CHARSET_NAME	"IBM1004//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1026.c b/iconvdata/ibm1026.c
new file mode 100644
index 0000000000..7b01a6cc83
--- /dev/null
+++ b/iconvdata/ibm1026.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1026.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm1026.h>
+
+#define CHARSET_NAME	"IBM1026//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm1047.c b/iconvdata/ibm1047.c
new file mode 100644
index 0000000000..259351dab6
--- /dev/null
+++ b/iconvdata/ibm1047.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM1047.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm1047.h>
+
+#define CHARSET_NAME	"IBM1047//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm256.c b/iconvdata/ibm256.c
new file mode 100644
index 0000000000..b38ea7fd4f
--- /dev/null
+++ b/iconvdata/ibm256.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM256.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm256.h>
+
+#define CHARSET_NAME	"IBM256//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm273.c b/iconvdata/ibm273.c
new file mode 100644
index 0000000000..df8b96ebe6
--- /dev/null
+++ b/iconvdata/ibm273.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM273.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm273.h>
+
+#define CHARSET_NAME	"IBM273//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm274.c b/iconvdata/ibm274.c
new file mode 100644
index 0000000000..a61b315a3f
--- /dev/null
+++ b/iconvdata/ibm274.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM274.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm274.h>
+
+#define CHARSET_NAME	"IBM274//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm275.c b/iconvdata/ibm275.c
new file mode 100644
index 0000000000..97f7cc3c4c
--- /dev/null
+++ b/iconvdata/ibm275.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM275.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm275.h>
+
+#define CHARSET_NAME	"IBM275//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm277.c b/iconvdata/ibm277.c
new file mode 100644
index 0000000000..cc54d565be
--- /dev/null
+++ b/iconvdata/ibm277.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM277.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm277.h>
+
+#define CHARSET_NAME	"IBM277//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm278.c b/iconvdata/ibm278.c
new file mode 100644
index 0000000000..c471ef90b2
--- /dev/null
+++ b/iconvdata/ibm278.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM278.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm278.h>
+
+#define CHARSET_NAME	"IBM278//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm280.c b/iconvdata/ibm280.c
new file mode 100644
index 0000000000..4ff67d6581
--- /dev/null
+++ b/iconvdata/ibm280.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM280.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm280.h>
+
+#define CHARSET_NAME	"IBM280//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm281.c b/iconvdata/ibm281.c
new file mode 100644
index 0000000000..74866c26cf
--- /dev/null
+++ b/iconvdata/ibm281.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM281.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm281.h>
+
+#define CHARSET_NAME	"IBM281//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm284.c b/iconvdata/ibm284.c
new file mode 100644
index 0000000000..9b06c1a81c
--- /dev/null
+++ b/iconvdata/ibm284.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM284.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm284.h>
+
+#define CHARSET_NAME	"IBM284//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm285.c b/iconvdata/ibm285.c
new file mode 100644
index 0000000000..e4fb3a7299
--- /dev/null
+++ b/iconvdata/ibm285.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM285.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm285.h>
+
+#define CHARSET_NAME	"IBM285//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm290.c b/iconvdata/ibm290.c
new file mode 100644
index 0000000000..2925ff5ce1
--- /dev/null
+++ b/iconvdata/ibm290.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM290.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm290.h>
+
+#define CHARSET_NAME	"IBM290//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm297.c b/iconvdata/ibm297.c
new file mode 100644
index 0000000000..e11eed8ec9
--- /dev/null
+++ b/iconvdata/ibm297.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM297.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm297.h>
+
+#define CHARSET_NAME	"IBM297//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm420.c b/iconvdata/ibm420.c
new file mode 100644
index 0000000000..b4accea870
--- /dev/null
+++ b/iconvdata/ibm420.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM420.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm420.h>
+
+#define CHARSET_NAME	"IBM420//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm423.c b/iconvdata/ibm423.c
new file mode 100644
index 0000000000..5b772bf00e
--- /dev/null
+++ b/iconvdata/ibm423.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM423.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm423.h>
+
+#define CHARSET_NAME	"IBM423//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm424.c b/iconvdata/ibm424.c
new file mode 100644
index 0000000000..03a0139371
--- /dev/null
+++ b/iconvdata/ibm424.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM424.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm424.h>
+
+#define CHARSET_NAME	"IBM424//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm437.c b/iconvdata/ibm437.c
new file mode 100644
index 0000000000..c0f1ffbb48
--- /dev/null
+++ b/iconvdata/ibm437.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM437.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm437.h>
+
+#define CHARSET_NAME	"IBM437//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm500.c b/iconvdata/ibm500.c
new file mode 100644
index 0000000000..dadf0c43c4
--- /dev/null
+++ b/iconvdata/ibm500.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM500.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm500.h>
+
+#define CHARSET_NAME	"IBM500//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm850.c b/iconvdata/ibm850.c
new file mode 100644
index 0000000000..63910b618e
--- /dev/null
+++ b/iconvdata/ibm850.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM850.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm850.h>
+
+#define CHARSET_NAME	"IBM850//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm851.c b/iconvdata/ibm851.c
new file mode 100644
index 0000000000..e6bbba8186
--- /dev/null
+++ b/iconvdata/ibm851.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM851.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm851.h>
+
+#define CHARSET_NAME	"IBM851//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm852.c b/iconvdata/ibm852.c
new file mode 100644
index 0000000000..b3b3c2adb2
--- /dev/null
+++ b/iconvdata/ibm852.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM852.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm852.h>
+
+#define CHARSET_NAME	"IBM852//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm855.c b/iconvdata/ibm855.c
new file mode 100644
index 0000000000..2f75b835cd
--- /dev/null
+++ b/iconvdata/ibm855.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM855.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm855.h>
+
+#define CHARSET_NAME	"IBM855//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm857.c b/iconvdata/ibm857.c
new file mode 100644
index 0000000000..c7f9d1e677
--- /dev/null
+++ b/iconvdata/ibm857.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM857.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm857.h>
+
+#define CHARSET_NAME	"IBM857//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm860.c b/iconvdata/ibm860.c
new file mode 100644
index 0000000000..c75a43fad8
--- /dev/null
+++ b/iconvdata/ibm860.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM860.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm860.h>
+
+#define CHARSET_NAME	"IBM860//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm861.c b/iconvdata/ibm861.c
new file mode 100644
index 0000000000..5a92aea917
--- /dev/null
+++ b/iconvdata/ibm861.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM861.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm861.h>
+
+#define CHARSET_NAME	"IBM861//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm862.c b/iconvdata/ibm862.c
new file mode 100644
index 0000000000..45a770f6fe
--- /dev/null
+++ b/iconvdata/ibm862.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM862.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm862.h>
+
+#define CHARSET_NAME	"IBM862//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm863.c b/iconvdata/ibm863.c
new file mode 100644
index 0000000000..8bf3026e24
--- /dev/null
+++ b/iconvdata/ibm863.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM863.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm863.h>
+
+#define CHARSET_NAME	"IBM863//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm864.c b/iconvdata/ibm864.c
new file mode 100644
index 0000000000..7d340875d3
--- /dev/null
+++ b/iconvdata/ibm864.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM864.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm864.h>
+
+#define CHARSET_NAME	"IBM864//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm865.c b/iconvdata/ibm865.c
new file mode 100644
index 0000000000..1a549b1fdf
--- /dev/null
+++ b/iconvdata/ibm865.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM865.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm865.h>
+
+#define CHARSET_NAME	"IBM865//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm868.c b/iconvdata/ibm868.c
new file mode 100644
index 0000000000..de7734ebe6
--- /dev/null
+++ b/iconvdata/ibm868.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM868.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm868.h>
+
+#define CHARSET_NAME	"IBM868//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm869.c b/iconvdata/ibm869.c
new file mode 100644
index 0000000000..b12df6b375
--- /dev/null
+++ b/iconvdata/ibm869.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM869.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm869.h>
+
+#define CHARSET_NAME	"IBM869//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm870.c b/iconvdata/ibm870.c
new file mode 100644
index 0000000000..b020c3f91c
--- /dev/null
+++ b/iconvdata/ibm870.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM870.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm870.h>
+
+#define CHARSET_NAME	"IBM870//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm871.c b/iconvdata/ibm871.c
new file mode 100644
index 0000000000..73b7c9b48c
--- /dev/null
+++ b/iconvdata/ibm871.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM871.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm871.h>
+
+#define CHARSET_NAME	"IBM871//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm875.c b/iconvdata/ibm875.c
new file mode 100644
index 0000000000..b6340f5e7a
--- /dev/null
+++ b/iconvdata/ibm875.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM875.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm875.h>
+
+#define CHARSET_NAME	"IBM875//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm880.c b/iconvdata/ibm880.c
new file mode 100644
index 0000000000..65bcaa59d3
--- /dev/null
+++ b/iconvdata/ibm880.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM880.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm880.h>
+
+#define CHARSET_NAME	"IBM880//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/ibm891.c b/iconvdata/ibm891.c
new file mode 100644
index 0000000000..f6ed499ad6
--- /dev/null
+++ b/iconvdata/ibm891.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM891.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm891.h>
+
+#define CHARSET_NAME	"IBM891//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm903.c b/iconvdata/ibm903.c
new file mode 100644
index 0000000000..e81dd4dfe1
--- /dev/null
+++ b/iconvdata/ibm903.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM903.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm903.h>
+
+#define CHARSET_NAME	"IBM903//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm904.c b/iconvdata/ibm904.c
new file mode 100644
index 0000000000..92e149da95
--- /dev/null
+++ b/iconvdata/ibm904.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM904.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm904.h>
+
+#define CHARSET_NAME	"IBM904//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm905.c b/iconvdata/ibm905.c
new file mode 100644
index 0000000000..ce05bab1ec
--- /dev/null
+++ b/iconvdata/ibm905.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM905.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#include <ibm905.h>
+
+#define CHARSET_NAME	"IBM905//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-generic.c>
diff --git a/iconvdata/ibm918.c b/iconvdata/ibm918.c
new file mode 100644
index 0000000000..0dbdb9c521
--- /dev/null
+++ b/iconvdata/ibm918.c
@@ -0,0 +1,29 @@
+/* Conversion from and to IBM918.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <stdint.h>
+
+/* Get the conversion table.  */
+#define TABLES <ibm918.h>
+
+#define CHARSET_NAME	"IBM918//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/iso646.c b/iconvdata/iso646.c
index 4b7c2bbbbf..fa54371be3 100644
--- a/iconvdata/iso646.c
+++ b/iconvdata/iso646.c
@@ -62,6 +62,56 @@ enum variant
   illegal_var,
   US,		/* ANSI_X3.4-1968 */
   GB,		/* BS_4730 */
+  CA,		/* CSA_Z243.4-1985-1 */
+  CA2,		/* CSA_Z243.4-1985-2 */
+  DE,		/* DIN_66003 */
+  DK,		/* DS_2089 */
+  ES,		/* ES */
+  ES2,		/* ES2 */
+  CN,		/* GB_1988-80 */
+  IT,		/* IT */
+  JP,		/* JIS_C6220-1969-RO */
+  JP_OCR_B,	/* JIS_C6229-1984-B */
+  YU,		/* JUS_I.B1.002 */
+  KR,		/* KSC5636 */
+  HU,		/* MSZ_7795.3 */
+  CU,		/* NC_NC00-10 */
+  FR,		/* NF_Z_62-010 */
+  FR1,		/* NF_Z_62-010_(1973) */
+  NO,		/* NS_4551-1 */
+  NO2,		/* NS_4551-2 */
+  PT,		/* PT */
+  PT2,		/* PT2 */
+  SE,		/* SEN_850200_B */
+  SE2		/* SEN_850200_C */
+};
+
+static const char *names[] =
+{
+  [US] = "ANSI_X3.4-1968//",
+  [GB] = "BS_4730//",
+  [CA] = "CSA_Z243.4-1985-1//",
+  [CA2] = "CSA_Z243.4-1985-2//",
+  [DE] = "DIN_66003//",
+  [DK] = "DS_2089//",
+  [ES] = "ES//",
+  [ES2] = "ES2//",
+  [CN] = "GB_1988-80//",
+  [IT] = "IT//",
+  [JP] = "JIS_C6220-1969-RO//",
+  [JP_OCR_B] = "JIS_C6229-1984-B//",
+  [YU] = "JUS_I.B1.002//",
+  [KR] = "KSC5636//",
+  [HU] = "MSZ_7795.3//",
+  [CU] = "NC_NC00-10//",
+  [FR] = "NF_Z_62-010//",
+  [FR1] = "NF_Z_62-010_(1973)//",
+  [NO] = "NS_4551-1//",
+  [NO2] = "NS_4551-2//",
+  [PT] = "PT//",
+  [PT2] = "PT2//",
+  [SE] = "SEN_850200_B//",
+  [SE2] = "SEN_850200_C//"
 };
 
 struct iso646_data
@@ -76,35 +126,21 @@ gconv_init (struct gconv_step *step)
 {
   /* Determine which direction.  */
   struct iso646_data *new_data;
-  enum direction dir;
+  enum direction dir = illegal_dir;
   enum variant var;
   int result;
 
-  if (__strcasestr (step->from_name, "ANSI_X3.4-1968") != NULL)
-    {
-      dir = from_iso646;
-      var = US;
-    }
-  else if (__strcasestr (step->from_name, "BS_4730") != NULL)
-    {
-      dir = from_iso646;
-      var = GB;
-    }
-  else if (__strcasestr (step->to_name, "ANSI_X3.4-1968") != NULL)
-    {
-      dir = to_iso646;
-      var = US;
-    }
-  else if (__strcasestr (step->to_name, "BS_4730") != NULL)
-    {
-      dir = to_iso646;
-      var = GB;
-    }
-  else
-    {
-      dir = illegal_dir;
-      var = illegal_var;
-    }
+  for (var = sizeof (names) / sizeof (names[0]) - 1; var > illegal_var; --var)
+    if (__strcasecmp (step->from_name, names[var]) == 0)
+      {
+	dir = from_iso646;
+	break;
+      }
+    else if (__strcasecmp (step->to_name, names[var]) == 0)
+      {
+	dir = to_iso646;
+	break;
+      }
 
   result = GCONV_NOCONV;
   if (dir != illegal_dir
@@ -115,15 +151,16 @@ gconv_init (struct gconv_step *step)
       new_data->dir = dir;
       new_data->var = var;
       step->data = new_data;
-      result = GCONV_OK;
-    }
 
-  step->min_needed_from = MIN_NEEDED_FROM;
-  step->max_needed_from = MIN_NEEDED_FROM;
-  step->min_needed_to = MIN_NEEDED_TO;
-  step->max_needed_to = MIN_NEEDED_TO;
+      step->min_needed_from = MIN_NEEDED_FROM;
+      step->max_needed_from = MIN_NEEDED_FROM;
+      step->min_needed_to = MIN_NEEDED_TO;
+      step->max_needed_to = MIN_NEEDED_TO;
 
-  step->stateful = 0;
+      step->stateful = 0;
+
+      result = GCONV_OK;
+    }
 
   return result;
 }
@@ -145,27 +182,208 @@ gconv_end (struct gconv_step *data)
     uint32_t ch;							      \
     int failure = GCONV_OK;						      \
 									      \
-    switch (*inptr)							      \
+    ch = *inptr;							      \
+    switch (ch)								      \
       {									      \
-      case '\x23':							      \
-	if (var == GB)							      \
+      case 0x23:							      \
+	if (var == GB || var == ES || var == IT || var == FR || var == FR1)   \
 	  ch = 0xa3;							      \
-	else								      \
-	  ch = 0x23;							      \
+	else if (var == NO2)						      \
+	  ch = 0xa7;							      \
+	break;								      \
+      case 0x24:							      \
+	if (var == CN)							      \
+	  ch = 0xa5;							      \
+	else if (var == HU || var == CU || var == SE || var == SE2)	      \
+	  ch = 0xa4;							      \
+	break;								      \
+      case 0x40:							      \
+	if (var == CA || var == CA2 || var == FR || var == FR1)		      \
+	  ch = 0xe0;							      \
+	else if (var == DE || var == ES || var == IT || var == PT)	      \
+	  ch = 0xa7;							      \
+	else if (var == ES2)						      \
+	  ch = 0x2022;							      \
+	else if (var == YU)						      \
+	  ch = 0x17d;							      \
+	else if (var == HU)						      \
+	  ch = 0xc1;							      \
+	else if (var == PT2)						      \
+	  ch = 0xb4;							      \
+	else if (var == SE2)						      \
+	  ch = 0xc9;							      \
+	break;								      \
+      case 0x5b:							      \
+	if (var == CA || var == CA2)					      \
+	  ch = 0xe2;							      \
+	else if (var == DE || var == SE || var == SE2)			      \
+	  ch = 0xc4;							      \
+	else if (var == DK || var == NO || var == NO2)			      \
+	  ch = 0xc6;							      \
+	else if (var == ES || var == ES2 || var == CU)			      \
+	  ch = 0xa1;							      \
+	else if (var == IT || var == FR || var == FR1)			      \
+	  ch = 0xb0;							      \
+	else if (var == JP_OCR_B)					      \
+	  ch = 0x2329;							      \
+	else if (var == YU)						      \
+	  ch = 0x160;							      \
+	else if (var == HU)						      \
+	  ch = 0xc9;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0xc3;							      \
 	break;								      \
-      case '\x7e':							      \
-	if (var == GB)							      \
+      case 0x5c:							      \
+	if (var == CA || var == CA2 || var == IT || var == FR || var == FR1)  \
+	  ch = 0xe7;							      \
+	else if (var == DE || var == HU || var == SE || var == SE2)	      \
+	  ch = 0xd6;							      \
+	else if (var == DK || var == NO || var == NO2)			      \
+	  ch = 0xd8;							      \
+	else if (var == ES || var == ES2 || var == CU)			      \
+	  ch = 0xd1;							      \
+	else if (var == JP || var == JP_OCR_B)				      \
+	  ch = 0xa5;							      \
+	else if (var == YU)						      \
+	  ch = 0x110;							      \
+	else if (var == KR)						      \
+	  ch = 0x20a9;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0xc7;							      \
+	break;								      \
+      case 0x5d:							      \
+	if (var == CA || var == CA2)					      \
+	  ch = 0xea;							      \
+	else if (var == DE || var == HU)				      \
+	  ch = 0xdc;							      \
+	else if (var == DK || var == NO || var == NO2 || var == SE	      \
+		 || var == SE2)						      \
+	  ch = 0xc5;							      \
+	else if (var == ES)						      \
+	  ch = 0xbf;							      \
+	else if (var == ES2)						      \
+	  ch = 0xc7;							      \
+	else if (var == IT)						      \
+	  ch = 0xe9;							      \
+	else if (var == JP_OCR_B)					      \
+	  ch = 0x232a;							      \
+	else if (var == YU)						      \
+	  ch = 0x106;							      \
+	else if (var == FR || var == FR1)				      \
+	  ch = 0xa7;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0xd5;							      \
+	break;								      \
+      case 0x5e:							      \
+	if (var == CA)							      \
+	  ch = 0xee;							      \
+	else if (var == CA2)						      \
+	  ch = 0xc9;							      \
+	else if (var == ES2 || var == CU)				      \
+	  ch = 0xbf;							      \
+	else if (var == YU)						      \
+	  ch = 0x10c;							      \
+	else if (var == SE2)						      \
+	  ch = 0xdc;							      \
+	break;								      \
+      case 0x60:							      \
+	if (var == CA || var == CA2)					      \
+	  ch = 0xf4;							      \
+	else if (var == IT)						      \
+	  ch = 0xf9;							      \
+	else if (var == JP_OCR_B)					      \
+	  /* Illegal character.  */					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	else if (var == YU)						      \
+	  ch = 0x17e;							      \
+	else if (var == HU)						      \
+	  ch = 0xe1;							      \
+	else if (var == FR)						      \
+	  ch = 0xb5;							      \
+	else if (var == SE2)						      \
+	  ch = 0xe9;							      \
+	break;								      \
+      case 0x7b:							      \
+	if (var == CA || var == CA2 || var == HU || var == FR || var == FR1)  \
+	  ch = 0xe9;							      \
+	else if (var == DE || var == SE || var == SE2)			      \
+	  ch = 0xe4;							      \
+	else if (var == DK || var == NO || var == NO2)			      \
+	  ch = 0xe6;							      \
+	else if (var == ES)						      \
+	  ch = 0xb0;							      \
+	else if (var == ES2 || var == CU)				      \
+	  ch = 0xb4;							      \
+	else if (var == IT)						      \
+	  ch = 0xe0;							      \
+	else if (var == YU)						      \
+	  ch = 0x161;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0xe3;							      \
+	break;								      \
+      case 0x7c:							      \
+	if (var == CA || var == CA2 || var == FR || var == FR1)		      \
+	  ch = 0xf9;							      \
+	else if (var == DE || var == HU || var == SE || var == SE2)	      \
+	  ch = 0xf6;							      \
+	else if (var == DK || var == NO || var == NO2)			      \
+	  ch = 0xf8;							      \
+	else if (var == ES || var == ES2 || var == CU)			      \
+	  ch = 0xf1;							      \
+	else if (var == IT)						      \
+	  ch = 0xf2;							      \
+	else if (var == YU)						      \
+	  ch = 0x111;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0xe7;							      \
+	break;								      \
+      case 0x7d:							      \
+	if (var == CA || var == CA2 || var == IT || var == FR || var == FR1)  \
+	  ch = 0xe8;							      \
+	else if (var == DE || var == HU)				      \
+	  ch = 0xfc;							      \
+	else if (var == DK || var == NO || var == NO2 || var == SE	      \
+		 || var == SE2)						      \
+	  ch = 0xe5;							      \
+	else if (var == ES || var == ES2)				      \
+	  ch = 0xe7;							      \
+	else if (var == YU)						      \
+	  ch = 0x107;							      \
+	else if (var == CU)						      \
+	  ch = 0x5b;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0xf5;							      \
+	break;								      \
+      case 0x7e:							      \
+	if (var == GB || var == CN || var == JP || var == NO || var == SE)    \
 	  ch = 0x203e;							      \
-	else								      \
-	  ch = 0x7e;							      \
+	else if (var == CA || var == CA2)				      \
+	  ch = 0xfb;							      \
+	else if (var == DE)						      \
+	  ch = 0xdf;							      \
+	else if (var == ES2 || var == CU || var == FR || var == FR1)	      \
+	  ch = 0xa8;							      \
+	else if (var == IT)						      \
+	  ch = 0xec;							      \
+	else if (var == JP_OCR_B)					      \
+	  /* Illegal character.  */					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	else if (var == YU)						      \
+	  ch = 0x10d;							      \
+	else if (var == HU)						      \
+	  ch = 0x2dd;							      \
+	else if (var == NO2)						      \
+	  ch = 0x7c;							      \
+	else if (var == PT)						      \
+	  ch = 0xb0;							      \
+	else if (var == SE2)						      \
+	  ch = 0xfc;							      \
 	break;								      \
       default:								      \
-	ch = *inptr;							      \
 	break;								      \
       case '\x80' ... '\xff':						      \
 	/* Illegal character.  */					      \
 	failure = GCONV_ILLEGAL_INPUT;					      \
-	ch = '\0';	/* OK, gcc, here I initialize the variable.  */	      \
 	break;								      \
       }									      \
 									      \
@@ -190,54 +408,462 @@ gconv_end (struct gconv_step *data)
 #define LOOPFCT			TO_LOOP
 #define BODY \
   {									      \
-    unsigned char ch;							      \
+    unsigned char ch = '\0';						      \
     int failure = GCONV_OK;						      \
 									      \
-    do									      \
+    ch = *((uint32_t *) inptr);						      \
+    switch (*((uint32_t *) inptr))					      \
       {									      \
-	switch (*((uint32_t *) inptr))					      \
-	  {								      \
-	  case 0x23:							      \
-	    if (var == GB)						      \
-	      break;							      \
-	    ch = 0x23;							      \
-	    continue;							      \
-	  case 0x7e:							      \
-	    if (var == GB)						      \
-	      break;							      \
-	    ch = 0x7e;							      \
-	    continue;							      \
-	  case 0xa3:							      \
-	    if (var != GB)						      \
-	      break;							      \
-	    ch = 0x23;							      \
-	    continue;							      \
-	  case 0x203e:							      \
-	    if (var != GB)						      \
-	      break;							      \
-	    ch = 0x7e;							      \
-	    continue;							      \
-	  default:							      \
-	    if (*((uint32_t *) inptr) > 0x7f)				      \
-	      break;							      \
-	    ch = (unsigned char) *((uint32_t *) inptr);			      \
-	    continue;							      \
-	  }								      \
-	/* When we come to this place we saw an illegal character.  */	      \
-	failure = GCONV_ILLEGAL_INPUT;					      \
-	ch = '\0';	/* OK, gcc, here I initialize the variable.  */	      \
+      case 0x23:							      \
+	if (var == GB || var == ES || var == IT || var == FR || var == FR1    \
+	    || var == NO2)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x24:							      \
+	if (var == CN || var == HU || var == CU || var == SE || var == SE2)   \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x40:							      \
+	if (var == CA || var == CA2 || var == DE || var == ES || var == ES2   \
+	    || var == IT || var == YU || var == HU || var == FR || var == FR1 \
+	    || var == PT || var == PT2 || var == SE2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x5b:							      \
+	if (var == CA || var == CA2 || var == DE || var == DK || var == ES    \
+	    || var == ES2 || var == IT || var == JP_OCR_B || var == YU	      \
+	    || var == HU || var == FR || var == FR1 || var == NO	      \
+	    || var == NO2 || var == PT || var == PT2 || var == SE	      \
+	    || var == SE2)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	else if (var == CU)						      \
+	  ch = 0x7d;							      \
+	break;								      \
+      case 0x5c:							      \
+	if (var == CA || var == CA2 || var == DE || var == DK || var == ES    \
+	    || var == ES2 || var == IT || var == JP || var == JP_OCR_B	      \
+	    || var == YU || var == KR || var == HU || var == CU || var == FR  \
+	    || var == FR1 || var == NO || var == NO2 || var == PT	      \
+	    || var == PT2 || var == SE || var == SE2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x5d:							      \
+	if (var == CA || var == CA2 || var == DE || var == DK || var == ES    \
+	    || var == ES2 || var == IT || var == JP_OCR_B || var == YU	      \
+	    || var == HU || var == FR || var == FR1 || var == NO	      \
+	    || var == NO2 || var == PT || var == PT2 || var == SE	      \
+	    || var == SE2)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x5e:							      \
+	if (var == CA || var == CA2 || var == ES2 || var == YU || var == CU   \
+	    || var == SE2)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x60:							      \
+	if (var == CA || var == CA2 || var == IT || var == JP_OCR_B	      \
+	    || var == YU || var == HU || var == FR || var == SE2)	      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x7b:							      \
+	if (var == CA || var == CA2 || var == DE || var == DK || var == ES    \
+	    || var == ES2 || var == IT || var == YU || var == HU	      \
+	    || var == CU || var == FR || var == FR1 || var == NO	      \
+	    || var == NO2 || var == PT || var == PT2 || var == SE	      \
+	    || var == SE2)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x7c:							      \
+	if (var == CA || var == CA2 || var == DE || var == DK || var == ES    \
+	    || var == ES2 || var == IT || var == YU || var == HU || var == CU \
+	    || var == FR || var == FR1 || var == NO || var == PT	      \
+	    || var == PT2 || var == SE || var == SE2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	else if (var == NO2)						      \
+	  ch = 0x7e;							      \
+	break;								      \
+      case 0x7d:							      \
+	if (var == CA || var == CA2 || var == DE || var == DK || var == ES    \
+	    || var == ES2 || var == IT || var == YU || var == HU || var == CU \
+	    || var == FR || var == FR1 || var == NO || var == NO2	      \
+	    || var == PT || var == PT2 || var == SE || var == SE2)	      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x7e:							      \
+	if (var == GB || var == CA || var == CA2 || var == DE || var == ES2   \
+	    || var == CN || var == IT || var == JP || var == JP_OCR_B	      \
+	    || var == YU || var == HU || var == CU || var == FR || var == FR1 \
+	    || var == NO || var == NO2 || var == PT || var == SE	      \
+	    || var == SE2)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xa1:							      \
+	if (var != ES && var != ES2 && var != CU)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0xa3:							      \
+	if (var != GB && var != ES && var != IT && var != FR && var != FR1)   \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x23;							      \
+	break;								      \
+      case 0xa4:							      \
+	if (var != HU && var != CU && var != SE && var != SE2)		      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x24;							      \
+	break;								      \
+      case 0xa5:							      \
+	if (var == CN)							      \
+	  ch = 0x24;							      \
+	else if (var == JP || var == JP_OCR_B)				      \
+	  ch = 0x5c;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xa7:							      \
+	if (var == DE || var == ES || var == IT || var == PT)		      \
+	  ch = 0x40;							      \
+	else if (var == FR || var == FR1)				      \
+	  ch = 0x5d;							      \
+	else if (var == NO2)						      \
+	  ch = 0x23;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xa8:							      \
+	if (var != ES2 && var != CU && var != FR && var != FR1)		      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0xb0:							      \
+	if (var == ES)							      \
+	  ch = 0x7b;							      \
+	else if (var == IT || var == FR || var == FR1)			      \
+	  ch = 0x5b;							      \
+	else if (var == PT)						      \
+	  ch = 0x7e;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xb4:							      \
+	if (var == ES2 || var == CU)					      \
+	  ch = 0x7b;							      \
+	else if (var == PT2)						      \
+	  ch = 0x40;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xb5:							      \
+	if (var != FR)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x60;							      \
+	break;								      \
+      case 0xbf:							      \
+	if (var == ES)							      \
+	  ch = 0x5d;							      \
+	else if (var == ES2 || var == CU)				      \
+	  ch = 0x5e;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xc1:							      \
+	if (var != HU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x40;							      \
+	break;								      \
+      case 0xc3:							      \
+	if (var != PT && var != PT2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0xc4:							      \
+	if (var != DE && var != SE && var != SE2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0xc5:							      \
+	if (var != DK && var != NO && var != NO2 && var != SE && var != SE2)  \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5d;							      \
+	break;								      \
+      case 0xc6:							      \
+	if (var != DK && var != NO && var != NO2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0xc7:							      \
+	if (var == ES2)							      \
+	  ch = 0x5d;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0x5c;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xc9:							      \
+	if (var == CA2)							      \
+	  ch = 0x5e;							      \
+	else if (var == HU)						      \
+	  ch = 0x5b;							      \
+	else if (var == SE2)						      \
+	  ch = 0x40;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xd1:							      \
+	if (var != ES && var != ES2 && var != CU)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5c;							      \
+	break;								      \
+      case 0xd5:							      \
+	if (var != PT && var != PT2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5d;							      \
+	break;								      \
+      case 0xd6:							      \
+	if (var != DE && var != HU && var != SE && var != SE2)		      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5c;							      \
+	break;								      \
+      case 0xd8:							      \
+	if (var != DK && var != NO && var != NO2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5c;							      \
+	break;								      \
+      case 0xdc:							      \
+	if (var == DE || var == HU)					      \
+	  ch = 0x5d;							      \
+	else if (var == SE2)						      \
+	  ch = 0x5e;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xdf:							      \
+	if (var != DE)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0xe0:							      \
+	if (var == CA || var == CA2 || var == FR || var == FR1)		      \
+	  ch = 0x40;							      \
+	else if (var == IT)						      \
+	  ch = 0x7b;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xe1:							      \
+	if (var != HU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x60;							      \
+	break;								      \
+      case 0xe2:							      \
+	if (var != CA && var != CA2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0xe3:							      \
+	if (var != PT && var != PT2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7b;							      \
+	break;								      \
+      case 0xe4:							      \
+	if (var != DE && var != SE && var != SE2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7b;							      \
+	break;								      \
+      case 0xe5:							      \
+	if (var != DK && var != NO && var != NO2 && var != SE && var != SE2)  \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7d;							      \
+	break;								      \
+      case 0xe6:							      \
+	if (var != DK && var != NO && var != NO2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7b;							      \
+	break;								      \
+      case 0xe7:							      \
+	if (var == CA || var == CA2 || var == IT || var == FR || var == FR1)  \
+	  ch = 0x5c;							      \
+	else if (var == ES || var == ES2)				      \
+	  ch = 0x7d;							      \
+	else if (var == PT || var == PT2)				      \
+	  ch = 0x7c;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xe8:							      \
+	if (var != CA && var != CA2 && var != IT && var != FR && var != FR1)  \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7d;							      \
+	break;								      \
+      case 0xe9:							      \
+	if (var == CA || var == CA2 || var == HU || var == FR || var == FR1)  \
+	  ch = 0x7b;							      \
+	else if (var == IT)						      \
+	  ch = 0x5d;							      \
+	else if (var == SE2)						      \
+	  ch = 0x60;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xea:							      \
+	if (var != CA && var != CA2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5d;							      \
+	break;								      \
+      case 0xec:							      \
+	if (var != IT)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0xee:							      \
+	if (var != CA)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5e;							      \
+	break;								      \
+      case 0xf1:							      \
+	if (var != ES && var != ES2 && var != CU)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7c;							      \
+	break;								      \
+      case 0xf2:							      \
+	if (var != IT)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7c;							      \
+	break;								      \
+      case 0xf4:							      \
+	if (var != CA && var != CA2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x60;							      \
+	break;								      \
+      case 0xf5:							      \
+	if (var != PT && var != PT2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7d;							      \
+	break;								      \
+      case 0xf6:							      \
+	if (var != DE && var != HU && var != SE && var != SE2)		      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7c;							      \
+	break;								      \
+      case 0xf8:							      \
+	if (var != DK && var != NO && var != NO2)			      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7c;							      \
+	break;								      \
+      case 0xf9:							      \
+	if (var == CA || var == CA2 || var == FR || var == FR1)		      \
+	  ch = 0x7c;							      \
+	else if (var == IT)						      \
+	  ch = 0x60;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0xfb:							      \
+	if (var != CA && var != CA2)					      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0xfc:							      \
+	if (var == DE || var == HU)					      \
+	  ch = 0x7d;							      \
+	else if (var == SE2)						      \
+	  ch = 0x7e;							      \
+	else								      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
+      case 0x160:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0x106:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5d;							      \
+	break;								      \
+      case 0x107:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7d;							      \
+	break;								      \
+      case 0x10c:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5e;							      \
+	break;								      \
+      case 0x10d:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0x110:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5c;							      \
+	break;								      \
+      case 0x111:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7c;							      \
+	break;								      \
+      case 0x161:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7b;							      \
+	break;								      \
+      case 0x17d:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x40;							      \
+	break;								      \
+      case 0x17e:							      \
+	if (var != YU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x60;							      \
+	break;								      \
+      case 0x2dd:							      \
+	if (var != HU)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0x2022:							      \
+	if (var != ES2)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x40;							      \
+	break;								      \
+      case 0x203e:							      \
+	if (var != GB && var != CN && var != JP && var != NO && var != SE)    \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x7e;							      \
+	break;								      \
+      case 0x20a9:							      \
+	if (var != KR)							      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5c;							      \
+	break;								      \
+      case 0x2329:							      \
+	if (var != JP_OCR_B)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5b;							      \
+	break;								      \
+      case 0x232a:							      \
+	if (var != JP_OCR_B)						      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	ch = 0x5d;							      \
+	break;								      \
+      default:								      \
+	if (*((uint32_t *) inptr) > 0x7f)				      \
+	  failure = GCONV_ILLEGAL_INPUT;				      \
+	break;								      \
       }									      \
-    while (0);								      \
 									      \
-    /* Hopefully gcc can recognize that the following `if' is only true	      \
-       when we fall through the `switch' statement.  */			      \
     if (failure == GCONV_ILLEGAL_INPUT)					      \
       {									      \
 	/* Exit the loop with an error.  */				      \
 	result = failure;						      \
 	break;								      \
       }									      \
-    *outptr++ = ch;							      \
+    *outptr++ = (unsigned char) ch;					      \
     inptr += 4;								      \
   }
 #define EXTRA_LOOP_DECLS	, enum variant var
diff --git a/iconvdata/iso6937.c b/iconvdata/iso6937.c
index b121ffa77a..c927bd5fbb 100644
--- a/iconvdata/iso6937.c
+++ b/iconvdata/iso6937.c
@@ -372,7 +372,7 @@ static const char from_ucs4[][2] =
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"ISO_6937"
+#define CHARSET_NAME		"ISO_6937//"
 #define FROM_LOOP		from_iso6937
 #define TO_LOOP			to_iso6937
 #define DEFINE_INIT		1
diff --git a/iconvdata/iso8859-1.c b/iconvdata/iso8859-1.c
index c7b35b37dc..db6cbdf0f9 100644
--- a/iconvdata/iso8859-1.c
+++ b/iconvdata/iso8859-1.c
@@ -21,7 +21,7 @@
 #include <stdint.h>
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"ISO-8859-1"
+#define CHARSET_NAME		"ISO-8859-1//"
 #define FROM_LOOP		from_iso8859_1
 #define TO_LOOP			to_iso8859_1
 #define DEFINE_INIT		1
diff --git a/iconvdata/iso8859-10.c b/iconvdata/iso8859-10.c
index acce3257e3..1f78df3fb6 100644
--- a/iconvdata/iso8859-10.c
+++ b/iconvdata/iso8859-10.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-10.h>
 
-#define CHARSET_NAME	"ISO-8859-10"
+#define CHARSET_NAME	"ISO-8859-10//"
 #define HAS_HOLES	0	/* All 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-2.c b/iconvdata/iso8859-2.c
index 8a5e62418f..2af33fa56e 100644
--- a/iconvdata/iso8859-2.c
+++ b/iconvdata/iso8859-2.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-2.h>
 
-#define CHARSET_NAME	"ISO-8859-2"
+#define CHARSET_NAME	"ISO-8859-2//"
 #define HAS_HOLES	0	/* All 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-3.c b/iconvdata/iso8859-3.c
index 10e52e429f..18227f4e14 100644
--- a/iconvdata/iso8859-3.c
+++ b/iconvdata/iso8859-3.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-3.h>
 
-#define CHARSET_NAME	"ISO-8859-3"
+#define CHARSET_NAME	"ISO-8859-3//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-4.c b/iconvdata/iso8859-4.c
index 01cdbf0b98..0dfa87e6f2 100644
--- a/iconvdata/iso8859-4.c
+++ b/iconvdata/iso8859-4.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-4.h>
 
-#define CHARSET_NAME	"ISO-8859-4"
+#define CHARSET_NAME	"ISO-8859-4//"
 #define HAS_HOLES	0	/* All 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-5.c b/iconvdata/iso8859-5.c
index edf0f47b5c..46d904c8ec 100644
--- a/iconvdata/iso8859-5.c
+++ b/iconvdata/iso8859-5.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-5.h>
 
-#define CHARSET_NAME	"ISO-8859-5"
+#define CHARSET_NAME	"ISO-8859-5//"
 #define HAS_HOLES	0	/* All 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-6.c b/iconvdata/iso8859-6.c
index 59ce3f2cc1..4a53f2f2b6 100644
--- a/iconvdata/iso8859-6.c
+++ b/iconvdata/iso8859-6.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-6.h>
 
-#define CHARSET_NAME	"ISO-8859-6"
+#define CHARSET_NAME	"ISO-8859-6//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-7.c b/iconvdata/iso8859-7.c
index d75e93e204..9d042aaf47 100644
--- a/iconvdata/iso8859-7.c
+++ b/iconvdata/iso8859-7.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-7.h>
 
-#define CHARSET_NAME	"ISO-8859-7"
+#define CHARSET_NAME	"ISO-8859-7//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-8.c b/iconvdata/iso8859-8.c
index 1612f148f4..f6a4e237aa 100644
--- a/iconvdata/iso8859-8.c
+++ b/iconvdata/iso8859-8.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-8.h>
 
-#define CHARSET_NAME	"ISO-8859-8"
+#define CHARSET_NAME	"ISO-8859-8//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/iso8859-9.c b/iconvdata/iso8859-9.c
index 063f189aba..132547a8fb 100644
--- a/iconvdata/iso8859-9.c
+++ b/iconvdata/iso8859-9.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <iso8859-9.h>
 
-#define CHARSET_NAME "ISO-8859-9"
+#define CHARSET_NAME "ISO-8859-9//"
 #define HAS_HOLES	0	/* All 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/jis0212.h b/iconvdata/jis0212.h
index 4930437128..28d4b3ff5a 100644
--- a/iconvdata/jis0212.h
+++ b/iconvdata/jis0212.h
@@ -41,7 +41,7 @@ extern const struct jisx0212_idx __jisx0212_from_ucs_idx[];
 extern const char __jisx0212_from_ucs[][2];
 
 
-static inline wchar_t
+static inline uint32_t
 jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
 {
   const struct jisx0212_idx *rp = __jisx0212_to_ucs_idx;
@@ -50,7 +50,7 @@ jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
   uint32_t wch = 0;
   int idx;
 
-  if (ch < offset || (ch - offset) <= 0x6d || (ch - offset) > 0xea)
+  if (ch < offset || (ch - offset) < 0x22 || (ch - offset) > 0x6d)
     return UNKNOWN_10646_CHAR;
 
   if (avail < 2)
@@ -60,7 +60,7 @@ jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
   if (ch2 < offset || (ch2 - offset) <= 0x20 || (ch2 - offset) >= 0x7f)
     return UNKNOWN_10646_CHAR;
 
-  idx = (ch - 0x21 - offset) * 94 + (ch2 - 0x21 - offset);
+  idx = (ch - offset - 0x21) * 94 + (ch2 - offset - 0x21);
 
   while (idx > rp->end)
     ++rp;
@@ -77,7 +77,7 @@ jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
 
 
 static inline size_t
-ucs4_to_jisx0212 (wchar_t wch, char *s, size_t avail)
+ucs4_to_jisx0212 (uint32_t wch, char *s, size_t avail)
 {
   const struct jisx0212_idx *rp = __jisx0212_from_ucs_idx;
   unsigned int ch = (unsigned int) wch;
diff --git a/iconvdata/johab.c b/iconvdata/johab.c
index 6a582c0b70..ddc52491a4 100644
--- a/iconvdata/johab.c
+++ b/iconvdata/johab.c
@@ -220,7 +220,7 @@ johab_from_ucs4 (uint32_t ch, unsigned char *cp)
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"JOHAB"
+#define CHARSET_NAME		"JOHAB//"
 #define FROM_LOOP		from_johab
 #define TO_LOOP			to_johab
 #define DEFINE_INIT		1
@@ -243,7 +243,7 @@ johab_from_ucs4 (uint32_t ch, unsigned char *cp)
        if (ch == 0x5c)							      \
 	 ch =  0x20a9;							      \
        else if (ch < 0x7f)						      \
-	 ch = (wchar_t) ch;						      \
+	 ch = (uint32_t) ch;						      \
     */									      \
     if (ch < 0x7f)							      \
       /* Plain ASCII.  */						      \
diff --git a/iconvdata/koi-8.c b/iconvdata/koi-8.c
index b2332c2a6a..058b37ea80 100644
--- a/iconvdata/koi-8.c
+++ b/iconvdata/koi-8.c
@@ -22,7 +22,7 @@
 #include <stdint.h>
 #include <koi-8.h>
 
-#define CHARSET_NAME	"KOI-8"
+#define CHARSET_NAME	"KOI-8//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-generic.c>
diff --git a/iconvdata/koi8-r.c b/iconvdata/koi8-r.c
index ee317bd25b..b239150279 100644
--- a/iconvdata/koi8-r.c
+++ b/iconvdata/koi8-r.c
@@ -23,7 +23,7 @@
 /* Specify the conversion table.  */
 #define TABLES <koi8-r.h>
 
-#define CHARSET_NAME	"KOI8-R"
+#define CHARSET_NAME	"KOI8-R//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-gap.c>
diff --git a/iconvdata/koi8-r.h b/iconvdata/koi8-r.h
index fe83b72514..a8ea02bda2 100644
--- a/iconvdata/koi8-r.h
+++ b/iconvdata/koi8-r.h
@@ -1,4 +1,4 @@
-static const wchar_t to_ucs4[256] = {
+static const uint32_t to_ucs4[256] = {
   [0x01] = 0x0001,
   [0x02] = 0x0002,
   [0x03] = 0x0003,
diff --git a/iconvdata/ksc5601.h b/iconvdata/ksc5601.h
index 8a5c40e5dd..76793f9e5b 100644
--- a/iconvdata/ksc5601.h
+++ b/iconvdata/ksc5601.h
@@ -35,10 +35,6 @@ extern const uint16_t __ksc5601_hanja_to_ucs[KSC5601_HANJA];
 extern const uint16_t __ksc5601_hanja_from_ucs[KSC5601_HANJA][2];
 
 
-/*
-static inline wchar_t
-ksc5601_to_ucs4 (char **s, size_t avail)
-*/
 static inline uint32_t
 ksc5601_to_ucs4 (uint16_t s)
 {
@@ -145,11 +141,6 @@ ucs4_to_ksc5601_sym (uint32_t wch, uint16_t *s)
 }
 
 
-/*
-static inline size_t
-ucs4_to_ksc5601 (wchar_t wch, char **s, size_t avail)
-*/
-
 static inline size_t
 ucs4_to_ksc5601 (uint32_t ch, uint16_t *s)
 {
diff --git a/iconvdata/latin-greek-1.c b/iconvdata/latin-greek-1.c
index 37ccf09c09..0e944a44e8 100644
--- a/iconvdata/latin-greek-1.c
+++ b/iconvdata/latin-greek-1.c
@@ -21,7 +21,7 @@
 /* Specify the conversion table.  */
 #define TABLES <latin-greek-1.h>
 
-#define CHARSET_NAME	"LATIN-GREEK-1"
+#define CHARSET_NAME	"LATIN-GREEK-1//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-gap.c>
diff --git a/iconvdata/latin-greek-1.h b/iconvdata/latin-greek-1.h
index ed699bf6a8..ab878c034e 100644
--- a/iconvdata/latin-greek-1.h
+++ b/iconvdata/latin-greek-1.h
@@ -1,4 +1,4 @@
-static const wchar_t to_ucs4[256] = {
+static const uint32_t to_ucs4[256] = {
   [0x01] = 0x0001,
   [0x02] = 0x0002,
   [0x03] = 0x0003,
diff --git a/iconvdata/latin-greek.c b/iconvdata/latin-greek.c
index 8810f4a2e0..e8755f631a 100644
--- a/iconvdata/latin-greek.c
+++ b/iconvdata/latin-greek.c
@@ -21,7 +21,7 @@
 /* Specify the conversion table.  */
 #define TABLES <latin-greek.h>
 
-#define CHARSET_NAME	"LATIN-GREEK"
+#define CHARSET_NAME	"LATIN-GREEK//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
 #include <8bit-gap.c>
diff --git a/iconvdata/latin-greek.h b/iconvdata/latin-greek.h
index 73d93c4957..5bbef291a6 100644
--- a/iconvdata/latin-greek.h
+++ b/iconvdata/latin-greek.h
@@ -1,4 +1,4 @@
-static const wchar_t to_ucs4[256] = {
+static const uint32_t to_ucs4[256] = {
   [0x01] = 0x0001,
   [0x02] = 0x0002,
   [0x03] = 0x0003,
diff --git a/iconvdata/sjis.c b/iconvdata/sjis.c
index d65b905b32..02dbda9d83 100644
--- a/iconvdata/sjis.c
+++ b/iconvdata/sjis.c
@@ -3980,7 +3980,7 @@ static const char from_ucs4_cjk[32657][2] =
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"SJIS"
+#define CHARSET_NAME		"SJIS//"
 #define FROM_LOOP		from_sjis
 #define TO_LOOP			to_sjis
 #define DEFINE_INIT		1
diff --git a/iconvdata/t61.c b/iconvdata/t61.c
index 8c288adca2..868af445e0 100644
--- a/iconvdata/t61.c
+++ b/iconvdata/t61.c
@@ -23,7 +23,7 @@
 #include <string.h>
 
 /* Data taken from the WG15 tables.  */
-static const wchar_t to_ucs4[256] =
+static const uint32_t to_ucs4[256] =
 {
   /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
   /* 0x08 */ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
@@ -61,7 +61,7 @@ static const wchar_t to_ucs4[256] =
 
 /* The outer array range runs from 0xc1 to 0xcf, the inner range from 0x20
    to 0x7f.  */
-static const wchar_t to_ucs4_comb[15][96] =
+static const uint32_t to_ucs4_comb[15][96] =
 {
   /* 0xc1 */
   {
@@ -365,7 +365,7 @@ static const char from_ucs4[][2] =
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"T.61"
+#define CHARSET_NAME		"T.61//"
 #define FROM_LOOP		from_t_61
 #define TO_LOOP			to_t_61
 #define DEFINE_INIT		1
diff --git a/iconvdata/testdata/CSA_Z243.4-1985-1 b/iconvdata/testdata/CSA_Z243.4-1985-1
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/CSA_Z243.4-1985-1
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/CSA_Z243.4-1985-1..UCS2 b/iconvdata/testdata/CSA_Z243.4-1985-1..UCS2
new file mode 100644
index 0000000000..ba03d5d6bf
--- /dev/null
+++ b/iconvdata/testdata/CSA_Z243.4-1985-1..UCS2
Binary files differdiff --git a/iconvdata/testdata/CSA_Z243.4-1985-2 b/iconvdata/testdata/CSA_Z243.4-1985-2
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/CSA_Z243.4-1985-2
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/CSA_Z243.4-1985-2..UCS4 b/iconvdata/testdata/CSA_Z243.4-1985-2..UCS4
new file mode 100644
index 0000000000..8f395d1c92
--- /dev/null
+++ b/iconvdata/testdata/CSA_Z243.4-1985-2..UCS4
Binary files differdiff --git a/iconvdata/testdata/DIN_66003 b/iconvdata/testdata/DIN_66003
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/DIN_66003
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/DIN_66003..UTF8 b/iconvdata/testdata/DIN_66003..UTF8
new file mode 100644
index 0000000000..416166f391
--- /dev/null
+++ b/iconvdata/testdata/DIN_66003..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ § A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Ä Ö Ü ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ä ö ü ß
diff --git a/iconvdata/testdata/DS_2089 b/iconvdata/testdata/DS_2089
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/DS_2089
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/DS_2089..UTF8 b/iconvdata/testdata/DS_2089..UTF8
new file mode 100644
index 0000000000..78859631b1
--- /dev/null
+++ b/iconvdata/testdata/DS_2089..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Æ Ø Å ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z æ ø å ~
diff --git a/iconvdata/testdata/ES b/iconvdata/testdata/ES
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/ES
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/ES..UTF8 b/iconvdata/testdata/ES..UTF8
new file mode 100644
index 0000000000..dd13205d8e
--- /dev/null
+++ b/iconvdata/testdata/ES..UTF8
@@ -0,0 +1,6 @@
+   ! " £ $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ § A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z ¡ Ñ ¿ ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ° ñ ç ~
diff --git a/iconvdata/testdata/ES2 b/iconvdata/testdata/ES2
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/ES2
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/ES2..UTF8 b/iconvdata/testdata/ES2..UTF8
new file mode 100644
index 0000000000..3d325728aa
--- /dev/null
+++ b/iconvdata/testdata/ES2..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ • A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z ¡ Ñ Ç ¿ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ´ ñ ç ¨
diff --git a/iconvdata/testdata/GB_1988-80 b/iconvdata/testdata/GB_1988-80
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/GB_1988-80
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/GB_1988-80..UTF8 b/iconvdata/testdata/GB_1988-80..UTF8
new file mode 100644
index 0000000000..be43f8ca05
--- /dev/null
+++ b/iconvdata/testdata/GB_1988-80..UTF8
@@ -0,0 +1,6 @@
+   ! " # ¥ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ‾
diff --git a/iconvdata/testdata/IT b/iconvdata/testdata/IT
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/IT
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/IT..UTF8 b/iconvdata/testdata/IT..UTF8
new file mode 100644
index 0000000000..586e03b7f5
--- /dev/null
+++ b/iconvdata/testdata/IT..UTF8
@@ -0,0 +1,6 @@
+   ! " £ $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ § A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z ° ç é ^ _
+ ù a b c d e f g h i j k l m n o
+ p q r s t u v w x y z à ò è ì
diff --git a/iconvdata/testdata/JIS_C6220-1969-RO b/iconvdata/testdata/JIS_C6220-1969-RO
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/JIS_C6220-1969-RO
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/JIS_C6220-1969-RO..UTF8 b/iconvdata/testdata/JIS_C6220-1969-RO..UTF8
new file mode 100644
index 0000000000..9a81b2a1b5
--- /dev/null
+++ b/iconvdata/testdata/JIS_C6220-1969-RO..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ ¥ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ‾
diff --git a/iconvdata/testdata/JIS_C6229-1984-B b/iconvdata/testdata/JIS_C6229-1984-B
new file mode 100644
index 0000000000..74b957e174
--- /dev/null
+++ b/iconvdata/testdata/JIS_C6229-1984-B
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+   a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | }
diff --git a/iconvdata/testdata/JIS_C6229-1984-B..UTF8 b/iconvdata/testdata/JIS_C6229-1984-B..UTF8
new file mode 100644
index 0000000000..7f5db117ff
--- /dev/null
+++ b/iconvdata/testdata/JIS_C6229-1984-B..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z 〈 ¥ 〉 ^ _
+   a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | }
diff --git a/iconvdata/testdata/JUS_I.B1.002 b/iconvdata/testdata/JUS_I.B1.002
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/JUS_I.B1.002
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/JUS_I.B1.002..UTF8 b/iconvdata/testdata/JUS_I.B1.002..UTF8
new file mode 100644
index 0000000000..3578c8bb74
--- /dev/null
+++ b/iconvdata/testdata/JUS_I.B1.002..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ Ž A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Š Đ Ć Č _
+ ž a b c d e f g h i j k l m n o
+ p q r s t u v w x y z š đ ć č
diff --git a/iconvdata/testdata/KSC5636 b/iconvdata/testdata/KSC5636
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/KSC5636
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/KSC5636..UTF8 b/iconvdata/testdata/KSC5636..UTF8
new file mode 100644
index 0000000000..6de66ccc4b
--- /dev/null
+++ b/iconvdata/testdata/KSC5636..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ ₩ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/MSZ_7795.3 b/iconvdata/testdata/MSZ_7795.3
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/MSZ_7795.3
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/MSZ_7795.3..UTF8 b/iconvdata/testdata/MSZ_7795.3..UTF8
new file mode 100644
index 0000000000..c62fae92e6
--- /dev/null
+++ b/iconvdata/testdata/MSZ_7795.3..UTF8
@@ -0,0 +1,6 @@
+   ! " # ¤ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ Á A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z É Ö Ü ^ _
+ á a b c d e f g h i j k l m n o
+ p q r s t u v w x y z é ö ü ˝
diff --git a/iconvdata/testdata/NC_NC00-10 b/iconvdata/testdata/NC_NC00-10
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/NC_NC00-10
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/NC_NC00-10..UTF8 b/iconvdata/testdata/NC_NC00-10..UTF8
new file mode 100644
index 0000000000..a8b2230c84
--- /dev/null
+++ b/iconvdata/testdata/NC_NC00-10..UTF8
@@ -0,0 +1,6 @@
+   ! " # ¤ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z ¡ Ñ ] ¿ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ´ ñ [ ¨
diff --git a/iconvdata/testdata/NF_Z_62-010 b/iconvdata/testdata/NF_Z_62-010
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/NF_Z_62-010
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/NF_Z_62-010..UTF8 b/iconvdata/testdata/NF_Z_62-010..UTF8
new file mode 100644
index 0000000000..c0bc7194ec
--- /dev/null
+++ b/iconvdata/testdata/NF_Z_62-010..UTF8
@@ -0,0 +1,6 @@
+   ! " £ $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ à A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z ° ç § ^ _
+ µ a b c d e f g h i j k l m n o
+ p q r s t u v w x y z é ù è ¨
diff --git a/iconvdata/testdata/NF_Z_62-010_1973 b/iconvdata/testdata/NF_Z_62-010_1973
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/NF_Z_62-010_1973
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/NF_Z_62-010_1973..UTF8 b/iconvdata/testdata/NF_Z_62-010_1973..UTF8
new file mode 100644
index 0000000000..1324ad229b
--- /dev/null
+++ b/iconvdata/testdata/NF_Z_62-010_1973..UTF8
@@ -0,0 +1,6 @@
+   ! " £ $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ à A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z ° ç § ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z é ù è ¨
diff --git a/iconvdata/testdata/NS_4551-1 b/iconvdata/testdata/NS_4551-1
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/NS_4551-1
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/NS_4551-1..UTF8 b/iconvdata/testdata/NS_4551-1..UTF8
new file mode 100644
index 0000000000..5174b5657c
--- /dev/null
+++ b/iconvdata/testdata/NS_4551-1..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Æ Ø Å ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z æ ø å ‾
diff --git a/iconvdata/testdata/NS_4551-2 b/iconvdata/testdata/NS_4551-2
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/NS_4551-2
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/NS_4551-2..UTF8 b/iconvdata/testdata/NS_4551-2..UTF8
new file mode 100644
index 0000000000..f777b2c349
--- /dev/null
+++ b/iconvdata/testdata/NS_4551-2..UTF8
@@ -0,0 +1,6 @@
+   ! " § $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Æ Ø Å ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z æ ø å |
diff --git a/iconvdata/testdata/PT b/iconvdata/testdata/PT
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/PT
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/PT..UTF8 b/iconvdata/testdata/PT..UTF8
new file mode 100644
index 0000000000..4e7c430be4
--- /dev/null
+++ b/iconvdata/testdata/PT..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ § A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Ã Ç Õ ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ã ç õ °
diff --git a/iconvdata/testdata/PT2 b/iconvdata/testdata/PT2
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/PT2
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/PT2..UTF8 b/iconvdata/testdata/PT2..UTF8
new file mode 100644
index 0000000000..8367159176
--- /dev/null
+++ b/iconvdata/testdata/PT2..UTF8
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ ´ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Ã Ç Õ ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ã ç õ ~
diff --git a/iconvdata/testdata/SEN_850200_B b/iconvdata/testdata/SEN_850200_B
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/SEN_850200_B
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/SEN_850200_B..UTF8 b/iconvdata/testdata/SEN_850200_B..UTF8
new file mode 100644
index 0000000000..458e21f68c
--- /dev/null
+++ b/iconvdata/testdata/SEN_850200_B..UTF8
@@ -0,0 +1,6 @@
+   ! " # ¤ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Ä Ö Å ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ä ö å ‾
diff --git a/iconvdata/testdata/SEN_850200_C b/iconvdata/testdata/SEN_850200_C
new file mode 100644
index 0000000000..7b7da5f318
--- /dev/null
+++ b/iconvdata/testdata/SEN_850200_C
@@ -0,0 +1,6 @@
+   ! " # $ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ @ A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z [ \ ] ^ _
+ ` a b c d e f g h i j k l m n o
+ p q r s t u v w x y z { | } ~
diff --git a/iconvdata/testdata/SEN_850200_C..UTF8 b/iconvdata/testdata/SEN_850200_C..UTF8
new file mode 100644
index 0000000000..9af159df27
--- /dev/null
+++ b/iconvdata/testdata/SEN_850200_C..UTF8
@@ -0,0 +1,6 @@
+   ! " # ¤ % & ' ( ) * + , - . /
+ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ É A B C D E F G H I J K L M N O
+ P Q R S T U V W X Y Z Ä Ö Å Ü _
+ é a b c d e f g h i j k l m n o
+ p q r s t u v w x y z ä ö å ü
diff --git a/iconvdata/uhc.c b/iconvdata/uhc.c
index f3addd4c4d..9c0b668ff7 100644
--- a/iconvdata/uhc.c
+++ b/iconvdata/uhc.c
@@ -43,7 +43,7 @@ egrep \
 
 */
 
-static const wchar_t uhc_extra_to_ucs[8822]=
+static const uint32_t uhc_extra_to_ucs[8822]=
 {
   0xac02, 0xac03, 0xac05, 0xac06, 0xac0b, 0xac0c, 0xac0d, 0xac0e,
   0xac0f, 0xac18, 0xac1e, 0xac1f, 0xac21, 0xac22, 0xac23, 0xac25,
@@ -2607,7 +2607,7 @@ uhc_from_ucs4 (uint32_t ch, unsigned char *cp)
 
 
 /* Definitions used in the body of the `gconv' function.  */
-#define CHARSET_NAME		"UHC"
+#define CHARSET_NAME		"UHC//"
 #define FROM_LOOP		from_uhc
 #define TO_LOOP			to_uhc
 #define DEFINE_INIT		1
@@ -2630,7 +2630,7 @@ uhc_from_ucs4 (uint32_t ch, unsigned char *cp)
     if (ch == 0x5c)							      \
       ch =  0x20a9;							      \
     else if (ch <= 0x7f)						      \
-      ch = (wchar_t) ch;						      \
+      ch = (uint32_t) ch;						      \
 */									      \
     if (ch <= 0x7f)							      \
       ++inptr;								      \
diff --git a/io/ftw.h b/io/ftw.h
index bf0c7c885e..f2c59c4412 100644
--- a/io/ftw.h
+++ b/io/ftw.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1996, 1997, 1998 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
@@ -113,7 +113,7 @@ extern int ftw __P ((__const char *__dir, __ftw_func_t __func,
 extern int __REDIRECT (ftw, __P ((__const char *__dir, __ftw_func_t __func,
 				  int __descriptors)), ftw64);
 # else
-#  define nftw nftw64
+#  define ftw ftw64
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
diff --git a/localedata/locales/pt_BR b/localedata/locales/pt_BR
index 7c71a345d1..5bbd989ac9 100644
--- a/localedata/locales/pt_BR
+++ b/localedata/locales/pt_BR
@@ -29,7 +29,7 @@ noexpr  "<'/>><<(><n><N><)/>><.><*>"
 END LC_MESSAGES
 
 LC_MONETARY
-int_curr_symbol           "<B><R><C><SP>"
+int_curr_symbol           "<B><R><L><SP>"
 currency_symbol           "<R><DO>"
 mon_decimal_point         "<,>"
 mon_thousands_sep         "<.>"
diff --git a/posix/Makefile b/posix/Makefile
index 525df3cf86..08f20b6256 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -102,7 +102,7 @@ glob/%.h: %.h
 	ln -s ../$< $@
 
 glob/configure: glob/configure.in
-	cd glob; autoconf $(ACFLAGS)
+	cd glob && autoconf $(ACFLAGS)
 ifeq ($(with-cvs),yes)
 	test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@
 endif
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index 48bcf6f5fd..7666c87936 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -935,6 +935,57 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	  else
 	    negative = 0;
 
+	  /* Take care for the special arguments "nan" and "inf".  */
+	  if (tolower (c) == 'n')
+	    {
+	      /* Maybe "nan".  */
+	      ADDW (c);
+	      if (inchar () == EOF || tolower (c) != 'a')
+		input_error ();
+	      ADDW (c);
+	      if (inchar () == EOF || tolower (c) != 'n')
+		input_error ();
+	      ADDW (c);
+	      /* It is "nan".  */
+	      goto scan_float;
+	    }
+	  else if (tolower (c) == 'i')
+	    {
+	      /* Maybe "inf" or "infinity".  */
+	      ADDW (c);
+	      if (inchar () == EOF || tolower (c) != 'n')
+		input_error ();
+	      ADDW (c);
+	      if (inchar () == EOF || tolower (c) != 'f')
+		input_error ();
+	      ADDW (c);
+	      /* It is as least "inf".  */
+	      if (inchar () != EOF)
+		{
+		  if (tolower (c) == 'i')
+		    {
+		      /* No we have to read the rest as well.  */
+		      ADDW (c);
+		      if (inchar () == EOF || tolower (c) != 'n')
+			input_error ();
+		      ADDW (c);
+		      if (inchar () == EOF || tolower (c) != 'i')
+			input_error ();
+		      ADDW (c);
+		      if (inchar () == EOF || tolower (c) != 't')
+			input_error ();
+		      ADDW (c);
+		      if (inchar () == EOF || tolower (c) != 'y')
+			input_error ();
+		      ADDW (c);
+		    }
+		  else
+		    /* Never mind.  */
+		    ungetc (c, s);
+		}
+	      goto scan_float;
+	    }
+
 	  is_hexa = 0;
 	  exp_char = 'e';
 	  if (c == '0')
@@ -995,6 +1046,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 	  if (wpsize == 0 || (is_hexa && wpsize == 2))
 	    conv_error ();
 
+	scan_float:
 	  /* Convert the number.  */
 	  ADDW ('\0');
 	  if (flags & LONGDBL)
diff --git a/stdio/stdio.h b/stdio/stdio.h
index 2631d83e43..dd4dd6db0d 100644
--- a/stdio/stdio.h
+++ b/stdio/stdio.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98 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
@@ -447,18 +447,22 @@ extern int vsnprintf __P ((char *__s, size_t __maxlen,
 #ifdef __USE_GNU
 /* Write formatted output to a string dynamically allocated with `malloc'.
    Store the address of the string in *PTR.  */
-extern int vasprintf __P ((char **__ptr, __const char *__f,
-			   __gnuc_va_list __arg))
-     __attribute__ ((__format__ (__printf__, 2, 0)));
-extern int asprintf __P ((char **__ptr, __const char *__fmt, ...))
+extern int vasprintf __P ((char **__restrict __ptr,
+			   __const char *__restrict __f, __gnuc_va_list __arg))
      __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int __asprintf __P ((char **__restrict __ptr,
+			    __const char *__restrict __fmt, ...))
+     __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int asprintf __P ((char **__restrict __ptr,
+			  __const char *__restrict __fmt, ...))
+     __attribute__ ((__format__ (__printf__, 2, 3)));
 
 /* Write formatted output to a file descriptor.  */
-extern int vdprintf __P ((int __fd, __const char *__fmt,
+extern int vdprintf __P ((int __fd, __const char *__restrict __fmt,
 			  __gnuc_va_list __arg))
      __attribute__ ((__format__ (__printf__, 2, 0)));
-extern int dprintf __P ((int __fd, __const char *__fmt, ...))
-     __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf __P ((int __fd, __const char *__restrict __fmt, ...))
+     __attribute__ ((__format__ (__printf__, 2, 3)));
 #endif
 
 
diff --git a/sysdeps/gnu/utmp_file.c b/sysdeps/gnu/utmp_file.c
index 05bbcd1ce1..8003d3cdb0 100644
--- a/sysdeps/gnu/utmp_file.c
+++ b/sysdeps/gnu/utmp_file.c
@@ -18,7 +18,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
-#include <unistd.>
+#include <unistd.h>
 
 #define TRANSFORM_UTMP_FILE_NAME(file_name) \
     ((strcmp (file_name, _PATH_UTMP "x") == 0 \
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index b3161ca195..948920dfc1 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -92,8 +92,8 @@ $(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \
 	-chmod a-w $(hurd)/errnos.h-tmp
 	./$(..)move-if-change $(hurd)/errnos.h-tmp $(hurd)/errnos.h
 ifeq ($(with-cvs),yes)
-	test ! -d CVS || \
-	  (cd $(hurd); cvs commit -m'Regenerated from $^' errnos.h)
+	test ! -d $(hurd)/CVS || \
+	  (cd $(hurd) && cvs commit -m'Regenerated from $^' errnos.h)
 endif
 	touch $@
 
diff --git a/sysdeps/mach/hurd/bits/dirent.h b/sysdeps/mach/hurd/bits/dirent.h
new file mode 100644
index 0000000000..6609fde8ea
--- /dev/null
+++ b/sysdeps/mach/hurd/bits/dirent.h
@@ -0,0 +1,67 @@
+/* Directory entry structure `struct dirent'.  Hurd version.
+   Copyright (C) 1996, 1997, 1998 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _DIRENT_H
+# error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
+#endif
+
+#ifndef __USE_FILE_OFFSET64
+/* The old BSD4.4-compatible struct dirent. */
+struct dirent
+  {
+    __ino_t d_ino;		/* File serial number.  */
+    unsigned short int d_reclen; /* Length of the whole `struct dirent'.  */
+    unsigned char d_type;	/* File type, possibly unknown.  */
+    unsigned char d_namlen;	/* Length of the file name.  */
+
+    /* Only this member is in the POSIX standard.  */
+    char d_name[1];		/* File name (actually longer).  */
+  };
+
+#else
+/* Linux-style 64-bit struct dirent. */
+struct dirent
+  {
+    __ino64_t d_ino;
+    __off64_t d_off;
+    unsigned short int d_reclen;
+    unsigned char d_type;
+    char d_name[256];		/* We must not include limits.h! */
+  };
+#endif
+
+#ifdef __USE_LARGEFILE64
+/* Same as above (Linux-style 64-bit struct dirent). */
+struct dirent64
+  {
+    __ino64_t d_ino;
+    __off64_t d_off;
+    unsigned short int d_reclen;
+    unsigned char d_type;
+    char d_name[256];		/* We must not include limits.h! */
+  };
+#endif
+
+#define d_fileno	d_ino	/* Backwards compatibility.  */
+
+/* These definitions are accurate for neither the 32-bit nor the
+   64-bit structures, but at least they are compatible. */
+#undef  _DIRENT_HAVE_D_NAMLEN
+#define _DIRENT_HAVE_D_RECLEN 1
+#define _DIRENT_HAVE_D_TYPE 1
diff --git a/sysdeps/mach/hurd/readdir64.c b/sysdeps/mach/hurd/readdir64.c
new file mode 100644
index 0000000000..aed5e0199a
--- /dev/null
+++ b/sysdeps/mach/hurd/readdir64.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 1998 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <limits.h>
+#include <stddef.h>
+#include <string.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+/* Read a directory entry from DIRP.  */
+struct dirent64 *
+__readdir64 (DIR *dirp)
+{
+  struct dirent *dp;
+  static struct dirent64 dent;
+
+  /* XXX the new __dir_readdir64 RPC is not yet implemented */
+
+  /* If __dir_readdir64 failed, then fall back on the old implementation */
+  dp = readdir (dirp);
+  if (!dp)
+    return NULL;
+
+  /* Return a struct dirent64, converted from the 32-bit value. */
+  memset (&dent, 0, sizeof (dent));
+  dent.d_reclen = sizeof (dent);
+
+  dent.d_ino = dp->d_fileno;
+  dent.d_type = dp->d_type;
+  memcpy (dent.d_name, dp->d_name, dp->d_namlen);
+
+  return &dent;
+}
+weak_alias (__readdir64, readdir64)
diff --git a/sysdeps/mach/hurd/readdir64_r.c b/sysdeps/mach/hurd/readdir64_r.c
new file mode 100644
index 0000000000..bd00b0eb08
--- /dev/null
+++ b/sysdeps/mach/hurd/readdir64_r.c
@@ -0,0 +1,57 @@
+/* Copyright (C) 1998 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <limits.h>
+#include <stddef.h>
+#include <string.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+/* Read a directory entry from DIRP.  */
+int
+__readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
+{
+  struct dirent ent32, *res32;
+
+  /* XXX the new __dir_readdir64 RPC is not yet implemented */
+
+  /* If __dir_readdir64 failed, then fall back on the old implementation */
+  if (readdir_r (dirp, &ent32, &res32))
+    return -1;
+
+  if (!res32)
+    {
+      /* End of directory. */
+      *result = 0;
+      return 0;
+    }
+
+  /* Convert our result from the 32-bit value. */
+  memset (entry, 0, sizeof (*entry));
+  entry->d_reclen = sizeof (*entry);
+
+  entry->d_ino = res32->d_fileno;
+  entry->d_type = res32->d_type;
+  memcpy (entry->d_name, res32->d_name, res32->d_namlen);
+
+  *result = entry;
+  return 0;
+}
+weak_alias (__readdir64_r, readdir64_r)