Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 11 Sep 1998 12:14:37 +0000 (12:14 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 11 Sep 1998 12:14:37 +0000 (12:14 +0000)
1998-09-11  Ulrich Drepper  <drepper@cygnus.com>

* resolv/res_init.c (res_init): Handle resolv.conf file with only
one nameserver correctly.  Patch by HJ Lu.

* iconvdata/Makefile (modules): Add IEC_P27-1, BALTIC, ASMO_449,
and ANSI_X3.110.
Define *-routines variables for new modules.
(distribute): Add .c files for new modules.
(awk-generated-headers): Add iec_p27-1.h, baltic.h, and asmo_449.h.
Add rules for hedaer generation.
* iconvdata/gconv-modules: Add entries for new modules.  Pretty print.
* iconvdata/ansi_x3.110.c: New file.
* iconvdata/asmo_449.c: New file.
* iconvdata/baltic.c: New file.
* iconvdata/iec_p27-1.c: New file.

* iconvdata/t61.c (from_ucs4): Correct 0x23, 0x24, 0x80, and 0x81
entries.
Convert U02dc correctly.

* math/atest-exp.c: Add parentheses to avoid gcc warnings.
* math/atest-exp2.c: Likewise.
* math/atest-sincos.c: Likewise.

* posix/getopt.h: Don't define non-POSIX stuff unless _GNU_SOURCE
is defined.

1998-09-11 10:51  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* string/strcoll.c: Optimize a few expressions.
* string/strxfrm.c: Likewise.

16 files changed:
ChangeLog
iconvdata/Makefile
iconvdata/ansi_x3.110.c [new file with mode: 0644]
iconvdata/asmo_449.c [new file with mode: 0644]
iconvdata/baltic.c [new file with mode: 0644]
iconvdata/gconv-modules
iconvdata/iec_p27-1.c [new file with mode: 0644]
iconvdata/t61.c
math/atest-exp.c
math/atest-exp2.c
math/atest-sincos.c
nss/nss_files/files-XXX.c
posix/getopt.h
resolv/res_init.c
string/strcoll.c
string/strxfrm.c

index 2a78fc4..aae849a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+1998-09-11  Ulrich Drepper  <drepper@cygnus.com>
+
+       * resolv/res_init.c (res_init): Handle resolv.conf file with only
+       one nameserver correctly.  Patch by HJ Lu.
+
+       * iconvdata/Makefile (modules): Add IEC_P27-1, BALTIC, ASMO_449,
+       and ANSI_X3.110.
+       Define *-routines variables for new modules.
+       (distribute): Add .c files for new modules.
+       (awk-generated-headers): Add iec_p27-1.h, baltic.h, and asmo_449.h.
+       Add rules for hedaer generation.
+       * iconvdata/gconv-modules: Add entries for new modules.  Pretty print.
+       * iconvdata/ansi_x3.110.c: New file.
+       * iconvdata/asmo_449.c: New file.
+       * iconvdata/baltic.c: New file.
+       * iconvdata/iec_p27-1.c: New file.
+
+       * iconvdata/t61.c (from_ucs4): Correct 0x23, 0x24, 0x80, and 0x81
+       entries.
+       Convert U02dc correctly.
+
+       * math/atest-exp.c: Add parentheses to avoid gcc warnings.
+       * math/atest-exp2.c: Likewise.
+       * math/atest-sincos.c: Likewise.
+
+       * posix/getopt.h: Don't define non-POSIX stuff unless _GNU_SOURCE
+       is defined.
+
+1998-09-11 10:51  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * string/strcoll.c: Optimize a few expressions.
+       * string/strxfrm.c: Likewise.
+
 1998-09-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
 
        * manual/locale.texi: Fix typos.
index a300c10..82b4c62 100644 (file)
@@ -37,7 +37,8 @@ modules       := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5             \
           IBM437 IBM850 IBM851 IBM852 IBM855 IBM857 IBM860 IBM861       \
           IBM862 IBM863 IBM864 IBM865 IBM868 IBM869 IBM875 IBM880       \
           IBM918 IBM1004 IBM1026 CP1250 CP1251 CP1252 CP1253 CP1254     \
-          CP1255 CP1256 CP1257 ISO-2022-JP MACINTOSH
+          CP1255 CP1256 CP1257 ISO-2022-JP MACINTOSH IEC_P27-1 BALTIC   \
+          ASMO_449 ANSI_X3.110
 
 modules.so := $(addsuffix .so, $(modules))
 
@@ -143,6 +144,10 @@ EUC-TW-routines := euctw
 ISO-2022-JP-routines := iso-2022-jp
 ISO-2022-KR-routines := iso-2022-kr
 MACINTOSH-routines := macintosh
+IEC_P27-1-routines := iec_p27-1
+BALTIC-routines := baltic
+ASMO_449-routines := asmo_449
+ANSI_X3.110-routines := ansi_x3.110
 libJIS-routines := jis0201 jis0208 jis0212
 libKSC-routines := ksc5601
 libGB-routines := gb2312
@@ -195,7 +200,8 @@ distribute := 8bit-generic.c 8bit-gap.c gap.awk gaptab.awk gconv-modules    \
              ibm1004.c ibm1026.c ibm1047.c cp1250.c cp1251.c cp1252.c      \
              cp1253.c cp1254.c cp1255.c cp1256.c cp1257.c cp874.c cp874.h  \
              cp737.c cp737.h cp775.c cp775.h iso-2022-jp.c iso-2022-kr.c   \
-             gen-8bit.sh gen-8bit-gap.sh gen-8bit-gap-1.sh macintosh.c
+             gen-8bit.sh gen-8bit-gap.sh gen-8bit-gap-1.sh macintosh.c     \
+             iec_p27-1.c baltic.c asmo_449.c ansi_x3.110.c
 
 # We build the transformation modules only when we build shared libs.
 ifeq (yes,$(build-shared))
@@ -261,7 +267,8 @@ awk-generated-headers  := koi8-r.h latin-greek.h latin-greek-1.h     \
                          ibm1026.h cp1250.h cp1251.h cp1252.h cp1253.h  \
                          cp1254.h cp1255.h cp1256.h cp1257.h            \
                          iso8859-5.h iso8859-7.h iso8859-8.h            \
-                         iso8859-10.h iso8859-7jp.h macintosh.h
+                         iso8859-10.h iso8859-7jp.h macintosh.h         \
+                         iec_p27-1.h baltic.h asmo_449.h
 
 generated = $(sed-generated-headers) $(sed-generated-headers:%.h=%.stmp) \
            $(awk-generated-headers) $(awk-generated-headers:%.h=%.stmp) \
@@ -461,6 +468,12 @@ $(objpfx)cp1257.stmp: ../localedata/charmaps/CP1257 gen-8bit-gap.sh
 
 $(objpfx)macintosh.stmp: ../localedata/charmaps/MACINTOSH gen-8bit-gap.sh
        $(generate-8bit-gap-table)
+$(objpfx)iec_p27-1.stmp: ../localedata/charmaps/IEC_P27-1 gen-8bit-gap.sh
+       $(generate-8bit-gap-table)
+$(objpfx)baltic.stmp: ../localedata/charmaps/BALTIC gen-8bit-gap.sh
+       $(generate-8bit-gap-table)
+$(objpfx)asmo_449.stmp: ../localedata/charmaps/ASMO_449 gen-8bit-gap.sh
+       $(generate-8bit-gap-table)
 
 headers: $(addprefix $(objpfx),\
                $(sed-generated-headers) $(awk-generated-headers))
diff --git a/iconvdata/ansi_x3.110.c b/iconvdata/ansi_x3.110.c
new file mode 100644 (file)
index 0000000..c754ce0
--- /dev/null
@@ -0,0 +1,558 @@
+/* Generic conversion to and from ANSI_X3.110-1983.
+   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 <gconv.h>
+#include <stdint.h>
+#include <string.h>
+
+/* Data taken from the WG15 tables.  */
+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,
+  /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+  /* 0x18 */ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */ 0x0020, 0x0021, 0x0022, 0x0000, 0x0000, 0x0025, 0x0026, 0x0027,
+  /* 0x28 */ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+  /* 0x30 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  /* 0x38 */ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+  /* 0x40 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  /* 0x48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+  /* 0x50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+  /* 0x58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+  /* 0x60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  /* 0x68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+  /* 0x70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+  /* 0x78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+  /* 0x80 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+  /* 0x88 */ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+  /* 0x90 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+  /* 0x98 */ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+  /* 0xa0 */ 0x0000, 0x00a1, 0x00a2, 0x00a3, 0x0024, 0x00a5, 0x0023, 0x00a7,
+  /* 0xa8 */ 0x00a4, 0x2018, 0x201c, 0x00ab, 0x2190, 0x2191, 0x2192, 0x2193,
+  /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00d7, 0x00b5, 0x00b6, 0x00b7,
+  /* 0xb8 */ 0x00f7, 0x2019, 0x201d, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+  /* 0xc0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+  /* 0xc8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+  /* 0xd0 */ 0x2014, 0x00b9, 0x00ae, 0x00a9, 0x2122, 0x266a, 0x2500, 0x2502,
+  /* 0xd8 */ 0x2571, 0x2572, 0x25e2, 0x25e3, 0x215b, 0x215c, 0x215d, 0x215e,
+  /* 0xe0 */ 0x2126, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x253c, 0x0132, 0x013f,
+  /* 0xe8 */ 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0x0149,
+  /* 0xf0 */ 0x0138, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0140,
+  /* 0xf8 */ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0000
+};
+
+/* The outer array range runs from 0xc1 to 0xcf, the inner range from 0x20
+   to 0x7f.  */
+static const uint32_t to_ucs4_comb[15][96] =
+{
+  /* 0xc1 */
+  {
+    /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x00c0, 0x0000, 0x0000, 0x0000, 0x00c8, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x00cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d9, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x00e0, 0x0000, 0x0000, 0x0000, 0x00e8, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x00ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f2,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f9, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc2 */
+  {
+    /* 0x20 */ 0x00b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x00c1, 0x0000, 0x0106, 0x0000, 0x00c9, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x00cd, 0x0000, 0x0000, 0x0139, 0x0000, 0x0143, 0x00d3,
+    /* 0x50 */ 0x0000, 0x0000, 0x0154, 0x015a, 0x0000, 0x00da, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x00dd, 0x0179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x00e1, 0x0000, 0x0107, 0x0000, 0x00e9, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x00ed, 0x0000, 0x0000, 0x013a, 0x0000, 0x0144, 0x00f3,
+    /* 0x70 */ 0x0000, 0x0000, 0x0155, 0x015b, 0x0000, 0x00fa, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x00fd, 0x017a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc3 */
+  {
+    /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x00c2, 0x0000, 0x0108, 0x0000, 0x00ca, 0x0000, 0x011c,
+    /* 0x48 */ 0x0124, 0x00ce, 0x0134, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d4,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x015c, 0x0000, 0x00db, 0x0000, 0x0174,
+    /* 0x58 */ 0x0000, 0x0176, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x00e2, 0x0000, 0x0109, 0x0000, 0x00ea, 0x0000, 0x011d,
+    /* 0x68 */ 0x0125, 0x00ee, 0x0135, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f4,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x015d, 0x0000, 0x00fb, 0x0000, 0x0175,
+    /* 0x78 */ 0x0000, 0x0177, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc4 */
+  {
+    /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x00c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d1, 0x00d5,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0168, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x00e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x0129, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f1, 0x00f5,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0169, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc5 */
+  {
+    /* 0x20 */ 0x00af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x012a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014c,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016a, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0113, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014d,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016b, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc6 */
+  {
+    /* 0x20 */ 0x02d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011e,
+    /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0103, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011f,
+    /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016d, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc7 */
+  {
+    /* 0x20 */ 0x02d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x010a, 0x0000, 0x0116, 0x0000, 0x0120,
+    /* 0x48 */ 0x0000, 0x0130, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x017b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x010b, 0x0000, 0x0117, 0x0000, 0x0121,
+    /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x017c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc8 */
+  {
+    /* 0x20 */ 0x00a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x00c4, 0x0000, 0x0000, 0x0000, 0x00cb, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x00cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d6,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00dc, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0178, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x00e4, 0x0000, 0x0000, 0x0000, 0x00eb, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x00ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f6,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fc, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xc9 */
+  {
+    0x0000,
+  },
+  /* 0xca */
+  {
+    /* 0x20 */ 0x02da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x00c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016e, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x00e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016f, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xcb */
+  {
+    /* 0x20 */ 0x00b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x00c7, 0x0000, 0x0000, 0x0000, 0x0122,
+    /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0136, 0x013b, 0x0000, 0x0145, 0x0000,
+    /* 0x50 */ 0x0000, 0x0000, 0x0156, 0x015e, 0x0162, 0x0000, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x00e7, 0x0000, 0x0000, 0x0000, 0x0123,
+    /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0137, 0x013c, 0x0000, 0x0146, 0x0000,
+    /* 0x70 */ 0x0000, 0x0000, 0x0157, 0x015f, 0x0163, 0x0000, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xcc */
+  {
+    0x0000,
+  },
+  /* 0xcd */
+  {
+    /* 0x20 */ 0x02dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0150,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0170, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0151,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0171, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xce */
+  {
+    /* 0x20 */ 0x02db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0104, 0x0000, 0x0000, 0x0000, 0x0118, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x012e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0172, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0105, 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0173, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  /* 0xcf */
+  {
+    /* 0x20 */ 0x02c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x010c, 0x010e, 0x011a, 0x0000, 0x0000,
+    /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x013d, 0x0000, 0x0147, 0x0000,
+    /* 0x50 */ 0x0000, 0x0000, 0x0158, 0x0160, 0x0164, 0x0000, 0x0000, 0x0000,
+    /* 0x58 */ 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x010d, 0x010f, 0x011b, 0x0000, 0x0000,
+    /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0148, 0x0000,
+    /* 0x70 */ 0x0000, 0x0000, 0x0159, 0x0161, 0x0165, 0x0000, 0x0000, 0x0000,
+    /* 0x78 */ 0x0000, 0x0000, 0x017e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  }
+};
+
+
+static const char from_ucs4[][2] =
+{
+  /* 0x0000 */ "\x00\x00", "\x01\x00", "\x02\x00", "\x03\x00", "\x04\x00",
+  /* 0x0005 */ "\x05\x00", "\x06\x00", "\x07\x00", "\x08\x00", "\x09\x00",
+  /* 0x000a */ "\x0a\x00", "\x0b\x00", "\x0c\x00", "\x0d\x00", "\x0e\x00",
+  /* 0x000f */ "\x0f\x00", "\x10\x00", "\x11\x00", "\x12\x00", "\x13\x00",
+  /* 0x0014 */ "\x14\x00", "\x15\x00", "\x16\x00", "\x17\x00", "\x18\x00",
+  /* 0x0019 */ "\x19\x00", "\x1a\x00", "\x1b\x00", "\x1c\x00", "\x1d\x00",
+  /* 0x001e */ "\x1e\x00", "\x1f\x00", "\x20\x00", "\x21\x00", "\x22\x00",
+  /* 0x0023 */ "\xa6\x00", "\xa4\x00", "\x25\x00", "\x26\x00", "\x27\x00",
+  /* 0x0028 */ "\x28\x00", "\x29\x00", "\x2a\x00", "\x2b\x00", "\x2c\x00",
+  /* 0x002d */ "\x2d\x00", "\x2e\x00", "\x2f\x00", "\x30\x00", "\x31\x00",
+  /* 0x0032 */ "\x32\x00", "\x33\x00", "\x34\x00", "\x35\x00", "\x36\x00",
+  /* 0x0037 */ "\x37\x00", "\x38\x00", "\x39\x00", "\x3a\x00", "\x3b\x00",
+  /* 0x003c */ "\x3c\x00", "\x3d\x00", "\x3e\x00", "\x3f\x00", "\x40\x00",
+  /* 0x0041 */ "\x41\x00", "\x42\x00", "\x43\x00", "\x44\x00", "\x45\x00",
+  /* 0x0046 */ "\x46\x00", "\x47\x00", "\x48\x00", "\x49\x00", "\x4a\x00",
+  /* 0x004b */ "\x4b\x00", "\x4c\x00", "\x4d\x00", "\x4e\x00", "\x4f\x00",
+  /* 0x0050 */ "\x50\x00", "\x51\x00", "\x52\x00", "\x53\x00", "\x54\x00",
+  /* 0x0055 */ "\x55\x00", "\x56\x00", "\x57\x00", "\x58\x00", "\x59\x00",
+  /* 0x005a */ "\x5a\x00", "\x5b\x00", "\x5c\x00", "\x5d\x00", "\x5e\x00",
+  /* 0x005f */ "\x5f\x00", "\x60\x00", "\x61\x00", "\x62\x00", "\x63\x00",
+  /* 0x0064 */ "\x64\x00", "\x65\x00", "\x66\x00", "\x67\x00", "\x68\x00",
+  /* 0x0069 */ "\x69\x00", "\x6a\x00", "\x6b\x00", "\x6c\x00", "\x6d\x00",
+  /* 0x006e */ "\x6e\x00", "\x6f\x00", "\x70\x00", "\x71\x00", "\x72\x00",
+  /* 0x0073 */ "\x73\x00", "\x74\x00", "\x75\x00", "\x76\x00", "\x77\x00",
+  /* 0x0078 */ "\x78\x00", "\x79\x00", "\x7a\x00", "\x7b\x00", "\x7c\x00",
+  /* 0x007d */ "\x7d\x00", "\x7e\x00", "\x7f\x00", "\x80\x00", "\x81\x00",
+  /* 0x0082 */ "\x82\x00", "\x83\x00", "\x84\x00", "\x85\x00", "\x86\x00",
+  /* 0x0087 */ "\x87\x00", "\x88\x00", "\x89\x00", "\x8a\x00", "\x8b\x00",
+  /* 0x008c */ "\x8c\x00", "\x8d\x00", "\x8e\x00", "\x8f\x00", "\x90\x00",
+  /* 0x0091 */ "\x91\x00", "\x92\x00", "\x93\x00", "\x94\x00", "\x95\x00",
+  /* 0x0096 */ "\x96\x00", "\x97\x00", "\x98\x00", "\x99\x00", "\x9a\x00",
+  /* 0x009b */ "\x9b\x00", "\x9c\x00", "\x9d\x00", "\x9e\x00", "\x9f\x00",
+  /* 0x00a0 */ "\x00\x00", "\xa1\x00", "\xa2\x00", "\xa3\x00", "\xa8\x00",
+  /* 0x00a5 */ "\xa5\x00", "\x00\x00", "\xa7\x00", "\xc8\x20", "\xd3\x00",
+  /* 0x00aa */ "\xe3\x00", "\xab\x00", "\x00\x00", "\x00\x00", "\xd2\x00",
+  /* 0x00af */ "\xc5\x20", "\xb0\x00", "\xb1\x00", "\xb2\x00", "\xb3\x00",
+  /* 0x00b4 */ "\xc2\x20", "\xb5\x00", "\xb6\x00", "\xb7\x00", "\xcb\x20",
+  /* 0x00b9 */ "\xd1\x00", "\xeb\x00", "\xbb\x00", "\xbc\x00", "\xbd\x00",
+  /* 0x00be */ "\xbe\x00", "\xbf\x00", "\xc1\x41", "\xc2\x41", "\xc3\x41",
+  /* 0x00c3 */ "\xc4\x41", "\xc8\x41", "\xca\x41", "\xe1\x00", "\xcb\x43",
+  /* 0x00c8 */ "\xc1\x45", "\xc2\x45", "\xc3\x45", "\xc8\x45", "\xc1\x49",
+  /* 0x00cd */ "\xc2\x49", "\xc3\x49", "\xc8\x49", "\xe2\x00", "\xc4\x4e",
+  /* 0x00d2 */ "\xc1\x4f", "\xc2\x4f", "\xc3\x4f", "\xc4\x4f", "\xc8\x4f",
+  /* 0x00d7 */ "\xb4\x00", "\xe9\x00", "\xc1\x55", "\xc2\x55", "\xc3\x55",
+  /* 0x00dc */ "\xc8\x55", "\xc2\x59", "\xec\x00", "\xfb\x00", "\xc1\x61",
+  /* 0x00e1 */ "\xc2\x61", "\xc3\x61", "\xc4\x61", "\xc8\x61", "\xca\x61",
+  /* 0x00e6 */ "\xf1\x00", "\xcb\x63", "\xc1\x65", "\xc2\x65", "\xc3\x65",
+  /* 0x00eb */ "\xc8\x65", "\xc1\x69", "\xc2\xe9", "\xc3\x69", "\xc8\x69",
+  /* 0x00f0 */ "\xf3\x00", "\xc4\x6e", "\xc1\x6f", "\xc2\x6f", "\xc3\x6f",
+  /* 0x00f5 */ "\xc4\x6f", "\xc8\x6f", "\xb8\x00", "\xf9\x00", "\xc1\x75",
+  /* 0x00fa */ "\xc2\x75", "\xc3\x75", "\xc8\x75", "\xc2\x79", "\xfc\x00",
+  /* 0x00ff */ "\xc8\x79", "\xc5\x41", "\xc5\x61", "\xc6\x41", "\xc6\x61",
+  /* 0x0104 */ "\xce\x41", "\xce\x61", "\xc2\x43", "\xc2\x63", "\xc3\x43",
+  /* 0x0109 */ "\xc3\x63", "\xc7\x43", "\xc7\x63", "\xcf\x43", "\xcf\x63",
+  /* 0x010e */ "\xcf\x44", "\xcf\x64", "\x00\x00", "\xf2\x00", "\xc5\x45",
+  /* 0x0113 */ "\xc5\x65", "\x00\x00", "\x00\x00", "\xc7\x45", "\xc7\x65",
+  /* 0x0118 */ "\xce\x45", "\xce\x65", "\xcf\x45", "\xcf\x65", "\xc3\x47",
+  /* 0x011d */ "\xc3\x67", "\xc6\x47", "\xc6\x67", "\xc7\x47", "\xc7\x67",
+  /* 0x0122 */ "\xcb\x47", "\xcb\x67", "\xc3\x48", "\xc3\x68", "\xe4\x00",
+  /* 0x0127 */ "\xf4\x00", "\xc4\x49", "\xc4\x69", "\xc5\x49", "\xc5\x69",
+  /* 0x012c */ "\x00\x00", "\x00\x00", "\xce\x49", "\xce\x69", "\xc7\x49",
+  /* 0x0131 */ "\xf5\x00", "\xe6\x00", "\xf6\x00", "\xc3\x4a", "\xc3\x6a",
+  /* 0x0136 */ "\xcb\x4b", "\xcb\x6b", "\xf0\x00", "\xc2\x4c", "\xc2\x6c",
+  /* 0x013b */ "\xcb\x4c", "\xcb\x6c", "\xcf\x4c", "\xcf\x6c", "\xe7\x00",
+  /* 0x0140 */ "\xf7\x00", "\xe8\x00", "\xf8\x00", "\xc2\x4e", "\xc2\x6e",
+  /* 0x0145 */ "\xcb\x4e", "\xcb\x6e", "\xcf\x4e", "\xcf\x6e", "\xef\x00",
+  /* 0x014a */ "\xee\x00", "\xfe\x00", "\xc5\x4f", "\xc5\x6f", "\x00\x00",
+  /* 0x014f */ "\x00\x00", "\xcd\x4f", "\xcd\x6f", "\xea\x00", "\xfa\x00",
+  /* 0x0154 */ "\xc2\x52", "\xc2\x72", "\xcb\x52", "\xcb\x72", "\xcf\x52",
+  /* 0x0159 */ "\xcf\x72", "\xc2\x53", "\xc2\x73", "\xc3\x53", "\xc3\x73",
+  /* 0x015e */ "\xcb\x53", "\xcb\x73", "\xcf\x53", "\xcf\x73", "\xcb\x54",
+  /* 0x0163 */ "\xcb\x74", "\xcf\x54", "\xcf\x74", "\xed\x00", "\xfd\x00",
+  /* 0x0168 */ "\xc4\x55", "\xc4\x75", "\xc5\x55", "\xc5\x75", "\xc6\x55",
+  /* 0x016d */ "\xc6\x75", "\xca\x55", "\xca\x75", "\xcd\x55", "\xcd\x75",
+  /* 0x0172 */ "\xce\x55", "\xce\x75", "\xc3\x57", "\xc3\x77", "\xc3\x59",
+  /* 0x0177 */ "\xc3\x79", "\xc8\x59", "\xc2\x5a", "\xc2\x7a", "\xc7\x5a",
+  /* 0x017c */ "\xc7\x7a", "\xcf\x5a", "\xcf\x7a"
+/*
+   This table does not cover the following positions:
+
+     0x02c7    "\xcf\x20",
+     ...
+     0x02d8    "\xc6\x20", "\xc7\x20", "\xca\x20", "\xce\x20", "\x00\x00",
+     0x02dd    "\xcd\x20",
+     ...
+     0x2014    "\xd0\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa9\x00",
+     0x2019    "\xb9\x00", "\x00\x00", "\x00\x00", "\xaa\x00", "\xba\x00",
+     0x201e    "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xd4\x00",
+     0x2023    "\x00\x00", "\x00\x00", "\x00\x00", "\xe0\x00",
+     ...
+     0x215b    "\xdc\x00", "\xdd\x00", "\xde\x00", "\xdf\x00",
+     ...
+     0x2190    "\xac\x00", "\xad\x00", "\xae\x00", "\xaf\x00",
+     ...
+     0x2500    "\xd6\x00", "\x00\x00", "\xd7\x00",
+     ...
+     0x253c    "\xe5\x00",
+     ...
+     0x2571    "\xd8\x00", "\xd9\x00",
+     ...
+     0x25e2    "\xda\x00", "\xdb\x00",
+     ...
+     0x266a    "\xd5\x00",
+
+   These would blow up the table and are therefore handled specially in
+   the code.
+*/
+};
+
+
+/* Definitions used in the body of the `gconv' function.  */
+#define CHARSET_NAME           "ANSI_X3.110//"
+#define FROM_LOOP              from_ansi_x3_110
+#define TO_LOOP                        to_ansi_x3_110
+#define DEFINE_INIT            1
+#define DEFINE_FINI            1
+#define MIN_NEEDED_FROM                1
+#define MAX_NEEDED_FROM                2
+#define MIN_NEEDED_TO          4
+
+/* First define the conversion function from ANSI_X3.110 to UCS4.  */
+#define MIN_NEEDED_INPUT       MIN_NEEDED_FROM
+#define MAX_NEEDED_INPUT       MAX_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT      MIN_NEEDED_TO
+#define LOOPFCT                        FROM_LOOP
+#define BODY \
+  {                                                                          \
+    uint32_t ch = *inptr;                                                    \
+                                                                             \
+    if (ch >= 0xc1 && ch <= 0xcf)                                            \
+      {                                                                              \
+       /* Composed character.  First test whether the next character         \
+          is also available.  */                                             \
+       uint32_t ch2;                                                         \
+                                                                             \
+       if (NEED_LENGTH_TEST && inptr + 1 >= inend)                           \
+         {                                                                   \
+           /* The second character is not available.  */                     \
+           result = GCONV_INCOMPLETE_INPUT;                                  \
+           break;                                                            \
+         }                                                                   \
+                                                                             \
+       ch2 = inptr[1];                                                       \
+                                                                             \
+       if (ch2 < 0x20 || ch2 >= 0x80)                                        \
+         {                                                                   \
+           /* This is illegal.  */                                           \
+           result = GCONV_ILLEGAL_INPUT;                                     \
+           break;                                                            \
+         }                                                                   \
+                                                                             \
+       ch = to_ucs4_comb[ch - 0xc1][ch2 - 0x20];                             \
+                                                                             \
+       inptr += 2;                                                           \
+      }                                                                              \
+    else                                                                     \
+      {                                                                              \
+       ch = to_ucs4[ch];                                                     \
+       ++inptr;                                                              \
+      }                                                                              \
+                                                                             \
+    if (ch == 0 && *inptr != '\0')                                           \
+      {                                                                              \
+       /* This is an illegal character.  */                                  \
+       result = GCONV_ILLEGAL_INPUT;                                         \
+       break;                                                                \
+      }                                                                              \
+                                                                             \
+    *((uint32_t *) outptr)++ = ch;                                           \
+  }
+#include <iconv/loop.c>
+
+
+/* Next, define the other direction.  */
+#define MIN_NEEDED_INPUT       MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT      MIN_NEEDED_FROM
+#define MAX_NEEDED_OUTPUT      MAX_NEEDED_FROM
+#define LOOPFCT                        TO_LOOP
+#define BODY \
+  {                                                                          \
+    char tmp[2];                                                             \
+    uint32_t ch = *((uint32_t *) inptr);                                     \
+    const char *cp;                                                          \
+                                                                             \
+    if (ch >= sizeof (from_ucs4) / sizeof (from_ucs4[0]))                    \
+      {                                                                              \
+       if (ch == 0x2c7)                                                      \
+         cp = "\xcf\x20";                                                    \
+       else if (ch >= 0x2d8 && ch <= 0x2dd && ch != 0x2dc)                   \
+         {                                                                   \
+           static const char map[6] = "\xc6\xc7\xca\xce\x00\xcd";            \
+                                                                             \
+           tmp[0] = map[ch - 0x2d8];                                         \
+           tmp[1] = ' ';                                                     \
+           cp = tmp;                                                         \
+         }                                                                   \
+       else if (ch >= 0x2014 && ch <= 0x2026)                                \
+         {                                                                   \
+           static const char map[19] =                                       \
+             "\xd0\x00\x00\x00\xa9\xb9\x00\x00\xaa\xba\x00\x00\x00\x00"      \
+             "\xd4\x00\x00\x00\xe0";                                         \
+                                                                             \
+           tmp[0] = map[ch - 0x2014];                                        \
+           if (tmp[0] == '\0')                                               \
+             {                                                               \
+               /* Illegal characters.  */                                    \
+               result = GCONV_ILLEGAL_INPUT;                                 \
+               break;                                                        \
+             }                                                               \
+           tmp[1] = '\0';                                                    \
+           cp = tmp;                                                         \
+         }                                                                   \
+       else if (ch >= 0x215b && ch <= 0x215e)                                \
+         {                                                                   \
+           tmp[0] = 0xdc + ch - 0x215b;                                      \
+           tmp[1] = '\0';                                                    \
+           cp = tmp;                                                         \
+         }                                                                   \
+       else if (ch >= 0x2190 && ch <= 0x2193)                                \
+         {                                                                   \
+           tmp[0] = 0xac + ch - 0x2190;                                      \
+           tmp[1] = '\0';                                                    \
+           cp = tmp;                                                         \
+         }                                                                   \
+       else if (ch == 0x2500)                                                \
+         cp = "\xd6";                                                        \
+       else if (ch == 0x2502)                                                \
+         cp = "\xd7";                                                        \
+       else if (ch == 0x253c)                                                \
+         cp = "\xe5";                                                        \
+       else if (ch >= 0x2571 && ch <= 0x2572)                                \
+         {                                                                   \
+           tmp[0] = 0xd8 + ch - 0x2571;                                      \
+           tmp[1] = '\0';                                                    \
+           cp = tmp;                                                         \
+         }                                                                   \
+       else if (ch >= 0x25e2 && ch <= 0x25e3)                                \
+         {                                                                   \
+           tmp[0] = 0xda + ch - 0x25e2;                                      \
+           tmp[1] = '\0';                                                    \
+           cp = tmp;                                                         \
+         }                                                                   \
+       else if (ch == 0x266a)                                                \
+         cp = "\xd5";                                                        \
+       else                                                                  \
+         {                                                                   \
+           /* Illegal characters.  */                                        \
+           result = GCONV_ILLEGAL_INPUT;                                     \
+           break;                                                            \
+         }                                                                   \
+      }                                                                              \
+    else                                                                     \
+      {                                                                              \
+       cp = from_ucs4[ch];                                                   \
+                                                                             \
+       if (cp[0] == '\0' && ch != 0)                                         \
+         {                                                                   \
+           /* Illegal.  */                                                   \
+           result = GCONV_ILLEGAL_INPUT;                                     \
+           break;                                                            \
+         }                                                                   \
+      }                                                                              \
+                                                                             \
+    *outptr++ = cp[0];                                                       \
+    /* Now test for a possible second byte and write this if possible.  */    \
+    if (cp[1] != '\0')                                                       \
+      {                                                                              \
+       if (NEED_LENGTH_TEST && outptr >= outend)                             \
+         {                                                                   \
+           /* The result does not fit into the buffer.  */                   \
+           --outptr;                                                         \
+           result = GCONV_FULL_OUTPUT;                                       \
+           break;                                                            \
+         }                                                                   \
+                                                                             \
+       *outptr++ = cp[1];                                                    \
+      }                                                                              \
+                                                                             \
+    inptr += 4;                                                                      \
+  }
+#include <iconv/loop.c>
+
+
+/* Now define the toplevel functions.  */
+#include <iconv/skeleton.c>
diff --git a/iconvdata/asmo_449.c b/iconvdata/asmo_449.c
new file mode 100644 (file)
index 0000000..d56facf
--- /dev/null
@@ -0,0 +1,29 @@
+/* Conversion from and to MACINTOSH.
+   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 <asmo_449.h>
+
+#define CHARSET_NAME   "ASMO_449//"
+#define HAS_HOLES      1       /* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/baltic.c b/iconvdata/baltic.c
new file mode 100644 (file)
index 0000000..b5a72f1
--- /dev/null
@@ -0,0 +1,29 @@
+/* Conversion from and to BALTIC.
+   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 <baltic.h>
+
+#define CHARSET_NAME   "BALTIC//"
+#define HAS_HOLES      0       /* All 256 character are defined.  */
+
+#include <8bit-gap.c>
index ee66528..157b1b5 100644 (file)
@@ -33,7 +33,8 @@
 #  alias:      alias name which is not really recognized.
 #  name:       the real name of the character set
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
+alias  ANSI_X3.4//             ANSI_X3.4-1968//
 alias  ISO-IR-6//              ANSI_X3.4-1968//
 alias  ANSI_X3.4-1986//        ANSI_X3.4-1968//
 alias  ISO_646.IRV:1991//      ANSI_X3.4-1968//
@@ -185,7 +186,7 @@ alias       SE2//                   SEN_850200_C//
 module SEN_850200_C//          INTERNAL                ISO646          2
 module INTERNAL                SEN_850200_C//          ISO646          2
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-100//            ISO-8859-1//
 alias  ISO_8859-1:1987//       ISO-8859-1//
 alias  ISO_8859-1//            ISO-8859-1//
@@ -198,7 +199,7 @@ alias       OSF00010001//           ISO-8859-1//
 module ISO-8859-1//            INTERNAL                ISO8859-1       1
 module INTERNAL                ISO-8859-1//            ISO8859-1       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-101//            ISO-8859-2//
 alias  ISO_8859-2:1987//       ISO-8859-2//
 alias  ISO_8859-2//            ISO-8859-2//
@@ -209,7 +210,7 @@ alias       OSF00010002//           ISO-8859-2//
 module ISO-8859-2//            INTERNAL                ISO8859-2       1
 module INTERNAL                ISO-8859-2//            ISO8859-2       1
 
-#      from                      to                     module         cost
+#      from                    to                       module         cost
 alias  ISO-IR-109//            ISO-8859-3//
 alias  ISO_8859-3:1988//       ISO-8859-3//
 alias  ISO_8859-3//            ISO-8859-3//
@@ -220,7 +221,7 @@ alias       OSF00010003//           ISO-8859-3//
 module ISO-8859-3//            INTERNAL                ISO8859-3       1
 module INTERNAL                ISO-8859-3//            ISO8859-3       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-110//            ISO-8859-4//
 alias  ISO_8859-4:1988//       ISO-8859-4//
 alias  ISO_8859-4//            ISO-8859-4//
@@ -231,7 +232,7 @@ alias       OSF00010004//           ISO-8859-4//
 module ISO-8859-4//            INTERNAL                ISO8859-4       1
 module INTERNAL                ISO-8859-4//            ISO8859-4       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-144//            ISO-8859-5//
 alias  ISO_8859-5:1988//       ISO-8859-5//
 alias  ISO_8859-5//            ISO-8859-5//
@@ -241,7 +242,7 @@ alias       OSF00010005//           ISO-8859-5//
 module ISO-8859-5//            INTERNAL                ISO8859-5       1
 module INTERNAL                ISO-8859-5//            ISO8859-5       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-127//            ISO-8859-6//
 alias  ISO_8859-6:1987//       ISO-8859-6//
 alias  ISO_8859-6//            ISO-8859-6//
@@ -253,7 +254,7 @@ alias       OSF00010006//           ISO-8859-6//
 module ISO-8859-6//            INTERNAL                ISO8859-6       1
 module INTERNAL                ISO-8859-6//            ISO8859-6       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-126//            ISO-8859-7//
 alias  ISO_8859-7:1987//       ISO-8859-7//
 alias  ISO_8859-7//            ISO-8859-7//
@@ -266,7 +267,7 @@ alias       OSF00010007//           ISO-8859-7//
 module ISO-8859-7//            INTERNAL                ISO8859-7       1
 module INTERNAL                ISO-8859-7//            ISO8859-7       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-138//            ISO-8859-8//
 alias  ISO_8859-8:1988//       ISO-8859-8//
 alias  ISO_8859-8//            ISO-8859-8//
@@ -276,7 +277,7 @@ alias       OSF00010008//           ISO-8859-8//
 module ISO-8859-8//            INTERNAL                ISO8859-8       1
 module INTERNAL                ISO-8859-8//            ISO8859-8       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-148//            ISO-8859-9//
 alias  ISO_8859-9:1989//       ISO-8859-9//
 alias  ISO_8859-9//            ISO-8859-9//
@@ -287,7 +288,7 @@ alias       OSF00010009//           ISO-8859-9//
 module ISO-8859-9//            INTERNAL                ISO8859-9       1
 module INTERNAL                ISO-8859-9//            ISO8859-9       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-157//            ISO-8859-10//
 alias  ISO_8859-10:1993//      ISO-8859-10//
 alias  ISO_8859-10//           ISO-8859-10//
@@ -297,115 +298,115 @@ alias   OSF0001000A//           ISO-8859-10//
 module ISO-8859-10//           INTERNAL                ISO8859-10      1
 module INTERNAL                ISO-8859-10//           ISO8859-10      1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  T.61//                  T.61-8BIT//
 alias  ISO-IR-103//            T.61-8BIT//
 module T.61-8BIT//             INTERNAL                T.61            1
 module INTERNAL                T.61-8BIT//             T.61            1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-156//            ISO_6937//
 alias  ISO_6937:1992//         ISO_6937//
 alias  ISO6937//               ISO_6937//
 module ISO_6937//              INTERNAL                ISO_6937        1
 module INTERNAL                ISO_6937//              ISO_6937        1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  SHIFT-JIS//             SJIS//
 alias  CP932//                 SJIS//
 module SJIS//                  INTERNAL                SJIS            1
 module INTERNAL                SJIS//                  SJIS            1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module KOI-8//                 INTERNAL                KOI-8           1
 module INTERNAL                KOI-8//                 KOI-8           1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module KOI8-R//                INTERNAL                KOI8-R          1
 module INTERNAL                KOI8-R//                KOI8-R          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-19//             LATIN-GREEK//
 module LATIN-GREEK//           INTERNAL                LATIN-GREEK     1
 module INTERNAL                LATIN-GREEK//           LATIN-GREEK     1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ISO-IR-27//             LATIN-GREEK//
 module LATIN-GREEK-1//         INTERNAL                LATIN-GREEK-1   1
 module INTERNAL                LATIN-GREEK-1//         LATIN-GREEK-1   1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  ROMAN8//                HP-ROMAN8//
 alias  R8//                    HP-ROMAN8//
 alias  OSF10010001//           HP-ROMAN8//
 module HP-ROMAN8//             INTERNAL                HP-ROMAN8       1
 module INTERNAL                HP-ROMAN8//             HP-ROMAN8       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module EBCDIC-AT-DE//          INTERNAL                EBCDIC-AT-DE    1
 module INTERNAL                EBCDIC-AT-DE//          EBCDIC-AT-DE    1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module EBCDIC-AT-DE-A//        INTERNAL                EBCDIC-AT-DE-A  1
 module INTERNAL                EBCDIC-AT-DE-A//        EBCDIC-AT-DE-A  1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module EBCDIC-CA-FR//          INTERNAL                EBCDIC-CA-FR    1
 module INTERNAL                EBCDIC-CA-FR//          EBCDIC-CA-FR    1
 
-#      from                      to                    module          cost
+#      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
+#      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
+#      from                    to                      module          cost
 module EBCDIC-ES//             INTERNAL                EBCDIC-ES       1
 module INTERNAL                EBCDIC-ES//             EBCDIC-ES       1
 
-#      from                      to                    module          cost
+#      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
+#      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
+#      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
+#      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
+#      from                    to                      module          cost
 module EBCDIC-FR//             INTERNAL                EBCDIC-FR       1
 module INTERNAL                EBCDIC-FR//             EBCDIC-FR       1
 
-#      from                      to                    module          cost
+#      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
+#      from                    to                      module          cost
 module EBCDIC-IT//             INTERNAL                EBCDIC-IT       1
 module INTERNAL                EBCDIC-IT//             EBCDIC-IT       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module EBCDIC-PT//             INTERNAL                EBCDIC-PT       1
 module INTERNAL                EBCDIC-PT//             EBCDIC-PT       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module EBCDIC-UK//             INTERNAL                EBCDIC-UK       1
 module INTERNAL                EBCDIC-UK//             EBCDIC-UK       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module EBCDIC-US//             INTERNAL                EBCDIC-US       1
 module INTERNAL                EBCDIC-US//             EBCDIC-US       1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP037//                 IBM037//
 alias  EBCDIC-CP-US//          IBM037//
 alias  EBCDIC-CP-CA//          IBM037//
@@ -415,43 +416,43 @@ alias     OSF10020025//           IBM037//
 module IBM037//                INTERNAL                IBM037          1
 module INTERNAL                IBM037//                IBM037          1
 
-#      from                      to                    module          cost
+#      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
+#      from                    to                      module          cost
 alias  EBCDIC-INT1//           IBM256//
 module IBM256//                INTERNAL                IBM256          1
 module INTERNAL                IBM256//                IBM256          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP273//                 IBM273//
 alias  OSF10020111//           IBM273//
 module IBM273//                INTERNAL                IBM273          1
 module INTERNAL                IBM273//                IBM273          1
 
-#      from                      to                    module          cost
+#      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
+#      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
+#      from                    to                      module          cost
 alias  EBCDIC-CP-DK//          IBM277//
 alias  EBCDIC-CP-NO//          IBM277//
 alias  OSF10020115//           IBM277//
 module IBM277//                INTERNAL                IBM277          1
 module INTERNAL                IBM277//                IBM277          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP278//                 IBM278//
 alias  EBCDIC-CP-FI//          IBM278//
 alias  EBCDIC-CP-SE//          IBM278//
@@ -459,75 +460,75 @@ alias     OSF10020116//           IBM278//
 module IBM278//                INTERNAL                IBM278          1
 module INTERNAL                IBM278//                IBM278          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP280//                 IBM280//
 alias  EBCDIC-CP-IT//          IBM280//
 alias  OSF10020118//           IBM280//
 module IBM280//                INTERNAL                IBM280          1
 module INTERNAL                IBM280//                IBM280          1
 
-#      from                      to                    module          cost
+#      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
+#      from                    to                      module          cost
 alias  CP284//                 IBM284//
 alias  EBCDIC-CP-ES//          IBM284//
 alias  OSF1002011C//           IBM284//
 module IBM284//                INTERNAL                IBM284          1
 module INTERNAL                IBM284//                IBM284          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP285//                 IBM285//
 alias  EBCDIC-CP-GB//          IBM285//
 alias  OSF1002011D//           IBM285//
 module IBM285//                INTERNAL                IBM285          1
 module INTERNAL                IBM285//                IBM285          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP290//                 IBM290//
 alias  EBCDIC-JP-KANA//        IBM290//
 alias  OSF10020122//           IBM290//
 module IBM290//                INTERNAL                IBM290          1
 module INTERNAL                IBM290//                IBM290          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP297//                 IBM297//
 alias  EBCDIC-CP-FR//          IBM297//
 alias  OSF10020129//           IBM297//
 module IBM297//                INTERNAL                IBM297          1
 module INTERNAL                IBM297//                IBM297          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP420//                 IBM420//
 alias  EBCDIC-CP-AR1//         IBM420//
 alias  OSF100201A4//           IBM420//
 module IBM420//                INTERNAL                IBM420          1
 module INTERNAL                IBM420//                IBM420          1
 
-#      from                      to                    module          cost
+#      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
+#      from                    to                      module          cost
 alias  CP424//                 IBM424//
 alias  EBCDIC-CP-HE//          IBM424//
 alias  OSF100201A8//           IBM424//
 module IBM424//                INTERNAL                IBM424          1
 module INTERNAL                IBM424//                IBM424          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP437//                 IBM437//
 alias  437//                   IBM437//
 alias  OSF100201B5//           IBM437//
 module IBM437//                INTERNAL                IBM437          1
 module INTERNAL                IBM437//                IBM437          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP500//                 IBM500//
 alias  500//                   IBM500//
 alias  500V1//                 IBM500//
@@ -537,88 +538,88 @@ alias     OSF100201F4//           IBM500//
 module IBM500//                INTERNAL                IBM500          1
 module INTERNAL                IBM500//                IBM500          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP850//                 IBM850//
 alias  850//                   IBM850//
 alias  OSF10020352//           IBM850//
 module IBM850//                INTERNAL                IBM850          1
 module INTERNAL                IBM850//                IBM850          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP851//                 IBM851//
 alias  851//                   IBM851//
 module IBM851//                INTERNAL                IBM851          1
 module INTERNAL                IBM851//                IBM851          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP852//                 IBM852//
 alias  852//                   IBM852//
 alias  OSF10020354//           IBM852//
 module IBM852//                INTERNAL                IBM852          1
 module INTERNAL                IBM852//                IBM852          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP855//                 IBM855//
 alias  855//                   IBM855//
 alias  OSF10020357//           IBM855//
 module IBM855//                INTERNAL                IBM855          1
 module INTERNAL                IBM855//                IBM855          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP857//                 IBM857//
 alias  857//                   IBM857//
 alias  OSF10020359//           IBM857//
 module IBM857//                INTERNAL                IBM857          1
 module INTERNAL                IBM857//                IBM857          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP860//                 IBM860//
 alias  860//                   IBM860//
 module IBM860//                INTERNAL                IBM860          1
 module INTERNAL                IBM860//                IBM860          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP861//                 IBM861//
 alias  861//                   IBM861//
 alias  OSF1002035D//           IBM861//
 module IBM861//                INTERNAL                IBM861          1
 module INTERNAL                IBM861//                IBM861          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP862//                 IBM862//
 alias  862//                   IBM862//
 alias  OSF1002035E//           IBM862//
 module IBM862//                INTERNAL                IBM862          1
 module INTERNAL                IBM862//                IBM862          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP863//                 IBM863//
 alias  863//                   IBM863//
 alias  OSF1002035F//           IBM863//
 module IBM863//                INTERNAL                IBM863          1
 module INTERNAL                IBM863//                IBM863          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP864//                 IBM864//
 alias  864//                   IBM864//
 alias  OSF10020360//           IBM864//
 module IBM864//                INTERNAL                IBM864          1
 module INTERNAL                IBM864//                IBM864          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP865//                 IBM865//
 alias  865//                   IBM865//
 module IBM865//                INTERNAL                IBM865          1
 module INTERNAL                IBM865//                IBM865          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP868//                 IBM868//
 alias  CP-AR//                 IBM868//
 alias  OSF10020364//           IBM868//
 module IBM868//                INTERNAL                IBM868          1
 module INTERNAL                IBM868//                IBM868          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP869//                 IBM869//
 alias  869//                   IBM869//
 alias  CP-GR//                 IBM869//
@@ -626,7 +627,7 @@ alias       OSF10020365//           IBM869//
 module IBM869//                INTERNAL                IBM869          1
 module INTERNAL                IBM869//                IBM869          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP870//                 IBM870//
 alias  EBCDIC-CP-ROECE//       IBM870//
 alias  EBCDIC-CP-YU//          IBM870//
@@ -634,186 +635,212 @@ alias   OSF10020366//           IBM870//
 module IBM870//                INTERNAL                IBM870          1
 module INTERNAL                IBM870//                IBM870          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP871//                 IBM871//
 alias  EBCDIC-CP-IS//          IBM871//
 alias  OSF10020367//           IBM871//
 module IBM871//                INTERNAL                IBM871          1
 module INTERNAL                IBM871//                IBM871          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP875//                 IBM875//
 alias  EBCDIC-GREEK//          IBM875//
 alias  OSF1002036B//           IBM875//
 module IBM875//                INTERNAL                IBM875          1
 module INTERNAL                IBM875//                IBM875          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP880//                 IBM880//
 alias  EBCDIC-CYRILLIC//       IBM880//
 alias  OSF10020370//           IBM880//
 module IBM880//                INTERNAL                IBM880          1
 module INTERNAL                IBM880//                IBM880          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP891//                 IBM891//
 alias  OSF1002037B//           IBM891//
 module IBM891//                INTERNAL                IBM891          1
 module INTERNAL                IBM891//                IBM891          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP903//                 IBM903//
 alias  OSF10020387//           IBM903//
 module IBM903//                INTERNAL                IBM903          1
 module INTERNAL                IBM903//                IBM903          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP904//                 IBM904//
 alias  904//                   IBM904//
 alias  OSF10020388//           IBM904//
 module IBM904//                INTERNAL                IBM904          1
 module INTERNAL                IBM904//                IBM904          1
 
-#      from                      to                    module          cost
+#      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
+#      from                    to                      module          cost
 alias  CP918//                 IBM918//
 alias  EBCDIC-CP-AR2//         IBM918//
 alias  OSF10020396//           IBM918//
 module IBM918//                INTERNAL                IBM918          1
 module INTERNAL                IBM918//                IBM918          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP1004//                IBM1004//
 alias  OS2LATIN1//             IBM1004//
 module IBM1004//               INTERNAL                IBM1004         1
 module INTERNAL                IBM1004//               IBM1004         1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP1026//                IBM1026//
 alias  1026//                  IBM1026//
 alias  OSF10020402//           IBM1026//
 module IBM1026//               INTERNAL                IBM1026         1
 module INTERNAL                IBM1026//               IBM1026         1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  CP1047//                IBM1047//
 alias  1047//                  IBM1047//
 alias  OSF10020417//           IBM1047//
 module IBM1047//               INTERNAL                IBM1047         1
 module INTERNAL                IBM1047//               IBM1047         1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  EUCKR//                 EUC-KR//
 alias  OSF0004000a//           EUC-KR//
 module EUC-KR//                INTERNAL                EUC-KR          1
 module INTERNAL                EUC-KR//                EUC-KR          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MSCP949//               UHC//
 alias  CP949//                 UHC//
 alias  OSF100203B5//           UHC//
 module UHC//                   INTERNAL                UHC             1
 module INTERNAL                UHC//                   UHC             1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MSCP1361//              JOHAB//
 alias  CP1361//                JOHAB//
 module JOHAB//                 INTERNAL                JOHAB           1
 module INTERNAL                JOHAB//                 JOHAB           1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  BIG-FIVE//              BIG5//
 alias  BIGFIVE//               BIG5//
 alias  BIG-5//                 BIG5//
 module BIG5//                  INTERNAL                BIG5            1
 module INTERNAL                BIG5//                  BIG5            1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  EUCJP//                 EUC-JP//
 alias  OSF00030010//           EUC-JP//
 module EUC-JP//                INTERNAL                EUC-JP          1
 module INTERNAL                EUC-JP//                EUC-JP          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  EUCCN//                 EUC-CN//
 module EUC-CN//                INTERNAL                EUC-CN          1
 module INTERNAL                EUC-CN//                EUC-CN          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  EUCTW//                 EUC-TW//
 alias  OSF0005000a//           EUC-TW//
 module EUC-TW//                INTERNAL                EUC-TW          1
 module INTERNAL                EUC-TW//                EUC-TW          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-EE//                 CP1250//
 module CP1250//                INTERNAL                CP1250          1
 module INTERNAL                CP1250//                CP1250          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-CYRL//               CP1251//
 module CP1251//                INTERNAL                CP1251          1
 module INTERNAL                CP1251//                CP1251          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-ANSI//               CP1252//
 module CP1252//                INTERNAL                CP1252          1
 module INTERNAL                CP1252//                CP1252          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-GREEK//              CP1253//
 module CP1253//                INTERNAL                CP1253          1
 module INTERNAL                CP1253//                CP1253          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-TURK//               CP1254//
 module CP1254//                INTERNAL                CP1254          1
 module INTERNAL                CP1254//                CP1254          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-TURK//               CP1255//
 module CP1255//                INTERNAL                CP1255          1
 module INTERNAL                CP1255//                CP1255          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MS-ARAB//               CP1256//
 module CP1256//                INTERNAL                CP1256          1
 module INTERNAL                CP1256//                CP1256          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  WINBALTRIM//            CP1257//
 module CP1257//                INTERNAL                CP1257          1
 module INTERNAL                CP1257//                CP1257          1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module CP874//                 INTERNAL                CP874           1
 module INTERNAL                CP874//                 CP874           1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module CP737//                 INTERNAL                CP737           1
 module INTERNAL                CP737//                 CP737           1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module CP775//                 INTERNAL                CP775           1
 module INTERNAL                CP775//                 CP775           1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module ISO-2022-JP//           INTERNAL                ISO-2022-JP     1
 module INTERNAL                ISO-2022-JP//           ISO-2022-JP     1
 
 module ISO-2022-JP-2//         INTERNAL                ISO-2022-JP     1
 module INTERNAL                ISO-2022-JP-2//         ISO-2022-JP     1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 module ISO-2022-KR//           INTERNAL                ISO-2022-KR     1
 module INTERNAL                ISO-2022-KR//           ISO-2022-KR     1
 
-#      from                      to                    module          cost
+#      from                    to                      module          cost
 alias  MAC//                   MACINTOSH//
 module MACINTOSH//             INTERNAL                MACINTOSH       1
 module INTERNAL                MACINTOSH//             MACINTOSH       1
+
+#      from                    to                      module          cost
+alias  ISO-IR-143//            IEC_P27-1//
+module IEC_P27-1//             INTERNAL                IEC_P27-1       1
+module INTERNAL                IEC_P27-1//             IEC_P27-1       1
+
+#      from                    to                      module          cost
+alias  ISO-IR-179//            BALTIC//
+module BALTIC//                INTERNAL                BALTIC          1
+module INTERNAL                BALTIC//                BALTIC          1
+
+#      from                    to                      module          cost
+alias  ISO_9036//              ASMO_449//
+alias  ARABIC7//               ASMO_449//
+alias  ISO-IR-89//             ASMO_449//
+module ASMO_449//              INTERNAL                ASMO_449        1
+module INTERNAL                ASMO_449//              ASMO_449        1
+
+#      from                    to                      module          cost
+alias  ANSI_X3.110-1983//      ANSI_X3.110//
+alias  ISO-IR-99//             ANSI_X3.110//
+alias  CSA_T500-1983//         ANSI_X3.110//
+alias  CSA_T500//              ANSI_X3.110//
+alias  NAPLPS//                ANSI_X3.110//
+module ANSI_X3.110//           INTERNAL                ANSI_X3.110     1
+module INTERNAL                ANSI_X3.110//           ANSI_X3.110     1
diff --git a/iconvdata/iec_p27-1.c b/iconvdata/iec_p27-1.c
new file mode 100644 (file)
index 0000000..086320c
--- /dev/null
@@ -0,0 +1,29 @@
+/* Conversion from and to IEC_P27-1.
+   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 <iec_p27-1.h>
+
+#define CHARSET_NAME   "IEC_P27-1//"
+#define HAS_HOLES      0       /* All 256 character are defined.  */
+
+#include <8bit-gap.c>
index 868af44..d1ef6c2 100644 (file)
@@ -278,7 +278,7 @@ static const char from_ucs4[][2] =
   /* 0x0014 */ "\x14\x00", "\x15\x00", "\x16\x00", "\x17\x00", "\x18\x00",
   /* 0x0019 */ "\x19\x00", "\x1a\x00", "\x1b\x00", "\x1c\x00", "\x1d\x00",
   /* 0x001e */ "\x1e\x00", "\x1f\x00", "\x20\x00", "\x21\x00", "\x22\x00",
-  /* 0x0023 */ "\x23\x00", "\x24\x00", "\x25\x00", "\x26\x00", "\x27\x00",
+  /* 0x0023 */ "\xa6\x00", "\xa4\x00", "\x25\x00", "\x26\x00", "\x27\x00",
   /* 0x0028 */ "\x28\x00", "\x29\x00", "\x2a\x00", "\x2b\x00", "\x2c\x00",
   /* 0x002d */ "\x2d\x00", "\x2e\x00", "\x2f\x00", "\x30\x00", "\x31\x00",
   /* 0x0032 */ "\x32\x00", "\x33\x00", "\x34\x00", "\x35\x00", "\x36\x00",
@@ -296,7 +296,7 @@ static const char from_ucs4[][2] =
   /* 0x006e */ "\x6e\x00", "\x6f\x00", "\x70\x00", "\x71\x00", "\x72\x00",
   /* 0x0073 */ "\x73\x00", "\x74\x00", "\x75\x00", "\x76\x00", "\x77\x00",
   /* 0x0078 */ "\x78\x00", "\x79\x00", "\x7a\x00", "\x00\x00", "\x7c\x00",
-  /* 0x007d */ "\x00\x00", "\x00\x00", "\x7f\x00", "\x00\x80", "\x00\x81",
+  /* 0x007d */ "\x00\x00", "\x00\x00", "\x7f\x00", "\x80\x00", "\x81\x00",
   /* 0x0082 */ "\x82\x00", "\x83\x00", "\x84\x00", "\x85\x00", "\x86\x00",
   /* 0x0087 */ "\x87\x00", "\x88\x00", "\x89\x00", "\x8a\x00", "\x8b\x00",
   /* 0x008c */ "\x8c\x00", "\x8d\x00", "\x8e\x00", "\x8f\x00", "\x90\x00",
@@ -444,7 +444,7 @@ static const char from_ucs4[][2] =
          cp = "\xe0";                                                        \
        else if (ch == 0x2c7)                                                 \
          cp = "\xcf\x20";                                                    \
-       else if (ch < 0x2d8 || ch > 0x2dd)                                    \
+       else if (ch < 0x2d8 || ch > 0x2dd || ch == 0x02dc)                    \
          {                                                                   \
            /* Illegal characters.  */                                        \
            result = GCONV_ILLEGAL_INPUT;                                     \
@@ -452,7 +452,7 @@ static const char from_ucs4[][2] =
          }                                                                   \
        else                                                                  \
          {                                                                   \
-           static const char map[5] = "\xc6\xc7\xca\xce\xcd";                \
+           static const char map[6] = "\xc6\xc7\xca\xce\x00\xcd";            \
                                                                              \
            tmp[0] = map[ch - 0x2d8];                                         \
            tmp[1] = ' ';                                                     \
index 4aef38d..fcb4e0c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Geoffrey Keating <Geoff.Keating@anu.edu.au>, 1997.
 
@@ -171,7 +171,7 @@ main (void)
 
    memset (e2, '\0', sizeof (mp1));
    for (i = -1; i < 100 && i < FRAC / 4; i++)
-     e2[(FRAC - i * 4 - 4) / mpbpl] |= (strchr (hexdig, exp1[i + 1]) - hexdig
+     e2[(FRAC - i * 4 - 4) / mpbpl] |= ((strchr (hexdig, exp1[i + 1]) - hexdig)
                                        << (FRAC - i * 4 - 4) % mpbpl);
 
    if (mpn_cmp (ex, e2, SZ) >= 0)
index 059e4cc..9bea07a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Geoffrey Keating <Geoff.Keating@anu.edu.au>, 1997.
 
@@ -73,7 +73,7 @@ read_mpn_hex(mp_limb_t *x, const char *str)
 
   memset (x, 0, sizeof (mp1));
   for (i = -1; i < 100 && i < FRAC / 4; ++i)
-    x[(FRAC - i * 4 - 4) / mpbpl] |= (strchr (hexdig, str[i + 1]) - hexdig
+    x[(FRAC - i * 4 - 4) / mpbpl] |= ((strchr (hexdig, str[i + 1]) - hexdig)
                                      << (FRAC - i * 4 - 4) % mpbpl);
 }
 
index 4dbbffb..9fd474a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Geoffrey Keating <Geoff.Keating@anu.edu.au>, 1997.
 
@@ -188,8 +188,8 @@ main (void)
       s3s = mpn_bitsize (s3, SZ);
       c2s = mpn_bitsize (c2, SZ);
       c3s = mpn_bitsize (c3, SZ);
-      if (s3s >= 0 && s2s - s3s < 54
-         || c3s >= 0 && c2s - c3s < 54
+      if ((s3s >= 0 && s2s - s3s < 54)
+         || (c3s >= 0 && c2s - c3s < 54)
          || 0)
        {
 #if PRINT_ERRORS
@@ -239,9 +239,9 @@ main (void)
    memset (c2, 0, sizeof (mp1));
    for (i = 0; i < 100 && i < FRAC / 4; i++)
      {
-       s2[(FRAC - i * 4 - 4) / mpbpl] |= (strchr (hexdig, sin1[i]) - hexdig
+       s2[(FRAC - i * 4 - 4) / mpbpl] |= ((strchr (hexdig, sin1[i]) - hexdig)
                                          << (FRAC - i * 4 - 4) % mpbpl);
-       c2[(FRAC - i * 4 - 4) / mpbpl] |= (strchr (hexdig, cos1[i]) - hexdig
+       c2[(FRAC - i * 4 - 4) / mpbpl] |= ((strchr (hexdig, cos1[i]) - hexdig)
                                          << (FRAC - i * 4 - 4) % mpbpl);
      }
 
index bc318fa..c1f3c4e 100644 (file)
@@ -240,10 +240,12 @@ CONCAT(_nss_files_get,ENTNAME_r) (struct STRUCTURE *result, char *buffer,
       /* If the last use was not by the getent function we need the
         position the stream.  */
       if (last_use != getent)
-       if (fsetpos (stream, &position) < 0)
-         status = NSS_STATUS_UNAVAIL;
-       else
-         last_use = getent;
+       {
+         if (fsetpos (stream, &position) < 0)
+           status = NSS_STATUS_UNAVAIL;
+         else
+           last_use = getent;
+       }
 
       if (status == NSS_STATUS_SUCCESS)
        {
index 68958c1..c941437 100644 (file)
@@ -1,5 +1,5 @@
 /* Declarations for getopt.
-   Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+   Copyright (C) 1989,90,91,92,93,94,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
@@ -55,6 +55,7 @@ extern int opterr;
 
 extern int optopt;
 
+#ifdef _GNU_SOURCE
 /* Describe the long-named options requested by the application.
    The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
    of `struct option' terminated by an element containing a name which is
@@ -78,11 +79,11 @@ extern int optopt;
 
 struct option
 {
-#if defined (__STDC__) && __STDC__
+# if defined __STDC__ && __STDC__
   const char *name;
-#else
+# else
   char *name;
-#endif
+# endif
   /* has_arg can't be an enum because some compilers complain about
      type mismatches in all the code that assumes it is an int.  */
   int has_arg;
@@ -92,19 +93,23 @@ struct option
 
 /* Names for the values of the `has_arg' field of `struct option'.  */
 
-#define        no_argument             0
-#define required_argument      1
-#define optional_argument      2
+# define no_argument           0
+# define required_argument     1
+# define optional_argument     2
+#endif /* GNU source */
+
 
-#if defined (__STDC__) && __STDC__
-#ifdef __GNU_LIBRARY__
+#if defined __STDC__ && __STDC__
+# ifdef __GNU_LIBRARY__
 /* Many other libraries have conflicting prototypes for getopt, with
    differences in the consts, in stdlib.h.  To avoid compilation
    errors, only prototype getopt for the GNU C library.  */
 extern int getopt (int argc, char *const *argv, const char *shortopts);
-#else /* not __GNU_LIBRARY__ */
+# else /* not __GNU_LIBRARY__ */
 extern int getopt ();
-#endif /* __GNU_LIBRARY__ */
+# endif /* __GNU_LIBRARY__ */
+
+# ifdef _GNU_SOURCE
 extern int getopt_long (int argc, char *const *argv, const char *shortopts,
                        const struct option *longopts, int *longind);
 extern int getopt_long_only (int argc, char *const *argv,
@@ -116,12 +121,15 @@ extern int _getopt_internal (int argc, char *const *argv,
                             const char *shortopts,
                             const struct option *longopts, int *longind,
                             int long_only);
+# endif
 #else /* not __STDC__ */
 extern int getopt ();
+# ifdef _GNU_SOURCE
 extern int getopt_long ();
 extern int getopt_long_only ();
 
 extern int _getopt_internal ();
+# endif
 #endif /* __STDC__ */
 
 #ifdef __cplusplus
index 2d2459d..893072f 100644 (file)
@@ -207,13 +207,12 @@ res_init()
 #ifdef USELOOPBACK
        _res.nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
        _res.nscount = 1;
-       _res.nsaddr.sin_port = htons(NAMESERVER_PORT);
 #else
        _res.nsaddr.sin_addr.s_addr = INADDR_ANY;
        _res.nscount = 0;
-       _res.nsaddr.sin_port = 0;
 #endif
        _res.nsaddr.sin_family = AF_INET;
+       _res.nsaddr.sin_port = htons(NAMESERVER_PORT);
        _res.ndots = 1;
        _res.pfcode = 0;
 
@@ -380,7 +379,7 @@ res_init()
                    continue;
                }
            }
-           if (nserv > 1)
+           if (nserv > _res.nscount)
                _res.nscount = nserv;
 #ifdef RESOLVSORT
            _res.nsort = nsort;
@@ -573,7 +572,7 @@ netinfo_res_init(haveenv, havesearch)
                    ni_namelist_free(&nl);
                }
 
-               if (nserv > 1)
+               if (nserv > _res.nscount)
                    _res.nscount = nserv;
 
 #ifdef RESOLVSORT
index f44f6c1..1aab47e 100644 (file)
@@ -172,31 +172,28 @@ STRCOLL (s1, s2, l)
            return w1 < w2 ? -1 : 1;
 
          /* We have to increment the index counters.  */
-         if ((forward && ++s1idx >= s1run->data[pass].number)
-             || (!forward && --s1idx < 0))
+         if (forward)
            {
-             if (forward)
+             if (++s1idx >= s1run->data[pass].number)
                {
                  s1run = s1run->next;
                  s1idx = 0;
                }
-             else
+             if (++s2idx >= s2run->data[pass].number)
                {
-                 s1run = s1run->prev;
-                 if (s1run != NULL)
-                   s1idx = s1run->data[pass].number - 1;
+                 s2run = s2run->next;
+                 s2idx = 0;
                }
            }
-
-         if ((forward && ++s2idx >= s2run->data[pass].number)
-             || (!forward && --s2idx < 0))
+         else
            {
-             if (forward)
+             if (--s1idx < 0)
                {
-                 s2run = s2run->next;
-                 s2idx = 0;
+                 s1run = s1run->prev;
+                 if (s1run != NULL)
+                   s1idx = s1run->data[pass].number - 1;
                }
-             else
+             if (--s2idx < 0)
                {
                  s2run = s2run->prev;
                  if (s2run != NULL)
index 0bdf106..c2b8f48 100644 (file)
@@ -249,15 +249,17 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
            written = print_val (w, dest, n, written);
 
          /* We have to increment the index counters.  */
-         if ((forward && ++idx >= run->data[pass].number)
-             || (!forward && --idx < 0))
+         if (forward)
            {
-             if (forward)
+             if (++idx >= run->data[pass].number)
                {
                  run = run->next;
                  idx = 0;
                }
-             else
+           }
+         else
+           {
+             if (--idx < 0)
                {
                  run = run->prev;
                  if (run != NULL)