diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-09-11 12:14:37 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-09-11 12:14:37 +0000 |
commit | 04795ad9025b5f7891eb746fa6f29d1251d2c0b5 (patch) | |
tree | 40686d38e2842b7537b699dfb0655b0dfdfd6881 | |
parent | Update. (diff) | |
download | 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-- | ChangeLog | 33 | ||||
-rw-r--r-- | iconvdata/Makefile | 19 | ||||
-rw-r--r-- | iconvdata/ansi_x3.110.c | 558 | ||||
-rw-r--r-- | iconvdata/asmo_449.c | 29 | ||||
-rw-r--r-- | iconvdata/baltic.c | 29 | ||||
-rw-r--r-- | iconvdata/gconv-modules | 227 | ||||
-rw-r--r-- | iconvdata/iec_p27-1.c | 29 | ||||
-rw-r--r-- | iconvdata/t61.c | 8 | ||||
-rw-r--r-- | math/atest-exp.c | 4 | ||||
-rw-r--r-- | math/atest-exp2.c | 4 | ||||
-rw-r--r-- | math/atest-sincos.c | 10 | ||||
-rw-r--r-- | nss/nss_files/files-XXX.c | 10 | ||||
-rw-r--r-- | posix/getopt.h | 30 | ||||
-rw-r--r-- | resolv/res_init.c | 7 | ||||
-rw-r--r-- | string/strcoll.c | 25 | ||||
-rw-r--r-- | string/strxfrm.c | 10 |
16 files changed, 879 insertions, 153 deletions
@@ -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) |