aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-09-11 12:14:37 +0000
committerUlrich Drepper <drepper@redhat.com>1998-09-11 12:14:37 +0000
commit04795ad9025b5f7891eb746fa6f29d1251d2c0b5 (patch)
tree40686d38e2842b7537b699dfb0655b0dfdfd6881
parent5e0889da396b35ef7d57d43dca6f09899e4c8d66 (diff)
downloadglibc-04795ad9025b5f7891eb746fa6f29d1251d2c0b5.tar
glibc-04795ad9025b5f7891eb746fa6f29d1251d2c0b5.tar.gz
glibc-04795ad9025b5f7891eb746fa6f29d1251d2c0b5.tar.bz2
glibc-04795ad9025b5f7891eb746fa6f29d1251d2c0b5.zip
Update.
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.
-rw-r--r--ChangeLog33
-rw-r--r--iconvdata/Makefile19
-rw-r--r--iconvdata/ansi_x3.110.c558
-rw-r--r--iconvdata/asmo_449.c29
-rw-r--r--iconvdata/baltic.c29
-rw-r--r--iconvdata/gconv-modules227
-rw-r--r--iconvdata/iec_p27-1.c29
-rw-r--r--iconvdata/t61.c8
-rw-r--r--math/atest-exp.c4
-rw-r--r--math/atest-exp2.c4
-rw-r--r--math/atest-sincos.c10
-rw-r--r--nss/nss_files/files-XXX.c10
-rw-r--r--posix/getopt.h30
-rw-r--r--resolv/res_init.c7
-rw-r--r--string/strcoll.c25
-rw-r--r--string/strxfrm.c10
16 files changed, 879 insertions, 153 deletions
diff --git a/ChangeLog b/ChangeLog
index 2a78fc452e..aae849ab69 100644
--- 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.
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index a300c10170..82b4c62c58 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -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
index 0000000000..c754ce05f6
--- /dev/null
+++ b/iconvdata/ansi_x3.110.c
@@ -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
index 0000000000..d56facf846
--- /dev/null
+++ b/iconvdata/asmo_449.c
@@ -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
index 0000000000..b5a72f18b8
--- /dev/null
+++ b/iconvdata/baltic.c
@@ -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>
diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules
index ee665285ba..157b1b5df8 100644
--- a/iconvdata/gconv-modules
+++ b/iconvdata/gconv-modules
@@ -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
index 0000000000..086320c2a1
--- /dev/null
+++ b/iconvdata/iec_p27-1.c
@@ -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>
diff --git a/iconvdata/t61.c b/iconvdata/t61.c
index 868af445e0..d1ef6c2193 100644
--- a/iconvdata/t61.c
+++ b/iconvdata/t61.c
@@ -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] = ' '; \
diff --git a/math/atest-exp.c b/math/atest-exp.c
index 4aef38d50e..fcb4e0cd16 100644
--- a/math/atest-exp.c
+++ b/math/atest-exp.c
@@ -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)
diff --git a/math/atest-exp2.c b/math/atest-exp2.c
index 059e4ccf02..9bea07a391 100644
--- a/math/atest-exp2.c
+++ b/math/atest-exp2.c
@@ -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);
}
diff --git a/math/atest-sincos.c b/math/atest-sincos.c
index 4dbbffb9ca..9fd474a2b2 100644
--- a/math/atest-sincos.c
+++ b/math/atest-sincos.c
@@ -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);
}
diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c
index bc318fa5c7..c1f3c4e4e2 100644
--- a/nss/nss_files/files-XXX.c
+++ b/nss/nss_files/files-XXX.c
@@ -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)
{
diff --git a/posix/getopt.h b/posix/getopt.h
index 68958c10bc..c9414373a5 100644
--- a/posix/getopt.h
+++ b/posix/getopt.h
@@ -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
diff --git a/resolv/res_init.c b/resolv/res_init.c
index 2d2459d5a3..893072f24e 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -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
diff --git a/string/strcoll.c b/string/strcoll.c
index f44f6c1f6d..1aab47e3be 100644
--- a/string/strcoll.c
+++ b/string/strcoll.c
@@ -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)
diff --git a/string/strxfrm.c b/string/strxfrm.c
index 0bdf1069b6..c2b8f48310 100644
--- a/string/strxfrm.c
+++ b/string/strxfrm.c
@@ -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)